首先下载带有squashfs字样的openwrt固件:
解压得到img文件,为了省事直接改名为openwrt.img,上传到PVE的 /root 目录
安装binwalk
apt install binwalk
cd到root目录,binwalk预览openwrt.img同时会解压到目录下。
binwalk -e openwrt.img
此时同目录下有个_openwrt.img.extracted文件,cd _openwrt.img.extracted/squashfs-root目录下
重新打包,注意最后有*号。
cd _openwrt.img.extracted/squashfs-root
tar zcf openwrt.rootfs.tar.gz *
上传或复制到PVE对应目录,一般为/var/lib/vz/template/cache
开始创建lxc容器
pct create 112 local:vztmpl/openwrt.rootfs.tar.gz --rootfs local-lvm:1 --ostype unmanaged --hostname OpenWrt --arch amd64 --cores 2 --memory 1024 --swap 0 --onboot yes -net0 bridge=vmbr0,name=eth0
各参数说明:
vmid:100
容器编号,可以根据需要自行设置,这里设为100,后面的相关设置会用到该编号。
local:vztmpl/openwrt-21.02.0-rc3-x86-64-rootfs.tar.gz
容器模板, local:vztmpl/ 指向 /var/lib/vz/template/cache/目录,是pve的默认模板存放目录,webUI上传的模板就存在该位置,可根据需要改为其他目录,openwrt-21.02.0-rc3-x86-64-rootfs.tar.gz为模板文件名。
--rootfs local-lvm:4
根磁盘位置,local-lvm可以根据实际情况修改为其他存储位置,4表示空间大小为4G。
--ostype unmanaged
系统类型,之后可在设置文件中修改。
--hostname OpenWrt
容器名称,之后可在设置文件中修改。
--arch amd64
系统架构,amd64 | arm64 | armhf | i386。
--cores 2
分配给容器的核心数。
--memory 2048
分配给容器的内存大小,这里是2G。
--swap 0
分配给容器的交换区大小,这里是0。
-net0 bridge=vmbr0,name=eth0
容器网络设置,这里设置网络0为容器中增加网卡eth0,桥接到主机的vmbr0接口。
设置网络
uci set network.lan.ipaddr=192.168.7.2
uci set network.lan.gateway=192.168.7.1
uci set network.lan.dns=192.168.7.1
uci commit
重启一下
/etc/init.d/network restart
就可以愉快的玩耍openwrt了。
安装好后发现几个小问题:
第一:活动连接显示4096。
nano /usr/lib/lua/luci/view/admin_status/index.htm
找到 local conn_max = 、、、
以下修改最大连接数
修改为下面
local conn_max = tonumber(luci.sys.exec(
"sysctl -n -e net.netfilter.nf_conntrack_max net.ipv4.netfilter.ip_conntrack_max"
):match("%d+")) or 4096
4096改为需要的数值即可。
根据/proc/sys/net/netfilter/nf_conntrack_max的数值为262144。