在虚拟机上安装 Arch Linux(四)

系统配置、引导程序安装与收尾工作


生成 fstab 文件

生成 fstab 文件以使需要的文件系统(如启动目录 /boot)在启动时被自动挂载:

genfstab -U /mnt > /mnt/etc/fstab   # 生成 fstab 文件
cat /mnt/etc/fstab                  # 检查生成的 /mnt/etc/fstab 文件是否正确

命令解释:cat 用于将指定文件里的内容输出到终端


Chroot 到新系统

chroot 到新安装的系统,即进入新安装的系统内部,这样就可以直接对系统进行操作了:

arch-chroot /mnt

时区设置

# 设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 生成 /etc/adjtime 并将系统时间写入硬件时钟(假设硬件时钟为 UTC)
hwclock --systohc

# 启用网络时间同步,防止未来时钟漂移
timedatectl set-ntp true

为什么设置时区是 Shanghai 而不是北京或者其他城市?官网说:在中国大陆需要将时区设置为北京时间,那么请运行 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime。时区名称是上海而非北京,是因为上海是该时区内人口最多的城市。

设置时间和时区这里,官网说“这个命令假定已设置硬件时间为 UTC 时间。详细信息请查看系统时间#时间标准。”

DeepSeek:“对于绝大多数现代操作系统(包括 Windows 10/11 的默认新安装、Linux 和 macOS),将硬件时钟设置为 UTC 是标准做法,对于你在 VirtualBox 中的安装,无需考虑此问题。因此,在安装 Arch 时,你可以直接信任指南的假设,运行 hwclock --systohc 命令。”

官网还说“为了防止时钟漂移并确保时间准确,请手动启用 NTP(网络时间协议,Network Time Protocol)客户端(例如 systemd-timesyncd)设置时间同步。”

DeepSeek:官网这句话是安装后保持系统时间精确的关键一步。启用 NTP 客户端(如 systemd-timesyncd)会让系统定期从网络时间服务器自动校准时间,无需你手动干预。许多教程省略了“启用网络时间同步”这一步,主要原因在于它不是 Arch Linux 安装完成的必需条件。对于你在 VirtualBox 中学习 Arch 的场景,强烈建议你执行这一步,它体现了 Arch 官方对系统长期稳定性和正确性的考量。


区域和本地化设置

Locale 决定了软件使用的语言、书写习惯和字符集。需要设置这两个文件:locale.genlocale.conf

vim /etc/locale.gen   # 打开并编辑 /etc/locale.gen

