ArchLinux 安装指南(新手向)

2020-03-01 8052点热度 20条评论

最近小山把主力系统从 Windows 换到了 Linux,开始因为懒,就用了基于 ArchLinuxManjaro。不过没几天,被我一个不小心把/etc目录给删了,熟悉 Linux 的人一定知道这个目录的重要性,导致我只能重装系统。这次我选择了原汁原味的 ArchLinux,整个安装过程虽然没有 Manjaro 方便,不过也没有多么复杂。

于是我就想写一篇面向新手,且适用于物理机和虚拟机的 ArchLinux 安装指南,目标是让你安装后可以作为日常系统使用。即使你已经装好了 ArchLinux,本指南可能也能帮助到你。

本指南基于 ArchLinux 官方安装指南,并对官方安装指南进行了简化,使安装过程没有过多的选择和困惑。

这份指南遵循简单原则,只会带给你一个可以正常使用并带有特定桌面环境的 ArchLinux,并不会带给你多余的东西。后面的路,由你决定!

本指南大部分操作会附带一个指向 ArchWiki 对应页面的链接,用于帮助你了解操作的详细意义。

如果你在安装过程中遇到了问题,欢迎加入 QQ 群向我询问。

ArchLinux

前言

既然你已经准备安装 ArchLinux,想必对它已经有一个大致的了解了,如果你还不了解,可以前往以下页面了解它。

ArchLinux 简介:https://wiki.archlinux.org/title/Arch_Linux

ArchLinux 常问问题:https://wiki.archlinux.org/title/Frequently_asked_questions

ArchLinux 与其他发行版的区别:https://wiki.archlinux.org/title/Arch_compared_to_other_distributions

可能有些刚接触(了解) ArchLinux 的小伙伴困惑它是否适合自己?

如果你符合下面这几点,我觉得就可以使用 ArchLinux。

  • 拥有阅读文档并动手解决问题的能力。
  • 喜欢高度自由的系统。
  • 追求一切保持简单,不喜欢多余的东西。

如果你是个刚接触 Linux 的新人,我也推荐使用它来入门,ArchLinux 的文档(Wiki)非常详细,你遇到的大多数问题几乎都能在 Wiki 找到答案,同时它也是很好的 Linux 学习资料,此外,ArchLinux 还有一个用户友好的社区

等你对 ArchLinux 熟悉之后就会发现,原来本指南安装步骤是如此简单。

如果你想找个省心省力但又拥有 ArchLinux 特性的发行版,那么 ManjaroEndeavourOS 可能是你更好的选择,这些是流行的基于 ArchLinux 的桌面发行版,它在保留 ArchLinux 部分特性的同时又做到了安装简单和开箱即用。

准备工作

本安装指南假设你至少知道在 Linux 如何执行命令以及一些基础的电脑知识。

你需要一台支持 UEFI 引导的 64 位(x86-64)的电脑,最好拥有有线网络连接,务必不要使用蓝牙鼠标。

如果你的电脑不支持 UEFI,那么以下某些步骤可能不适合你,下面我会说明如何查看电脑是否支持 UEFI,只要不是特别老的电脑都支持。如果不支持 UEFI 还想继续安装,可以加入 QQ 群与我交流。

安装系统前首先要下载系统,前往 https://mirrors.kernel.org/archlinux/iso/latest/ 下载 ArchLinux 的镜像文件,下载完成后建议使用文件校验工具配合 sha1sums.txt 验证镜像文件完整性。

准备一个U盘,U盘容量大于镜像文件大小即可,用于制作安装盘。

注意:制作过程将清空 U 盘数据,制作之前务必做好数据备份。

前往 etcher.io 下载 Etcher(启动盘制作工具),Etcher 是跨平台的镜像写入工具,Windows、macOS 和 Linux 都可以使用。如果你无法成功从官网下载 Etcher,可以在这里下载:https://share.weiyun.com/5OvrT9N

U盘插入电脑后以 root / 管理员身份运行 Etcher,点击 [Flash form file] 选择 ArchLinux 的镜像文件,然后点击「Select target」选择你用于制作安装盘的U盘,最后点击「Flash」。

启动盘制作完成后,关闭 Etcher。

将 ArchLinux 安装盘插入要安装 ArchLinux 的电脑并使用 ArchLinux 安装盘启动,就像安装 Windows 一样。ArchLinux 启动菜单出现后,选择第一个菜单项目并进入。

当出现类似下面的界面时,表示安装环境启动成功。

PS:如果你的电脑启用了 UEFI 安全启动,必须关闭安全启动才可以成功启动。

启动成功

执行ls /sys/firmware/efi/efivars检测当前引导模式是否是 UEFI

如果没有列出文件,表示当前没有以 UEFI 模式启动,检查你的电脑是否支持以及 BIOS 设置 。

稍后的安装操作会使用 nano 文本编辑器编辑文件,你也可以选择使用 vim,如果这两个编辑器你都不会使用,推荐查看 https://www.vpser.net/manage/nano.html 以学习 nano 的基本用法。

检查网络

执行ip -brief link查看网卡列表,输出的第一列为网卡名称,名为 lo 的是虚拟网卡,如果列表还有其他网卡,则表示网卡正常。

PS:有线网卡名称一般以 e 开头,无线网卡名称一般以 w 开头。

有线网卡会自动配置 DHCP,一般不需要手动干预。

无线网卡根据 https://wiki.archlinux.org/title/Iwd#iwctl 步骤来配置无线网络

