Windows+Arch Linux双系统基本安装
2025年2月10日在VMware Workstation 17上测试,暂未将配置搬上物理机,但是步骤是相同的。
只介绍UEFI/GPT启动方式,不建议在BIOS/MBR平台上安装双系统,引导项极易打架;
(不过虚拟机单Linux安装的话BIOS/MBR分区简单很多)
本文引用ArchWiki链接时同时提供中文和英文链接,建议优先阅读英文版,中文翻译可能存在滞后性;
1. 准备工作
(1)检查是否为UEFI启动:
Win11仅支持UEFI启动,无需检查;
开箱状态下为预装Win10,或者空盘安装Win10的通常也是UEFI启动;
只有从Win7升级上Win10的,传统BIOS启动的概率才比较大。
按下Win+R
组合键,输入msinfo32
确定,在打开的窗口中找到BIOS模式
一条,若为UEFI则是UEFI启动,若为Legacy则是传统BIOS启动。
如果是传统BIOS启动的话,理论上进入PE环境下,把硬盘分区表从MBR转为GPT,划分一个EFI分区出来,再修复一下引导,就能无损转换;如果没有重要的数据,还是重装更方便吧
(2)介质准备:
物理机安装需要一枚容量至少2GB的U盘,建议4G以上;支持USB3.0以上速率的最好,没有问题也不大。
务必备份好U盘的资料,U盘在稍后将被格式化;
(3)检查bitlocker状态:
双系统平台上个人强烈不建议使用bitlocker。
检查bitlocker状态的最简单的方法是打开“此电脑”,观察硬盘图标。
如下图所示,有加密的磁盘会在图标右侧显示出锁的标志,就像图中D盘这样;未加密的则会像图中C盘这样;
如果一定需要bitlocker加密硬盘,为了减少麻烦,建议留一个未被加密的分区,用于在双系统间共享数据;并且请提前根据Windows官方文档备份bitlocker恢复密钥
关闭bitlocker的方式:
- 在开始菜单中搜索bitlocker:
- 点击关闭即可:
bitlocker解密可能会花费极长时间(数个小时);在此期间不影响电脑正常使用,所以可以继续执行其它准备工作,但是在彻底解密完成之前最好不要关机。
解密的过程中应该是有进度条的,但也可以通过命令行检查解锁的进度:
使用管理员权限打开命令提示符或者Powershell。
cmd输入:
1 |
|
输出类似这样(关键词:转换状态:完全解密
已加密百分比:0.0%
)说明完全解密了:
Powershell输入:
1 |
|
输出类似这样(关键词:FullyDecrypted
Encryption Percentage 0
)说明完全解密了:
(4)下载:
- 从 archlinux官网 下载系统镜像。
站点提供bt种子下载和镜像站下载,若通过镜像站下载,则推荐校验sha256与pgp签名;▶校验sha256的方式如果有一个能运行bash的环境,例如Git Bash,进入bash,执行如下命令:
1
sha256sum /path/to/***.iso
如果没有,进入cmd,执行如下命令:
1
certutil -hashfile /path/to/***.iso sha256
将输出与arch官网对比,一致说明文件完好无损;
▶校验签名的方式如果有一个能运行bash的环境,例如Git Bash,进入bash,直接复制Arch官网的命令(以2025.01.01版为例):
1
2gpg --auto-key-locate clear,wkd -v --locate-external-key pierre@archlinux.org
gpg --keyserver-options auto-key-retrieve --verify archlinux-2025.01.01-x86_64.iso.sig archlinux-2025.01.01-x86_64.iso输出类似这样(注意高亮的地方)说明签名一致,镜像未被篡改:
如果没有bash环境,可以尝试Gpg4win - 下载刻录U盘的工具,强烈推荐Ventoy ,想在安装的时候使用图形化分区工具偷懒的话这是唯一的选择;
- 图形化分区工具gparted
▶因为网络问题gparted下载困难?
gparted的镜像托管在sourceforge网站上面,国内的网络环境可能会遇到下载不畅的情况;这里给出3条替代的方案:
- 使用WiFi的不推荐此方案(U盘容量要求从2GB提升到4GB)从 Debian国内镜像 下载一个最简镜像(无桌面的
debian-live-12.9.0-amd64-standard.iso
大小1.4GiB),然后启动进去后使用apt
工具安装gparted
和一个最简单的桌面(需要联网,有线网和虚拟机通常开箱即用,无线网由于debian live里面没有提供iwctl
和networkmanager
,未找到合适的联网方式); - (U盘容量要求从2GB提升到4GB)下载一个 XUbuntu 的minimal版镜像(24.04版 清华源 / USTC源 ),该版本大小2.47GiB,为”有国内下载源”的,”带桌面环境和gparted”的Linux镜像中最小的;
- 放弃使用
gparted
图形化分区工具偷懒,走正统的ArchLinux分区方式(fdisk
/cfdisk
),新手谨防在命令行中误操作导致数据损失
- 使用WiFi的不推荐此方案(U盘容量要求从2GB提升到4GB)从 Debian国内镜像 下载一个最简镜像(无桌面的
(5)关闭Windows快速启动
详细信息参考 ArchWiki / 中文Wiki
快速启动会导致Windows关机的时候实质变成进入休眠状态,这样在Linux开机的时候就不能挂载已经在Windows中被挂载的硬盘,否则会导致文件系统错误;
同样,如果手动休眠了双系统中的任意系统,然后启动了另一个系统,那么在休眠的系统中已经被挂载的硬盘,不应该被挂载在另一个系统上;如果担心自己误操作,同样可以禁用Windows的休眠功能。
虽然ArchWiki指出:
如果 Windows 和 Linux 使用同一个 EFI 系统分区,如果休眠(或在启用快速启动时关机)Windows 并启动 Linux,或者休眠 Linux 并启动 Windows, EFI 系统分区可能遭到破坏。
但是咱这么干过,EFI分区没出问题;只是在Linux上面挂载的Windows硬盘出现了文件系统错误,需要在Windows上使用chkdsk
修复
- 进入控制面板;如果找不到入口,使用开始菜单中的搜索功能;然后选择电源选项:
- 左侧的选择功能任选一个进入:
- 更改当前不可用的设置,然后取消勾选“启用快速启动”;休眠是否关闭随意,不过感觉笔记本用户应该不需要休眠?最后记得保存修改。
(6)将Windows的硬件时间标准改为UTC
在任意位置新建任意文本文档,输入以下内容:
1 |
|
将后缀从.txt
改为.reg
双击执行导入注册表。
硬件时间标准目前有两套方案:
- Local-RTC: 直接把硬件时间设为本地时间,然后系统显示的时间与硬件时间同步;
- UTC: 把硬件时间固定设为UTC时间,然后系统根据时区设置,将硬件时间转换为本地时间。
Windows默认使用1,而Linux默认使用2,两者必须统一否则硬件时间会乱套;
对于Ubuntu等常见的发行版,其会在检测到硬盘存在Windows时,自动将Linux的时间标准也改成1,从而避免修改Windows注册表;
而 ArchWiki / 中文Wiki 更建议将Windows设为2,这样的目的主要是为了在使用夏令时/冬令时的时区,切换时同步次数混乱,导致时间快/慢1小时;
对北京时区来说无影响,但是如果将Linux的时间标准设为1,Linux的时间管理进程会给出警告,并采取较为消极的联网时间同步策略。
所以咱觉得还是统一为UTC更好。
(7)了解至少一种命令行文本编辑器的使用方法
ArchLinux的安装镜像里面提供了3种文本编辑器,分别是 mcedit , nano 和 vim 。至少了解其中一种的使用方式,推荐vim,下文的安装教程中,需要编辑文件时,咱会给出咱偏好的vim操作。
(8)为Linux系统腾出一块空闲的硬盘分区
按下Win+X
组合键,选择磁盘管理。
采用Windows和Linux装在同一块硬盘上不同分区,然后共享EFI分区的方案。
这里以虚拟机中新安装的Windows10 22H2版为例,如果分了C和D两个分区,分区结构应该类似左图;在D盘上右键压缩卷,腾出一定数量的空闲空间给Linux使用,不要新建分区,不要格式化。
![](/img/windows-with-arch/before-part.png)
![](/img/windows-with-arch/after-part.png)
实际分区的情况可能存在差异;例如:
- Win10 LTSC 2019 的恢复分区会在硬盘的开始而非末尾;
- Win10 LTSC 2021 没有恢复分区;
- 对于部分使用过一段时间的设备,以及一些出厂预装Windows的设备,如果已经提前分过了区,可能C盘和其它数据分区中间会间隔另一个恢复分区。
建议至少留出一个非系统分区作为双系统间共享数据的分区,防止在Linux直接挂载Windows系统盘时因为误操作或者Linux的灵车NTFS驱动导致损坏Windows系统;
如果有多块硬盘,直接拿其它硬盘共享也行,否则最好分一下CD两个分区,D盘作为共享数据盘。
无论实际的分区情况是什么,如果硬盘最后有恢复分区,就把Linux占据的分区放在恢复分区的前面;否则把Linux放在硬盘的末尾。这样做的考量有:
减少对Windows磁盘的操作:从数据盘右侧压缩一块分区出来,使用自带的磁盘管理就能完成,速度快还能减少数据损失的风险;
调整容量方便:考虑3种需要调整分区大小的情况:
- Windows的C盘/数据盘空间不足:直接用Diskgenius等分区工具从数据盘/C盘拿空间,不操作Linux分区;
- Windows空间不足:向右缩小Linux分区;
- Linux空间不足:向左缩小Windows分区;
这三种情况都能最大限度的减小操作成本。
(9)刻录启动U盘
解压ventoy,启动ventoy2disk.exe
;
插入准备好的U盘,选择该U盘,分区表选择GPT(对UEFI的兼容性更好),格式随意,点击安装;
将会清空U盘上的所有数据!
然后将archlinux和gparted的两个iso文件都直接放进U盘即可。
(10)准备BIOS
重启计算机,进入bios,关闭安全启动(Secure Boot): archlinux并不支持安全启动,如果确实需要这个功能,请在安装完archlinux之后,参考 ArchWiki / 中文Wiki 自己准备签名文件自行配置(属高阶操作,不介绍,因为咱也不会)
如果Windows系统盘开启了bitlocker,在关闭安全启动后,重启进入Windows时可能会要求输入bitlocker密钥。
2. 分区
这里使用前述准备好的GParted工具进行分区,图形化操作的好处是不易误操作;
在ArchLinux命令行中分区的直接进入下一步。
(1)启动进入GParted界面
- 关闭电脑,然后重新开机并从U盘启动(根据电脑品牌,进入启动菜单boot menu的按键可能是F12,Delete,Esc或者其它)。
部分设备开机状态直接重启可能无法在启动菜单中正确识别到U盘,所以建议是使用关机再手动开机的方式。
- 在Ventoy操作菜单中,选择gparted的镜像,然后
Boot in normal mode
即可: - 选择gparted的启动选项:
如果启动界面是这样的,说明进BIOS模式了,没进UEFI:
如果对U盘的稳定性没有信心,选择第2项,将GParted加载进内存再运行,启动时间会稍慢一些,但是运行更稳定。 - 接下来依次处理几个选单:
- 键盘布局,直接默认,回车:
- 语言,输入26以选择简体中文,回车:
- 图形选项,直接默认启动图形界面,回车:
稍微等待片刻之后就进入了gparted的图形界面。
- 键盘布局,直接默认,回车:
- 启动镜像后选择
live system(amd64)
;
- 给apt换源,并且注释掉不需要的源节约时间: 修改前:
1
sudo vi /etc/apt/sources.list
修改后:
小声bb: vi真的别扭,但是又没有vim;实在不行用nano吧
然后更新apt缓存:1
sudo apt update
- 安装
xinit
和一个轻量的窗口管理器(这里以openbox
为例),以及gparted
本身:小声bb:Arch你学学人家,Debian的live环境就能自己装个图形界面进去,Arch的live环境装个1
sudo apt install xinit openbox gparted
xorg-server
就空间不足,要不然哪需要这么折腾 - 启动图形界面: 黑屏是正常的,有鼠标显示出来就行
1
startx
不需要显式指定启动openbox,debian会帮你配置好默认的启动目标的 - 在任意位置右键,就能找到gparted的入口,点开就行:
- 完成分区后右键
Exit
退出桌面环境,然后关机:1
sudo poweroff
- 启动镜像后选择
Try or Install Xubuntu
- 点击左上角找到gparted:
(2)在GParted中完成分区
在空闲部分从左到右建立3个分区:
大小 | 格式化为 | 挂载点 |
---|---|---|
除下面两个分区外的所有空间 | btrfs | / |
适量,这里示例2G | linux swap | [SWAP] |
1G | ext4/fat32 | /boot |
- 主目录使用btrfs: btrfs具有很多优良的性质:透明压缩(节省空间),子卷(把根目录和home直接用子卷管理,既能隔离,又防止出现系统分区和home分区一个容量不够的时候从另一个分区挪的尴尬),快照(图形化快照工具timeshift除了基于全盘复制的RSYNC之外,只支持创建btrfs文件系统的快照)
btrfs的介绍可以参考这篇文章 ,原文使用CC BY-SA 4.0 许可,因此不作引用; - 使用swap分区而非swap文件:swap分区配置起来相对更加简便,如果需要配置休眠,swap分区的配置难度更低;
- /boot目录单独分区:咱希望安装完双系统之后,每次开机时grub引导可以记住咱上一次选择的选项,而grub无法写入btrfs格式的分区;
如果/boot目录不单独分区,也有一条好处:快照可以把/boot目录包含进去,回滚时可以一起回滚,防止出现/boot分区内的initramfs的内核版本与系统内核版本不匹配; 这会导致回滚快照后/boot分区无法挂载,进入emergency mode的问题。按照现行的分区方案,以后配置快照的时候需要单独考虑一下这个问题,到那时再说 - 关于/boot分区的格式:fat32理论上具有更好的兼容性,而ext4更多的其实是防止隔壁的Windows乱来
- 咱习惯安装3份内核,在安装了
linux-firmware
固件包后,默认状态下,在虚拟机中每份内核会在/boot分区产生约100~150MB的initramfs镜像,物理机由于autodetect
机制会探测到比虚拟机更多的硬件,这个数值会略大一点;但是1GB也完全够用了。如果根据ArchWiki /中文Wiki 的方法把压缩开到最极端,占用的总空间会从约450MB下降到约320MB,似乎意义并不大。
然后确认,等待分区完成。最终的情况应该是这样的:
设备名 | 分区描述 | 文件系统 | 挂载点 |
---|---|---|---|
/dev/nvme0n1p1 | EFI分区 | fat32 | /efi |
/dev/nvme0n1p2 | MSR分区 | msr | |
/dev/nvme0n1p3 | Windows C: | ntfs | |
/dev/nvme0n1p4 | Windows D: | ntfs | |
/dev/nvme0n1p6 | Linux系统盘 | btrfs | / |
/dev/nvme0n1p7 | Linux swap | swap | [SWAP] |
/dev/nvme0n1p8 | Linux boot | ext4 | /boot |
/dev/nvme0n1p5 | Windows恢复分区 | ntfs |
完成分区后退出GParted,重启进入Arch安装介质,准备开始安装系统。
3. 进入Arch安装介质安装
Tips: 善用tab自动补全命令不仅能节省输入时间,还能防止误输。
(0)联网准备
有线网和虚拟机无需额外配置,无线网需要确保BIOS中网卡未被禁用,WiFI的名称和密码均只由英文字母,数字和键盘上能直接输入的符号组成,否则无法连接。安装过程需要全程联网。
(1)启动Arch Linux安装介质
从U盘启动到Arch Linux:
![](/img/windows-with-arch/install/ventoy.png)
![](/img/windows-with-arch/ventoy-normal.png)
看到这个界面后回车:
如果看到的启动界面是这样的,并且启动项的结尾是BIOS,说明是用传统BIOS启动的,没有启动到UEFI模式;立即关机(或者启动到安装介质后输入poweroff
关机),然后去BIOS中更改启动类型为UEFI only
(1.5)为当前登录的实例设置密码
1 |
|
为root用户设置密码之后,即可从其它设备,以root用户的身份使用ssh远程连接本机。
(2)最后一次验证启动模式
1 |
|
如果输出64
,说明系统以64位UEFI模式启动,是期望中的情况;
如果输出32
,说明系统以UEFI模式启动,但是UEFI仅支持32位。这种平台极为少见,仍然可以正常安装,但是可选择的引导程序比较有限,并且如果选用grub作为引导程序的话需要修改部分参数;
如果找不到该文件,说明系统以BIOS模式启动,重启更改启动模式为UEFI。
(3)停用reflector服务
reflector会在最新的20个镜像源中测速,并根据速度排序镜像;由于大陆的特殊网络环境,只考虑最新的20个镜像源往往得不到理想的结果,同时它还会覆盖自行配置的源信息,所以先将其禁用:
1 |
|
这里是直接用reflector得到的镜像源列表,20个源一个国内的都没有:
硬要用reflector排序镜像源也是可以的,只需要给它加上亿点点限制并手动运行:
1 |
|
这个命令依次指定了 最新的10个 地区位于中国 使用https协议 的镜像,按下载速度排序,并把结果覆盖保存在/etc/pacman.d/mirrorlist
中。
不使用最后的--save
参数,可以在控制台先预览输出的结果。
这样出来的结果至少都是国内的源,还算可观:
更多的用法参见 reflector man page 以及 ArchWiki / 中文Wiki
新安装的系统中并不会默认包含reflector
软件包,需要可以自行安装配置。
(4)连接网络
虚拟机和有线网无需额外配置;无线网按照以下步骤联网。
1 |
|
1 |
|
测试是否成功联网:
1 |
|
按Ctrl+C
手动终止ping
命令。
(5)校准时间
1 |
|
NTP service
显示为active
状态说明时间同步服务正常运行。正确的系统时间对于安装部分软件包是必须的。
如果没有正常运行(显示为inactive
),则:
1 |
|
(6)分区与格式化
已经使用GParted工具完成分区和格式化的直接跳到下一步
命令行分区工具中fdisk/cfdisk
无需配置即自带4k对齐支持,因此推荐使用。
分区方案的理由在GParted分区章节中。
不要用fdisk/cfdisk
工具调整已经格式化并且存放有数据的分区大小!这样极可能收获一个数据损坏的分区。
调整Windows相关的分区大小(NTFS分区)在Windows下调整(或者用PE);
调整Linux相关的分区大小在Linux下调整(或者用GParted liveCD,可以起类似PE的作用)。
优点:可调参数多,熟练后操作可以更快。
使用lsblk
命令,先确认即将分区的硬盘。
这里即将分区的盘是/dev/nvme0n1
,这时没显示出空闲空间是正常的,这里只显示已经分配的空间。
然后进入fdisk:
1 |
|
可以输入m
查看所有可用的命令。
依次执行以下操作:
n
新建一个分区;- 分区号默认,直接回车;
- 起始位置直接回车,自动选择空闲分区的开头;
- 终止位置:输入
-3G
设定留出3G空闲空间,或者输入+17G
设定分区大小为17G。如果该选项留空则是建立分区直到空闲空间的末尾。
然后重复上述操作,新建另外两个分区;
7号分区是swap分区,因此打个标签:按t
进入修改分区类型,输入7
选择7号分区,输入Linux swap
设定分区类型。
完成后按w
写入并退出。
最后使用lsblk
命令复查一下分区结果:
优点:有TUI界面,更易操作。
使用lsblk
命令,先确认即将分区的硬盘。
这里即将分区的盘是/dev/nvme0n1
,这时没显示出空闲空间是正常的,这里只显示已经分配的空间。
然后进入cfdisk:
1 |
|
光标定位到Free space
处,选择New
,输入新建分区的大小(这里是17G),回车,并定位到剩余的Free space
;
用同样的方法再新建一个2G的分区,把Type
修改为Linux Swap
,然后再新建一个占据剩余所有空间的分区;
使用左右方向键选择Write
,输入yes
回车,然后Quit
;
最后使用lsblk
命令复查一下分区结果:
用lsblk
确认需要格式化的分区名称:
1 |
|
(7)创建btrfs子卷
1 |
|
![](/img/windows-with-arch/install/subvolume-create.png)
![](/img/windows-with-arch/install/subvolume-list.png)
(8)挂载
作为系统根目录的分区必须最先挂载,其它分区依次挂载即可。
1 |
|
然后复查挂载情况:
1 |
|
![](/img/windows-with-arch/install/mount.png)
![](/img/windows-with-arch/install/mount-check.png)
想使用swap文件的话安装完进系统了再配置。
(9)配置镜像源
编辑/etc/pacman.d/mirrorlist
,在顶端添加国内源,这里推荐cernet校园网联合镜像:
1 |
|
这是唯一一个安装系统的过程中会从liveCD复制到新系统的文件。
1 |
|
光标下移到镜像列表中的第二个链接(下移7行,可输入7j
),按yy
复制整行;
输入3k
上移3行,然后按p
粘贴;
输入4w
向右移动4个单词,输入c7w
,然后键入mirrors.cernet.edu.cn
;Esc
退出编辑模式,:wq
保存退出。
(9.5)并行下载
编辑/etc/pacman.conf
,将#ParallelDownloads = 5
行取消注释,并把5改成20。
1 |
|
输入/Par
(/
表示顺序查找)即可查找到并行选项,回车;i
进入编辑模式,删除开头的#
;Esc
退出编辑模式;A
(大写)跳到行尾编辑,把5改成20,Esc
退出编辑模式;:wq
保存退出。
(10)安装系统
即将安装的软件包:
包名 | 作用 | 重要性 |
---|---|---|
base |
系统最基础的组件 | 必需 |
base-devel |
打包软件包必需的编译和打包工具等等,是安装AUR包必需的工具;由于sudo 包含在这个包里面,因此直接现在装 |
几乎必需 |
linux linux-lts linux-zen |
内核,不同内核之间的区别参见ArchWiki /中文Wiki 。对于物理机安装的系统,linux-zen 会比linux 更适合日用一些,但是linux-zen 内核不太适合虚拟机;linux-lts 内核版本相对旧一些,作为后备内核。 |
至少安装其一 |
linux-headers linux-lts-headers linux-zen-headers |
内核相应的头文件 | 非必需,但是对NVIDIA显卡以及其它硬件安装的dkms 驱动是必需的 |
btrfs-progs |
btrfs工具包 | 对于btrfs格式的分区是必需的 |
networkmanager |
联网工具 | 几乎必需 |
vim |
终端文本编辑器 | 可选,替换为nano 等也可,但是至少安装一个终端文本编辑器 |
bash-completion |
bash的tab补全支持 | 建议,如果用zsh 的话安装zsh 和zsh-completions |
linux-firmware |
固件包 | 物理机必需,虚拟机无需 |
intel-ucode amd-ucode |
微码更新 | 物理机必需,根据CPU品牌安装对应的;虚拟机无需 |
fish |
带有强大补全功能的shell | 纯个人喜好 |
个人喜好安装3个不同版本的内核,中间版本的作为主力,旧版本的作为后备,更新的测试版本的内核用在”当前版本的内核有bug但是新版已经修了”的情况。
目前内核版本的情况:
内核 | 当前版本号 | 补充说明 |
---|---|---|
linux | 6.13.2.arch1-1 | 主线内核,稳步推进版本 |
linux-zen | 6.13.2.zen1-1 | 更新频率跟随主线 |
linux-lts | 6.12.13-1 | 在2024年的时候保持6.6, 2025年改到6.12并将在全年保持维护6.12版本 |
linux-mainline | 6.14rc2-1 | 比主线内核更新一版的rc版内核 |
安装命令:
虚拟机:
1 |
|
Intel物理机:
1 |
|
AMD物理机:
1 |
|
有些教程里面未添加-K
参数; 根据pacstrap man page
-G
Avoid copying the host’s pacman keyring to the target.
-K
Initialize an empty pacman keyring in the target (implies -G).
-K
参数的作用是在目标中初始化新的密钥,而不是从liveCD中复制一份;注意到下载软件包之前有类似输出(linux-lts-headers
抄漏了一个字母,当然是报错了,但是不影响gpg部分):
(11)生成fstab文件
1 |
|
结果应该类似这样:
(12)切换到新安装的系统
1 |
|
zsh,bash和fish同台(
当系统崩溃到无法进入系统的时候,使用liveCD启动,挂载硬盘然后arch-chroot
就可以回到系统进行修复了,这是修系统最有力的武器;
所以理论上ArchLinux永远不需要重装系统~
(12.5)并行下载
liveCD环境里面修改过的配置文件并不会复制到新安装的系统中来,所以需要重新设置一下pacman的并行下载,这里直接复制前面的步骤了。
编辑/etc/pacman.conf
,将#ParallelDownloads = 5
行取消注释,并把5改成20。
1 |
|
输入/Par
(/
表示顺序查找)即可查找到并行选项,回车;i
进入编辑模式,删除开头的#
;Esc
退出编辑模式;A
(大写)跳到行尾编辑,把5改成20,Esc
退出编辑模式;:wq
保存退出。
(13)设置主机名
这里因为是在虚拟机测试双系统,就给主机名取名叫dualarch
了。
主机名不要包含大写字母,空格和点。
任何写入文件的操作过后,都可以用cat
命令或者文本编辑器复查一下写入的是否正确。
编辑/etc/hostname
(这个文件原先是不存在的),填入主机名:
1 |
|
然后编辑/etc/hosts
,填入以下几行内容(可以用tab对齐):
1 |
|
(因为是直接在文件末尾附加新行,vim没什么特别的操作,就不附了;o
在光标下方插入一行,O
在光标上方插入一行)
(14)设置时区
1 |
|
在运行中的系统中更改时区可以简单一些:
1 |
|
这里手动链接是因为timedatectl
命令在chroot环境下不能正常工作。
(15)配置本地化
编辑/etc/locale.gen
,去除en_US.UTF-8 UTF-8
行和zh_CN.UTF-8 UTF-8
行的注释;
![](/img/windows-with-arch/install/locale-gen1.png)
![](/img/windows-with-arch/install/locale-gen2.png)
1 |
|
输入/en_US
查找,/
表示顺序查找;回车,然后i
进入编辑模式,删除开头的#
;Esc
退出编辑模式;
输入?zh_CN
查找,?
表示逆序查找;回车,然后上移一行(或者按n
表示查找下一项),i
进入编辑模式,删除开头的#
;Esc
退出编辑模式;:wq
保存退出。
然后执行:
1 |
|
接下来创建/etc/locale.conf
文件,填入LANG=en_US.UTF-8
;
1 |
|
将系统 locale 设置为 en_US.UTF-8 ,系统的 log 就会用英文显示,这样更容易判断和处理问题;
也可以设置为 en_GB.UTF-8 或 en_SG.UTF-8,附带以下优点:
- 进入桌面环境后以 24 小时制显示时间;
- LibreOffice 等办公软件的纸张尺寸会默认为 A4 而非 Letter(US);
- 可尽量避免不必要且可能造成处理麻烦的英制单位。
- 设置的
LANG
变量必须是使用locale-gen
生成过的,否则会报错Cannot set LC_CTYPE to default locale: No such file or directory
- 不要在这里设置成任何中文Locale;由于tty没有中文字体,这会导致tty上显示为方块;如果需要安装桌面环境,可以在安装桌面环境之后再修改Locale为中文,并通过合理的配置让tty保持显示英文(咱的另一篇blog里面有收录其中一份这样的配置);另外,archlinuxcn社区的站长自用的内核
linux-lily
里面打了让tty支持显示中文的补丁,这个内核可以在archlinuxcn社区源获取,这是后话。
(16)设置root密码
1 |
|
没有回显是正常的,键盘没有坏
(17)安装引导
1 |
|
软件包 | 功能 |
---|---|
grub |
引导程序本身 |
efibootmgr |
管理UEFI启动项 |
os-prober |
探测硬盘上存在的其它系统启动项,比如Windows Boot Manager |
1 |
|
此外还要编辑/etc/default/grub
,作以下修改:
- 顶部添加一行
LANG=C
;
让grub使用的语言保持英文,既方便做其它可能的自定义配置,还能让显示整体更一致;
后续在locale设为中文的情况下,grub菜单可能出现汉化了但没完全汉化的情况,观感还不如全英文。 GRUB_DEFAULT
改为saved
,下面的GRUB_SAVEDEFAULT=true
取消注释;
这能让grub记住上次选择的选项;GRUB_CMDLINE_LINUX_DEFAULT
中,去掉quiet
,并且把loglevel
提高到5
;
这样能看到更加完整的内核日志,便于排查可能出现的问题;GRUB_DISABLE_OS_PROBER=false
取消注释,启用os-prober
探测硬盘上存在的Windows启动项;- 最后增加一行
GRUB_TOP_LEVEL="/boot/vmlinuz-linux"
:
默认情况下,linux-lts
内核排序会排在linux
内核的上面,导致默认启动linux-lts
内核;
如果希望默认启动其它内核,也要改成对应的名字,比如默认启动linux-zen
内核需要写GRUB_TOP_LEVEL="/boot/vmlinuz-linux-zen"
![](/img/windows-with-arch/install/grub1.png)
![](/img/windows-with-arch/install/grub2.png)
另外:
1 |
|
把os-prober的位置提前,让Windows的启动项位于第一项,这样与Linux启动项相邻,操作更方便;
最后生成grub配置文件:
1 |
|
这里可以看到正确输出了包含Windows启动项在内的条目;
但是有报告称os-prober
在chroot环境下不一定会正常工作,这种情况下直接先忽略,重启进入Linux系统后再执行一次grub-mkconfig
就好了。
(18)退出系统,重启
1 |
|
(19)新系统开机联网
引导菜单已经正常出来了;
bitlocker如果开启,首次从grub菜单启动至Windows时可能要求输入恢复密钥。
使用root用户登录:
1 |
|
有线网和虚拟机通常就已经连上网了,无线网需要在以下两种方式选择一种连接:
1 |
|
或者:
1 |
|
然后使用ping
命令测试网络连接如前。
(20)添加软件源
编辑/etc/pacman.conf
,把multilib
所在的两行注释掉,开启32位库的支持;然后添加[archlinuxcn]和[arch4edu]社区源(仍然推荐使用cernet校园网联合镜像站):
1 |
|
对于archlinuxcn源,需要为本地的一份GPG key添加信任:
1 |
|
对于arch4edu源,需要额外导入GPG key:
1 |
|
![](/img/windows-with-arch/final/edu-key1.png)
![](/img/windows-with-arch/final/edu-key2.png)
然后刷新一下pacman数据库,并安装上keyring:
1 |
|
(21)增加内核
1 |
|
linux-mainline
内核也是计划安装的内核,但是官方仓库没有,这里安装的是[archlinuxcn]社区源提供的打包好的版本;
然后刷新grub配置:
1 |
|
(21.5)swap文件
使用swap文件的话,前面挂载好的@swap
子卷就派上用场了:
1 |
|
然后编辑/etc/fstab
,开机自动启用交换文件:
1 |
|
(22)完成安装
1 |
|
观赏一下版本信息吧。
1 |
|
再开机看看Windows是否正常启动:
![](/img/windows-with-arch/final/boot-win.png)
![](/img/windows-with-arch/final/win.png)
一切正常。