去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号(#),这两行附近有几个选项极具迷惑性,不要取消注释错了。输入 :wq 并回车,保存并退出。

接着执行 locale-gen 以生成 locale 信息:

locale-gen

/etc/locale.conf 输入内容:

echo 'LANG=en_US.UTF-8' > /etc/locale.conf   # 设置英文 locale

这里的 echo ... > ... 是把内容写进文件里的命令,所以直接执行即可,无需 vim 打开文件编辑。使用 > 会使内容覆盖文件,而 >> 会在文件末尾追加内容。

官网:“如果在此处设置为中文 locale,这可能会导致 tty 上中文显示为方块(因为 TTY 下没有 CJK 字体)。” tty 即安装 arch 完成后进入的终端,很多配置系统的前期工作都在这里进行。

网络配置

为系统设置一个固定且易于辨识的名称(在联网环境中尤其有用),请创建 hostname 文件:

echo '喜欢的名字' > /etc/hostname   # 设置主机名

依官网所述,这里取名字有一些限制:必须包含 1-63 个字符,仅使用小写的 az、09 以及 -(连字符),但不得以 - 开头。

接着完成新安装的环境的网络配置:

pacman -S networkmanager          # 安装 NetworkManager(网络管理器)
systemctl enable NetworkManager   # 启用它(设置为开机自启)

第一条命令 pacman 在以后将会是十分常用的指令,它是用来从网络安装软件包的命令,其中 -S 选项后指定要安装的包。

简明指南里还配置了 /etc/hosts,内容是:

127.0.0.1   localhost
::1         localhost
127.0.1.1   myarch.localdomain myarch   # 把 myarch 替换为主机名

其中前两行在原文件中已存在,而 127.0.1.1 myarch.localdomain myarch 这一行是新添加的,DeepSeek 解释:“这能确保系统在内部查询 myarch 这个名字时,能快速、正确地解析到自身,这是保证许多本地服务(如图形登录管理器、开发环境等)正常工作的基础。为什么官网安装指南没有这一步?官方指南之所以没有强制要求配置 /etc/hosts,主要因为对于使用 systemd(Arch Linux 默认使用的初始化系统)的现代系统,不配置 /etc/hosts 也能正常启动和使用。但手动配置是更稳妥、更兼容的良好实践。”

作者也进行了配置。

设置 root 密码

使用以下命令为 root 用户设置一个安全的密码以便进行管理操作:

passwd

注意输入密码时不会显示哦,不是键盘 ⌨ 出现了问题。另外,作者在安装 arch 时 num lock 键总是会自动关闭,可能是 arch 系统对键盘的默认配置导致的,因此作者输入数字时使用的是键盘字母区上方的一栏数字而避免使用键盘右侧的数字区。

CPU 微码

简明指南里在设置完密码后还进行了“安装对应芯片制造商的微码”的操作,DeepSeek:“不必在虚拟机里安装 CPU 微码。因为虚拟机(‘客户机’)使用的是虚拟 CPU,其行为由宿主机(你真实的电脑)的 CPU 和虚拟机软件模拟。所有的 CPU 微码更新都应该应用在宿主机的真实系统上。在虚拟机内安装微码不仅无效,还可能带来不必要的复杂性。如果你未来在物理机上安装 Arch,那么强烈建议在完成基础系统安装后,立即安装对应的微码包(intel-ucode 或 amd-ucode),并按照 Arch Wiki 的说明,更新你的引导配置(例如运行 grub-mkconfig),以确保微码在启动时被加载。”

安装引导程序

选择的系统启动引导项为 GRUB

安装相应的包:

pacman -S grub efibootmgr

📑 命令参数说明:

  • grub —— 启动引导器
  • efibootmgr —— efibootmgr 被 grub 脚本用来将启动项写入 NVRAM

如果是双系统而不是虚拟机安装 Arch 系统,则还需要安装 os-prober 包,DeepSeek:“如果一台电脑上已经安装了 Windows,想让 GRUB 在启动菜单里提供一个选项去引导它,就需要 os-prober 来帮你自动检测并添加。”然后在 /etc/default/grub 里添加新的一行 GRUB_DISABLE_OS_PROBER=false,并使用 modprobe.blacklist=iTCO_wdt 内核参数禁用 TCO 的内核模块。双系统操作具体可参考简明指南和官网。

修改参数设置,让内核在启动时显示详细的滚动日志

编辑 /etc/default/grub 文件(回顾日志时的笔记:这步操作其实本不用进行,除非开机启动出现了问题):

vim /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet" 这一行改为 GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5"。其中删去 quiet 参数以禁用“安静”模式以让内核在启动时显示详细的滚动日志,修改 loglevel=5 让系统打印更详细的信息,这对于检查错误信息非常有用。输入 :wq 并回车,保存并退出。

官网提到:“每当修改 /etc/default/grub 或者 /etc/grub.d/ 中的文件之后,都需要再次生成主配置文件。”

生成配置文件

最后生成 GRUB 所需的配置文件:

grub-mkconfig -o /boot/grub/grub.cfg

生成GRUB配置文件

收尾与重启

exit              # 退回安装环境
umount -R /mnt    # 卸载新分区
reboot            # 重启

重启后进入 GRUB 引导界面,在不进行任何操作的情况下几秒后会直接进入 tty,并显示如图“首次进入 tty.png”信息。DeepSeek:“这些信息是内核在初始化过程中的一些调试信息,基本不影响系统启动和运行”

使用 ping -c 3 archlinux.org 检查网络连接,一切正常。

移除 ISO 文件

从 VirtualBox 虚拟机中移除 Arch Linux 的 ISO 安装文件。执行 poweroff 关闭虚拟机,在 VirtualBox 里找到 设置 > 存储 > 设备,点击先前下载的 ISO 文件名 archlinux-版本-x86_64.iso,在右侧“属性”框里点击光盘图标打开菜单栏,点击底部类似“Remove Disk”的选项,最后“确定”保存,重新打开 arch 系统虚拟机,如果正常进入,恭喜,arch 系统的安装至此完成。