- PVE中将img镜像转换为CT容器专用模板
- iStoreOS的img镜像文件已经通过PVE的web ui上传到iso文件存放的目录中,找到PVE的ISO文件存放位置,一般是在/var/lib/vz/template/iso/
1、创建一个文件夹,用来挂载要转换的iso文件,文件夹的名称可以自定义
mkdir /mnt/iso
2、然后加载NBD模块,使磁盘镜像可以映射到本地使用(应该是类似windows里面的虚拟光驱一样)
modprobe nbd
3、使用qemu-nbd -c 路径格式和镜像名,挂载指定格式及镜像文件,img文件的格式一般是raw,也就是原始磁盘映像,还有qcow2(QMENU映像格式)和vmdk(VMware映像格式)
qemu-nbd -c /dev/nbd0 -f raw /var/lib/vz/template/iso/op24315.img
op24315 可以根据实际情况修改。
4、查看所挂载的分区
lsblk -f /dev/nbd0
只选择squashfs分区,一般是第二个分区(nbd0p2)
5、使用mount指定分区和文件夹,挂载指定镜像分区到指定文件夹,把squashfs分区挂载到之前建立的文件夹
mount /dev/nbd0p2 /mnt/iso
6、进入挂载的目录,并查看一下目录的文件
cd /mnt/iso && ls
7、使用tar -czvf命令,将挂载的文件夹内的文件打包成CT容器专用的模板并存放在CT容器模板目录下
tar -czvf /var/lib/vz/template/cache/istoreos.rootfs.tar.gz *
8、最后查看一下CT模板专用文件夹的内容,看看模板是否制作成功
ls /var/lib/vz/template/cache/
如果显示有内容,表示转换成功。
9、转换成功后要卸载之前挂载的镜像文件,在卸载之前要把当前所在的目录切换成其他目录,否则无法卸载
cd
10、使用umount命令,指定文件夹,卸载指定的文件夹
umount /mnt/iso
使用qemu-nbd -d命令卸载镜像文件
qemu-nbd -d /dev/nbd0
目前这个方式只成功转换了openwrt这样的img镜像文件,类似Deepin或Windows的iso镜像文件是无法直接转换的,挂载NBD分区的时候会提示写保护,处于只读状态,后续就无法操作了。
PVE下使用LXC容器部署openwrt旁路由
- 使用PVE自带的功能将istoreos的img镜像文件转换为LXC的专用CT模板之后,是无法通过WEB UI进行创建的,会报错,无法创建成功,只能通过命令进行创建。
pct create 100 \
local:vztmpl/istoreos-rootfs.tar.gz \
--rootfs local-lvm:2 \
--ostype unmanaged \
--hostname OpenWrt \
--arch amd64 \
--cores 4 \
--memory 1024 \
--swap 0 \
-net0 bridge=vmbr0,name=eth0
- pct create 100:LXC容器的ID,我设置的100
- local:vztmpl/ 下载或者自己上传的储存路径就在这里,不需要改动,只需要修改后面的文件名,记得带文件扩展名 .gz
- --rootfs local-lvm:2:根磁盘2G大小,磁盘位置: local-lvm默认不需要改动
- --ostype unmanaged:系统类型,不需要改动
- --hostname OpenWrt :容器名OpenWrt,可以自己命名
- --arch amd64:系统架构,x86设备默认amd64
- --cores 4:核心数,我直接分配了4个核心
- --memory 1024 :分配1G内存
- --swap 0:不分配swap
- -net0 bridge=vmbr0,name=eth0 :网络配置,为OpenWrt增加网卡eth0,桥接到主机的vmbr0接口
执行完创建命令之后,先不要启动容器,需要进行一些设置。

开机自启动,打开
创建好之后编辑配置文件
vim /etc/pve/lxc/100.conf
修改容器配置文件:
lxc.include /usr/share/lxc/config/openwrt.common.conf
新增一行
启动容器之后,配置网络
vi /etc/config/network
默认的是192.168.1.1,按照实际需求修改,例如 192.168.2.2
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'
配置之后,在最后再加上DNS和网关的配置,DNS用的阿里云,网关就是路由器IP
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.2.2'
option netmask '255.255.255.0'
option ip6assign '60'
list dns '223.5.5.5'
option gateway '192.168.2.1'
重启网络服务
service network restart
访问OpenWrt后台:http://192.168.2.2,输入密码:password进入后台,调整设置即可访问外网了。
摘抄自以下文献:
正文完
发表至: PVE°
2024 年 5 月 12 日