如果你是静态 IP 网络,推荐更换为支持 DHCP 的网络再继续。

最后检查网络是否正常,执行ping -c 5 url.cn测试网络连通性。

如果网络正常,执行timedatectl set-ntp true通过互联网同步系统时间。

通过 SSH 远程连接(可选)

如果你觉得手动执行命令太麻烦或者担心输错,想直接从米V米复制命令,那么可以使用另一台电脑或移动设备通过 SSH 控制安装环境。

执行passwd为安装环境设置密码,此命令不会显示你输入的密码。

执行ip -brief address查看 IP 地址列表,输出第三列是每个网卡对应的 IP 地址(如果你的网络支持 IPv6 ,可能有多个 IP 地址。),IP 地址不包含/后面的掩码位。比如输出192.168.1.2/24,IP 地址应该是192.168.1.2

现在可以使用 SSH 客户端连接至安装环境了,简单说一下 Windows 10/11、macOS、Linux、Andorid 和 iOS 如何安装并使用 SSH 客户端。

务必将下列命令中的${IP}替换为安装环境的 IP 地址,示例:ssh -o StrictHostKeyChecking=no root@192.168.1.2

Windows 10/11 打开 命令提示符 (cmd)、PowerShell 或 Windows 终端,执行ssh -o StrictHostKeyChecking=no root@${IP}

Linux 和 macOS 在终端执行ssh -o StrictHostKeyChecking=no root@${IP}

如果提示 ssh 命令不存在,Windows 系统可参考 https://docs.microsoft.com/windows-server/administration/openssh/openssh_install_firstuse 进行安装,其他系统自行搜索 OpenSSH 客户端安装方法。

Android 前往 https://juicessh.com/changelog 下载安装 JuiceSSH,打开后点击 [快速连接],「类型」选择 [SSH],然后在下方输入root@${IP},点击 [确定] 进行连接。

iOS 前往 App Store 安装 Termius,进入主界面后点击右上角的 +,选择 [New Host],「Hostname」填写安装环境的 IP 地址,勾选「SSH」或「Use SSH」,然后「Username」和「Password」分别填写root和密码,最后保存,点击列表中的项目进行连接。

如果无法连接,务必确保安装环境和 SSH 客户端处于同一局域网,以及 OpenSSH 客户端是 7.2 或更高版本(ssh -V 查看版本信息)。

硬盘分区

如果你需要 Linux + Windows 双系统,建议使用两个物理硬盘安装,以下分区方式不适用于单硬盘双系统。如果你想要单硬盘双系统,可以加入 QQ 群向我询问。

执行fdisk -l查看硬盘以及分区列表,确定你要用于安装系统的硬盘路径,比如这里我用的是/dev/sda。loop 设备是光驱等虚拟设备,不是真实的硬盘,不能用于安装系统。

确认硬盘

如果你有多块硬盘,第一块硬盘一般为/dev/sda 或/dev/nvme0n1 (NVME),第二块硬盘一般为/dev/sdb 或/dev/nvme0n2 (NVME),以此类推。U 盘或移动硬盘也会被列出,注意不要搞错。

如果你的硬盘没有被列出,可能是在 BIOS 开启了 RAID 模式(部分笔记本会默认开启),前往 BIOS 将硬盘模式改为 AHCI 模式即可,更改后可能会导致现有的 Windows 无法启动。

下述分区操作将清空目标硬盘数据,请在操作前做好数据备份。

务必将下列命令中的${diskPath}替换为你的硬盘路径。示例:sgdisk /dev/sda

擦除分区表:sgdisk -Z ${diskPath}

创建大小为 260M 的 ESP 分区 (UEFI 引导必要分区):sgdisk -n=0:0:+260M -t=0:ef00 ${diskPath}

使用剩余空间创建系统分区:sgdisk -N=0 ${diskPath}

显示分区信息:fdisk -l ${diskPath},对比你的分区信息是否与下列信息相似,重点是分区类型 (Type)。

Disk ${diskPath}: *** GiB, *** bytes, *** sectors
Disk model: ***
Units: sectors of 1 * *** = *** bytes
Sector size (logical/physical): *** bytes / *** bytes
I/O size (minimum/optimal): ** bytes / *** bytes
Disklabel type: gpt
Disk identifier: ***

Device         Start    End    Sectors    Size    Type
${diskPath}1   ***      ***    ***        260M    EFI System
${diskPath}2   ***      ***    ***        ***G    Linux filesystem

PS:给 ESP 分区分配 260M 空间是为了兼容不同硬盘,不同的 UEFI 固件,以及存放系统内核和 initramfs。对于某些早期或者有缺陷的 UEFI 实现,可能至少需要分配 512M。

某些教程的分区步骤会创建一个额外的 SWAP(交换空间)分区,这里并不推荐创建,具体原因参考下面的【设置交换空间】章节

如果你的硬盘空间较大,或者想把系统和数据分别存放在不同的分区,想要多个分区也可以。

格式化并挂载分区

格式化 ESP 分区为 FAT32:mkfs.fat -F 32 ${part1Path},把${part1Path}替换为第一个分区的路径,示例:mkfs.fat -F 32 /dev/sda1

注意:如果你在格式化 ESP 分区的时候提示:WARNING: Not enough clusters for a 32 bit FAT!,请尝试使用mkfs.fat -s 2 -F 32 ${part1Path}mkfs.fat -s 1 -F 32 ${part1Path}命令来格式化 ESP 分区,否则 UEFI 固件可能会无法读取 ESP 分区。

