找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 13881|回复: 41

[N1盒子] 教你给 N1 制作 linux 镜像

  [复制链接]
本帖最后由 yangxuan8282 于 2018-10-1 15:39 编辑

因为 Discuz 的排版比较难用,调整格式太麻烦,想看代码部分高亮的可以移步 github : https://github.com/yangxuan8282/ ... -%E9%95%9C%E5%83%8F

N1 在某种程度上可以当作单板机用,价格比类似配置的 odroid c2 或是 nanopi k2 低很多,而且也从 4.14 就进入 mainline 了,所以支持程度有一定保证

缺点是没有 GPIO ,扩展方面就差一些,然后内核方面说实话支持一般,有些驱动还是有问题,比树莓派这种社区活跃的板子还是有差距的

从外观上看接口很简单,两个 USB 2.0,一个 HDMI ,网口和电源

网上也早有拆机图,除了无线这块别的都比较明显,至于无线芯片通过观察 dmesg 和用的驱动文件判断基本是和树莓派 3B+ 同款的 CYW43455

作为一个 armv8 设备,和其它 arm 设备的系统移植大同小异,无非是内核加上 rootfs,最后是 u-boot

内核可以直接用 150balbes 的,rootfs 根据发行版的不同,获取方法也不太一样

下面说说具体步骤

给出的命令只是参考,基本是从我之前写的脚本里摘的,直接运行可能不行,建议按照原脚本里那样写 function 来运行

原脚本链接: https://github.com/yangxuan8282/ ... er/gen-centos_n1.sh

先建一个 2G 的镜像,分两个区,一个 `/boot` 作为启动分区,另一个是根分区:

```
fallocate -l $(( 2048 * 1024 *1024 )) "$OUTPUT_IMG"
cat > fdisk.cmd <<-EOF
        o
        n
        p
        1
        
        +128MB
        t
        c
        n
        p
        2
        
        
        w
EOF
fdisk "$OUTPUT_IMG" < fdisk.cmd
rm -f fdisk.cmd
```

格式化并挂载,这里是挂载在当前目录的 mnt :

```
        mkfs.fat -F32 "$BOOT_DEV"
        mkfs.ext4 "$ROOT_DEV"
        mkdir -p mnt
        mount "$ROOT_DEV" mnt
        mkdir -p mnt/boot
        mount "$BOOT_DEV" mnt/boot
```

然后分别下载内核和 rootfs 并复制进镜像

先是 rootfs ,这个既可以直接从现成镜像里提取,也可以用工具自己生成,比如 debian 下有 debootstrap

为了方便,就直接拿现成的了:

```
        local url="https://github.com/yangxuan8282/gen-rpi_os/releases/download/centos_roots/CentOS-7-aarch64-rootfs-7.5.1804.tar.xz"
        mkdir -p mnt
        wget $url -O- | tar -C mnt -xJf -
```

最后会报错,不过完全可以忽略,只是因为镜像的第一个分区是 fat32 无法保留权限造成的

内核这里是从 150balbes 制作的镜像中提取出来的 ( 只保留 `/boot`, `/lib/firmware`, `/lib/modules` )

放到 github 了: https://github.com/yangxuan8282/ ... ag/150balbes_kernel

```
        local url="https://github.com/yangxuan8282/phicomm-n1/releases/download/150balbes_kernel/kernel_4.18.7_20180922.tar.gz"

        wget $url
        tar xf *.tar.gz
        cp -R --no-preserve=mode,ownership kernel_*/boot/* mnt/boot/
        cp -a kernel_*/lib/* mnt/lib/
        rm -rf kernel_*
```

然后为了让系统知道 rootfs 在哪个分区,得分别修改 uEnv.ini 和 /etc/fstab ,这里有几种方式,比如设备名, UUID, LABEL

```
sed -i "s|root=LABEL=ROOTFS|root=UUID=${ROOT_UUID}|" mnt/boot/uEnv.ini
```

```
echo "UUID=${BOOT_UUID}  /boot           vfat    defaults          0       2
UUID=${ROOT_UUID}  /               ext4    defaults,noatime  0       1" > mnt/etc/fstab
```

最后给镜像写入 u-boot 就能启动了

```
        local url="https://github.com/yangxuan8282/phicomm-n1/releases/download/20180917/u-boot.bin"
        wget $url
        dd if=u-boot.bin of=${LOOP_DEV} bs=1 count=442 conv=fsync
        dd if=u-boot.bin of=${LOOP_DEV} bs=512 skip=1 seek=1 conv=fsync
        rm -f u-boot.bin
```

目前为止给 N1 移植过 deepin, alpine, centos 几个系统,基本大同小异

需要看 /boot 分区的那几个启动相关文件怎么生成的可以看 alpine 的脚本,那个也没用现成的 150balbes 内核,是自己改了一部分 config,然后以 alpine 的包管理打包的

alpine 的脚本也包括了自己从头制作完整的 rootfs 过程

alpine 脚本地址: https://github.com/yangxuan8282/ ... er/gen-alpine_n1.sh

最后附上一张 alpine 的桌面截图,仿的 parrotsec 的效果,注意 github 上放的 alpine 是没安桌面的:



在 alpine 上用 chromium 看油管 720p 也基本流畅,不过没硬解,资源占用高

deepin 一开始显示有问题,后来弄好后也没截新的,基本和 x86 版一致,只不过可能因为驱动问题比较卡顿

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

你说的很对,我赞同你的说法。: 0.0
你说的很对,我赞同你的说法。: 0
能否往内核加入驱动,无线网卡的驱动,或者是移植下kail系统  发表于 2018-10-1 16:08

评分

参与人数 4恩山币 +4 收起 理由
zren*** + 1 强大的恩山!(以下重复1万次)
righ*** + 1 How ever,this is JB useful!
netwo*** + 1 率全体恩山路由党以及党魁向你学习!
lxl8*** + 1 强大的恩山!(以下重复1万次)

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
来自手机 | 显示全部楼层
膜拜大神,真的太感谢了ヾ(●`●)哇~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

大神牛逼啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

大神牛逼
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

收藏学习 技术贴 哈哈
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

不知道有哪个版本可以硬解,我试过多个版本看视频都卡顿明显和占用CPU过高,如果有能解决gpu硬解这部分基本就完美了.
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

大神做个manjaro版呗
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

forget5 发表于 2018-10-1 15:56
不知道有哪个版本可以硬解,我试过多个版本看视频都卡顿明显和占用CPU过高,如果有能解决gpu硬解这部分基本就 ...

老毛子那里有个archLinux,经测试观看视频良好,但一升级就挂
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

mali 450 这个GPU 只有安卓版 集成厂家的驱动,厂家没有开源该 GPU 驱动,linux 移植的各系统GPU 硬解基本都用不起来,像全志的 H5 H6 也差不多是这个德行。

点评

现在的香橙派也是这个样子  详情 回复 发表于 2019-6-20 13:37
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

得 MARK 一个。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

牛逼的大神!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
膜拜楼主,真正大神 。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

MaxGO 发表于 2018-10-1 18:37
老毛子那里有个archLinux,经测试观看视频良好,但一升级就挂

哪个版本的,请给个链接

点评

https://yadi.sk/d/srrtn6kpnsKz2/Linux/ArchLinux  详情 回复 发表于 2018-10-2 12:42
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

大神,这个制作出来的镜像是通过usb启动然后刷入的还是同usb burning tools刷入
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-28 09:31

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表