如何给 N1 盒子编译 OpenWrt 运行系统
在之前的文章中我们介绍过给 N1 盒子编译 Armbian 运行系统的方法,其中编译好的系统映像(内核、固件、模块)也是编译制作 OpenWrt 运行系统的组成部分。X86 架构的平台处理比较简单,可以直接使用编译好 OpenWrt,N1 则需要把两者的运行系统映像做一个结合,重新制作一个新的映像。
首先按照这篇文章介绍的方法来编译 Armbian,需要特别注意的是,编译参数要这样设置 KERNEL_CONFIGURE=”yes”,因为要修改几个内核配置,如下图所示:
首先在内核配置主菜单中选择 > Device Driver > Graphics support(图一)
接着把光标往下移动到 ‘DRM Support for Amlogic Meson Display Controller’ 上面(图三)
然后把光标移动到 ‘Direct Rendering Manager…’ 上面,敲空格把选择状态由 <M> 变成 <*>(图二)
同样地把选中状态由 <M> 变成 <*>,下面一个配置会联动改变(图四)
修改完成后保存配置并开始编译,编译完成后按照这篇文章中说明的步骤加入引导分区,然后重新打包映像,这个 Armbian 映像会与上一篇文章中介绍生成的 OpenWrt 映像一起来制作最终的 N1 OpenWrt 运行系统映像。
编译 OpenWrt 系统时需要在配置界面把目标系统(Target System)设置为 ‘QEMU ARM Virtual Machine’,子目标(Subtarget)设置为 ‘ARMv8 multiplatform’,其它的设置根据需求来做调整。
假定编译好的 Armbian 和 Openwrt 映像文件分别叫做 n1-armbian.img 和 openwrt-armvirt-64-rootfs-ext4.img,然后按照下述步骤制作新的映像 n1-openwrt.img:
#mkdir -p work
#cd work
#mv xxx/n1-armbian.img . ;把 n1 armbian 和 openwrt 映像移到新建的目录下
#mv xxx/bin/target/armvirt/64/openwrt-armvirt-64-rootfs-ext4.img .
#mkdir -p tmp
#mkdir -p tmp/boot tmp/rootfs tmp/img
#losetup -P -f –show openwrt-armvirt-64-rootfs-ext4.img
#mount /dev/loopX tmp/img
#cp -r tmp/img/* tmp/rootfs/
#sync
#rm -rf tmp/rootfs/lib/firmware
#rm -rf tmp/rootfs/lib/modules
#umount tmp/img
#losetup -d /dev/loopX
#losetup -P -f –show n1-armbian.img
#mount /dev/loopXp1 tmp/img
#cp -r tmp/img/* tmp/boot/
#sync
#umount tmp/img
#mount /dev/loopXp2 tmp/img
#cp -r tmp/img/lib/firmware tmp/rootfs/lib/
#cp -r tmp/img/lib/modules tmp/rootfs/lib/
#sync
#umount /dev/loopXp2
#losetup -d /dev/loopX
#cd tmp/rootfs/lib/modules/xxx/ ;xxx 是版本目录,根据实际情况输入
#for x in ‘find -name *.ko
‘
>do
>ln -s $x .
>done
#cd ../../../../.. ;回到 work 目录
#sed -i ‘/kmodloader/i \\tulimit -n 51200\n’ tmp/rootfs/etc/init.d/boot
#sed -i ‘s/ttyAMA0/ttyAML0/’ tmp/rootfs/etc/inittab
#sed -i ‘s/ttyS0/tty0/’ tmp/rootfs/etc/inittab
#mkdir -p boot rootfs
#qemu-img create n1-openwrt.img 512M
#parted -s n1-openwrt.img mklabel msdos
#parted -s n1-openwrt.img mkpart primary fat32 17M 117M
#parted -s n1-openwrt.img mkpart primary ext4 117M 100%
#losetup -P -f –show n1-openwrt.img
#mkfs.vfat -n “BOOT” /dev/loopXp1 >/dev/null 2>&1
#mke2fs -F -q -t ext4 -L “ROOTFS” -m 0 /dev/loopXp2 >/dev/null 2>&1
#mount /dev/loopXp1 boot
#mount /dev/loopXp2 rootfs
#cp -r tmp/boot/* boot/
#cp -r tmp/rootfs/* rootfs/
#umount -f boot rootfs
#losetup -d /dev/loopX
#rm -rf tmp/boot
#rm -rf tmp/rootfs
制作完成的映像用烧录工具写到 U 盘上就可以了。把 U 盘插入 N1 并引导完成后,在命令行界面修改一下 IP 地址(/etc/config/network),重启(reboot)或者输入命令 /etc/init.d/network restart,然后打开浏览器输入 IP 地址就能看到管理界面了。