ArchLinux 安装配置指北

0 开始之前&阶段目标

0.1 原因v2

我TMArch炸了,而且还不能用timeshift回滚。

不过正好,兜里现在有了采集卡,所以可以直接通过采集卡捕捉物理机安装的所有流程,而且也使用了最新的Arch安装镜像。

旧的不去,新的不来,也只能这么安慰自己了。

不过因为采集卡分辨率设置问题,在截图的右边会有一片白色的东西,就,凑乎看吧。

0.2 原因v1

从Ubuntu换到kubuntu,再换到Manjaro,在不同的发行版之间横跳了不知道多少次,最后(起码是到现在这小半年)一直在用ArchLinux。有几个原因让我选择Arch:

  1. Aur太香了,几乎不用考虑用apt的软件源问题;
  2. 虽然manjaro开箱即用,但是在添加Arch LinuxCN的源之后,开机总是会报一个有关数据库的错误,强迫症有点忍不了;
  3. 相比于Kubuntu内置的KDE,Arch中的KDE版本更高;
  4. 滚动式更新,更新强迫症狂喜;
  5. 想倒腾,纯粹想倒腾。

打算在这篇文章里讲讲Arch的安装过程,我实在是不想重新配置电脑,于是就在虚拟机里进行安装,不过步骤都是一致的,按着步骤一步步走下来就应该没有什么问题。

有人觉得安装Arch是个很复杂的事情,其实相比于Gentoo这种从源码编译开始安装的发行版,Arch的安装过程并不算复杂,如果顺着整个步骤走一遍,或许能对Linux产生更深的理解。

0.3 注意事项和安装目标

注意:这篇文章是根据GPT分区表以及UEFI引导方式的硬件安装流程编写的。如果是BIOS+MBR的组合,在硬盘分区以及引导安装步骤上可能会有所出入,建议结合别人的教学一起使用。

此外,建议在安装前仔细阅读官方安装文档,避免因为这篇文章过时导致的问题(起码在2023年12月3日的时候还算及时)。

你需要准备:

1. Arch官方的安装文档用来参考;
2. 一台UEFI+GPT的电脑;
3. 一个装有Arch的引导盘(我个人推荐用ventoy做引导盘,可以免格盘制作启动盘)

这篇教程要做什么:

1
2
3
1. 在电脑上安装最基本的Arch Linux环境
2. 仅存在root用户
3. 包含最基础的联网软件(wpa_supplicant hcpcd)和一个编辑器(vim)

那就开始吧。

1 进入环境

如果使用的是UEFI的话,大概就能看到这种样子的一个引导界面,选择第一项直接进就OK(因为采集卡采集不到grub界面,所以还是用虚拟机截图做代替)。

选择第一个选项进入之后你大概就会看到这样子的一个界面:

image-20231203101102938

2 联网

取决于你的网络连接方式,有以下两种方法可选:

2.1 有线更稳定,我选有线

插网线后,直接运行dhcpcd &让ip协商功能放在后台运行,正常情况下就可以联网了,比下面那条路要省不少时间!

2.2 无线更自由,我选无线

使用wpa_supplicant通过WIFI联网,大概来说使用以下几个命令就行,虽然有点复杂,但是花的时间多啊。

2.2.0 补充

我是在联想R9000P上装的Arch,联想会默认软屏蔽掉蓝牙和WI-FI,可以通过这个命令来看屏蔽方式:

rfkill list

image-20231203101147831

如果有和上面一样的软屏蔽情况就可以通过这个命令解除屏蔽,然后就和其他电脑一样可以进行Wi-Fi连接等操作了:

rfkill unblock all

image-20231203101221453

2.2.1 定位网卡并连接Wi-Fi

首先我们要确定无线网卡的名字,用这个命令就行:

ip a

最下面的那个wlan0就是这台设备的无线网卡。

image-20231203101303457

使用ip link set wlan0 up命令启动这张网卡,随后可以再使用ip a命令确认状态,如果尖括号内多了“UP”这么个字段,就证明启动完毕,可以进行下一步了;

image-20231203101334188

然后我们需要配置一下需要连接的无线网络信息,命令大概是这样的:

