QEMU虚拟机上的Arch Linux安装记录
0 准备
准备安装镜像,创建磁盘:
1 | qemu-img create -f qcow2 archlinux.qcow2 20G |
从光盘启动虚拟机:
1 | qemu-system-x86_64 -hda archlinux.qcow2 -boot d -cdrom archlinux-2022.02.01-x86_64.iso -m 8192 -smp 8 |
没有使用UEFI,采用Legacy BIOS启动。
1 安装
从光盘启动后进入iso,检查网络:
1 | ping archlinux.org |
没有问题,使用reflector
更新一下镜像列表,可以cat一下/etc/pacman.d/mirrorlist
验证一下:
1 | reflector -c china -a 10 --sort rate --save /etc/pacman.d/mirrorlist |
使用fdisk -l
看下硬盘,发现虚拟硬盘的设备名是/dev/sda
。使用fdisk /dev/sda
启动fdisk
。
按m
查看帮助,按照帮助操作。分一个swap分区和一个/
即可。
分完后按w
保存,可以lsblk
验证一下。这里分了19G的/dev/sda1
和1G的/dev/sda2
。对它们初始化:
1 | mkfs.ext4 /dev/sda1 |
将根分区挂载到/mnt
,之后会chroot
到/mnt下面;启动swap分区:
1 | mount /dev/sda1 /mnt |
在挂载的根目录下安装系统(如果是真机,还要安装linux-firmware
包):
1 | pacstrap /mnt base linux vim |
2 配置
为新系统生成fstab文件:
1 | genfstab -U /mnt >> /mnt/etc/fstab |
进入新系统,arch-chroot
会打开新系统下的/bin/bash
:
1 | arch-chroot /mnt |
设置时区,并同步硬件时钟:
1 | ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
设置主机名:
1 | echo "yourhostname" > /etc/hostname |
修改host文件(why?):
1 | 127.0.0.1 localhost |
设置root密码:
1 | passwd |
安装和配置grub,ref:
1 | pacman -S grub |
退出新系统,取消挂载并关机:
1 | exit |
3 进入新系统
去掉qemu启动选项里的-boot
和-cdrom
,从硬盘启动进入新系统:
1 | qemu-system-x86_64 -hda archlinux.qcow2 -m 8192 -smp 8 |
不出意外,此时应该网络不通,需要启动network
manager。用自带的systemd-networkd
就好。
1 | systemctl enable systemd-networkd.service |
找到网卡的名字,这里是ens3
:
1 | networkctl -l |
编辑/etc/systemd/network/20-wired.network
,Name填入网卡名:
1 | [Match] |
重启后可以使用网络。
创建普通用户,放进wheel
用户组从而可以使用sudo
:
1 | useradd -m -G wheel yourusername |
设置密码:
1 | passwd yourusername |
安装sudo,并开启wheel
用户组的sudo
权限:
1 | pacman -S sudo |
4 杂项
带--nographic参数启动qemu
需要关闭grub的graphical
terminal:取消注释/etc/default/grub
的GRUB_TERMINAL_OUTPUT=console
一行
重定向guest
kernel的输出到第一个串口:/etc/default/grub
的GRUB_CMDLINE_LINUX_DEFAULT
追加console=ttyS0
更新grub:grub-mkconfig -o /boot/grub/grub.cfg
将虚拟机的串口重定向到host上的qemu
monitor:qemu启动参数增加-serial mon:stdio