这是一篇为GPT/EFI 引导 的电脑安装 Arch Linux(双系统)的中文简明流程,尽可能省略了可以省略的流程与文字以使得篇幅尽量短小,基本上基于Arch Wiki Installation guide 以及这篇优秀的安装教程,特此表示感谢。
本文严格按照操作顺序进行编写,还请认真阅读每一步操作的说明以及注意事项。
说明:下文中所指教程均指此篇教程:以官方Wiki的方式安装ArchLinux。
此处默认你使用 Windows 系统,其他情况请参阅Arch Wiki。
tuna.tsinghua.edu.cn
,下载文件名形如archlinux-2022.04.05-x86_64.iso
的 iso 镜像文件。重要提示:如果你的 Windows 电脑为磁盘加上了Bitlocker 锁,请务必解除后再进行任何磁盘操作,否则会为你带来巨大的不幸。
此处默认 Arch Linux 与原系统安装在同一块硬盘上,如果你需要在一块新硬盘上安装,你还需要确定新硬盘的分区表为 GPT 格式,并新建一个 EFI 分区。具体的其他情况请查阅 Arch Wiki、教程 或自行搜索。
说明:你也可以在进入 Arch Linux 安装程序后进行这一步。
不同品牌的电脑/主板进入 BIOS 设置的方法不一样,联想以及戴尔是在按下开机键出现品牌徽标时 按 F2(或 Fn+F2),启动菜单是按下 F12,其他品牌请自行搜索。
各品牌 BIOS 设置界面各自不同,但需要做的事情大同小异。
关闭Secure Boot
,Arch Linux 安装程序无法使用Secure Boot
启动,你可以在完成安装之后再启用此功能。
某些品牌(如戴尔)的电脑可能不会在其他系统中默认开启网卡,需要在设置中启用Enable UEFI Network Stack
。
调整 BIOS 默认的启动顺序(Boot Sequence
/Boot Order
),检查是否有装载有 Arch Linux 的 U 盘,将其顺序调整到第一位(你也可以在计算机启动时手动进入启动菜单选择要启动的系统),保存 BIOS 设置并退出。
说明:如果在这里找不到你的 U 盘(设备名形如
ARCH_202204
),说明可能你的设备开启了Secure Boot
导致 BIOS 无法找到系统入口,保存 BIOS 设置退出后重新进行这一步即可。
完成了 BIOS 的设置后,重启计算机,我们应该进入到了 Arch Linux 的界面,选择第一个进入安装程序即可进入zsh
命令行界面。
说明:此部分问题较多,请耐心使用控制变量法以及搜索引擎进行问题排查。
解除可能出现的软硬件 block
rfkill unblock all
列出当前网络设备
ip link show
一般而言,无线网卡的名字默认为wlan0
,检查其状态,若为DOWN
还需设置为UP
,wlan0 请替换成此处显示的网卡名
ip link set wlan0 up
不同型号的无线网卡的支持情况不同,若有条件推荐优先使用有线网网络进行连接,可以直接使用 USB 线将手机连接电脑使用手机的数据网络。
接入网线或手机后,执行命令进行有线网连接
dhcpcd
测试网络是否联通
ping www.baidu.com
使用
Ctrl+C
中止当前正在执行的命令
执行以下命令
iwctl
会进入一个以 [iwd] 开头的命令行环境中,接着执行:
device list
会列出当前可用的所有网卡设备,一般而言,无线网卡的名字默认为wlan0
,接着执行下列命令进行无线网络的扫描:wlan0
请替换成此处显示的网卡名
station wlan0 scan
接着执行下列命令列出扫描到的网络:
station wlan0 get-networks
最后输入下列命令连接指定网络:Wifi-SSID
请切换成你想要连接的网络,输入密码回车即可连接成功。
station wlan0 connect Wifi-SSID
提示:单次或多次按下
Tab
可以补全或选择可能的选项,免去输入校对之苦
使用quit
退出iwc
,测试网络是否联通
ping www.baidu.com
使用
Ctrl+C
中止当前正在执行的命令
提示:可以使用方向键的上、下键来查看曾经执行过的指令的历史记录
timedatectl set-ntp true
操作成功无提示
警告:除非你清楚你自己在做什么,否则请不要对硬盘分区表、以及除前文新建的分区之外的分区进行任何操作,并且请多次检查自己有没有输错命令,以防对其他分区的数据产生影响。
换而言之,只要你不对其他分区(Windows 相关分区)进行任何操作,就不需要担心有任何数据丢失的风险。
列出当前所有分区
fdisk -l
找到EFI System 分区 以及刚刚在 Windows 下建立的新分区 ,记下这两个分区的路径(形如/dev/nvme0n1p1
与/dev/nvme0n1p5
)。EFI 系统分区一般大小为 300-500M 不等。
再次提示:单次或多次按下
Tab
可以补全或选择可能的选项,免去输入校对之苦。
部分电脑蜂鸣器会在Tab
无法补全时发出刺耳的提示声,使用rmmod pcspkr
移除。
格式化刚刚在Windows下新建的数据分区(替换为你自己的路径)
mkfs.ext4 /dev/nvme0n1p5
请将nvme0n1p5
替换为之前创建的数据分区,将nvme0n1p1
替换为已经存在的 EFI 系统分区
mount /dev/nvme0n1p5 /mnt
mkdir /mnt/boot mount /dev/nvme0n1p1 /mnt/boot
检查挂载是否成功
mount
Arch Linux 的包管理器pacman
十分强大,大部分情况下,一行命令就可以搞定包与依赖的问题。
运行命令以配置pacman
所使用的镜像源,Reflector
会自动帮我们配置位于 China 的下载速度最快的镜像源
reflector --country China --sort rate --latest 5 --save /etc/pacman.d/mirrorlist
可能会报WARNING
但无需理会
休息一下,接下来我们的所有文字编辑命令都需要使用Vim
。推荐使用以下的链接进行学习,只需要掌握第一等级即可:
简明 VIM 练级攻略
打开pacman
设置,启用pacman
的并行下载功能,加速下载,事半功倍。
vim /etc/pacman.conf
找到ParallelDownloads = 5
这一行并取消其注释。
执行以下命令,安装 Arch Linux 所需要的基本包
pacstrap /mnt base base-devel linux linux-firmware dhcpcd
遇到需要选择的场合一路回车选择默认项即可。
生成(Generate)自动挂载分区的fstab
文件(即文件系统表 File System Table)
genfstab -L /mnt >> /mnt/etc/fstab
由于这步比较重要,所以我们需要输出生成的文件来检查是否正确,执行以下命令:
cat /mnt/etc/fstab
如果前面的挂载操作没有出错,应该输出且仅输出 两条记录:(以你的磁盘分区情况为准)
根分区/
被挂载到了此前建立的数据分区/dev/nvme0n1p5
引导分区/boot
被挂载到了硬盘已有的 EFI 系统分区/dev/nvme0n1p1
如果fstab
文件有任何错误,请先删除该文件。
rm -rf /mnt/etc/fstab
检查前面的挂载操作有没有出错,umount
之后再重新挂载、生成。
这里的配置流程虽然有些繁琐,但不会像前面的操作一样容易出错。
Chroot
意为Change root
,相当于把操纵权交给我们新安装(或已经存在)的Linux
系统,执行了这步以后,我们的操作都相当于在磁盘上新装的系统中进行。
执行如下命令:
arch-chroot /mnt
顺带一提,如果以后系统出现了问题,只要插入任意一个安装有 Arch Linux 镜像的 U 盘并启动,将我们的系统根分区挂载到/mnt
下、EFI 系统分区挂载到/mnt/boot
下,再通过这条命令就可以进入我们的系统进行修复操作。
打开pacman
设置,启用pacman
的并行下载功能,加速下载,事半功倍。
vim /etc/pacman.conf
找到ParallelDownloads = 5
这一行并取消其注释,可以将5
调整为你想要的数值。
目前,系统根目录已经从 U 盘切换到了硬盘中,需要安装一些必需的软件包
pacman -S vim dialog wpa_supplicant ntfs-3g networkmanager netctl
遇到需要选择的场合一路回车选择默认项即可。
依次执行如下命令设置我们的时区为上海,并生成相关文件
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime hwclock --systohc
执行如下命令,设置我们使用的语言选项
vim /etc/locale.gen
在文件中找到en_US.UTF-8 UTF-8
、zh_CN.UTF-8 UTF-8
、zh_HK.UTF-8 UTF-8
及zh_TW.UTF-8 UTF-8
这四行,去掉行首的 # 号,保存并退出。
执行如下命令,系统会生成我们需要的本地化文件
locale-gen
打开(不存在时会创建)/etc/locale.conf
文件:
vim /etc/locale.conf
在文件的第一行加入以下内容
LANG=en_US.UTF-8
保存并退出
打开(不存在时会创建)/etc/hostname
文件:
vim /etc/hostname
在文件的第一行输入你自己设定的一个myhostname
,这将会是你的计算机名,保存并退出。
打开(不存在时会创建)/etc/hosts
文件:
vim /etc/hosts
在文件末添加如下内容(将myhostname
替换成你自己设定的主机名),保存并退出。
127.0.0.1 localhost ::1 localhost 127.0.1.1 myhostname.localdomain myhostname
root
账户是Linux
系统中的最高权限账户,需要设置密码保护起来,以免无意间实施了破坏性的敏感操作。
passwd
关于这一步操作的说明,可以查看教程
请自行替换username
为你想要使用的用户名
useradd -m -G wheel username
passwd username
为了在普通用户下使用 root 操作,需要配置 sudo
pacman -S sudo
vim /etc/sudoers
找到# %wheel ALL=(ALL)ALL
,取消注释并保存退出。
或许有的人已经发现 Arch Wiki 和一些其他教程资料中的命令是以
#
或$
开头的,这两个符号就对应着命令行中的命令提示符,#
代表以Root
用户执行命令,$
代表以普通用户执行命令,平时使用教程中的命令时应该注意这一点。
显然你应该根据你电脑的 CPU 型号选取一个包进行安装
pacman -S intel-ucode pacman -S amd-ucode
此处使用grub
进行系统引导,先安装必要的包
pacman -S os-prober ntfs-3g grub efibootmgr
部署grub
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
生成配置文件
grub-mkconfig -o /boot/grub/grub.cfg
检查文件末尾的menuenrtry
是否有 Arch Linux 入口
vim /boot/grub/grub.cfg
若有任何报错请查阅 Arch Wiki、教程或自行搜索。
交换文件可以在物理内存不足的时候将部分内存暂存到交换文件中,避免系统由于内存不足而完全停止工作。之前通常采用单独一个分区的方式作为交换分区,现在更推荐采用交换文件的方式,更便于我们的管理。分配一块空间用于交换文件,执行:
dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress
将8192
换成需要的大小,单位 Mb,一般与计算机 RAM 大小一致即可。
更改权限,执行:
chmod 600 /swapfile
设置交换文件,执行:
mkswap /swapfile
启用交换文件,执行:
swapon /swapfile
最后我们需要编辑/etc/fstab
为交换文件设置一个入口,使用Vim
打开文件:
vim /etc/fstab
注意编辑fstab
文件的时候要格外注意不要修改之前的内容,直接在最后新起一行加入以下内容:
/swapfile none swap defaults 0 0
再次提醒,你应当开启
pacman
的并行下载功能遇到需要选择的场合一路回车选择默认项即可
安装 Xorg 图形服务
sudo pacman -S xorg
安装 KDE Plasma
sudo pacman -S plasma kde-applications
安装桌面管理器 sddm
sudo pacman -S sddm
设置 sddm 开机启动
sudo systemctl enable sddm
启用适用于桌面环境的网络服务NetworkManager
sudo systemctl disable netctl sudo systemctl enable NetworkManager