第一阶段:宿主机准备(在 QEMU 所在的系统执行)
1. 创建虚拟硬盘
首先,我们需要为虚拟机创建一个虚拟磁盘文件(这里以 20G 为例,格式为 qcow2):
bash
qemu-img create -f qcow2 archlinux.img 20G
2. 启动 QEMU 虚拟机(关键:使用传统 BIOS)
下载 Arch Linux 官方 ISO 镜像后,使用以下命令启动虚拟机。注意:千万不要加 -bios OVMF.fd 这种参数,不加就会默认使用 SeaBIOS(传统 BIOS 模式):
bash
qemu-system-x86_64 \
-m 2G \
-smp 2 \
-cdrom archlinux-x86_64.iso \
-drive file=archlinux.qcow2,format=qcow2,if=virtio \
-netdev user,id=net0,hostfwd=tcp::10022-:22 \
-device virtio-net-pci,netdev=net0 \
-boot d \
-enable-kvm # 如果你的宿主机是 Linux 且支持 KVM,强烈建议加上这一行,速度会快几十倍
(注:如果是 Windows 宿主机,去掉 -enable-kvm,可以加上 -accel whpx 或 -accel tcg)
第二阶段:虚拟机内系统安装(在 Arch ISO 环境中执行)
启动后,你会进入 Arch Linux Live ISO 环境(提示符为 root@archiso ~ #)。
1. 彻底清空磁盘并创建 MBR 分区( 避坑核心)
-
运行分区工具:
bashcfdisk /dev/vda # 注意:QEMU 默认硬盘通常是 /dev/vda,请根据实际 lsblk 确认 -
如果弹出提示让你选择分区表类型,务必选择
dos(这就是 MBR 模式)。 -
如果里面有残留分区,全部选中并
Delete,直到只剩Free space。 -
选中
Free space,选择New,大小直接回车(默认使用全部空间)。 -
最关键的一步 :选中底部的
Write,按回车,必须输入yes确认写入。 -
选择
Quit退出。
2. 验证分区表(防呆检查)
bash
fdisk -l /dev/vda
仔细查看输出,必须 看到这一行:Disklabel type: dos。如果是 gpt,请返回第一步重来。
3. 格式化并挂载
bash
# 格式化为 ext4 文件系统
mkfs.ext4 /dev/vda1
# 挂载到安装目录
mount /dev/vda1 /mnt
4. 初始化密钥环并安装基础系统
( pgp-key 报错,需要用pacman-key导入 Arch Linux 官方的默认签名密钥)
bash
timedatectl set-ntp true
# 编辑镜像列表,把清华源放到最前面
vim /etc/pacman.d/mirrorlist
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
pacman-key --init
pacman-key --populate archlinux
pacstrap -K /mnt base linux linux-firmware vim networkmanager sudo
5. 生成 fstab 文件
bash
genfstab -U /mnt >> /mnt/etc/fstab
# 建议看一眼有没有正确生成
cat /mnt/etc/fstab
6. 进入新系统环境 (chroot)
bash
arch-chroot /mnt
7. 基础系统配置
bash
# 1. 设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
# 2. 设置语言
sed -i 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
# 3. 设置主机名
echo "archvm" > /etc/hostname
# 4. 设置 Root 密码
passwd
# 5. 创建普通用户并赋予 sudo 权限
useradd -m -G wheel -s /bin/bash myuser
passwd myuser
EDITOR=vim visudo # 找到 %wheel ALL=(ALL:ALL) ALL,去掉前面的 # 号并保存
8. 安装 GRUB 引导程序( 避坑核心)
bash
# 1. 安装 GRUB 和 os-prober
pacman -S grub os-prober
# 2. 将 GRUB 安装到整个磁盘(注意:是 /dev/sda,不是 /dev/sda1!)
grub-install --target=i386-pc --recheck /dev/vda
# 3. 生成 GRUB 配置文件
grub-mkconfig -o /boot/grub/grub.cfg
(如果这一步提示 Installation finished. No error reported.,恭喜你,最难的引导部分已经完美解决!)
9. 启用网络并重启
bash
# 设置开机自启网络(否则重启后没网)
systemctl enable NetworkManager
# 退出 chroot 环境
exit
# 卸载所有挂载点
umount -R /mnt
# 重启虚拟机
reboot
重启后关掉虚拟机,用以下命令不带 ISO 启动
bash
qemu-system-x86_64 \
-enable-kvm \
-m 2G \
-smp 2 \
-drive file=archlinux.qcow2,format=qcow2,if=virtio \
-netdev user,id=net0,hostfwd=tcp::10022-:22 \
-device virtio-net-pci,netdev=net0
使用你刚才创建的普通用户 myuser 登录,然后配置一下网络:
bash
sudo nmcli device wifi connect "你的WiFi名称" password "你的WiFi密码"
如果想 SSH 进去(利用之前的端口转发):
# 在宿主机上执行
ssh -p 10022 myuser@localhost