Skip to main content

使用cloud-img镜像快速在PVE环境部署虚拟机

建立虚拟机

qm create 9991 --name Debian-10-01template --net0 virtio,bridge=vmbr0 --ostype l26 --memory 2048 --cpu host

导入磁盘镜像

qm importdisk 9991 debian-10-generic-amd64-20230917-1506.qcow2 local-ssd -format qcow2

挂载导入的磁盘到控制器

qm set 9991 --scsihw virtio-scsi-single --scsi0 local-ssd:vm-9991-disk-0

配置cloud-init驱动

qm set 9991 --ide2 local-ssd:cloudinit

配置引导磁盘

qm set 9991 --boot order=scsi0

启用QEMU Guest Agent

qm set 9991 --agent enabled=1(默认值 = 0关闭)

配置虚拟机使用ovmf还是传统bios

qm set 9991 --bios ovmf <ovmf | seabios>(默认值 = seabios)

配置虚拟机使用核心数量

qm set 9991 --cores 2 (1 - N ,默认值 = 1)

配置虚拟机内存大小

qm set 9991 --memory 512   (默认值 = 512 扩容以MB为单位)

配置虚拟机安装的OS类型

qm set 9991 --ostype 126 <l24 | l26=Linux2.6-6.x | 其他 | solaris | w2k | w2k3 | w2k8 | win10 | win11 | win7 | win8 | wvista | wxp>(注意该命令无法设置Linux,可能是bug,124和126参数在命令行控制会报错)

配置直通显卡示范如ga rx580 2048sp

  • 此处第一个示范为直通并且让客户机可见ROM信息:
qm set 9991 -hostpci0 0000:02:00,pcie=1,x-vga=1,romfile=rx5802048sp.rom,rombar=1 

下载显卡ROM

  • 如果需要覆盖ID请下载对应覆盖后可以驱动的ROM 比如2048sp,覆盖为2304sp的显卡ID
  • 可用选项包括 vendor-id、device-id、sub-vendor-id 和 sub-device-id如果需要覆盖硬件ID可以使用,请注意选取的ROM A卡必须显存相同,下面是覆盖硬件ID的一个示范:
qm set 9991 -hostpci0 000:02:00,vendor-id=0x1002,device-id=0x67df,pcie=1,x-vga=1,romfile=rx580234sp.rom,rombar=1

添加串口显示控制台

qm set 9991 --serial0 socket  --vga serial0

转换为模板机器

qm template 9991

克隆虚拟机

qm clone 9991 103 --name debian-10
  • 克隆虚拟机命令说明: qm clone 模板机器ID 新虚拟机ID --name 设定新名称

配置虚拟机CPU模式host性能最好

qm set 9991 --cpu host

配置cloud-init使用的数据

1、添加带有预注册密钥,安全启动支持的uefi配置保存磁盘

qm set 9991 -efidisk0 local-lvm:1,format=raw,efitype=4m,pre-enrolled-keys=1

2、添加TPM2.0支持

qm set 9991 -tpmstate0 local-lvm:1,version=v2.0

3、添加需要的公钥用于配置免密码登陆可以是RSA等任意

qm set 9991 --sshkey ~/.ssh/id_ed25519.pub

4、配置网络吗,网关和ip

qm set 9991 --ipconfig0 ip=10.0.10.123/24,gw=10.0.10.1,ip6=auto

5、配置用户名和密码,注意此处为cloud-init初始化会往机器内配置的

qm set 9991 --ciuser ymwl --cipassword 123456

6、配置是否开机后调用cloud-init更新系统包,默认值1开启,可选值0关闭

qm set 9991 --ciupgrade 1

7、设置自定义dns解析服务器

qm set 9991 --nameserver 8.8.8.8