树莓派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
发表评论