树莓派docker及qemu安装openwrt

缘起

最近发现群辉增加一块ssd用来运行虚拟机的openwrt后,所有的硬盘无法休眠了;这样的话nas几个设备的功耗直逼120w,这对7*24运行的nas来讲还是太大了。

因此折腾把群辉的虚拟机取消,达到日常硬盘休眠低功耗运行的目的。

而目前没有其他的设备来跑openwrt,老的openwrt又成了单点运行,无法通过keepalived来动态热备了。

因此折腾在树莓派上再跑一个openwrt,包括docker或者qemu虚拟机,通过折腾发现docker没有官方的相关教程就放弃了。

折腾过程

树莓派docker运行openwrt

由于树莓派上docker比较老,没有相关教程创建br网卡等操作,最终放弃了。

可以参考这篇说明https://github.com/openwrt/docker,通过下面的命令跑起来,但是网络没有设置成功。

sudo docker run --rm -it openwrtorg/rootfs:arm_cortex-a9_vfpv3-d16

树莓派qemu运行openwrt

参考这篇文章https://gist.github.com/extremecoders-re/f2c4433d66c1d0864a157242b6d83f67,可以通过openwrt官方的镜像跑起来openwrt,但是网络是不通的

运行的命令如下:

qemu-system-arm -M virt-2.8  -kernel zImage  -no-reboot -nographic  -device virtio-net-pci  -netdev user,id=net1,hostfwd=tcp::2222-:22 -device virtio-net-pci,netdev=net1  -drive file=root.ext4,if=virtio,format=raw  -append "root=/dev/vda"

参考这篇文章https://blog.csdn.net/baidu_31504167/article/details/88988929,创建tap虚拟网卡桥接到物理网络,最终的命令如下:

1、创建tap网卡

#配置虚拟网桥的操作
sudo brctl addbr br0                     # 增加一个虚拟网桥br0
sudo brctl addif br0 eth0                # 在br0中添加一个接口eth0
sudo brctl stp br0 off                   # 只有一个网桥,所以关闭生成树协议
sudo brctl setfd br0 1                   # 设置br0的转发延迟
sudo brctl sethello br0 1                # 设置br0的hello时间
sudo ifconfig br0 0.0.0.0 promisc up     # 打开br0接口
sudo dhclient br0                        # 从dhcp服务器获得br0的IP地址
#brctl show br0                      # 查看虚拟网桥列表
#brctl showstp br0                   # 查看br0的各接口信息

#在没有dhcp服务器的网络中也可以用ifconfig命令为br0接口配置一个静态IP地址:
#ifconfig br0 192.168.0.22 netmask 255.255.255.0
#route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.254

#配置TAP设备的操作:
sudo tunctl -t tap0 -u root              # 创建一个tap0接口,只允许root用户访问
sudo brctl addif br0 tap0                # 在虚拟网桥中增加一个tap0接口
sudo ifconfig tap0 0.0.0.0 promisc up    # 打开tap0接口
#brctl showstp br0                   # 显示br0的各个接口

2、运行qemu虚拟机

sudo qemu-system-arm -M virt-2.8     -kernel openwrt-18.06.1-armvirt-32-zImage     -nographic     -no-reboot     -drive file=openwrt-18.06.1-armvirt-32-root.ext4,if=virtio,format=raw     -append "root=/dev/vda"  -net nic,macaddr=00:16:3e:00:00:01 -net tap,ifname=tap0,script=no,downscript=no -smp 2

最终成功运行起来openwrt,但是由于是qemu模拟的,运行实在是太慢,进入openwrt的网页都得很久。

最终放弃了折腾树莓派上的openwrt

总结

这次折腾是失败告终,其实树莓派运行openwrt最好的方法是使用openwrt的镜像,直接启动树莓派;但是我的树莓派现在已经有系统再跑,这个就不合适了。后续要是再尝试的话,可以试试docker的新版本看看。

参考

https://github.com/openwrt/docker

https://gist.github.com/extremecoders-re/f2c4433d66c1d0864a157242b6d83f67

https://blog.csdn.net/baidu_31504167/article/details/88988929


发表评论

必填

选填

选填

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