wpa_passphrase ESSID PASSWORD > FILENAME

ESSID对应你的网络名

PASSWORD对应无线密码

FILENAME随意,只是暂时保存信息用的,在这里我就管它叫wifi.txt了。

image-20231203101559204

接下来就可以使用wpa_supplicant -i wlan0 -c FILENAME &这个命令让设备联网;

然后使用dhcpcd &让设备和路由器协商,分配一个内网IP;

image-20231203101648689

在最后,使用命令ping baidu.com

如果能ping通百度的话,那联网这一项基本上就完成了。

image-20231203101737937

3 对时

在确保设备能够联网之后,使用如下命令来进行对时:

1
timedatectl set-ntp true

image-20231203101812601

对时的目的是保证随后使用网络下载软件的时候不会出现SSL/TLS握手错误。

4 分区

DISCLAIMER:因为这次安装是在实体机装双系统,因此我没有动efi分区,不过大致流程类似,可以参考其他人或者官方的教程。

现在进行分区操作

首先使用fdisk看看这台电脑的分区情况:

1
fdisk -l

image-20231203101906706

我这里显示了很多个分区,不过重要的其实就最上面那几个/dev/nvme开头那几个,因为这台设备只支持NVMe硬盘,其他设备应该都是启动盘的分区,不必在意。

我需要在/dev/nvme0n1上面进行安装,大概计划就是这些:

分区类型 大小 挂载点 分区格式 功能 实际计划分区
efi 大于260M /mnt/boot fat32 在开机时进行系统引导 /dev/nvme0n1p1
SWAP空间 通常来说是物理内存的一到二倍 swap 虚拟内存,保存系统休眠时的内存数据 /dev/nvme0n1p4
根目录 剩余空间 /mnt ext4 保存其他的所有文件 /dev/nvme0n1p5

输入fdisk /dev/sda开始用fdisk进行分区:

image-20231203102000418

这时候就需要进行分区,需要进行以下步骤:

  1. 输入n来新建一个分区;
  2. 输入分区序号,这里可以按照默认的来(也就是直接回车);
  3. 扇区开始地址,这里选择默认(也就是直接回车);
  4. 扇区结束地址,可以根据上面的参考表进行填写。例如,efi分区就可以输入+300M创建一个300M大小的分区,SWAP分区就可以用+16G

如此进行几遍,确保efi,swap和根目录,这三个要挂载的分区都有了,就可以继续下一步了。

(我这里应该是硬盘分区保存了之前安装的分区信息,所以会有红字报错,问题不大)

image-20231203102104835

在分区完毕之后输入w保存。

这时候我们再次输入fdisk -l就可以看到做好的分区了:

相比之前多出了/dev/nvme0n1p4/dev/nvme0n1p5两个分区。

image-20231203102125530

下来就要对这三个分区进行格式化:

  1. 对于efi分区(如果是装双系统且已经有其他正常工作的系统就别跳到下一个分区):

    1
    
    mkfs.fat -F32 /dev/nvme0n1p1
    
  2. 对于SWAP分区:

    image-20231203102230096

    1
    2
    
    mkswap /dev/nvme0n1p4	#格式化swap分区
    swapon /dev/nvme0n1p4	#启用swap
    
  3. 对于根分区,我最近想试试btrfs分区格式,所以就用了下面的命令:

    image-20231203102313534

    1
    
    mkfs.btrfs /dev/nvme0n1p5
    

到此为止,我们基本上就完成了分区相关的所有操作,下来就是利用pacstrap工具进行Arch的解压安装了。

5 安装

5.1 配置pacman

pacman是Arch自带的包管理工具,在arch的安装过程中也要使用pacman来下载一些基本的工具,为了提升下载软件的速度,我们要稍微修改一下pacman的配置文件:

1
vim /etc/pacman.d/mirrorlist

Server项的最上面添加这么一行,添加清华大学的镜像源:

1
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch

当然,你也可以找一个别的更快的源,我这里懒得动,就用了原始的配置文件,保证大陆服务器在最上面就行。

image-20231203102447674

下来使用pacman -Syy指令来刷新当前缓存。

image-20231203102525107

5.2 挂载分区