格式化系统分区为 EXT4:mkfs.ext4 -m 5 ${part2Path},把${part2Path}替换为第二个分区路径,示例:mkfs.ext4 -m 5 /dev/sda2

PS:-m是指定保留块所占百分比,默认值为 5,用作保留快的空间不能被使用。你可以减小这个值增加分区的可用空间,或者增大这个值提升固态硬盘的性能。

如果你想要更好的性能和更现代的功能,可以在系统分区尝试使用 XFS 文件系统:mkfs.xfs ${part2Path}

XFS 可能需要手动维护,参考:https://wiki.archlinux.org/title/XFS

PS:XFS 分区大小目前只支持扩容,不支持缩小。

当然你也可以在系统分区使用其他文件系统,比如 Btrfs、JFS、F2FS 等,你可以前往 ArchWiki 查看这些文件系统的对应文档。

挂载系统分区:mount ${part2Path} /mnt,把${part2Path}替换为第二个分区路径,示例:mount /dev/sda2 /mnt

创建 ESP 分区挂载路径:mkdir /mnt/boot

挂载 ESP 分区:mount -o umask=0077 ${part1Path} /mnt/boot,把${part1Path}替换为第一个分区路径,示例:mount -o umask=0077 /dev/sda1 /mnt/boot

检查分区是否挂载成功:df,如果输出包含类似以下行,则代表挂载成功。

Filesystem    Size    Used    Avail    Use%    Mounted on
${part2Path}  ***     ***     ***      ***%    /mnt
${part1Path}  ***     ***     ***      ***%    /mnt/boot

设置中国镜像源(推荐)

安装环境默认启用了所有的软件镜像源,为了使安装更顺利,建议只使用位于中国的镜像,如果你不在中国或者对自己的网络有信心可以忽略此操作。

下载中国镜像列表:curl -L -o /etc/pacman.d/mirrorlist "https://archlinux.org/mirrorlist/?country=CN"

执行nano /etc/pacman.d/mirrorlist编辑镜像列表文件,删除#Server = 前面的#以启用镜像,不需要全部启用,一般 3 个就够了。某些镜像同时支持 HTTP 和 HTTPS 协议,只需要删除 HTTPS 协议行的#

PS:镜像列表默认按照字母排序,推荐安装完系统后选择一个速度较快的镜像,并把它放在其他镜像前面。阿里云华为云腾讯云 等云服务商也有 ArchLinux 软件源镜像,但是还没有加入官方镜像列表,大家可以手动添加使用。

PPS:不同的镜像更新间隔有些许不同,而 Arch 又是一个以滚动发布著称的发行版,软件更新频率较快。如果你对更新频率有较高的要求,建议选择更新间隔较短的镜像。

安装系统

设置本地化环境:export LANG=C

安装所需软件包到系统分区:pacstrap /mnt base linux linux-firmware bash-completion e2fsprogs nano networkmanager pacman-contrib sudo amd-ucode intel-ucode sof-firmware

软件包介绍

base: ArchLinux 运行所需的基础软件包集合

linux: Linux 内核

linux-firmware: Linux 设备驱动集合,包含了绝大多数设备的驱动(固件)。

bash-completion: Bash 补全支持

e2fsprogs: EXT4 文件系统实用工具

nano: 文本编辑器

networkmanager: 网络管理器

pacman-contrib: pacman 相关实用脚本

sudo: 用于普通用户获取 root 权限

amd-ucode intel-ucode: AMD 和 Intel 的 CPU 微码更新,用于修补 CPU 漏洞。

sof-firmware: Open Sound 固件

虚拟机用户不需要安装amd-ucode intel-ucode,物理机用户也可以只安装适用于你电脑的 CPU 的微码包,比如 AMD CPU 用户就不需要安装intel-ucode

如果你使用了 XFS 文件系统,将e2fsprogs替换为xfsprogs,或者替换为你的文件系统的工具包。

如果你的设备不是笔记本可以不安装sof-firmware,也可以等到稍后设备没声音时再安装它尝试修复。

可以趁安装的这段时间喝口水,它并不需要很久。

成功安装完成后执行genfstab -U /mnt > /mnt/etc/fstab生成 fstab 文件

最后执行arch-chroot /mnt进入新系统环境

系统初始化设置

设置时区为中国:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime,你也可以设置为所在的时区,完整的时区列表:https://twiki.org/cgi-bin/xtra/tzdatepick.html

同步硬件时钟hwclock --systohc

务必将下列命令中的${hostname}替换为你的主机名(例如:kanto)。主机名建议使用小写字母组成,最多 64 个字符,你可以使用下面的输入框验证主机名是否符合规则。

设置系统主机名echo ${hostname} > /etc/hostname

执行nano /etc/hosts编辑 hosts 文件并添加以下行:

127.0.0.1 localhost
127.0.0.1 ${hostname}
::1 ip6-localhost ip6-loopback
::1 ${hostname}

执行nano /etc/locale.gen编辑本地化配置文件,删除以下行前面的#,可以使用Page UpPage Down健来快速翻页上下滚动。

#en_US.UTF-8 UTF-8
#zh_CN.UTF-8 UTF-8
#zh_TW.UTF-8 UTF-8

如果你需要其他本地化,删除其他行前的#,行末尾务必是 UTF-8。最后保存退出,执行locale-gen生成本地化环境。

设置默认本地化环境:echo LANG=en_US.UTF-8 > /etc/locale.conf,为了确保兼容性,默认本地化环境最好是英语。

