Proxmox VE 中安装 Arch Linux 虚拟机完全指南
家里的 Proxmox VE 上跑了不少虚拟机 ——Ubuntu、Debian、各种 Docker 宿主。但有些场景需要更灵活的环境,比如测试最新内核、跑 AUR 里的冷门包,这时候 Arch Linux 就很合适。
不过 PVE 上装 Arch 不像 Ubuntu 那样选个 ISO 下一步就完事。要手动分区、装引导、配网络,中间还有几个 PVE 特有的坑。踩完一遍,这篇把过程完整记下来。
环境:Proxmox VE 8.x,node zcpve(192.168.3.198)。
准备工作
下载 Arch ISO
SSH 登录 PVE 宿主机:
ssh root@192.168.3.198下载最新 Arch ISO 到 PVE 的镜像存储:
cd /var/lib/vz/template/isowget https://mirrors.ustc.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso国内镜像更快,任选一个:
| 镜像站 | 地址 |
|---|---|
| 中科大 | https://mirrors.ustc.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso |
| 清华 | https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso |
| 阿里云 | https://mirrors.aliyun.com/archlinux/iso/latest/archlinux-x86_64.iso |
确认 PVE 内核模块
确认 virtio 和 ballooning 内核模块已加载:
lsmod | grep -E "virtio|vhost"modprobe virtio_balloon # 如果没加载创建虚拟机
登录 PVE Web 界面 https://192.168.3.198:8006,按以下参数创建。
基本设置
| 参数 | 值 | 说明 |
|---|---|---|
| Node | zcpve | |
| VM ID | 自动分配 | 记住这个 ID |
| Name | archlinux | 自定义 |
OS 设置
| 参数 | 值 |
|---|---|
| ISO Image | 选择刚下载的 archlinux-x86_64.iso |
| Guest OS Type | Linux |
| Guest OS Version | 6.x - 2.6 Kernel 或 l26 |
System 设置
| 参数 | 值 | 说明 |
|---|---|---|
| Graphic card | VMWare compatible | 兼容性最好 |
| SCSI Controller | VirtIO SCSI | 最佳性能 |
| BIOS | OVMF (UEFI) | 必须 UEFI,Arch 推荐 |
| EFI Storage | local-lvm 或你的存储 | |
| Pre-Enroll Keys | ❌ 不要勾选 | Arch ISO 未签 Secure Boot 密钥,勾了会 Access Denied |
| Qemu Agent | ✅ 勾选 | 启用 Guest Agent |
| TPM Storage | local-lvm | OVMF 需要 |
Disks 设置
| 参数 | 值 |
|---|---|
| Bus/Device | SCSI |
| Storage | 按实际情况选 |
| Disk size | 32 GiB 起步 |
| Cache | Write back(SSD)或 None |
| Discard | ✅ 勾选(SSD TRIM) |
| SSD emulation | ✅ 勾选(如果是 SSD) |
CPU 设置
| 参数 | 值 |
|---|---|
| Sockets | 1 |
| Cores | 2–4(按需) |
| Type | host(最佳性能) |
Memory 设置
| 参数 | 值 |
|---|---|
| Memory | 2048 MiB 起步,4096 更好 |
| Ballooning | ✅ 勾选 |
Network 设置
| 参数 | 值 |
|---|---|
| Bridge | vmbr0 |
| Model | VirtIO (paravirtualized) |
检查所有设置,点 Finish。
Arch Linux 安装
启动虚拟机
在 PVE Web 中点 VM → Console → Start Now。
如果你的网络不使用 DHCP,可以先在 PVE 的 VM 选项里把网卡 Model 设为 Intel E1000,装完再改回 VirtIO—— 这样 ISO 启动时自动有网。
验证启动模式
cat /sys/firmware/efi/fw_platform_size输出 64 表示 UEFI 64 位启动成功。若不是,回到 PVE 检查 BIOS 设置。
网络连接
如果用了 VirtIO 网卡,先加载模块:
modprobe virtio_net有线网络(DHCP 自动获取):
ip link如果网卡名不是 eth0,可能是 enpXsY 格式。确认链路状态:
ip link set <网卡名> up验证联网:
ping -c 3 archlinux.org更新时间
timedatectl set-ntp true分区
UEFI 分区方案(GPT):
lsblk # 确认磁盘名,通常是 /dev/sdaparted 一键分区:
parted /dev/sda mklabel gptparted /dev/sda mkpart primary fat32 1MiB 513MiBparted /dev/sda set 1 esp onparted /dev/sda mkpart primary ext4 513MiB 100%分区结果:
| 分区 | 大小 | 类型 | 说明 |
|---|---|---|---|
/dev/sda1 | 512M | EFI System | EFI 分区 |
/dev/sda2 | 剩余全部 | Linux filesystem | 根分区 |
格式化:
mkfs.fat -F 32 /dev/sda1mkfs.ext4 /dev/sda2挂载:
mount /dev/sda2 /mntmount --mkdir /dev/sda1 /mnt/boot选择镜像源(国内加速)
reflector --country China --protocol https --latest 5 --sort rate --save /etc/pacman.d/mirrorlist或者手动指定:
echo 'Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist安装基础系统
pacstrap -K /mnt base base-devel linux linux-firmware \ vim sudo networkmanager openssh \ qemu-guest-agent包说明:
| 包 | 作用 |
|---|---|
base | 基础系统 |
base-devel | 编译工具链 |
linux | 内核 |
linux-firmware | 硬件固件 |
vim | 编辑器 |
sudo | 权限管理 |
networkmanager | 网络管理 |
openssh | SSH 服务 |
qemu-guest-agent | PVE Guest Agent |
生成 fstab
genfstab -U /mnt >> /mnt/etc/fstabChroot 进入新系统
arch-chroot /mnt基础配置
时区:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimehwclock --systohc本地化:
echo 'en_US.UTF-8 UTF-8' > /etc/locale.genecho 'zh_CN.UTF-8 UTF-8' >> /etc/locale.genlocale-genecho 'LANG=en_US.UTF-8' > /etc/locale.conf主机名:
echo 'archlinux' > /etc/hostname用户:
useradd -m -G wheel <你的用户名>passwd <你的用户名>passwd rootsudo 权限:
echo '%wheel ALL=(ALL:ALL) ALL' > /etc/sudoers.d/wheel安装引导程序(systemd-boot)
bootctl install创建引导项:
cat > /boot/loader/entries/arch.conf << 'EOF'title Arch Linuxlinux /vmlinuz-linuxinitrd /initramfs-linux.imgoptions root=UUID=$(blkid -s UUID -o value /dev/sda2) rwEOF启用服务
systemctl enable NetworkManagersystemctl enable sshdsystemctl enable qemu-guest-agent退出并重启
exit # 退出 chrootumount -R /mntrebootVM 重启后从 PVE Console 移除 ISO(或等它自动跳过),系统应正常启动到登录提示符。
安装后优化
确认 Guest Agent 工作
在 PVE 宿主机上检查:
qm agent <VMID> ping返回正常表示 Agent 正常工作。PVE Web 界面应能显示 VM 的 IP 地址和内存使用情况。
启用 VirtIO Balloon(内存回收)
VM 内确保内核模块已加载:
echo 'virtio_balloon' > /etc/modules-load.d/virtio-balloon.confSSH 免密登录(可选)
从你的工作机复制公钥:
ssh-copy-id <用户名>@<VM_IP>安装 AUR 助手
sudo pacman -S --needed git base-develgit clone https://aur.archlinux.org/paru.gitcd paru && makepkg -siPVE 串口控制台(可选)
如果网络断了需要救援,可以给 VM 加一个串口:
PVE VM → Hardware → Add → Serial Port → 选 socket。
VM 内启用串口控制台 —— 在 kernel cmdline 添加:
console=ttyS0,115200模板化
安装配置完毕后,可以转为模板方便快速克隆:
# PVE 宿主机执行qm template <VMID>之后右键模板 → Clone,秒级创建新 VM。
FAQ
启动后黑屏
检查 BIOS 是否 UEFI,Graphic card 换 VMWare compatible。
BdsDxe: Access Denied ISO 无法启动
Secure Boot 拦截了 Arch ISO。VM → Hardware → EFI Disk → 取消 Pre-Enroll Keys 后重启。
没网络
装完系统后 NetworkManager 应自动获取 IP。装之前如果没网,手动 modprobe virtio_net 加载 VirtIO 网卡模块。或者临时换 Intel E1000 网卡装完再改回来。
systemd-boot 找不到内核
检查 /boot 是否正确挂载,bootctl install 是否成功执行。
Guest Agent 不工作
systemctl status qemu-guest-agent 看是否 running。确认安装时 qemu-guest-agent 包已包含在 pacstrap 里。
磁盘空间不足
PVE 里可以在线扩容磁盘,VM 内 growpart + resize2fs。
总结
在 PVE 上装 Arch 比 Ubuntu / Debian 多花十分钟,主要是手动分区和引导配置那几步。但装完之后 Arch 的滚动更新和 AUR 生态在 HomeLab 里确实方便 —— 不用担心大版本升级,想装什么 paru -S 就有。
模板化之后更省事,新 VM 几秒钟就克隆出来。我现在 PVE 上常备一个 Arch 模板,需要测试新东西时直接 Clone。
参考:
- Arch Wiki: https://wiki.archlinux.org/title/Installation_guide
- Proxmox Wiki: https://pve.proxmox.com/wiki/Qemu-guest-agent
- Arch on Proxmox: https://pve.proxmox.com/wiki/Arch_Linux_Guest
