雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

如何在 Proxmox VE 上创建 Ubuntu 和 Debian 操作系统模板

2024-07-10 132

在任何虚拟化平台中,操作系统模板都是预配置的操作系统映像,可用于部署虚拟机。模板使您能够在几秒钟内创建单个或多个虚拟机实例。始终建议创建具有所有必要配置的特殊模板,而不是使用应用程序数据克隆现有虚拟机,因为它可以为您提供干净的状态。

Proxmox 虚拟化环境与基于容器的模板捆绑在一起,此外,您还可以从 V3.x 系列版本开始创建和部署 KVM 模板。在本文中,我们将介绍创建 Ubuntu 或 Debian Linux 操作系统模板的分步过程。类似的过程可以应用于任何其他 Linux 发行版。

对于 CentOS/Rocky/AlmaLinux 使用:在 Proxmox VE 上创建 Rocky/AlmaLinux/CentOS 操作系统模板

按照本文中介绍的步骤进行 Debian/Ubuntu Linux 模板的有效安装。

1.在Proxmox上创建虚拟机

登录到您的 Proxmox VE 环境并通过右键单击虚拟机管理程序名称 >创建 VM 开始创建 VM。

为虚拟机命名,并可以选择设置虚拟机 ID。为 ID 选择较大的数字可以更好地避免与其他实例混淆。

在“操作系统”下选择“不使用任何媒体”。

在“系统”下选中“Qemu Agent”。无需调整其他设置,默认设置就可以正常工作。

在“磁盘”屏幕上,删除自动添加的 SCSI 磁盘 0。出现提示时确认删除。

您应该收到消息“无磁盘”。这是预期的输出。

设置该VM实例要使用的CPU核心。

为实例设置内存。请注意,提供的值以 MiB 为单位。

在“网络”下,选择网桥名称,然后取消选中防火墙

单击页面下端的“完成”按钮完成设置。

2.附加Cloud-init磁盘

Cloud-init 用于处理虚拟机实例从磁盘启动之前的早期初始化。通过使用 cloud-init,您可以预先配置用户帐户、网络、ssh 密钥等。

我们需要为实例分配CD-ROM驱动器。右键单击虚拟机名称> 硬件 > 添加> CloudInit 驱动器

选择要使用图像的存储。

确认 CloudInit 驱动器已添加到 VM 硬件部分。

根据需要自定义 Cloud Init 配置部分中的每个变量。

例如,您可以为指定的默认用户帐户提供默认密码。

DHCP 更适合网络,因为实例中不需要手动更改 IP 地址。您可以采用基于MAC的DHCP服务。

完整配置示例

3. 下载KVM操作系统镜像

我们将从默认操作系统分发云映像下载、自定义并创建磁盘。

Ubuntu Linux 操作系统映像

### Ubuntu 22.04 ###
wget https://cloud-images.ubuntu.com/releases/jammy/release/ubuntu-22.04-server-cloudimg-amd64.img

### Ubuntu 20.04 ###
wget https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img

### Ubuntu 18.04 ###
wget https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img

Debian Linux 操作系统镜像

### Debian 12 ###
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2

### Debian 11 ###
wget https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2

对于 Ubuntu,使用 .qcow2 扩展名重命名云映像。

### Ubuntu 22.04 ###
mv ubuntu-22.04-server-cloudimg-amd64.img ubuntu-22.04-server-cloudimg-amd64.qcow2

### Ubuntu 20.04 ###
mv ubuntu-20.04-server-cloudimg-amd64.img ubuntu-20.04-server-cloudimg-amd64.qcow2

### Ubuntu 18.04 ###
mv ubuntu-18.04-server-cloudimg-amd64.img ubuntu-18.04-server-cloudimg-amd64.qcow2

将 VM 的磁盘大小调整为合适的默认大小。

### Ubuntu 22.04 Example ###
$ qemu-img resize ubuntu-22.04-server-cloudimg-amd64.qcow2 20G
Image resized.

### Debian 12 Example ###
$ qemu-img resize debian-12-generic-amd64.qcow2 20G
Image resized.

为虚拟机启用控制台。将 777 替换为正确的虚拟机 ID。

$ qm set 777 --serial0 socket --vga serial0
update VM 777: -serial0 socket -vga serial0

4.将创建的磁盘导入VM默认启动盘

将磁盘导入虚拟机的语法是:

qm importdisk <vm_id> <image> <storage_name>

首先列出 Proxmox 服务器运行中的实例和存储域:

root@Proxmox-VE ~ # qm list
      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID
       777 Ubuntu-22.04-Template stopped    2048               0.00 0

root@Proxmox-VE ~ # pvesm status
Name         Type     Status           Total            Used       Available        %
local         dir     active       492392868        11379732       481013136    2.31%

为 ID 为 777 的虚拟机导入磁盘,我们将使用:

$ qm importdisk 777 ubuntu-22.04-server-cloudimg-amd64.qcow2 local
...
transferred 17.0 GiB of 20.0 GiB (84.89%)
transferred 17.2 GiB of 20.0 GiB (86.14%)
transferred 17.5 GiB of 20.0 GiB (87.39%)
transferred 17.7 GiB of 20.0 GiB (88.64%)
transferred 18.0 GiB of 20.0 GiB (89.89%)
transferred 18.2 GiB of 20.0 GiB (91.13%)
transferred 18.5 GiB of 20.0 GiB (92.38%)
transferred 18.7 GiB of 20.0 GiB (93.63%)
transferred 19.0 GiB of 20.0 GiB (94.88%)
transferred 19.2 GiB of 20.0 GiB (96.13%)
transferred 19.5 GiB of 20.0 GiB (97.38%)
transferred 19.7 GiB of 20.0 GiB (98.62%)
transferred 20.0 GiB of 20.0 GiB (99.87%)
transferred 20.0 GiB of 20.0 GiB (100.00%)
transferred 20.0 GiB of 20.0 GiB (100.00%)
Successfully imported disk as 'unused0:local:777/vm-777-disk-0.raw'

有关虚拟机设置的更多信息可以使用 qm config 命令检查:

$ qm config 777
agent: 1
boot: order=ide2;net0
cipassword: **********
ciuser: ubuntu
cores: 1
ide0: local:777/vm-777-cloudinit.qcow2,media=cdrom
ide2: none,media=cdrom
ipconfig0: ip=dhcp
memory: 2048
meta: creation-qemu=7.2.0,ctime=1697459258
name: Ubuntu-22.04-Template
net0: virtio=F2:9D:7D:B1:38:EC,bridge=vmbr1,firewall=1
numa: 0
ostype: l26
scsihw: virtio-scsi-single
serial0: socket
smbios1: uuid=c32a607b-ece6-470c-b301-6f97c9de7d9f
sockets: 1
unused0: local:777/vm-777-disk-0.raw
vga: serial0
vmgenid: bff5d249-26fd-4445-a39c-4088f4fd7b10

重新扫描 Proxmox 服务器中的卷。

$ sudo qm rescan
rescan volumes...

导入映像后,磁盘将保持未使用状态。导航到虚拟机的硬件部分,然后双击以附加它。

单击“添加”将磁盘附加到虚拟机。您可以选中放弃以启用精简配置。

该磁盘现在应该显示为正在使用。

更新选项下的虚拟机启动顺序 > 启动顺序

选择 scsi0 启用并将其拖至 ide2 之后的 2 位置。

设置启动顺序后的视图。

5. 准备 VM 以进行模板化

使用VM控制台访问终端。使用 cloud-init 参数/值中提供的用户名和密码登录。

更新和升级操作系统。

sudo apt update && sudo apt upgrade -y 

接下来在实例中安装 QEMU 来宾代理。

sudo apt install qemu-guest-agent

启用 qemu-guest-agent 在系统引导时启动。

sudo systemctl enable qemu-guest-agent

重置机器 ID。

sudo su -
cat /dev/null > /etc/machine-id
cat /dev/null > /var/lib/dbus/machine-id
cat /dev/null > /var/lib/dbus/machine-id

运行 Cloud Init 清理脚本。

 cloud-init clean

关闭实例

shutdown -h now

6. 从模板创建虚拟机

我们通过克隆模板来创建虚拟机实例。为此有两个标准选项。

  • 链接克隆 – 由此创建的虚拟机需要较少的磁盘空间,但如果不访问基础虚拟机模板就无法运行
  • 完整克隆 – 从完整克隆创建的虚拟机是完整副本,完全独立于原始虚拟机模板,但需要与原始虚拟机相同的磁盘空间。

要克隆,请右键单击模板并选择“克隆”。

选择克隆模式 - 完整链接

选择 VM 实例的目标存储并为其命名。

在启动实例之前,您可以修改硬件并设置默认 Cloud Init 变量的值。

如果一切顺利,实例应该会在几秒钟内启动并运行。

结论

通过本文中给出的过程,您应该在 Proxmox VE 上根据创建的模板创建一个正在运行的实例。您不应再手动安装 Ubuntu 或 Debian Linux 系统。这可以为您节省大量繁琐的手动操作系统安装时间。

有关 Proxmox 的更多信息:

  • 在 Proxmox Hetzner 根服务器上安装 pfSense
  • 如何在 Proxmox VE 上运行 macOS
  • 导出 Proxmox 虚拟机并在 KVM (Libvirt) 上运行

更新于:4个月前
赞一波!3

文章评论

评论问答