执行SUDO_EDITOR=nano visudo编辑 sudo 配置文件,删除# %wheel ALL=(ALL) ALL行前面的#以便让 wheel 用户组可以使用sudo获取 root 权限。

务必将下列命令中的${username}替换为你的用户名(例如:pikachu)。用户名建议使用小写字母组成(不能包含大写字母、不能以数字开头),最多 32 个字符,你可以使用下面的输入框验证用户名是否符合规则。

创建一个新用户并加入 wheel 用户组:useradd -m -G wheel -s /bin/bash ${username}

设置新用户密码:passwd ${username}

PS:输入密码时不会显示

安装引导管理程序(重要):

安装 GRUB 软件包:pacman -S grub

安装 GRUB 至 ESP 分区:grub-install --removable --target=x86_64-efi --efi-directory=/boot,提示Installation finished. No error reported.字样表示安装成功。

生成 GRUB 配置文件:grub-mkconfig -o /boot/grub/grub.cfg

PS: 如果你电脑的 UEFI 固件不支持 64 位 UEFI 文件,则需要安装 32 位 UEFI 文件才能成功引导:grub-install --removable --target=i386-efi --efi-directory=/boot

如果你不喜欢 GRUB,或者喜欢简单的引导管理程序,可以尝试下 systemd-boot


退出新系统环境:exit

执行umount -R /mnt卸载分区,如果没有错误,拔掉 ArchLinux 安装盘并执行reboot重启系统。

没有意外的话,应该成功启动至新系统并看到以下界面,login 前面显示的是主机名,输入刚刚创建的新用户名和密码登陆系统。

成功启动

PS:如果你有多个系统,可能并不会重启至 ArchLinux,需要你手动选择 ArchLinux 启动。

进阶设置

root 权限小贴士

sudo 是临时获取 root 权限的工具,如果需要 root 权限执行某个命令,可以使用 sudo 执行它。sudo 提供了细粒化的控制,使它更加的安全。

虽然su也可以获取 root 权限,但是正常情况下你不应该使用它,相较 sudo,它太暴力了。如果没有设置 root 密码,su也将无法工作。

一些命令内置了独立的提权实现,比如systemctl命令,当这些命令需要 root 权限,但是没有以 root 身份允许时,它们就会使用自己的提权实现进行提权操作。

可以使用sudo -i临时登陆到 root 用户的 Shell。

root 虽好,但不要滥用,使用之前应该先了解当前命令的操作是否真的需要 root 权限,滥用 root 权限轻则会导致一些程序无法正常工作,重则会危及系统安全。

PS:ArchLinux 的 root 用户默认处于无密码锁定状态,除非你清楚自己在做什么,否则不建议解锁或设置密码。

启用网络管理器(注意大小写):sudo systemctl enable --now NetworkManager

如果是无线网络,执行nmtui使用图形界面进行配置,选择「Activate a connection」连接无线网络。

如果你还想继续使用 SSH 远程控制,执行sudo pacman -S openssh安装 OpenSSH,然后执行sudo systemctl start sshd启动 SSH 服务器。

不过此时就不能使用 root 用户登陆 SSH 了,需要使用刚刚创建的新用户。

禁用网络管理器的连接等待(注意大小写):sudo systemctl disable NetworkManager-wait-online,禁用后可以加快系统启动,不会有副作用,除非某些自动启动的服务需要互联网。

启用从网络同步系统时间sudo timedatectl set-ntp true

启用本地 DNS 解析器(可选,建议启用):sudo systemctl enable --now systemd-resolved

创建 DNS 解析文件软链接(依赖上一个操作):sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

启用每周自动清理不需要的 Pacman 软件包缓存(可选,建议启用):sudo systemctl enable paccache.timer

如果你使用的硬盘支持 TRIM 特性(大多数固态硬盘都支持),建议启用定时执行 TRIM:sudo systemctl enable fstrim.timer

如果你需要使用 Wine、Steam 或其他的 32 位程序,执行sudo nano /etc/pacman.conf编辑 Pacman 配置文件,删除以下行前面的#以启用 32 位系统库支持。

#[multilib] 
#Include = /etc/pacman.d/mirrorlist

保存后执行sudo pacman -Sy更新软件数据库

添加 ArchLinuxCN 存储库(推荐):

Arch Linux 中文社区仓库是由 Arch Linux 中文社区驱动的非官方软件仓库,包含许多官方仓库未提供的额外的软件包,以及已有软件的 git 版本等变种。一部分软件包的打包脚本来源于 AUR,但也有许多包与 AUR 不一样。(关于 AUR 的介绍请见下面的章节)

ArchLinuxCN 依靠镜像加速可以在国内提供比 AUR 更好的体验,而且还省去了部分软件的编译过程。如果你的网络环境导致无法顺利从 AUR 安装某些软件包,推荐添加。

执行sudo nano /etc/pacman.conf编辑 Pacman 配置文件,在底部添加以下行。

[archlinuxcn]
Server = https://mirrors.163.com/archlinux-cn/$arch

保存后执行sudo pacman -Sy archlinuxcn-keyring更新软件数据库并安装 ArchLinuxCN GPG 密钥,如果安装命令出现error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) " is marginal trust这样的错误,执行命令sudo pacman-key --lsign-key "farseerfc@archlinux.org"修复,然后再重新执行安装命令。

上面的配置使用了 网易 的 ArchLinuxCN 镜像,你也可以前往镜像列表查看并使用其他镜像。