1
mount /dev/nvme0n1p5 /mnt #决定挂载哪个分区到根目录,就选择哪个分区

image-20231203102613969

我们可以用lsblk命令看一看当前分区的挂载情况,可以看到nvme0n1p5分区已经挂载到了/mnt下。

image-20231203102634836

这是一个运行在u盘上的系统,当前的根目录位于U盘上,这时候想要修改电脑硬盘,就需要将电脑中的分区挂载到u盘上的系统,上面的那个命令就是把这个分区挂载到/mnt分区下.

这时候我们看/mnt目录下非空,证明挂载成功。

下来我们要在这个分区内创建一个新的文件夹,将efi分区挂载到这个文件夹上:

1
2
mkdir /mnt/boot 
mount /dev/sda1 /mnt/boot

但是在我之前的使用下,不断“膨胀”的Linux内核会侵占电脑的EFI分区,导致很多隐性问题。于是可以将EFI分区挂在在/mnt/boot/efi中,使其仅保存必要的efi引导文件。

1
2
mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

image-20231203102821445

5.3 使用pacstrap安装基本组件

刚刚我们把根分区挂载到了/mnt上,使用下面这个指令来安装基本元件:

1
pacstrap /mnt base linux-firmware linux wpa_supplicant dhcpcd

image-20231203103053134

image-20231203103805826

5.4 记录并保存分区信息

1
genfstab -U /mnt >> /mnt/etc/fstab

image-20231203103852916

生成的fstab会让下次Arch启动的时候自动挂载以上分区

6 剩下一堆相关的配置

首先使用arch-chroot /mnt开始进行配置

image-20231203103915112

6.1 时区配置

1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
1
hwclock --systohc

image-20231203104033546

6.2 语言文字配置

1
vim /etc/locale.gen

image-20231203104125278

找到其中含有"en_US.UTF-8"项的那一行,去掉前面的井号。

image-20231203104235498

使用locale-gen来生成本地化内容。

image-20231203104308770

1
vim /etc/locale.conf

添加内容如下:

1
Lang=en_US.UTF-8

image-20231203104406676

6.3 主机名

1
vim /etc/hostname

在新建的文件中添加你想要的主机名,这里我就填写’Arch-Legion'

image-20231203104502457

1
vim /etc/hosts

添加内容如下:

1
2
3
127.0.0.1 	localhost
::1 				localhost
127.0.1.1		Arch-Legion.localdomain	Arch-Legion

保存后退出

image-20231203104655020

6.4 修改密码

passwd

image-20231203104733675

之后输入两次你想要的新密码,就算改完了root密码。

6.5 配置引导

6.5.1 下载工具

1
pacman -S grub efibootmgr intel-ucode os-prober

image-20231203104819073

image-20231203104832717

6.5.2 生成grub配置

首先先给grub创建一个文件夹:

1
mkdir /boot/grub

接下来就是生成grub的配置文件以及安装过程:

1
grub-mkconfig > /boot/grub/grub.cfg

image-20231203105105129

1
grub-install --target=x86_64-efi --efi-directory=/boot

如果你在前面选择将EFI分区挂载在/boot/efi的话,需要修改后面的参数:

1
grub-install --target=x86_64-efi --efi-directory=/boot/efi

image-20231203105255655

如果你安装的是双系统,那么还需要修改/etc/default/grub中的对应字段:

1
GRUB_DISABLE_OS_PROBER=false

当上面的流程都做完了就可以退出系统并重启了。

image-20231203105336068

7 最后的一些收尾工作

在完成之前还是需要安装几个用于联网的工具,避免开机之后你和完全不知道怎么下手的电脑面面相觑:

1
pacman -S wpa_supplicant dhcpcd 

7.1 验收成果

在一切都做好之后,就可以一路exit,直到退到一开始的安装界面,随后输入reboot,就可以正常进入系统了(当然还是一个scary black box)。

image-20231203105430537

7.2 双系统相关

我安装了几次双系统,都发现os-prober没法在Arch的安装阶段发现efi分区中的Windows启动项,因此推荐在重启之后重新执行生成一下grub配置信息,通常来说这次就可以发现Windows的启动项了。

image-20231203105512428