说明
本文使用的PVE版本为7.1-10,理论上7.1以上都适用,但是不做保证,需要你自行尝试,建议新装PVE用户尝试,否则出现意外情况,我不对数据丢失负责。为啥要用LXC装OpenWrt本文不展开,感兴趣的自行百度。
1.安装PVE增强版内核
下载 PVE7.1LXC增强内核 ,该内核加入OpenWrt需要的Fullcone、Flow加速内核、TPROXY,OpenWrt可以以LXC容器的方式直接运行在PVE里面免虚拟化层速度飞快,打开I225 B3的5.17内核的4队列RSS支持和ZeorCopy加速。
解压,将压缩包里的5个deb安装文件上传到PVE root目录下,SSH登录PVE后台,依次安装,如:
dpkg -i linux-tools-5.13_5.13.19-14_amd64.deb
dpkg -i linux-tools-5.13-dbgsym_5.13.19-14_amd64.deb
dpkg -i pve-headers-5.13.19-6-pve_5.13.19-14_amd64.deb
dpkg -i pve-kernel-5.13.19-6-pve_5.13.19-14_amd64.deb
dpkg -i pve-kernel-libc-dev_5.13.19-14_amd64.deb
重启PVE,进入PVE web面板查看内核版本有无变更,视为安装成功
2.安装OpenWrt
2.1创建CT模板
Openwrt的镜像格式必须为-rootfs.img、-rootfs.img.gz或者-rootfs.tar.gz的文件-rootfs.img、-rootfs.img.gz需要解包后打包,-rootfs.tar.gz可以直接使用。
找到你的大腿,要到 openwrt-x86-64-generic-rootfs.tar.gz ,如果找不到,可以直接下我提供的,当然仅作试验,毕竟每个人需求不一样,还是找到自己合适的OpenWrt镜像。
打开PVE web面板,如https://192.168.1.3:8006, 打开local(pve)-CT模板,上传你的OpenWrt镜像。
通过SSH或者是网页端打开PVE终端,执行以下命令创建新容器
pct create 105 \
local:vztmpl/openwrt-x86-64-generic-rootfs.tar.gz \
--rootfs local-lvm:4 \
--ostype unmanaged \
--hostname OpenWrt \
--arch amd64 \
--cores 2 \
--memory 2048 \
--swap 0 \
-net0 bridge=vmbr0,name=eth0
容器编号,可以根据需要自行设置,这里设为100,后面的相关设置会用到该编号。
local:vztmpl/openwrt-x86-64-generic-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接口。
2.2修改容器配置文件,
vim /etc/pve/lxc/105.conf
添加以下内容,
# openwrt.common.conf是PVE自带的openwrt配置文件示例,内含一些基本设置
lxc.include: /usr/share/lxc/config/openwrt.common.conf
# /dev/ppp pppoe拨号等功能需要用到
lxc.cgroup2.devices.allow: c 108:0 rwm
# 钩子脚本,用于添加 /dev/ppp等设备
hookscript: local:snippets/hookscript.pl
# 将主机的网卡enp4s0分配给容器使用,根据自己的实际情况更改
lxc.net.1.type: phys
lxc.net.1.link: enp4s0
lxc.net.1.flags: up
其中 108:0
可以通过 ls -l /dev/ppp
命令获得。
2.3创建钩子脚本
这里在官方示例guest-example-hookscript.pl的基础上进行修改,大家可以根据需要自行修改
mkdir /var/lib/vz/snippets
cp /usr/share/pve-docs/examples/guest-example-hookscript.pl /var/lib/vz/snippets/hookscript.pl
vim /var/lib/vz/snippets/hookscript.pl
在第36行可以找到以下内容
# Second phase 'post-start' will be executed after the guest
# successfully started.
print "$vmid started successfully.\n";
修改为
# Second phase 'post-start' will be executed after the guest
# successfully started.
system("lxc-device add -n $vmid /dev/ppp");
system("lxc-device add -n $vmid /dev/net/tun");
print "$vmid started successfully.\n";
启动OpenWrt,web面板,点启动,查看内核版本
大佬,内核地址失效了
兄弟写的非常好 https://www.cscnn.com/