安装防火墙支持(可选):

如果你需要在非信任的网络下使用设备,推荐使用防火墙增强你的设备网络安全性,如果你只在你信任的网络下使用设备,那么可以不安装。

防火墙有很多选择,ArchLinux 的基础包默认已经包含了 iptables 实用工具,用于配置 Linux 内核实现的防火墙,不过由于它并不易用,我推荐最好是使用易用的 iptables 前端。

我推荐大家安装 Firewalld,它简单易用,并且我们待会安装的桌面环境可以很好的集成它,便于使用图形界面管理。其他 iptables 前端可参考:https://wiki.archlinux.org/title/Iptables#Front-ends

安装防火墙:sudo pacman -S firewalld

启用防火墙:sudo systemctl enable --now firewalld

Firewalld 更多信息:https://wiki.archlinux.org/title/Firewalld

安装显卡驱动、Vulkan 和硬件加速支持:

如果不知道该装那个,可以加入 QQ 群向我询问。

小山只实际测试过 AMD 和 Intel 的显卡驱动安装,Nvidia 显卡驱动安装尚未测试。

Vulkan 是跨平台图形接口,目前主要用途是在 Linux 下运行 Windows 游戏以及部分 Linux 游戏(详见:Linux 运行 Windows 游戏指南),但并不是所有显卡都支持它,你可以前往 https://vulkan.gpuinfo.org/listreports.php?platform=linux 查询你的显卡是否支持 Vulkan。

OpenCL 是可选的,推荐需要时再安装。

如果你没有启用 32 位系统库支持,执行下列命令时务必删除lib32开头的软件包。

AMD

图形加速库:sudo pacman -S mesa

硬件视频加速:sudo pacman -S mesa-vdpau libva-mesa-driver lib32-mesa lib32-mesa-vdpau lib32-libva-mesa-driver lib32-opencl-mesa

Vulkan:sudo pacman -S vulkan-icd-loader vulkan-radeon lib32-vulkan-icd-loader lib32-vulkan-radeon

OpenCL: sudo pacman -S opencl-mesa ocl-icd

andvlk 是由 AMD 开源的 AMD GPU Vulkan 实现,这个实现比 Mesa 的 RADV 在某些场景下性能要好一些,并且系统允许安装多个 Vulkan 实现并让软件进行选择,推荐游戏玩家安装。

Intel

图形加速库:sudo pacman -S mesa

硬件视频加速:如果你的 Intel CPU 架构是 Broadwell 或以上(包括 Intel Arc 显卡)的安装intel-media-driver,反之则安装libva-intel-driver

Vulkan:sudo pacman -S vulkan-icd-loader vulkan-intel lib32-mesa lib32-vulkan-icd-loader lib32-vulkan-intel

OpenCL:如果你的 Intel CPU 架构是 Broadwell 或以上(包括 Intel Arc 显卡)的安装intel-compute-runtime ocl-icd,反之则安装beignet ocl-icd,beignet 需要通过 AUR 安装。

Nvidia

前往 https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/ 查看 Nvidia 私有驱动最新版本不支持的显卡列表,如果你的显卡不在这个列表里,那么你可以使用最新的 Nvidia 私有驱动,反之则需要使用开源驱动或旧版私有驱动(通过 AUR 安装)。

Nvidia 私有驱动:sudo pacman -S nvidia nvidia-settings cuda xorg-server-devel lib32-nvidia-utils

Nvidia 开源驱动 (RTX 3000 系列或更高):sudo pacman -S nvidia-open nvidia-settings cuda xorg-server-devel lib32-nvidia-utils

OpenCL: sudo pacman -S opencl-nvidia ocl-icd lib32-opencl-nvidia

Nouveau 是 Linux 内核的 Nvidia 显卡开源驱动,由于 Nvidia 新显卡需要签名固件,所以它无法支持一些较新系列的显卡,推荐 GTX 700 或以下系列使用。

Nouveau 图形加速库:sudo pacman -S mesa

Nouveau 硬件视频加速:sudo pacman -S mesa-vdpau libva-mesa-driver lib32-mesa lib32-mesa-vdpau lib32-libva-mesa-driver

PS:如果是双显卡的笔记本,运行软件时可以选择使用的显卡(默认是集成显卡)。参见:https://wiki.archlinux.org/title/PRIME

如果你不需要桌面环境,那么你的安装到这里就可以结束了,也可以看看下面的 AUR 介绍和推荐阅读。

安装显示管理器和桌面环境:

本指南以 KDE Plasma 桌面环境 + SDDM 显示管理器为例

Plasma 是功能全面且对新手友好的桌面环境,具有高度可定制性,并且它在最近的更新中,性能提升了很多。

SDDM 显示管理器是 Plasma 推荐的显示管理器

如果你想使用其他桌面环境或显示管理器,建议前往其他桌面环境或显示管理器的 ArchWiki 页面详细了解

桌面环境列表:https://wiki.archlinux.org/title/Desktop_environment#List_of_desktop_environments

显示管理器列表:https://wiki.archlinux.org/title/Display_manager#List_of_display_managers

安装桌面环境、显示管理器、终端(Konsole)以及 Noto 字体集:sudo pacman -S --noconfirm plasma sddm konsole noto-fonts noto-fonts-cjk noto-fonts-emoji

安装 Plasma 可选依赖(使其更好的工作):sudo pacman -S --asdeps gst-plugins-good packagekit-qt5 xsettingsd

