Arch Linux 安装使用指北
前言
Arch Linux 是我高考刚结束暑假那会儿的时候给电脑装的第一个系统,那会儿确实对Linux根本没有什么理解,也别提什么使用技巧了…
Arch Linux 给我的第一印象自然就是简洁,不会预装花里胡哨的桌面,一切从简。那坏处自然就是,他起码曾经被标榜为最难安装的Linux系统,大概也许是因为安装过程需要全程使用命令行手动实现… 相比之下,其他Linux发行版的竞品自然都配备了十分友好的交互UI和安装界面,你只需要鼠标点点,下一步下一步下一步,安装即可…
至于我那会儿为什么考虑使用Arch Linux,那是因为我觉得他酷,而且包管理一直处于很激进的更新速度(某种程度上也很容易滚挂,我就滚挂过一次),年轻人总是喜欢新事物和挑战所以就上车了。至于现在我为什么要重提这事情,因为我大概要给自己整一台x86主机了,先等Zen 4和Intel 13th Gen打一会儿再说,所以先来个云装机解说预热一下场面。(Update on Oct. 18th:买个锤子,挤牙膏成这个样子,明年的14th Gen Intel Yes)
对于刚接触Linux的小白来说,安装Arch Linux,那就好比… 你得先有Linux使用经验才能安装Arch Linux,但是你没用过Linux怎么会有Linux使用经验呢🤣 所以尽管Arch官方的Wiki写的很详尽了,我还是想提供一个简单的视角,起码对安装的命令和功能做一点基本的介绍。
安装
P. S. 本教程只提供Arch Linux的系统安装指北,以主流的UEFI引导为例,且不包含桌面环境等部分的安装(虽然也不会很难的样子就是了)
首先,你永远可以相信Arch Wiki,他永远是你最好的朋友(即使你用的已经不是Arch Linux了),文档非常的全面。当然,还是非常建议阅读英文文档,中文文档就和WikiPedia一样,和英文原文一比老是这里缺一块那里缺一块的。
特别的,安装文档在Wiki下的Installation guide,敬请阅读~
由于Arch Linux频繁的更新,我也不确定本文的时效性,但是会尽量确保…
制作 Live CD
首先我们需要制作启动Arch Linux临时系统Live CD的启动盘,我不知道你是不是经常往你的U盘里写一些奇奇怪怪的ISO文件,包括但不限于WinPE、Windows和树莓派的镜像文件… 如果你做过,那我觉得这部分直接放手去做就好了…
首先请先下载Arch Linux的镜像文件,也就是我们所说的Arch ISO:
官网提供了磁力链的下载渠道,你也可以选择下方的地区下载站进行下载,除非你对自己网络的国际互联网带宽非常自信,那么你应该使用China下面的任意一个链接下载…
相信你是不会选错的… 看看官网标注的ISO大小,然后确定你下载的是ISO文件,那就大差不差了…
至于烧录工具,我会极力推荐balenaEtcher,不为别的,主要是他真的很傻瓜… 另外U盘的数据是会全部抹掉的,虽然感觉这是句废话,但是请务必备份你的数据…
随后插入U盘,重启并启动到你的Live CD。怎么设置BIOS进入U盘就不多赘述了,没啥意思。
敲回车,进入默认的安装模式。随后,你会以root
的管理员身份进入到这个临时的系统中去:
Live CD其实就是一个精简的小Arch Linux系统,只要我们能弄上网,其实能做的事情也不少,只不过这个临时系统每次断电都不会保存罢了。
联网
如果你折腾半天没能连上网,那基本寄了,也没必要往下看了hhh
首先可以使用ip link
命令查询你的网卡是否被检测到了并且是开启状态:
如果你使用的是笔记本上面的无线网卡,你可能需要使用rfkill
来检查你的网卡是否工作良好,然后使用iwctl
来连接无线网络。因为我不用无线,iwctl
的图顺手找了一张,看起来还是很容易上手的:
检查是否成功联网,你可以使用包括但不限于ping
或者curl
的方式。在这里推荐两个查询IP地址的接口,分别是:
1 | # curl ip.sb |
设置分区表&格式化
上手第一件事情,先看一下你的硬盘空间。
众所周知,在Linux下,一切皆文件,你的硬盘也是,而Linux很好的一点就是很好的表示硬盘的相关标识,很典型的会使用sda
,sdb
,sdc
… 将不同的硬盘区分开(名字也不一定就是sda
,看你的情况),然后使用sda1
来表示sda
硬盘上的第一个分区,以此类推。
这样看下来,Windows上面的C盘,D盘分区名称就看起来有点摸不着头脑了。
我们可以使用lsblk
查看当前的硬盘分区情况,起码你不能搞错了你想装哪块硬盘上… 以我现在为例现在sda
硬盘下的没有任何分区,都是空的。此外你还可以使用df -h
命令查看各个分区的使用情况。
对于一个典型的UEFI引导机器来说,你需要考虑安排如下的分区结构,以我的为例:
系统路径 | 磁盘分区 | 分区类型 | 推荐大小 | Live CD安装时挂载分区 | 备注 |
---|---|---|---|---|---|
/boot | /dev/sda1 | EFI system partition | 至少300MiB | /mnt/boot | EFI系统引导文件存储位置 |
[SWAP] | /dev/sda2 | Linux swap | 至少512MiB | Swap分区,用于交换内存空间 | |
/ | /dev/sda3 | Linux x86-64 root(ext4) | 剩余所有空间 | /mnt | Linux系统的主要存储空间 |
总的来说如下,我们需要分为这三个分区,我们首先划定分区表,在命令行上的工具有很多,但是感觉交互用的舒服比较满意的只有这个cfdisk
,不会用的小伙伴可以多捣鼓捣鼓,没整好之前不写进去都是没事的:
像这样,我分配了2GB给EFI引导分区,4GB给系统Swap,以及58GB给Linux系统存储,最后选择写入并确认。
现在我们看看自己分区表:
分区做好了,下一步就是格式化了,EFI分区需要使用FAT32进行格式化,Swap分区需要将其格式化为Swap,主分区需要将其格式化为Ext4格式,我们根据上方的分区对号入座,就是(以下不分顺序):
1 | # mkfs.ext4 /dev/sda3 |
自此格式化完成。
挂载分区
P. S. 注意到这里的流程其实不只是Arch Linux安装过程中才会使用到,以后比如哪天系统崩了滚挂了,你同样可以进入Live CD挂载本地磁盘上的分区,并进入Chroot进入到系统中。算是救命要领了,总比遇事不决重装系统要好。
按照刚才的方案,我们划分了三个分区并格式化设置好,现在我们需要将他们挂载在指定的目录上,如刚才的图表所示。/dev/sda1
挂载在/mnt/boot
下,/dev/sda3
挂载在/mnt
下,同时Swap分区也要设置启用。
因此命令分别为(注意顺序):
1 | # mount /dev/sda3 /mnt |
其中,由于/mnt/boot
文件夹在挂载前不存在,所以需要使用--mkdir
参数先创建文件夹。
P. S. 注意到
/mnt
和/mnt/boot
的挂载顺序不能反了,不然,后挂载/mnt
就会把/mnt/boot
的文件解除挂载了,也很合理…保险起见,最后使用
lsblk
关注以下你的三个分区挂载情况,确保都挂载正确了,别到最后装GRUB引导的时候才发现woc,我/boot
呢… 其实是你挂载的时候就整丢了
更换软件源
即将进入到使用网络下载安装的阶段了,除非你对你的国际互联网环境真的非常非常的自信,我真的不建议你直接进入下一步…
大晚上的看着自己以10KB/s的速度下载一个200MB左右的Linux内核更新,那是真的痛苦阈值拉满。
另外,为了避免不必要的玄学问题,还是建议在安装系统的时候就直接替换好软件源以后不再更换,就怕不同的软件源之间还有时间差… 用Ubuntu踩过坑的小伙伴应该知道我在说啥。
软件源都统一存储在/etc/pacman.d/mirrorlist
中。这里有两种办法完成更新,第一种是直接使用自带的reflector
拉取来自中国大陆的软件源并写入到mirrorlist
中去。使用命令:
1 | # reflector --country China --age 120 --sort rate --save /etc/pacman.d/mirrorlist |
也就是拉取来自China地区的软件源,限制条件有,最后同步时间在120小时以内(确保不是太老),按照连接速度排序。并最终将其覆写到/etc/pacman.d/mirrorlist
上去。
如果一切成功,你会看到如上的提示(忽略WARNING):
然而,拉取镜像列表也是需要从archlinux.org
拉取的,如果你连拉取软件源都有困难,那就只能手动修改了,但愿你会用vim
…
把其他国家的源全部注释掉,适当留下国内的源即可,有可能需要你手动添加,比如这里我手添了一个清华大学的源:
安装必要组件
至此为止,我们已经把整个将要启动的系统挂载在了/mnt
下,你可以理解为Live CD环境下的/mnt
,就是被安装系统的根目录/
,完全是一一对应的关系。
现在我们将使用pacstrap
将基本的系统组件(例如base
,linux
和linux-firmware
包)“倒在”将要安装的系统根目录上(也就是当前的/mnt
目录),执行命令:
1 | # pacstrap /mnt base linux linux-firmware |
请坐和放宽,如果你的网络软件源配好了,相信这不会是很痛苦的过程。
当整个阶段完成结束时,你已经将Linux的大多数基本组件安装好了,但是还缺了一些关键的操作。
新系统写入分区信息
我们需要将磁盘分区和挂载情况这些信息告知新系统,虽然我们在Live CD里面刚才配了那么多,但是这些信息在断电后就会消失,执行命令:
1 | # genfstab -U /mnt >> /mnt/etc/fstab |
将/mnt
下的挂载情况存储在/mnt/etc/fstab
中。fstab
中存储的具体信息不难看出是什么:
Chroot进入新系统
Chroot顾名思义,change root,也就是更变根目录,之前我们都是在Live CD环境下,以Live CD为视角看问题,那么这个时候/mnt
是我们要安装的系统的根目录。
现在我们使用命令:
1 | # arch-chroot /mnt |
将新的根目录指定为/mnt
,现在我们就拥有了全新的视角,也就是已经在新安装的系统中了,我们已经在新系统的根目录下了,使用lsblk
也能进一步发现挂载点信息也发生了改变,就好像是这个新安装的系统已经运行起来了。
P. S. 同理,未来系统如果滚挂了,你也可以采取同样的策略尝试使用U盘进入Live CD,然后Chroot到硬盘的系统里尝试修复问题。
新系统本地化配置
继续留在Chroot的环境里,我们以新系统的视角进行操作。
首先,设定时区,国内那自然是大上海… 使用命令:
1 | # ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
随后同步硬件时钟,使用命令:
1 | # hwclock --systohc |
接下来更改区域设置Locale,我的建议是在/etc/locale.gen
下去掉注释en_US.UTF-8 UTF-8
,像是中文相关的配置我不是很推荐打开… 你非要改也行,小心终端乱码… 另外记得先装一下vim
,虽然Live CD装了但是新系统还没装,因此命令是:
1 | # pacman -S vim |
接下来我们执行命令生成相关locale文件:
1 | # locale-gen |
随后我们新建Locale的配置文件locale.conf
,我们将对应的配置写入:
1 | # echo LANG=en_US.UTF-8 > /etc/locale.conf |
设置完本地化之后,我们设置主机名称,例如命令如下,将主机名称设置为Ray’s Arch Linux:
1 | # echo "Ray's Arch Linux" > /etc/hostname |
接下来,我们设置新系统的root密码,使用命令passwd
(密码是不会显示的,打就对了):
1 | # passwd |
至此,我们完成了新系统的大部分配置,还剩下最后一个大头,就是引导的配置。
安装GRUB
继续留在Chroot下面,接下来我们安装GRUB引导。
首先我们安装必要的组件,也就是grub
和efibootmgr
,命令如下:
1 | # pacman -S grub efibootmgr |
然后执行如下两段命令完成GRUB的配置和安装:
1 | # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB |
至此安装结束,使用exit
退出到Live CD环境,然后使用reboot
自信重启,拔掉U盘。
BOOM,你装好了。
朴实无华,且枯燥…
使用Tips
就说几个针对pacman
的,通常你可以:
-
使用
pacman -Syyu
执行全面的更新 -
使用
pacman -Ss xxx
对某个包进行搜素 -
使用
pacman -Scc
对pacman
的包管理下载缓存进行清除。注意到,需要打y
才会进行清除,直接敲回车那就是做了个寂寞。但是不建议这样清除缓存,就怕滚挂了连回滚pacman -U
的机会都没有。
另外可以使用journalctl --vacuum-size=1M
或者journalctl --vacuum-time=1d
来适当的清理日志。