本教程详细说明如何使用 debian-12-nocloud-amd64-20250416-2084.qcow2 文件(Debian 12 Cloud Image,AMD64 架构)制作一个适用于 SolusVM 的模板,输出格式为 .gz。由于你的电脑系统是 Windows 10,而制作过程需要 Linux 环境,我们将在 Windows 10 上通过 VirtualBox 运行一个 CentOS 7 虚拟机来完成操作。以下是完整的中文教材,每一步都包含详细的操作说明,确保你能轻松跟随。

制作 SolusVM Debian 12 模板的中文教材
准备工作
1. Windows 10 环境准备
在你的 Windows 10 电脑上,需要安装以下工具:
- VirtualBox:
- 访问 VirtualBox 官网 下载并安装最新版本(免费)。
- 安装完成后,启动 VirtualBox,确保可以创建虚拟机。
- CentOS 7 ISO:
- 访问 CentOS 官网,下载 CentOS 7 Minimal ISO 文件(例如 CentOS-7-x86_64-Minimal-2009.iso)。
- 保存到 Windows 10 的某个文件夹(如 C:\Downloads)。
- WinSCP:
- 下载并安装 WinSCP,用于在 Windows 10 和虚拟机或 SolusVM 服务器之间传输文件。
- PuTTY:
- 下载并安装 PuTTY,用于通过 SSH 连接到 CentOS 7 虚拟机和 SolusVM 服务器。
- Debian 12 Cloud Image:
- 使用浏览器访问以下地址下载镜像:
- https://cdimage.debian.org/images/cloud/bookworm/20250416-2084/debian-12-nocloud-amd64-20250416-2084.qcow2
- 下载后保存到 Windows 10 的某个文件夹(如 C:\Downloads)。
2. 创建 CentOS 7 虚拟机
- 启动 VirtualBox:
- 配置虚拟机:
- 名称:CentOS7-VM(任意命名)。
- 类型:Linux。
- 版本:CentOS (64-bit)。
- 内存:分配 4096 MB(4GB)。
- 硬盘:创建虚拟硬盘,选择 VDI,动态分配,大小 50GB。
- 加载 CentOS 7 ISO:
- 选择新建的虚拟机,点击“设置” > “存储” > “光驱” > 选择下载的 CentOS 7 ISO 文件。
- 网络:确保网络适配器为“桥接”或“NAT”,以便虚拟机可以访问互联网。
- 安装 CentOS 7:
- 启动虚拟机,选择“Install CentOS 7”。
- 选择“Minimal Install”,设置 root 密码(记录下来),完成安装。
- 安装完成后,重启虚拟机,登录 root 用户。
- 配置网络:
- 运行以下命令确保虚拟机可以联网:
bash
nmcli d nmcli con up "System eth0" ping google.com
3. 在 CentOS 7 虚拟机中安装工具
- 更新系统:
- 登录 CentOS 7 虚拟机(通过 VirtualBox 界面或 PuTTY,使用虚拟机 IP 和 root 账户)。
- 运行:
- 安装必要工具:
bash
yum install -y libguestfs-tools qemu-img scp
- libguestfs-tools:用于挂载和编辑镜像。
- qemu-img:用于转换镜像格式。
- scp:用于文件传输。
- 验证安装:
bash
guestfish --version qemu-img --version
4. 获取 Debian 12 Cloud Image
- 传输镜像:
- 如果在 Windows 10 下载了 debian-12-nocloud-amd64-20250416-2084.qcow2,使用 WinSCP 将其传输到 CentOS 7 虚拟机:
- 打开 WinSCP,连接到虚拟机(IP 地址、root 用户、密码)。
- 将文件拖到 /root/ 目录。
- 或者,在 CentOS 7 虚拟机中直接下载:
bash
wget https://cdimage.debian.org/images/cloud/bookworm/20250416-2084/debian-12-nocloud-amd64-20250416-2084.qcow2 -O /root/debian-12-nocloud-amd64.qcow2
- 验证镜像:
bash
ls -lh /root/debian-12-nocloud-amd64.qcow2 qemu-img info /root/debian-12-nocloud-amd64.qcow2
- 确认文件存在,格式为 qcow2,大小合理(通常几百 MB)。
制作模板的步骤
1. 清理和优化镜像
Debian 12 Cloud Image 包含 Cloud-Init 和云环境配置,需要清理以确保 SolusVM 兼容性。
- 挂载镜像:
bash
guestmount -a /root/debian-12-nocloud-amd64.qcow2 -i /mnt
- 这会将镜像的文件系统挂载到 /mnt 目录。
- 如果报错,检查 libguestfs-tools 是否正确安装,或尝试:
bash
export LIBGUESTFS_BACKEND=direct guestmount -a /root/debian-12-nocloud-amd64.qcow2 -i /mnt
- 清理 Cloud-Init 数据:
bash
rm -rf /mnt/var/lib/cloud/*
- 删除 Cloud-Init 缓存和状态,防止新虚拟机继承旧配置。
- 重置机器 ID:
bash
rm -f /mnt/etc/machine-id /mnt/var/lib/dbus/machine-id
- 清理日志和缓存:
bash
rm -rf /mnt/var/log/* /mnt/var/cache/apt/*
- 配置网络为 DHCP:
- Debian Cloud 镜像通常使用 systemd-networkd。创建网络配置文件:
bash
echo -e "[Match]\nName=eth*\n[Network]\nDHCP=yes" > /mnt/etc/systemd/network/20-dhcp.network
- 启用 systemd-networkd 服务:
bash
ln -s /mnt/lib/systemd/system/systemd-networkd.service /mnt/etc/systemd/system/multi-user.target.wants/systemd-networkd.service
- 如果镜像使用传统网络配置,编辑 /mnt/etc/network/interfaces:
bash
echo -e "auto eth0\niface eth0 inet dhcp" >> /mnt/etc/network/interfaces
- 清理 Bash 历史记录:
bash
echo > /mnt/root/.bash_history
- 卸载镜像:
2. 转换为 raw 格式
SolusVM 要求模板为 raw 格式。
- 执行转换:
bash
qemu-img convert -f qcow2 -O raw /root/debian-12-nocloud-amd64.qcow2 /root/debian-12-nocloud-amd64.raw
- 验证文件:
bash
ls -lh /root/debian-12-nocloud-amd64.raw
3. 压缩为 .gz 格式
SolusVM 模板需要使用 gzip 压缩。
- 压缩文件:
bash
gzip /root/debian-12-nocloud-amd64.raw
- 输出文件为 /root/debian-12-nocloud-amd64.raw.gz。
- 验证文件:
bash
ls -lh /root/debian-12-nocloud-amd64.raw.gz
4. 传输到 SolusVM 主控服务器
- 获取 SolusVM 服务器信息:
- 确保你有 SolusVM 主控服务器的 IP 地址(例如 123.123.123.123)和 root 账户凭据。
- 使用 SCP 传输:
- 在 CentOS 7 虚拟机中运行:
bash
scp /root/debian-12-nocloud-amd64.raw.gz
[email protected]:/home/solusvm/kvm/template/
- 按提示输入 SolusVM 服务器的 root 密码。
- 或者,使用 WinSCP:
- 连接到 CentOS 7 虚拟机,下载 debian-12-nocloud-amd64.raw.gz 到 Windows 10。
- 再连接到 SolusVM 服务器,上传文件到 /home/solusvm/kvm/template/。
- 重命名模板:
- 登录 SolusVM 服务器(使用 PuTTY 或 WinSCP 的终端)。
- 运行:
bash
mv /home/solusvm/kvm/template/debian-12-nocloud-amd64.raw.gz /home/solusvm/kvm/template/linux-debian-12-amd64-nocloud.gz
5. 在 SolusVM 中添加模板
- 登录 SolusVM 管理面板:
- 打开浏览器,访问 SolusVM 管理地址(例如 https://your-solusvm-ip:5353),使用管理员账户登录。
- 添加模板:
- 导航到 Media > Add KVM Template。
- 填写以下信息:
- Filename:linux-debian-12-amd64-nocloud.gz
- Generation:选择 2(适用于现代 KVM 环境)。
- Disk Driver:选择 virtio(Debian Cloud 镜像支持 VirtIO)。
- Partition # to Resize:输入 1(通常为根分区 /dev/vda1)。
- Swap Partition:输入 2(如果镜像包含 swap 分区,否则留空)。
- 检查分区(可选):
- 如果不确定分区布局,在 CentOS 7 虚拟机中运行:
bash
guestfish --ro -a /root/debian-12-nocloud-amd64.qcow2 run list-filesystems
- 确认根分区(通常 /dev/sda1 或 /dev/vda1)和 swap 分区(如果有)。
- 保存并同步:
- 点击保存。
- 导航到 Media > Synchronize Templates,选择目标节点,点击同步。
6. 测试模板
- 创建虚拟机:
- 在 SolusVM 面板中,导航到 Virtual Servers > Add KVM Virtual Server。
- 选择刚添加的模板(linux-debian-12-amd64-nocloud)。
- 配置 CPU、内存、磁盘大小等(建议 1 核心、2GB 内存、10GB 磁盘)。
- 创建并启动虚拟机。
- 连接虚拟机:
- 使用 SolusVM 的 VNC Console 或 SSH 连接:
- 默认用户可能是 debian(Cloud 镜像默认),密码可能为空或需通过 Cloud-Init 设置。
- 如果无法登录,检查 /mnt/etc/cloud/cloud.cfg 中的用户设置(在步骤 1 中可预配置)。
- 验证系统:
- 修复常见问题:
- 网络不可用:
- 登录虚拟机,运行:
bash
systemctl restart systemd-networkd dhclient eth0
- 或者在 SolusVM 面板中重新分配网卡(Manage > Network)。
- 磁盘大小未扩展:
- 登录虚拟机,运行:
- 确认 SolusVM 模板设置中的分区编号(应为 1)。
- Cloud-Init 未初始化:
- 手动触发:
- 或者禁用 Cloud-Init(在步骤 1 中清理 /mnt/var/lib/cloud/*)。
注意事项
- Cloud-Init 配置:
- Debian Cloud 镜像内置 Cloud-Init,可能在首次启动时尝试配置用户、网络等。为避免干扰,步骤 1 中清理了 Cloud-Init 数据。
- 如果需要在虚拟机中保留 Cloud-Init 功能,可在步骤 1 中编辑 /mnt/etc/cloud/cloud.cfg,设置默认用户(如 debian)和 SSH 密钥:
yaml
users: - name: debian ssh-authorized-keys: - ssh-rsa 你的公钥 sudo: ALL=(ALL) NOPASSWD:ALL
- 生成 SSH 密钥对:
- 在 Windows 10 的命令提示符或 PowerShell 中运行:
cmd
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
- 公钥位于 ~/.ssh/id_rsa.pub。
- 分区布局:
- Debian Cloud 镜像通常只有一个根分区(ext4)和可能的 swap 分区。使用 guestfish 确认:
bash
guestfish --ro -a /root/debian-12-nocloud-amd64.qcow2 run list-partitions
- 如果没有 swap 分区,SolusVM 的 Swap Partition 字段留空。
- VirtIO 驱动:
- debian-12-nocloud-amd64 镜像支持 VirtIO 磁盘和网络驱动,与 SolusVM 的 KVM 环境兼容。
- Windows 10 操作:
- WinSCP 和 PuTTY 提供图形化界面,适合初学者。
- 如果 VirtualBox 虚拟机运行缓慢,检查 Windows 10 的 CPU 和内存使用情况,必要时关闭其他程序。
- SolusVM 文档:
所需工具总结
- Windows 10:
- VirtualBox(运行 CentOS 7)
- WinSCP(文件传输)
- PuTTY(SSH 客户端)
- CentOS 7 虚拟机:
- libguestfs-tools
- qemu-img
- scp
- 其他:
- Debian 12 Cloud Image(debian-12-nocloud-amd64-20250416-2084.qcow2)
- SolusVM 主控服务器的 SSH 访问权限
常见问题及解决方法
- 模板启动后网络不可用:
- 检查虚拟机的网络配置文件:
bash
cat /etc/systemd/network/20-dhcp.network
- 确保 systemd-networkd 启用:
bash
systemctl status systemd-networkd
- 在 SolusVM 面板中重新分配网卡(Manage > Network > Reconfigure)。
- 磁盘大小未正确扩展:
- 登录虚拟机,检查分区:
- 扩展文件系统:
- 确认 SolusVM 模板设置中的 Partition # to Resize 为 1。
- 无法通过 SSH 登录:
- 检查 /etc/cloud/cloud.cfg 是否配置了默认用户和 SSH 密钥。
- 临时通过 SolusVM 的 VNC 控制台登录,设置用户密码:
- SolusVM 报错“无效模板”:
- 确保文件名正确(linux-debian-12-amd64-nocloud.gz)。
- 检查 .gz 文件是否损坏:
bash
gunzip -t /home/solusvm/kvm/template/linux-debian-12-amd64-nocloud.gz
- 必要时重新压缩和传输。
快速参考命令
以下是在 CentOS 7 虚拟机中执行的核心命令:
bash
# 安装工具 yum install -y libguestfs-tools qemu-img scp # 清理镜像 guestmount -a /root/debian-12-nocloud-amd64.qcow2 -i /mnt rm -rf /mnt/var/lib/cloud/* rm -f /mnt/etc/machine-id /mnt/var/lib/dbus/machine-id rm -rf /mnt/var/log/* /mnt/var/cache/apt/* echo -e "[Match]\nName=eth*\n[Network]\nDHCP=yes" > /mnt/etc/systemd/network/20-dhcp.network ln -s /mnt/lib/systemd/system/systemd-networkd.service /mnt/etc/systemd/system/multi-user.target.wants/systemd-networkd.service echo > /mnt/root/.bash_history guestunmount /mnt # 转换为 raw 格式 qemu-img convert -f qcow2 -O raw /root/debian-12-nocloud-amd64.qcow2 /root/debian-12-nocloud-amd64.raw # 压缩为 .gz gzip /root/debian-12-nocloud-amd64.raw # 传输到 SolusVM scp /root/debian-12-nocloud-amd64.raw.gz
[email protected]:/home/solusvm/kvm/template/
如果你在操作过程中遇到具体问题(例如网络配置失败、模板无法启动)或需要额外的自定义(例如预安装软件、配置特定用户),请提供详细信息,我会为你提供针对性的解决方案!
「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」