如果你是笔记本用户,推荐安装fwupd以便通过 LVFS 接受来自厂商的固件更新(需要厂商支持),以及安装power-profiles-daemon获取电源配置文件支持(需要设备支持)。

可能无用的软件包

plasma 是个软件包组,里面可能会有一些用不上的软件包。

以下软件包根据需求决定是否需要卸载

drkonqi: KDE 崩溃处理程序

kgamma5: 调整显示器的伽玛设置

ksshaskpass: ssh-add 密码助手

plasma-firewall: 防火墙管理界面

plasma-sdk: Plasma 开发工具包

plasma-thunderbolt: Thunderbolt(雷电)设备管理界面

plasma-vault: 创建加密的保险库(需要额外的可选依赖)

plasma-workspace-wallpapers: Plasma 桌面的额外壁纸

卸载以上列出的软件包:sudo pacman -Rns drkonqi kgamma5 ksshaskpass plasma-firewall plasma-sdk plasma-thunderbolt plasma-vault plasma-workspace-wallpapers

安装蓝牙支持(可选):

安装:sudo pacman -S bluedevil

安装可选依赖(蓝牙音频支持):sudo pacman -S --asdeps pulseaudio-bluetooth

启用:sudo systemctl enable bluetooth

设置交换空间(可选)

交换空间(Swap)是硬盘上的一块区域,通俗的讲就是虚拟内存,跟 Windows 下的虚拟内存(分页文件)是一样的,当物理内存不够用时内核会把部分物理内存数据转移到交换空间,从而使需要更多内存的程序可以运行。

交换空间是可选的,如果你的物理内存不够大,那么你可以使用交换空间使内存利用更高效,如果你的物理内存足够使用,也可以不需要使用交换空间。

由于交换空间是使用硬盘作为存储介质,所以它无法达到像物理内存的速度,特别是在机械硬盘或 SATA 固态硬盘上面,如果硬盘速度太慢,会使交换空间弊大于利。

可能某些人会告诉你虚拟内存的大小务必是物理内存的两倍,无论是 Windows 还是 Linux,这种说法是完全错误的,虚拟内存的大小完全根据需求决定(Windows 默认会自动管理虚拟内存大小)。

如果要使用交换空间,你也可以尝试一下 ZswapZRAM,两者皆在物理内存中提供压缩的交换空间,从而使物理内存可以容纳更多的数据,减少硬盘上的交换空间的 I/O 操作,有效延长固态硬盘寿命,代价是使用更多的 CPU。

注意:当你启用了交换空间,部分桌面的电源菜单会出现「休眠」选项,但是它并不会工作,因为休眠需要配置内核参数以及 initramfs hook。参见:https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Hibernation

交换分区 VS 交换文件:

交换空间用硬盘上的一块区域作为虚拟内存,这块区域既可以是一个文件,也可以是一个完整的分区。

以前 Linux 安装会建议为交换空间创建一个单独的分区,以确保交换空间的最佳性能。这种做法是因为在当时大多数电脑还是机械硬盘,机械硬盘起始扇区的速度可能会更快,完整的分区还可以避免碎片等问题。但是缺点也很明显,一旦建立分区,调整大小会非常麻烦,自由度较低。

现在的电脑大多数都使用固态硬盘,没有了机械硬盘的一些限制,所以更推荐使用交换文件,可以使交换空间更加灵活。


推荐使用 systemd-swap 来管理交换空间、Zswap 或 ZRAM,它可以根据当前内存和交换空间的使用情况自动创建新的交换空间,同时也可以比较方便的管理 Zswap 和 ZRAM。不过由它创建的交换文件并不能用于系统休眠,如果你有系统休眠需求,建议手动创建。

更多关于交换空间请参考:https://wiki.archlinux.org/title/Swap


更改显示管理器(SSDM)本地化环境(可选):

如果要让 SDDM 的本地化环境为非英文,可以执行以下更改。

PS:本地化环境除了影响语言显示,还有时间格式。

执行sudo SYSTEMD_EDITOR=nano systemctl edit sddm编辑 SDDM 服务单元,在文件第 3 行添加:

[Service]
Environment=LANG=zh_CN.UTF-8

如果是其他语言用户,可以把zh_CN替换为你需要的本地化。


执行sudo systemctl enable sddm启用 SDDM

执行sudo reboot重启系统,重启后应该会看到如下图所示的界面,输入密码登陆桌面环境。

如果没有看到如下图所示的界面,可能是显卡驱动的安装有问题。

SSDM

 

Plasma 桌面环境配置

点击屏幕左下角的按钮打开应用启动器,点击「System Settings」打开系统设置。

点击「Regional Setting」,点击系统设置界面右下角的「Add languages...」添加简体中文和繁体中文,并把英文排到最后,简繁排第一和第二,然后点击右下角的「Apply」。点击左侧的「Formats」,选择「Regional」为「中国 - 简体中文 (zh_CN)」,或者选择你所在的区域,然后点击右下角的「Apply」。

PS:简繁的优先级顺序取决于个人,因为有些程序可能没有简体或繁体翻译,简繁同时存在可以在没有其中一种翻译的情况下使用另一种翻译,如果两个都没有再使用英文。

按下Ctrl + Alt + Delete,选择「Log Out」注销会话并重新登录使其生效。

在应用启动器里找到「Konsole」,也可以通过快捷键Ctrl + Alt + T打开,这是 Plasma 桌面下的终端。

安装输入法、浏览器和其他实用软件

