找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
发表于 2018-10-1 14:39 | 显示全部楼层 |阅读模式
本帖最后由 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 版一致,只不过可能因为驱动问题比较卡顿

本帖子中包含更多资源

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

×

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-10-1 15:02 | 显示全部楼层
大神牛逼啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-10-1 15:46 | 显示全部楼层
大神牛逼
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-10-1 15:49 | 显示全部楼层
收藏学习 技术贴 哈哈
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-10-1 15:56 | 显示全部楼层
不知道有哪个版本可以硬解,我试过多个版本看视频都卡顿明显和占用CPU过高,如果有能解决gpu硬解这部分基本就完美了.
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-10-1 18:36 | 显示全部楼层
大神做个manjaro版呗
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

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

使用道具 举报

发表于 2018-10-1 23:17 | 显示全部楼层
mali 450 这个GPU 只有安卓版 集成厂家的驱动,厂家没有开源该 GPU 驱动,linux 移植的各系统GPU 硬解基本都用不起来,像全志的 H5 H6 也差不多是这个德行。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-10-2 00:50 | 显示全部楼层
得 MARK 一个。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-10-2 08:07 | 显示全部楼层
牛逼的大神!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-10-2 09:22 来自手机 | 显示全部楼层
膜拜楼主,真正大神 。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-10-2 12:37 | 显示全部楼层
MaxGO 发表于 2018-10-1 18:37
老毛子那里有个archLinux,经测试观看视频良好,但一升级就挂

哪个版本的,请给个链接
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-10-2 12:42 | 显示全部楼层
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-10-2 14:18 | 显示全部楼层
大神,这个制作出来的镜像是通过usb启动然后刷入的还是同usb burning tools刷入
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 23:10

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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