前言
本文介绍笔者通过 Proxmox VE (PVE) LXC 安装 OpenWRT的折腾记录
前提条件
确保PVE系统已经安装了以下工具:
apt install squashfs-tools
下载 OpenWRT 镜像
从 OpenWRT 的官方网站下载squashfs格式的rootfs镜像,也可以自行编译。
选择与硬件架构匹配的镜像,文中以 openwrt-x86-64-generic-squashfs-rootfs.img
为例。
解压镜像
下载完成后,使用以下命令解压镜像文件:
unsquashfs openwrt-x86-64-generic-squashfs-rootfs.img
进入解压后的目录:
cd squashfs-root
将文件打包为 tar.gz 格式,作为LXC模版:
tar zcf /var/lib/vz/template/cache/openwrt-x86-64-generic-rootfs.tar.gz ./*
创建 LXC 容器
使用以下命令创建一个新的 LXC 容器:
pct create 100 /var/lib/vz/template/cache/openwrt-x86-64-generic-rootfs.tar.gz --rootfs local-lvm:0.5 --ostype unmanaged --hostname openwrt --arch amd64 --cores 2 --memory 512 --swap 256 -net0 bridge=vmbr0,name=eth0 --features keyctl=1,nesting=1
参数说明
-
pct create 100
: 创建一个 ID 为100
的容器。 -
/var/lib/vz/template/cache/openwrt-x86-64-generic-rootfs.tar.gz
: 指定要使用的根文件系统模板的路径。这里是 OpenWRT 的根文件系统。 -
--rootfs local-lvm:0.5
: 设置容器的根文件系统存储位置。local-lvm
表示使用本地 LVM 存储,0.5
表示分配0.5
GB 的存储空间。 -
--ostype unmanaged
: 指定操作系统类型为"unmanaged",表示 Proxmox 不会对已知操作系统进行特定优化。 -
--hostname openwrt
: 将容器的主机名设置为openwrt
。 -
--arch amd64
: 指定容器的架构为 64 位(amd64)。 -
--cores 2
: 分配2
个 CPU 核心给容器。 -
--memory 512
: 分配512
MB 的内存给容器。 -
--swap 256
: 分配256
MB 的交换空间给容器。 -
-net0 bridge=vmbr0,name=eth0
: 配置第一个网络接口,连接到vmbr0
桥接,并将接口命名为eth0
。 -
--features keyctl=1,nesting=1
: 启用特定功能。keyctl=1
允许使用内核密钥管理,nesting=1
允许嵌套虚拟化。
这些参数可以根据需要进行调整,以满足特定的性能和网络需求。 根据需要调整容器的 ID、CPU 核心数、内存和交换空间大小。
配置容器
编辑容器的配置文件:
nano /etc/pve/lxc/100.conf
在文件末尾添加以下内容:
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.mount.auto: proc:mixed sys:ro cgroup:mixed
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
参数说明
-
lxc.cgroup2.devices.allow: a
:- 允许容器访问所有设备。
a
表示所有设备权限。
- 允许容器访问所有设备。
-
lxc.cap.drop:
:- 该参数用于指定要从容器中删除的 Linux 功能(capabilities)。如果没有指定任何功能,表示不删除任何功能。此项通常用于限制容器的特权。
-
lxc.mount.auto: proc:mixed sys:ro cgroup:mixed
:lxc.mount.auto
用于自动挂载文件系统。proc:mixed
表示以混合模式挂载/proc
文件系统,允许容器访问进程信息。sys:ro
表示以只读模式挂载/sys
文件系统,容器可以读取系统信息但不能修改。cgroup:mixed
表示以混合模式挂载 cgroup 文件系统,用于管理资源限制。
-
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
:- 该参数用于手动挂载设备。
/dev/net/tun
是 TUN/TAP 虚拟网络设备的路径。dev/net/tun
是容器内的挂载点。none
表示不指定文件系统类型。bind
表示将主机的设备绑定到容器中。create=file
表示如果挂载点不存在则创建它。
这些配置项主要用于确保容器能够正常访问网络设备,并设置适当的权限和挂载点,以便 OpenWRT 能够正常工作。
启动容器
配置完成后,启动容器:
pct start 100
总结
通过以上步骤,笔者成功在 Proxmox VE 上安装并配置了 OpenWRT。