背景
编译自己的OpenWrt,然后在ubuntu上使用kvm启动,然后作为旁路网关接入到网络中而不影响到目前家里的网络,避免家里人也走到“别的网络”去
编译OpenWrt (Debian系)
-
安装依赖
sudo apt update -y sudo apt full-upgrade -y sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \ bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \ git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \ libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \ mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \ libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \ vim wget xmlto xxd zlib1g-dev
-
拉取源码
git clone https://github.com/coolsnowwolf/lede cd lede echo "src-git helloworld https://github.com/fw876/helloworld.git" >> feeds.conf.default ./scripts/feeds update -a ./scripts/feeds install -a make menuconfig
make menuconfig 之后选择平台,我这里选的是x86_64的,主要的一些功能在下面的luci应用里面 **LuCI - Applications **, 可以根据自己的选择进行配置,*表示编译进固件表示为内建(类似编程语言的原生库),M代表Module模块应该是可以单独拎出来直接安装那种,可以按空格键进行切换*或者M
配置完这些就save保存或者直接exit,最后有一个问你是否要保存的. 最后开始下载与编译
make download -j$(nproc) make V=s -j$(nproc) #编译完成后固件在lede目录下的 bin/targets/x86/64/ ls config.buildinfo openwrt-x86-64-generic-squashfs-combined-efi.img.gz profiles.json feeds.buildinfo openwrt-x86-64-generic-squashfs-combined-efi.vmdk sha256sums openwrt-x86-64-generic-kernel.bin openwrt-x86-64-generic-squashfs-rootfs.img.gz version.buildinfo openwrt-x86-64-generic.manifest packages
安装KVM
KVM是基于内核的虚拟机,各大云平台都在使用,主要是可以通过api方便的控制虚拟机的资源吧,操作其实也很方便
sudo apt install -y qemu-kvm virt-manager libvirt-daemon-system virtinst libvirt-clients bridge-utils
我们把上面的虚拟机可以直接使用img也可以,也可以把img或者vmdk转成kvm的qcow2格式也可以
转换格式命令为
#转换
qemu-img convert -O qcow2 ./openwrt-x86-64-generic-squashfs-combined-efi.img ./openwrt.qcow2
#转换并压缩
qemu-img convert -c -f vmdk -O qcow2 ./openwrt-x86-64-generic-squashfs-combined-efi.vmdk ./openwrt.qcow2
我们这里就不转换了,直接启动img格式的OpenWrt
# 我们这里加了vnc,方便后续查看结果,当然你也可以不加后面那一段--vnc参数
sudo virt-install --name openwrt --ram 1024 --vcpus 2 --disk path=openwrt-x86-64-generic-squashfs-combined-efi.img --network bridge=br0 --mac=52:54:00:AA:AA:01 --force --import --autostart --vnc --vncport=5911 --vnclisten=0.0.0.0
sudo virt-install --name openwrt --osinfo linux2022 --memory 1024 --vcpus=2 --disk=openwrt.qcow2 --network bridge=br0 --mac=52:54:00:AA:AA:02 --graphics vnc,port=5912,listen=0.0.0.0 --import --autostart
#如果我们使用qcow2的话
sudo virt-install --name openwrt --memory 1024 --vcpus=2 --disk=openwrt.qcow2 --network bridge=br0 --mac=52:54:00:AA:AA:01 --graphics vnc,listen=0.0.0.0 --autostart --import --autostart --vnc --vncport=5911 --vnclisten=0.0.0.0