你也可以完全按照偏好去选择其他软件,或者不安装,下面有每个软件包的介绍。

安装:sudo pacman -S --noconfirm dolphin ark kwrite gwenview fcitx5-im fcitx5-chinese-addons fcitx5-pinyin-zhwiki firefox firefox-i18n-zh-cn firefox-i18n-zh-tw

安装 dolphin 可选依赖(视频缩略图支持):sudo pacman -S --asdeps ffmpegthumbs

安装 ark 可选依赖(更多压缩包格式支持):sudo pacman -S --asdeps lrzip lzop p7zip unrar

安装 gwenview 可选依赖(更多图片格式支持):sudo pacman -S --asdeps kimageformats qt5-imageformats

软件包介绍

dolphin = 文件管理器、ark = 压缩工具、kwrite = 文本编辑器、gwenview = 图片浏览器,这些软件都属于 KDE 家族,搭配 KDE Plasma 桌面使用更佳。

fcitx5-im: Fcitx5 输入法框架的软件包组(或许你喜欢 IBus?)

fcitx5-chinese-addons: Fcitx5 中文插件集合,包含拼音输入法等插件。

fcitx5-pinyin-zhwiki: 来自 zh.wikipedia.org 的 Fcitx5 拼音输入法字典

更多基于 Fcitx5 的中文输入法:https://wiki.archlinux.org/title/Fcitx5#Chinese

firefox: FireFox 浏览器

firefox-i18n-zh-cn firefox-i18n-zh-tw: FireFox 的简繁中文语言包,你也可以只安装需要的语言包。

如果你更偏爱使用 Chromium / Google Chrome 浏览器,可以安装chromium软件包。

PS:Chromium 是开源版的 Google Chrome,它们的区别参见 https://en.wikipedia.org/wiki/Chromium_(web_browser)#Differences_from_Google_Chrome。Google Chrome 可以通过 AUR 或 ArchLinuxCN 安装。

PPS:2021年3月15日起 Chromium 不再支持与 Google API 相关的功能,包括 Google 账户登陆和同步等。如果你需要使用这些功能,最佳方法是安装 Google Chrome,还有一种方法可以使 Chromium 恢复这些功能支持,你可以前往 ArchWiki 了解或加入 QQ 群向我询问。

更多 KDE 家族应用:apps.kde.org

执行nano ~/.bash_profile配置输入法环境变量,添加以下行:

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SDL_IM_MODULE=fcitx

PS:输入法需要重启系统或重新登录才会生效

输入法默认激活快捷键:Ctrl + 空格

输入法的设置可以在 「系统设置」→「区域设置」→「输入法」修改,你可以点击「添加输入法」来添加拼音或其他输入法。

Plasma 设置优化

外观 → 字体:除了等宽字体,其余字体修改为 [Sans Serif](无衬线)。如果你觉得字体看起来不正常(对比下图),可以加入 QQ 群与我交流。

开机和关机 → 登陆屏幕 (SDDM): 主题更改为「微风」


Discover 可以用于安装/更新/卸载系统软件包和 Plasma 插件/主题,还有来自 LVFS 的固件更新。

删除安装过程中下载的软件包:sudo pacman -Scc --noconfirm

重启系统开启你的 ArchLinux 之旅

ArchLinux For Plamsa

安装 AUR 软件包管理器(可选)

什么是 AUR?

AUR 全称是 Arch User Repository(Arch 用户软件仓库),AUR 软件包由来自社区的用户进行维护,他们上传编写好的软件包构建脚本,其他用户可以使用这些构建脚本自动生成软件包并安装。

官方仓库没有的软件包,或者是官方仓库软件包的开发或过时版本,基本上都可以在 AUR 找到,所以 ArchLinux 安装第三方软件包非常方便。

AUR: aur.archlinux.org

ArchWiki 的 AUR 页面:https://wiki.archlinux.org/title/Arch_User_Repository

PS:AUR 的软件包大多数都没有经过测试,使用风险需要自己承担。

AUR 软件包的安装和更新默认需要手动操作,并不能像使用 pacman 那样方便的安装和更新,不过一些优秀的 AUR 包管理工具可以让你像使用 pacman 安装存储库包那样安装 AUR 包。

我推荐使用 yay 作为 AUR 包的管理工具,因为它的使用方法和 pacman 基本一致,可以大幅度降低学习成本。

不过还是推荐大家学习如何手动安装 AUR 软件包,以备不时之需,下面安装 yay 的操作就是安装大多数 AUR 软件包的步骤。

如果是第一次安装 AUR 软件包,需要安装所需依赖:sudo pacman -S --noconfirm --needed base-devel git

安装 yay 步骤:

前往 AUR 的 yay 页面查看 「Git Clone URL」:https://aur.archlinux.org/packages/yay

使用 git 克隆存储库:git clone https://aur.archlinux.org/yay.git ~/aur-yay-repo

转到存储库目录:cd ~/aur-yay-repo

构建软件包并安装:makepkg -i -r -s

清理工作:cd ~ && rm -rf ~/aur-yay-repo


现在可以使用 yay 来管理存储库软件包和 AUR 软件包了,如果已添加的存储库不存在对应的包,yay 会自动在 AUR 中搜索,如果找到的话就开始安装操作。

用法:

如果不加任何参数执行 yay,它默认执行更新所有软件包操作:yay

安装软件包:yay -S <package_name> or yay -S --aur <package_name> # 只从 AUR 获取包

更新所有软件包:yay -Syu

