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 BCM27xxSubtarget 选择bcm2709Target pfofile选择树莓派3b,Targetimagetar.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 virtualSubtarget 选择cortex-a15(如果需要64位的,选择ARMv8),Targetimagetar.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


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。