openwrt源码编译树莓派镜像
缘起
接上一篇文章,最近在折腾树莓派上docker
运行openwrt
,而官方没有对树莓派提供rootfs
,只提供了供物理安装的img镜像(docker不能用)。
因此折腾从源码编译出来树莓派对应的系统,这样运行起来会好一点。
折腾过程
确认树莓派对应的target情况
在openwrt的这个页面,参考https://openwrt.org/toh/raspberry_pi_foundation/raspberry_pi,专门介绍了树莓派各个版本对应的target情况,树莓派3b对应的是bcm27xx/bcm2710
编译源码
目前使用的编译系统是ubuntu20.04
,采用如下过程进行树莓派源码的下载和编译设置。
# 克隆源码 git clone cd openwrt # 更新package ./scripts/feeds update -a ./scripts/feeds install -a # 设置编译参数,这里设备需要选择树莓派对应的bcm27xx/bcm2709 make menuconfig # 进行编译(8线程并行编译) make j8
其中menuconfig
配置中,Target System
选择Broadcom BCM27xx
,Subtarget
选择bcm2709
,Target pfofile
选择树莓派3b,Targetimage
把tar.gz
按空格键选择上,然后保存后退出。
其他的各类设置,比如内置包等等可以自行选择即可。
经过上面的命令后,可以等上一下,等编译完成后就得到镜像啦。
openwrt-bcm27xx-bcm2709-rpi-ext4-factory.img.gz openwrt-bcm27xx-bcm2709-rpi-ext4-sysupgrade.img.gz openwrt-bcm27xx-bcm2709-rpi-squashfs-factory.img.gz openwrt-bcm27xx-bcm2709-rpi-squashfs-sysupgrade.img.gz openwrt-bcm27xx-bcm2709-rpi-2-rootfs.tar.gz
经过验证,openwrt-bcm27xx-bcm2709-rpi-2-rootfs在docker下无法正常使用的。
最终还是要使用armvirt架构的,可以使用官方提供的armvirt-32进行运行。
编译armvirt架构
其中menuconfig配置中,Target System
选择Qemu virtual
,Subtarget
选择cortex-a15
(如果需要64位的,选择ARMv8
),Targetimage
把tar.gz
按空格键选择上,然后保存后退出。
后续保存后make即可。
关于编译主机
经过测试,openwrt项目可以在ubuntu下编译通过,也可以在树莓派的arm架构cpu的系统上编译通过的,配置方法都一样。
总结
最终一番折腾,发现要想使用docker在树莓派上运行openwrt,还是需要使用amrvirt
架构的,正常选择树莓派的硬件是没法运行成功的(运行起来无法正常联网)。
参考
https://hackmd.io/@c_0KKCwzQE2rsd39mpvNQQ/B1IfKYKDd
https://openwrt.org/toh/raspberry_pi_foundation/raspberry_pi
https://github.com/openwrt/docker
https://cclinuxer.github.io/2021/01/OpenWrt进行qemu模拟/
https://github.com/coolsnowwolf/lede/issues/5887
发表评论