Archlinux 系统安装指北(二) Win 与 Arch 双系统
与 Archlinux 单系统安装相比, Windows 和 Archlinux 双系统的安装过程要复杂一些。
过程中所遇到的难以解决的问题无外乎是这两个:
- 引导问题(注意:本文只讨论 UEFI 引导)
- 时间问题
双系统引导(GRUB)
根据 ArchWiki 上给出的说明, Windows 和 Archlinux 双系统引导的推荐方案为:
先安装 Windows,再安装 Archlinux
这样做的理由是:
Linux 在前的方案中,只有单个 Windows 分区而没有 WinRE 也没有 MSR 分区的 Windows 是否能正常工作并不明确。
先安装 Windows
Windows 给用户分配的 ESP 分区大小默认为 100MB ,这对多系统引导而言显然不够用。
因此安装双系统一个很重要的任务是扩展 Windows 的 ESP 分区。
由于拓展引导加载器分区的工作方式尚不明确,因此这里只推荐另外一种方法:
重新安装 Windows 系统。
下面以一台预装了 Windows 存储容量为 500G 的电脑为例,简述重新安装 Windows 的步骤:
- 找一块空 U 盘,下载 Windows 系统安装镜像,制作系统启动引导盘(推荐 Ventoy);
- 备份原 Windows 系统,划出一部分容量建立非系统分区(如 D 盘 200G),将电脑上的重要文件全部塞进此分区;
- 插上制作好的系统启动引导盘,重启系统进入 BIOS 界面,选择从 U 盘启动,运行 Windows 系统安装镜像;
- 关键步骤:在 Windows 分区时,预先划分 500 - 1000 MB 的未分配空间(排在首位),剩余的未分配磁盘安装系统(约 300G,注意不要格式化原来 D 盘的 200G);
- 安装完成后,拔下 U 盘,进入新的 Windows 系统,安装 DiskGenius 软件,将 100 MB 的 ESP 分区向前扩容 500 - 1000 MB,自此完成 ESP 分区扩容;
- 将原 D 盘的备份文件转移到新 C 盘,删除原 D 盘,为 Archlinux 系统安装腾出空间;
完成后,磁盘布局如下:
| ESP | MSR | C: | WinRE | 未分配 |
|---|---|---|---|---|
| 600-1100MB | 16MB | 约300G | 约1G | 200G |
再安装 Archlinux
与单系统相比,双系统下 Archlinux 的安装过程有所不同,主要体现在挂载分区上。
安装前的准备工作请参考前文:Archlinux 系统安装指北(一)
下面直接给出 Archlinux 系统安装过程中需要输入的命令:
1 | # 磁盘分区与格式化(lsblk 查看,未分配磁盘应为 /dev/nvme0n1p5) |
现在,在 GRUB 引导界面应该能看到两个系统对应的选项了。双系统引导至此完成,完整的磁盘布局如下:
| ESP | MSR | C: | WinRE | SWAP | / |
|---|---|---|---|---|---|
| 600-1100MB | 16MB | 约300G | 约1G | 8G | 192G |
系统时间修复
在刚才的安装步骤中,我们没有对系统时间进行处理。现在,我们来分析一下系统时间问题。
因为先安装了 Windows,所以硬件时间被 Windows 设置为了当地时间。而 Windows 和 Archlinux 默认的显示时间都是硬件时间,所以理论上无需多余配置,两个系统的时间就应该是同步的。
但唯一的问题在于,Windows 的时区在东八区,而 Archlinux 的时区在格林尼治,你居然要忍受如此丑陋的时区配置。
因此,Archwiki 给出的建议是,先将硬件时间设置为 UTC,再将各个系统的显示时间同步为本地时区时间,这样无论安装多少个系统,时间配置都是统一的。
修复 Windows 系统时间
修复时间问题的关键步骤是在 Windows 中将硬件时间设置为 UTC。
这需要通过修改注册表来完成,以管理员身份运行终端,执行如下命令
1 | reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f |
进一步在设置中,同步显示时间为本地时间。
修复 Archlinux 系统时间
未修复前,Archlinux 的硬件时间和显示时间都是本地时间,而时区为格林尼治。
因此修复 Archlinux 系统时间分为三步
- 设置时区为本地时区
- 修复显示时间为本地时间
- 修复硬件时间为 UTC 时间
1 | # 设置时区为本地时区 |
Archlinux 系统安装遗留问题(Archinstall-problem which remains)
没错这个问题就是联网问题。
iwctl 无线联网步骤
1 | # 进入 iwd 环境 |
nmcli 无线联网步骤
1 | # 前提是你已经联网安装了 NetworkManager(比如系统预安装的时候) |