Arch Linux,启动!

尝试配置一个 Arch Linux + KDE 桌面环境的组合。

VirtualBox 篇

先使用 VirtualBox 熟悉一下流程,这样不用担心搞坏 Host OS。安装过程的话,按照 Arch Linux wiki 走就行。在这里记录一些需要搞懂的关键的概念,特别是挂载(mount)和自生系统。

挂载(mount)命令的作用是把设备(device)上的文件系统接入当前文件系统层级结构(file hierarchy)中。比如,执行mount /dev/nvme0n1 windows,那么:1) 如果设备包含当前操作系统识别的文件系统,那么当前文件系统所有对windows/<path>做的操作都相当于在设备文件系统的<path>做同样的操作。2) 如果设备不包含文件系统或文件系统不被识别,那么挂载就是没用的,ls windows 会显示是空文件夹。注意,/dev/nvme0n1是设备的名称,在mount, dd等命令中用来指代该设备。

众所周知,计算机是通过引导设备(boot device)来启动的,这个设备上的内容引导计算机开机加载操作系统。使用哪个设备作为引导设备,是通过UEFI或者BIOS规定的。所谓的Dual boot,就是同一个计算机,即能引导启动一个(如 Windows)系统,又能引导启动另一个(如 Linux)系统。

自生系统(Live CD, Live DVD, Live USB, …)是能充当引导设备的可移动存储介质。它即插即用,引导宿主计算机启动到自定义的操作系统,不依赖于长期固定到计算机的硬盘里存储了什么。只读光盘(CD-ROM)上的自生系统没有持久化存储,使用内存中文件系统,一旦关机,不在硬盘挂载点之下的文件更改全部丢失。依托可读写的USB的自生系统基本克服了这个缺点。自生系统的用处很多,比如硬盘数据恢复、OS试用、OS安装等。题外话,软件领域的便携软件(portable installation)把软件安装到可移动存储介质中,自生系统直接把OS安装到可移动存储介质中,两者对比,可谓小巫见大巫。

那么利用自生系统安装目标操作系统的过程是怎样的呢?以安装 Arch Linux 为例:第一步,指定一个可用设备(如硬盘分区或者USB),在这个新设备上初始化一个文件系统。第二步,插入自生系统并用它引导计算机启动,把新设备上的文件系统挂载到内存中文件系统的 /mnt 文件夹。第三步,利用自生系统提供的运行环境执行安装程序,所有对 /mnt 的读写操作都会落实到硬盘,这样目标操作系统就被写入新设备。第四步,重新启动计算机,进入UEFI中选择通过新设备引导启动,进入目标操作系统。

Dual Boot 准备篇

可惜Virtual Box里的系统实际运行起来有卡顿,推测虚拟机性能有大overhead,于是我尝试使用 Dual Boot 的方式把 Arch Linux 安装到实际的硬盘上。这个过程中遇到了 Virtual Box 安装 Arch Linux 的时没有遇到的问题。

第一个问题就是如何进入并设置笔记本电脑的 UEFI 。折腾了半天,原来必须禁用快速启动,才能在连击功能键(一般是 Fn+F1, Fn+F2 等等)的情况下进入 UEFI。关于 UEFI 里的设置,Windows 要求必须使用 Secure Boot,否则需要提供恢复密钥(recovery key,可以在 Microsoft 账户中查询)解密其用 BitLocker 加密的卷;而Arch Linux 要求必须禁用 Secure Boot,否则无法正常启动。选择用哪个设备引导启动,是通过在 UEFI 中更改 Boot Order 来实现的,使用排序最高的设备引导启动。

第二个问题就是如何把 ISO 文件烧录到 USB 上,拷贝一份 Arch Linux 的自生系统。ISO 文件是磁盘镜像的意思,相当于把磁盘上的东西原封不动拷贝到一个文件里。把 ISO 文件烧录到磁盘就是逆过程,在Linux下很简单:cp test.iso /dev/vdb 就可以,使用 dd 同理。注意,这不等于把ISO文件拷贝到USB的“根目录”下,因为USB设备压根就不应该有预设的文件系统:把字节流简单复制到设备(烧录)与把字节流存储到设备中的文件系统的一个文件是两个概念。在 Windows 中,既可以使用命令行,也可以下载 KDE Image Writer 这类的图形化工具完成任务。不论USB原先使用的是什么文件系统,这个烧录过程都应该顺利完成,而且烧录完成之后原先的文件系统就被抹去了。

第三个问题是键盘。进入UEFI,让本机通过被烧录镜像的USB设备启动,终于进入了 Live CD,可是紧接着我发现 Live CD 提供的命令行环境对笔记本自带的键盘没有反应。到处查询无果,选择购买外接键盘,Live CD 果然对外接键盘有反应。

解决了三大难题,终于可以开始安装Arch了。

Arch Linux 安装篇

Arch Linux 使用一个名为 pacman 的包管理器,要安装新的包,就要使用一个名为 iwctl 的工具联网。连接不设密码的无线网还好说,单纯靠两行命令就能搞定,但是连接有认证的无线网就有难度了,就要开始写配置文件了。我这边需要写的是一个叫做 essid.8021 的配置文件,留待将来解决。

安装完成后,从新设备启动,GRUB 菜单没有启动 Arch Linux 的选项,让我百思不得解。上网查询了很久,才意识到我的 /mnt/boot 文件夹下根本就没有 initramfs-linux.img 和 vmlinuz-linux 文件,原来是我在使用 pacstrap 命令时尚未把 EFI 系统分区挂载到 /mnt/boot 文件夹,导致 pacstrap 命令无法生成这个文件。自然,grub-mkconfig就找不到Arch Linux了,无法生成对应的菜单项。听说可以在GRUB菜单中把启动 Windows 也做成一个选项,考虑将来解决。

终于启动了 Arch Linux 系统,一般下一步是配置一个 GUI 。需要把用户加入 video组;安装 xorg,这个X窗口系统的官方实现。安装xorg之后,运行xinit,失败。检查报错log,有很多关于driver的报错信息,让人以为是驱动问题导致运行失败,但实际上失败原因是配置文件 .xinitrc 默认运行了 xterm 和 tvm,但这两个东西没有安装导致的。补安装之后,xinit就正常运行了。

总而言之,使用 Arch Linux 的初步经验是:仔细读Wiki;注意写配置文件;要搞清楚每个命令到底做了什么,是怎么做的;有时报错信息不一定指示当前无法运行的原因,让系统运行起来了可能先前的报错信息仍然会产生,有报错没关系。

我认识到了配置 Arch Linux 是相当复杂和艰巨的过程,我也不急着搞出KDE桌面环境了,先总结和巩固一下获得的经验,打好基础。


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *