记录下,在LXC中安装openwrt
1、上传模板到PVE:
2、新建LXC容器
执行以下命令创建新容器
pct create 101 \
local:vztmpl/openwrt-x86-64-generic-rootfs.tar.gz \
--rootfs local-lvm:4 \
--ostype unmanaged \
--hostname OpenWrt \
--arch amd64 \
--cores 4 \
--memory 512 \
--swap 0 \
-net0 bridge=vmbr0,name=eth0
各参数说明:
vmid:101
容器编号,可以根据需要自行设置,这里设为101,后面的相关设置会用到该编号。
local:vztmpl/openwrt-x86-64-generic-rootfs.tar.gz
容器模板, local:vztmpl/ 指向 /var/lib/vz/template/cache/目录,是pve的默认模板存放目录,webUI上传的模板就存在该位置,可根据需要改为其他目录,openwrt-x86-64-generic-rootfs.tar.gz为模板文件名。
--rootfs local-lvm:4
根磁盘位置,local-lvm可以根据实际情况修改为其他存储位置,4表示空间大小为4G。
--ostype unmanaged
系统类型,之后可在设置文件中修改。
--hostname OpenWrt
容器名称,之后可在设置文件中修改。
--arch amd64
系统架构,amd64 | arm64 | armhf | i386。
--cores 4
分配给容器的核心数。
--memory 512
分配给容器的内存大小,这里是512MB。
--swap 0
分配给容器的交换区大小,这里是0。
-net0 bridge=vmbr0,name=eth0
容器网络设置,这里设置网络0为容器中增加网卡eth0,桥接到主机的vmbr0接口。
3、修改容器配置文件
nano /etc/pve/lxc/101.conf
添加以下内容
# openwrt.common.conf是PVE自带的openwrt配置文件示例,内含一些基本设置
lxc.include: /usr/share/lxc/config/openwrt.common.conf
# /dev/ppp pppoe拨号等功能需要用到
lxc.cgroup.devices.allow: c 108:0 rwm
# 钩子脚本,用于添加 /dev/ppp等设备
hookscript: local:snippets/101-hookscript.pl
Tips:不管有没有设置,容器都会加载/usr/share/lxc/config/common.conf配置文件
4、创建钩子脚本
mkdir -p /var/lib/vz/snippets
cp /usr/share/pve-docs/examples/guest-example-hookscript.pl /var/lib/vz/snippets/101-hookscript.pl
nano /var/lib/vz/snippets/101-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";
5、启动容器
pct start 101
6、openwrt设置
容器启动后,进入容器终端
lxc-attach 101
修改root密码
passwd
网络设置
vi /etc/config/network
重启网络和防火墙,之后测试是否可以打开openwrt页面
/etc/init.d/network restart
/etc/init.d/firewall restart
7、设置openwrt网卡
openwrt关机后,修改/etc/pve/lxc/101.conf,删除桥接网卡。即这行 “net0: name=eth0,bridge=vmbr0,hwaddr=….",并追加以下配置
lxc.net.0.type: phys
lxc.net.0.link: enp1s0f3
lxc.net.0.name: eth0
lxc.net.0.ipv4.address: 192.168.1.3/24
lxc.net.0.ipv4.gateway: 192.168.1.1
lxc.net.0.flags: up
7、禁用/etc/init.d/wsdd2
wsdd2会报错,所以禁用掉
/etc/init.d/wsdd2 disable
8、gost安装
安装gost_2.11.1-1_x86_64.ipk
修改脚本/etc/init.d/gost
赋权
chmod +x gost
开机自启动
/etc/init.d/gost enable