只更新 AUR 软件包:yay -Su --aur

只更新存储库软件包:yay -Syu --repo

yay 更多用法参考:https://github.com/Jguer/yay#readme

PS:如果你添加了 ArchLinuxCN 软件存储库,因为它包含了一些 AUR 软件包,所以你可以使用 pacman 安装某些 AUR 软件包。或者,你也可以使用--aur参数让 yay 只从 AUR 获取包,相反你也可以使用--repo参数让 yay 只从存储库获取包。

注意:不要使用 root 权限执行 yay 或任何 AUR 相关的命令,它们会在需要 root 权限时使用 sudo。

关于多系统启动

如果你的系统分别安装在不同的硬盘,那么只需要在电脑启动的时候引导不同的硬盘就可以了。

你也可以通过安装os-prober使 GRUB 自动检测已安装的其他系统,并将其添加到 GRUB 启动菜单。安装完成后,添加GRUB_DISABLE_OS_PROBER=false/etc/default/grub,重新生成 GRUB 配置文件:grub-mkconfig -o /boot/grub/grub.cfg。如果你又安装了其他系统,则需要再次重新生成 GRUB 配置文件。

关于 os-prober 更多用法以及注意事项:https://wiki.archlinux.org/title/GRUB#Detecting_other_operating_systems

建议阅读

建议阅读以下 Wiki 以便更好的使用 ArchLinux:

应用程序列表:https://wiki.archlinux.org/title/List_of_applications,你可以在这里按照用途类型找到可用软件。

一般建议:https://wiki.archlinux.org/title/General_recommendations

系统维护:https://wiki.archlinux.org/title/System_maintenance

systemctl 基本用法:https://wiki.archlinux.org/title/Systemd#Basic_systemctl_usage

pacman 软件包管理器:https://wiki.archlinux.org/title/Pacman,安装/卸载/更新软件全靠它。

CPU 调频:https://wiki.archlinux.org/title/CPU_frequency_scaling

蓝牙:https://wiki.archlinux.org/title/Bluetooth

Synaptics 触摸板:https://wiki.archlinux.org/title/Touchpad_Synaptics,建议 Synaptics 触摸板的笔记本用户阅读。

Bash:https://wiki.archlinux.org/title/Bash

腾讯 QQ:https://wiki.archlinux.org/title/Tencent_QQ

中国大陆用户的推荐解决方案:https://wiki.archlinux.org/title/General_recommendations#中国大陆用户的推荐解决方案

建议阅读时选择英文,看不懂的地方可以使用浏览器翻译。

如果阅读中文版本的 Wiki,建议阅读之前注意下页面顶部提示的最后翻译更新时间,如果时间超过几个月,那么翻译可能没有更新到最新的原文。

如果你有能力,可以把对你有帮助的 Wiki 翻译成中文,以帮助更多的中文用户。


欢迎加入 QQ 群小山交流 ArchLinux 的使用经验/感受,我以后也会推出更多关于 Linux 的文章。

微信公众号二维码

微信扫描二维码关注我们

如果觉得文章有帮助到你,可以点击下方的打赏按钮赞助下服务器费用。

小山

一个什么都不会但要装作很厉害的人

文章评论

  • qqq

    有点晚了,在pacstrap软件时 ext4文件管理工具拼错了

    2023-06-19
  • cookie

    QQ跳转不过去,能直接发群号吗

    2022-05-23
    • 小山

      @cookie 可以在微信公众号回复 "QQ 群" 获取群号。

      2022-05-23
  • xxyangyoulin

    较新的好文,准备Manjaro换Arch试试

    2020-12-25
  • GAEGO

    老哥给力,看了这么多教程,终于在你这里成功安装了

    2020-09-20
  • lss

    为什么一会/boot 一会/efi啊,是不是有问题

    2020-05-07
    • 小山

      @lss 没有问题,安装好的系统不需要再改动任何了,我改动后的教程都是针对新安装的用户。
      更改 ESP 分区的挂载路径是为了以后如果想更换引导程序比较方便

      2020-05-07
      • lss

        @小山 你创建的是/boot目录,后面实例却把引导装在了efi目录

        2020-05-07
        • 小山

          @lss 感谢指正,示例命令是我大意了。

          2020-05-07
  • NOEYE

    为什么我虚拟机装arch按照步骤完成后,重启还是在选择安装系统界面,步骤不报错。

    2020-04-26
    • 小山

      @NOEYE 把虚拟机的安装光盘移出,如果移出后无法启动,可能是你没有安装引导程序。

      2020-04-26
      • NOEYE

        @小山 不是选择ISO映像文件安装吗?

        2020-04-26
        • 小山

          @NOEYE 安装完就不需要了啊

          2020-04-26
      • NOEYE

        @小山 应该是/dev/sda1 分区类型改EFI System失败,怎么办?

        2020-04-26
        • 小山

          @NOEYE 你加 QQ 群吧,交流方便。

          2020-04-26
  • 66666

    作者在吗??我,安装过程装不上 linux-firmware 镜像源里好像都没有,外国的慢的直接取消了求助!! :persevering:

    2020-03-30
    • 小山

      @66666 我都写了安装之前先下载国内的镜像源了,有其他问题加群交流。

      2020-03-30
  • ???

    太赞了,一次成功!! :biggrin:

    2020-03-27
  • Lzzz

    感谢感谢。。终于装上了输入法

    2020-03-06
  • LOGI

    🐂🍺就完事了

    2020-03-04
  • 此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据