在qemu中,安装bios模式arch linux
第一阶段:宿主机准备(在 QEMU 所在的系统执行)
1. 创建虚拟硬盘
首先,我们需要为虚拟机创建一个虚拟磁盘文件(这里以 20G 为例,格式为 qcow2):
qemu-img create-fqcow2 archlinux.img 20G# ~/code/os/os1/archlinux.qcow22. 启动 QEMU 虚拟机(关键:使用传统 BIOS)
下载 Arch Linux 官方 ISO 镜像后,使用以下命令启动虚拟机。注意:千万不要加-bios OVMF.fd这种参数,不加就会默认使用 SeaBIOS(传统 BIOS 模式):
qemu-system-x86_64\-m2G\-smp2\-cdromarchlinux-x86_64.iso\-drivefile=archlinux.qcow2,format=qcow2,if=virtio\-netdevuser,id=net0,hostfwd=tcp::10022-:22\-devicevirtio-net-pci,netdev=net0\-bootd\-enable-kvm# 如果你的宿主机是 Linux 且支持 KVM,强烈建议加上这一行,速度会快几十倍(注:如果是 Windows 宿主机,去掉-enable-kvm,可以加上-accel whpx或-accel tcg)
第二阶段:虚拟机内系统安装(在 Arch ISO 环境中执行)
启动后,你会进入 Arch Linux Live ISO 环境(提示符为root@archiso ~ #)。
1. 彻底清空磁盘并创建 MBR 分区( 避坑核心)
- 运行分区工具:
cfdisk/dev/vda# 注意:QEMU 默认硬盘通常是 /dev/vda,请根据实际 lsblk 确认 - 如果弹出提示让你选择分区表类型,务必选择
dos(这就是 MBR 模式)。 - 如果里面有残留分区,全部选中并
Delete,直到只剩Free space。 - 选中
Free space,选择New,大小直接回车(默认使用全部空间)。 - 最关键的一步:选中底部的
Write,按回车,必须输入yes确认写入。 - 选择
Quit退出。
2. 验证分区表(防呆检查)
fdisk-l/dev/vda仔细查看输出,必须看到这一行:Disklabel type: dos。如果是gpt,请返回第一步重来。
3. 格式化并挂载
# 格式化为 ext4 文件系统mkfs.ext4 /dev/vda1# 挂载到安装目录mount/dev/vda1 /mnt4. 初始化密钥环并安装基础系统
(pgp-key报错,需要用pacman-key导入 Arch Linux 官方的默认签名密钥)
timedatectl set-ntptrue# 编辑镜像列表,把清华源放到最前面vim/etc/pacman.d/mirrorlist Server=https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$archpacman-key--initpacman-key--populatearchlinux pacstrap-K/mnt base linux linux-firmwarevimnetworkmanagersudo5. 生成 fstab 文件
genfstab-U/mnt>>/mnt/etc/fstab# 建议看一眼有没有正确生成cat/mnt/etc/fstab6. 进入新系统环境 (chroot)
arch-chroot /mnt7. 基础系统配置
# 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-genecho"LANG=en_US.UTF-8">/etc/locale.conf# 3. 设置主机名echo"archvm">/etc/hostname# 4. 设置 Root 密码passwd# 5. 创建普通用户并赋予 sudo 权限useradd-m-Gwheel-s/bin/bash myuserpasswdmyuserEDITOR=vim visudo# 找到 %wheel ALL=(ALL:ALL) ALL,去掉前面的 # 号并保存8. 安装 GRUB 引导程序( 避坑核心)
# 1. 安装 GRUB 和 os-proberpacman-Sgrub 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. 启用网络并重启
# 设置开机自启网络(否则重启后没网)systemctlenableNetworkManager# 退出 chroot 环境exit# 卸载所有挂载点umount-R/mnt# 重启虚拟机reboot重启后关掉虚拟机,用以下命令不带 ISO 启动
qemu-system-x86_64\-enable-kvm\-m2G\-smp2\-drivefile=archlinux.qcow2,format=qcow2,if=virtio\-netdevuser,id=net0,hostfwd=tcp::10022-:22\-devicevirtio-net-pci,netdev=net0使用你刚才创建的普通用户myuser登录,然后配置一下网络:
sudonmcli device wifi connect"你的WiFi名称"password"你的WiFi密码"如果想 SSH 进去(利用之前的端口转发):# 在宿主机上执行ssh-p10022myuser@localhost#在archlinux中执行curlhttp://10.0.2.2:5000curl-k--proxy""https://it.zzz.com.cn/its/login/ssoLogin.action?rand=1785044527675&soc_locale=zh_CNcurl-k--proxy"http://user:passwd@proxy.zzz.com.cn:80"https://www.baidu.com