如何给 N1 盒子编译 Armbian 运行系统
N1 是目前很受欢迎的电视盒子,主要优点就是配置高、价格便宜、可玩性多(电视盒子、KODI 播放器、下载机、NAS、软路由、小电脑等)。N1 的 CPU 使用的是 Amlogic(晶晨)S905D(四核 ARM® Cortex™-A53),配置是 2G 内存、8G eMMC、HDMI 视频接口、100M网口、2个 USB2.0 接口、支持蓝牙和 WiFi。
在前面的文章中已经详细介绍了编译 Armbian 的方法和步骤,给 N1 编译 Armbian 的运行系统就是采用这些方法来实现的。
由于 N1 没有在 Armbian 官方所支持的板子列表中,所以需要在已有的板子中选择同N1 配置一样的,通过分析可以看到 Le Potato 与 N1 的配置是一样的,可以选择这个板子来编译(也可以单独制作内核跟文件系统,这里就不介绍了)。
首先按照上一篇文章介绍的方法设置编译选项(config-example.conf):
KERNEL_ONLY=”no”
KERNEL_CONFIGURE=”yes”
CLEAN_LEVEL=”make,debs,cache”
BOARD=”lepotato”
BRANCH=”current”
RELEASE=”focal”
BUILD_MINIMAL=”no”
BUILD_DESKTOP=”no”
COMPRESS_OUTPUTIMAGE=”sha,gpg,img”
然后设置登录欢迎信息、主机名称和域名服务器地址(lepotato.conf、lib.config):
BOARD_NAME=”N1 TVBox”
HOST=”N1″
NAMESERVER=”192.168.1.1″
编译过程中如果有三个选择新的驱动相关功能代码的步骤,选择 “N”,出现内核配置窗口后退出,这样就可以顺利编译完成 Armbian(output/images/)。
编译成功的映像文件不能直接写到 U盘去引导,因为只有一个根文件系统,N1 的引导需要有引导分区和根文件系统分区,所以需要重新制作可引导的映像。
#mkdir -p work
#cd work
#mv build/output/images/xxx.img armbian.img ;注意正确的 build 目录
#mkdir -p boot
#mkdir -p rootfs
#losetup -P -f –show armbian.img ;看一下 loop 号,比如是 loop7
#mount /dev/loop7p1 /mnt
#cp /mnt/boot/config-5.6.19-meson64 boot/config-5.6.19-meson64
#cp -r /mnt/boot/dtb-5.6.19-meson64 boot/dtb
#cp /mnt/boot/initrd.img-5.6.19-meson64 boot/initrd.img-5.6.19-meson64
#cp /mnt/boot/System.map-5.6.19-meson64 boot/System.map-5.6.19-meson64
#cp /mnt/boot/uInitrd-5.6.19-meson64 boot/uInitrd
#cp /mnt/boot/vmlinuz-5.6.19-meson64 boot/zImage
#cp -r /mnt/* rootfs/
#sync
#umount /mnt
#losetup -d /dev/loop7
#cat << EOF > boot/uEnv.txt
LINUX=/zImage
INITRD=/uInitrd
# aml s9xxx
FDT=/dtb/amlogic/meson-gxl-s905d-phicomm-n1.dtb
APPEND=root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0
EOF
#下载附件中的文件 s905_autoscript.tar.gz 到当前的工作目录
#tar -xzf s905_autoscript.tar.gz -C boot
#mkimage -C none -A arm -T script -d boot/s905_autoscript.cmd boot/s905_autoscript
#qemu-img create armbian-n1.img 1734M
#parted -s armbian-n1.img mklabel msdos
#parted -s armbian-n1.img mkpart primary fat32 17M 117M
#parted -s armbian-n1.img mkpart primary ext4 117M 100%
#losetup -P -f –show armbian-n1.img ;注意 loop 编号
#mkfs.vfat -n “BOOT” /dev/loop7p1 >/dev/null 2>&1
#mke2fs -F -q -t ext4 -L “ROOTFS” -m 0 /dev/loop7p2 >/dev/null 2>&1
#mkdir -p /mnt/boot /mnt/rootfs
#mount /dev/loop7p1 /mnt/boot
#mount /dev/loop7p2 /mnt/rootfs
#cp -r boot/* /mnt/boot/
#cp -r rootfs/* /mnt/rootfs/
#umount -f /mnt/boot /mnt/rootfs
#losetup -d /dev/loop7
#rm -rf boot/*
#rm -rf rootfs/*
执行上面的命令后就生成了可以在 N1 上引导并运行的 Armbian 系统映像了,然后同样地按照上一篇文章介绍的方法把这个映像文件(armbian-n1.img)写到 U 盘上就可以了。
把写好的 U 盘插到 N1 不是边上的那个 USB 接口上,再接上电源就能引导 Armbian 系统了。后面的过程就是修改 root 密码,创建一个新用户,登录系统。需要提醒一下,在使用前需要把N1 进行降级并设置成可以使用 U 盘引导,具体的操作方法和步骤,网上有很多相关的文章可以参考,这里就不介绍了。
另外,建议 Armbian 在 N1 上采用 U盘系统的方式来使用,不用写到 eMMC 上,这样拔掉 U盘后,N1 还可以继续当电视盒子来用,非常方便。在后续的文章中将介绍如何在 Armbian 中部署各种应用以满足不同的功能需求。
附件:Armbian 系统引导脚本。