ArchLinux简明安装指南

让ArchLinux成为你的日常系统吧!

Posted by Fioncat on January 4, 2024

最终成品图。仅供参考,以实物为准;)

final

ArchLinux是很少见的连安装都让我受益匪浅的操作系统,她作为我的开发机主力系统,已经从很多层面上赢得了我的青睐。

ArchLinux的安装经常劝退了不少初学者,事实上这个过程能让你对你自己的系统有更加全面的理解。但是即使是我这种ArchLinux老手,在一段时间之后,也会忘记ArchLinux的一些安装步骤。所以记录了这个文档,以快速复盘安装过程。

本文的内容主要来自于一个非常优秀的简体中文ArchLinux安装教程:archlinux 简明指南。在其基础上,基于我自己的偏好做了删改,主要是:

  • 移除Windows双系统的相关内容。双系统会带来一些潜在的坑,建议将Windows装在不同磁盘上面。
  • 移除虚拟机的相关内容,实体机中体验ArchLinux才是最好的!
  • 由于我是用ArchLinux作为主力开发机的。移除了一些我用不到的软件,增加更多适合后端开发者的内容。

本文限定你的主板是支持UEFI的,如果用的还是只支持BIOS的上古设备,请查阅别的资料。

ArchLinux的一个顶级优势是她那无比完备的ArchWiki,在安装中遇到的任何问题都可以到wiki上面搜索对应的解决方案。

准备

跟别的发行版不同,最好在每次安装ArchLinux之前,都重新制作一个新的启动U盘。因为官方会在每个月放出一个新的iso镜像文件,如果用过旧的镜像来安装ArchLinux,很可能会失败(因为签名等原因)。

可以到archlinux download页面选择不同的镜像站下载最新的iso文件。

下载完成之后,需要制作启动U盘,在Linux下面可以使用dd命令来制作:

⚠️警告:这会导致你U盘的所有数据丢失

1
2
lsblk   # 列出设备,记住你的启动盘设备名,假设为/dev/sdx
sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync

如果你用的是MacOS系统,同样可以用dd命令来制作,但是在制作前需要对iso文件进行格式转换:

1
2
3
4
hdiutil convert -format UDRW -o archlinux.dmg archlinux.iso  # 将iso格式转换为dmg格式
diskutil list # 列出设备,找到你的U盘(可以通过大小来区分)
diskutil unmountDisk /dev/diskx # 卸载U盘
sudo dd bs=4m if=archlinux.dmg of=/dev/disk4 status=progress

关于Windows如何制作启动盘,可能需要借助第三方软件来完成,这里不再赘述,有需要请自行参考网上资料。

接下来,插入启动盘,通过U盘引导,选择第一个选项:

archiso-01

经过加载之后,你可以看到下面提示符:

archiso-02

这说明你已经进入了由U盘引导的archiso,这是一个最小化的arch系统,用于系统安装和维护。

强烈建议常备一个ArchLinux启动盘,万一某一天滚挂了,你会发现连系统都进入不了(指的grub引导挂了),这时候可以通过archisoarch-chroot临时进入到系统中,以进行紧急修复,包括重建grub或回滚磁盘快照等操作。详见后面关于系统恢复的章节。尽管现在ArchLinux滚挂的情况已经比较少了(从我多年使用到今从来没有出现过),但是常言道,有备无患嘛。

基础安装

基础安装将完成不包括桌面环境的安装。

UEFI

确认我们当前处于UEFI模式:

1
ls /sys/firmware/efi/efivars  # 此命令会列出UEFI变量

禁用reflector

首先,禁用reflector服务,这个服务会覆盖我们的mirrorlist,对于国内环境来说并不友好:

1
2
systemctl stop reflector.service
systemctl status reflector.service

连接网络

ArchLinux的安装必须依赖网络,如果用的是有线连接,此时应该自动连接上了网络。如果需要用无线网络,则需要使用iwctl命令。

连接网络之后,需要通过网络更新系统时钟:

1
2
timedatectl set-ntp true # 将系统时间与网络时间进行同步
timedatectl status # 检查服务状态

更换国内镜像源

pacman镜像源换成国内的可以大大提高安装速度:

1
vim /etc/pacman.d/mirrorlist

修改为:

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

初始化磁盘GPT

⚠ 警告:下面的步骤涉及对磁盘的操作,每一步都可能会导致数据丢失,请务必谨慎操作!在按下回车执行命令之前一定要确认自己在做什么!系统可以重新装,数据却是无价的。

如果你手中的磁盘还没有任何系统,则需要先建立GPT分区表。我们先确认要安装ArchLinux的磁盘设备号:

1
lsblk  # 确认磁盘设备号,假设为nvme0n1

如果你用的是基于NVMe的SSD磁盘,一般设备号就是nvme0n1(如果你的设备有不止一块NVMe磁盘,编号可能不同,请注意区分),鉴于目前大部分机器都已经是NVMe了,后面将全程使用这个设备号。你可以根据lsblk命令输出的磁盘大小来确定要安装ArchLinux到哪个磁盘中。

如果你用的是传统的SATA磁盘,磁盘号则一般为sdx,例如/dev/sda

如果你的盘号并不是nvme0n1,请在下面执行分区等命令时将盘号替换为你自己的。

将磁盘转换为gpt类型(再次警告,这里会抹除磁盘的所有数据):

1
2
3
4
5
6
parted /dev/nvme0n1  # 进行磁盘类型变更,会进入一个命令交互
(parted) mktable # 更改磁盘类型
New disk label type? gpt  # 输入gpt,将磁盘变更为gpt类型
Warning: xxx # 如果磁盘已经有数据,这里会打印警告
Yes/No? Yes # 输入Yes确认抹除所有数据
(parted) quit # 退出命令交互

磁盘分区

我们将建立3个分区:

  • nvme0n1p1:EFI分区,用于引导系统启动。
  • nvme0n1p2:swap分区,用于缓存内存数据。
  • nvme0n1p3:主分区,将采用btrfs,并用子卷继续对该分区进行划分。

通过下面的命令开始分区:

1
cfdisk /dev/nvme0n1

这会进入一个TUI,里面会列出所有现存的分区。我们可以通过方向上下选择要操作的分区,左右选择要进行的操作。

选中下面的Free space,创建新的分区。注意创建的分区默认类型为Linux filesystem,我们需要手动修改类型(选择下方的Type操作即可更改类型):

  • nvme0n1p1:EFI分区大小建议为512MB,类型为EFI System
  • nvme0n1p2:Swap分区大小建议为内存的60%,类型为Linux swap
  • nvme0n1p3:主分区大小可以根据实际情况分配,默认为剩下的所有空间,类型为Linux filesystem(默认,无需修改)。

创建完成之后,选中操作Write以将分区写入,随后退出cfdisk工具。

完成之后,通过下面的命令可以复盘分区情况:

1
fdisk -l

格式化分区

分区创建之后,需要进行格式化才能使用。

格式化EFI分区:

1
mkfs.vfat /dev/nvme0n1p1

格式化Swap分区:

1
mkswap /dev/nvme0n1p2

格式化btrfs分区:

1
mkfs.btrfs -L arch /dev/nvme0n1p3

-L参数表示分区Label,可以自定义

创建btrfs逻辑子卷

我们打算为根目录/和家目录/home创建不同的逻辑子卷。这也是常见的做法。

为了创建子卷,先将btrfs挂载到/mnt下面:

1
2
mount -t btrfs -o compress=zstd /dev/nvme0n1p3 /mnt
df -h  # 确认磁盘的挂载情况

创建两个子卷:

1
2
3
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume list -p /mnt  # 列出刚创建的子卷

⚠ 警告:快照工具timeshift只支持这种子卷布局,如果你采用不同的布局,timeshift可能会存在问题。

完成之后,卸载btrfs:

1
umount /mnt

挂载磁盘

我们已经完成了新系统磁盘的格式化,下面需要将磁盘挂载到最小系统上面,以准备进行ArchLinux的正式安装。

首先,挂载btrfs子卷:

1
2
3
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p3 /mnt
mkdir /mnt/home
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p3 /mnt/home

挂载EFI:

1
2
mkdir -p /mnt/boot/efi
mount /dev/nvme0n1p1 /mnt/boot/efi

挂载交换分区:

1
swapon /dev/nvme0n1p2

使用下面命令查看磁盘挂载情况:

1
df -h

使用下面命令查看交换分区挂载情况:

1
free -h

安装系统

终于,万事俱备,只欠东风,我们可以开始安装ArchLinux了。

可以通过官方工具pacstrap直接完成安装:

1
pacstrap /mnt base base-devel linux linux-firmware

如果安装过程中出现签名相关的报错,即签名不受信任,一般是由于你的archiso太老了导致的。请使用最新的安装镜像。

安装其他必要的功能性软件:

1
pacstrap /mnt dhcpcd iwd vim sudo zsh zsh-completions

生成fstab文件

fstab文件定义了磁盘分区,需要被Linux识别。可以使用下面的命令生成:

1
2
genfstab -U /mnt > /mnt/etc/fstab
cat /mnt/etc/fstab  # 确保生成正确

为了让timeshift能正常恢复btrfs,需要修改/mnt/etc/fstab,将其中的subvolid=xxx去掉:

1
2
3
# 编辑文件,去除所有的subvolid=xxx挂载选项
vim /mnt/etc/fstab
cat /mnt/etc/fstab | grep subvolid # 确认已经没有subvolid了

切换到新系统

现在,新系统已经准备好了,我们可以使用chroot切换到新系统下面:

1
arch-chroot /mnt

基础配置

我们现在得到了一个没有图形化界面的新ArchLinux系统,下面进行一些基本的配置。

设置主机名和时区

为新的系统设置一个主机名吧:

1
vim /etc/hostname

假设主机名为myarch,在hosts文件加入对应内容:

1
vim /etc/hosts

加入:

1
2
3
127.0.0.1   localhost
::1         localhost
127.0.0.1   myarch.localdomain	myarch

设置时区为上海:

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

将系统时间同步到硬件:

1
hwclock --systohc

语言设置

设置locale:

1
vim /etc/locale.gen

在其中找到en_US.UTF-8 UTF-8zh_CN.UTF-8 UTF-8,去掉前面的注释即可。

生成locale:

1
locale-gen

设置当前语言为英文(tty下不建议设置为中文):

1
echo 'LANG=en_US.UTF-8'  > /etc/locale.conf

设置root密码

执行下面的命令为root用户设置密码:

1
passwd root

安装微码

根据你的CPU类型安装不同制造商的微码:

1
2
pacman -S intel-ucode # Intel
pacman -S amd-ucode # AMD

安装引导程序

我们将会使用grub来引导ArchLinux,安装:

1
pacman -S grub efibootmgr os-prober

将grub安装到EFI分区:

1
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ARCH

接下来,编辑grub配置文件:

1
vim /etc/default/grub

建议将GRUB_CMDLINE_LINUX_DEFAULT修改为loglevel=5 nowatchdog。其他参数可以根据自己的喜好进行修改。

生成grub所需要的配置文件:

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

完成之后,就可以用grub来引导新系统了,我们直接重启(注意重启后要拔掉启动盘,不然还可能会进入archiso环境):

1
2
exit # 退出chroot环境
reboot

重启之后,如果正常进入新的ArchLinux系统,会要求你登录,直接用root用户登录即可。

进入新系统后第一件事是检查能否上网,如果不能,可能需要启动dhcp服务:

1
systemctl enable --now dhcpcd

创建非root用户

我们不能在root用户上面进行日常操作,需要创建一个担当管理员角色的普通用户。

创建用户并设置密码:

1
2
useradd -m -G wheel -s /bin/bash <user-name>
passwd <user-name>

编辑sudoers文件,给这个用户加上sudo权限:

1
EDITOR=vim visudo

找到下面这行,将注释去掉:

1
%wheel ALL=(ALL) ALL

完成之后,logout注销root,就能用新的非root用户登录系统了。

pacman配置

编辑pacman配置文件:

1
sudo vim /etc/pacman.conf

去掉multilib相关注释,以开启32位库支持:

1
2
[multilib]
Include = /etc/pacman.d/mirrorlist

在配置最后加上下面内容,以添加archlinuxcn镜像源:

1
2
3
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

退出,更新pacman:

1
sudo pacman -Syyu

安装桌面环境

没有图形界面的tty系统并不适用于日常使用。下面我们来对ArchLinux安装KDE Plasma桌面环境。

ArchLinux可以选择其它桌面环境,有需求可以自行参考文档。

安装kde:

1
sudo pacman -S plasma-meta konsole dolphin

开启sddm守护进程:

1
sudo systemctl enable sddm

启动桌面,输入后应该可以看到欢迎界面:

1
sudo systemctl start sddm

只要不做过多的私人定制,KDE本身还是比较稳定的。

桌面基础配置

输入密码进入桌面之后,可以打开Konsole终端,继续进行我们的安装和配置。

基础软件安装

新的桌面环境是没有网络管理功能的,我们需要手动开启:

1
2
3
sudo systemctl disable iwd # 确保 iwd 开机处于关闭状态,因为其无线连接会与 NetworkManager 冲突
sudo systemctl stop iwd # 立即关闭 iwd
sudo systemctl enable --now NetworkManager # 确保先启动 NetworkManager,并进行网络连接。若 iwd 已经与 NetworkManager 冲突,则执行完上一步重启一下电脑即可

安装字体,否则一些字符和中文会显示乱码:

1
2
3
sudo pacman -S adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts # 中文字体,推荐思源字体
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra # 安装谷歌字体以及emoji支持
sudo pacman -S ttf-sourcecodepro-nerd # nerd字体

安装一些基础软件:

1
2
3
4
sudo pacman -S ntfs-3g # 使系统可以识别 NTFS 格式的硬盘
sudo pacman -S ark # 压缩软件。在 dolphin 中可用右键解压压缩包
sudo pacman -S packagekit-qt5 packagekit appstream-qt appstream # 确保 Discover(软件中心)可用,需重启
sudo pacman -S gwenview # 图片查看器

yay,用于安装AUR软件,需要从archlinuxcn进行安装:

1
2
sudo pacman -S archlinuxcn-keyring
sudo pacman -S yay  # 来自archlinuxcn源

注意,如果安装archlinuxcn-keyring报错:

1
error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) <farseerfc@archlinux.org>" is marginal trust

执行下面命令即可解决:

1
sudo pacman-key --lsign-key "farseerfc@archlinux.org"

下面,就可以用yay来安装AUR软件了。

安装谷歌浏览器:

1
yay -S google-chrome

如果你不希望使用闭源浏览器,可以用开源的firefoxchromium(注意chromium已不支持Google账号同步):

1
2
sudo pacman -S firefox
sudo pacman -S chromium

检查家目录

检查家目录下的各个常见目录是否已经创建,若没有则需通过以下命令手动创建:

1
mkdir Desktop Documents Downloads Music Pictures Videos

安装输入法

通过以下命令安装Fcitx5:

1
2
3
sudo pacman -S fcitx5-im # 输入法基础包组
sudo pacman -S fcitx5-chinese-addons # 官方中文输入引擎
sudo pacman -S fcitx5-material-color # 输入法主题

此外,我们还需要设置环境变量。通过 vim 编辑文件 /etc/environment

1
sudo vim /etc/environment

在文件中加入以下内容并保存退出:

INPUT_METHOD=fcitx5
GTK_IM_MODULE=fcitx5
QT_IM_MODULE=fcitx5
XMODIFIERS=\@im=fcitx5
SDL_IM_MODULE=fcitx

在KDE的输入法配置页面,加入Pinyin

pinyin

重启或注销一下,应该就能输入中文了,使用Ctrl + Space快捷键可以切换输入法。

因为Mac的使用体验,我更习惯于用Caps Lock键来切换输入法。要在KDE中实现,需要先将Caps Lock映射到别的键上面。进入Input Devices -> Keyboard -> Advanced,将Caps Lock行为改为Num Lock

capslock-to-numlock

然后,在输入法的全局设置中,修改Trigger Input Method,会要求你输入快捷键,按下你的Caps Lock即可完成设置。

input-key

蓝牙

通过以下命令开启蓝牙相关服务并设置开机自动启动:

1
sudo systemctl enable --now bluetooth

KDE桌面设置

修改单击文件的行为,选中而不是进入,更符合一般操作思维:

desktop-setting

禁用桌面左上角边缘Action:

desktop-setting

透明代理

因为一些众所周知的原因,需要配置魔法上网才能正常使用系统。因为clash作者已经删库,因此这里推荐使用v2ray+v2rayA实现透明代理。

安装:

1
sudo pacman -S v2ray v2raya

安装后启动服务:

1
sudo systemctl enable --now v2raya

在浏览器中打开127.0.0.1:2017,或是搜索打开v2rayA应用,即可进入代理配置页面。

一开始会让你配置用户名和密码,请牢记。

进入配置页面后,点击右上角的Import将梯子供应商提供的订阅链接导入。

导入后,就可以选择对应的代理节点了:

proxy-select

随后,点击右上角的Setting,推荐进行以下设置:

proxy-setting

  • 代理策略选择不代理CN的站点。
  • 代理模式建议选择tproxy,不然NetworkManager可能会报错。
  • 建议开启防DNS污染,以解决某些域名(例如raw.githubusercontent)无法被解析的问题。

设置完成之后,就可以在左上角开启代理了:

proxy-start

之后系统重启代理也会默认生效,不需要重复开启了。

注意,开启代理之后可能出现无法进行git clone的问题,这时需要让ssh也支持走SSL协议,编辑~/.ssh/config,增加下面内容:

1
2
3
4
Host github.com
    Hostname ssh.github.com
    Port 443
    User git

编程软件

修改默认shell

我们可以将默认shell换成zsh:

1
2
chsh -l # 查看安装了哪些 Shell
chsh -s /usr/bin/zsh # 修改当前账户的默认 Shell

注销并重新登录,打开终端,会发现已经使用zsh作为默认shell。

Alacritty

我们将不使用Konsole作为终端软件,因为它并不跨平台(笔者还有一套Mac环境),我选择的是Alacritty,这是一款用Rust编写的终端模拟器,可以利用GPU进行加速,性能强劲。但是功能比较简陋,没有标签页等功能,一般需要配合tmux来使用。

安装alacritty:

1
sudo pacman -S alacritty

新版本的Alacritty已经使用toml进行配置,导入配置文件:

1
2
3
mkdir -p ~/.config/alacritty
curl https://raw.githubusercontent.com/fioncat/dotfiles/master/alacritty/catppuccin.toml > ~/.config/alacritty/catppuccin.toml
curl https://raw.githubusercontent.com/fioncat/dotfiles/master/alacritty/alacritty.toml > ~/.config/alacritty/alacritty.toml

fzf

必备的,先进的模糊搜索工具,安装:

1
sudo pacman -S fzf

starship

推荐使用starship作为默认命令行提示符,这是用Rust写的,功能和性能都非常强大:

1
sudo pacman -S starship

注意,请使用nerd字体,另外确保在上面的步骤中已经安装了emoji支持,否则提示符会出现乱码。

oh-my-zsh

安装oh-my-zsh:

1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

安装插件:

1
2
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

导入配置文件:

1
curl https://raw.githubusercontent.com/fioncat/dotfiles/master/oh-my-zsh/profile.zsh > ~/.zshrc

tmux

因为缺少标签页等功能,所以alacritty需要配合tmux才能使用,安装:

1
sudo pacman -S tmux

导入tmux配置:

1
2
curl https://raw.githubusercontent.com/fioncat/dotfiles/master/tmux/.tmux.conf > ~/.tmux.conf
curl https://raw.githubusercontent.com/fioncat/dotfiles/master/tmux/.tmux.conf.local > ~/.tmux.conf.local

这是我自己配的一个好看的tmux主题,可以配合catppuccin主题终端使用,效果:

tmux

Neovim

neovim是我目前最喜欢的编辑器,它使用lua进行配置,可以做到终端下面的VSCode体验。

强烈推荐ayamir大大的nvim配置:ayamir/nvimdots,安装方法见wiki

我个人基于他的配置做了一些定制fioncat/spacenvim

  • 固定插件版本,以防止某些插件更新导致的配置不兼容。提供rollback命令随时回退。
  • 使用Space作为leader,加了一些特殊的emacs快捷键,保留我曾经使用spacemacs的习惯。
  • 插件列表更加轻量(移除了一些前端、C语言等插件),为Go和Rust开发者量身打造。

安装neovim:

1
sudo pacman -S neovim

一些nvim插件需要额外依赖:

1
sudo pacman -S sqlite3 fzf ripgrep xclip zip unzip npm nodejs

随后,一键安装spacenvim:

1
bash -c "$(curl -fsSL https://raw.githubusercontent.com/fioncat/spacenvim/HEAD/scripts/install.sh)"

安装之后,随意打开一个文件,让treesitter安装必要的parser。另外可以用Mason命令来安装各种语言的LSP支持。

现在,你可以跟vim说再见了:

1
alias vim="nvim"

效果:

spacenvim

命令行工具

Linux下很多命令都可以替换为更加现代的命令,例如ls,du,df,ps等。morden-unix这个仓库列出了常见的可以替换原始Linux命令的工具。

我们可以选择性进行安装,例如:

1
sudo pacman -S bottom duf exa dust procs

开发环境

推荐一些工作中经常用到的开发者软件。

Code OSS:VSCode的开源构建,注意VSCode本身是闭源软件

1
sudo pacman -S code

如果要安装vscode本体,执行:

1
yay -S visual-studio-code-bin

我的vscode配置:

1
2
3
4
5
6
7
8
9
10
11
12
{
    "editor.fontSize": 16,
    "editor.fontFamily": "'SauceCodePro Nerd Font'",
    "editor.cursorBlinking": "solid",
    "editor.lineNumbers": "relative",
    "workbench.colorTheme": "Catppuccin Mocha",
    "debug.console.fontSize": 16,
    "chat.editor.fontSize": 16,
    "markdown.preview.fontSize": 16,
    "window.zoomLevel": 1,
    "editor.fontLigatures": false
}

推荐安装的插件:

  • vim:在vscode下使用vim。
  • catppuccin:我用的主题配色

效果:

vscode

Typora:所见即所得的markdown编辑器,最新版收费。可以使用0.x的免费版

1
2
yay -S typora-free  # 免费版
yay -S typora       # 收费版

Beekeeper:数据库管理工具,社区版免费,可以替代Navicat

1
yay -S beekeeper-studio-bin

Studio 3T:MongoDB数据库管理工具,本身免费,收费可以解锁更多功能

1
yay -S studio-3t

Postman:免费的API调试工具,后端开发必备

1
yay -S postman-bin

Go开发环境

1
sudo pacman -S go

Go语言的一些常用工具:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
go install github.com/klauspost/asmfmt/cmd/asmfmt@latest
go install github.com/go-delve/delve/cmd/dlv@latest
go install github.com/kisielk/errcheck@latest
go install github.com/davidrjenni/reftools/cmd/fillstruct@latest
go install github.com/rogpeppe/godef@latest
go install golang.org/x/tools/cmd/goimports@latest
go install golang.org/x/lint/golint@latest
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go install github.com/fatih/gomodifytags@latest
go install golang.org/x/tools/cmd/gorename@latest
go install github.com/jstemmer/gotags@latest
go install golang.org/x/tools/cmd/guru@latest
go install github.com/josharian/impl@latest
go install honnef.co/go/tools/cmd/keyify@latest
go install github.com/fatih/motion@latest
go install github.com/koron/iferr@latest

Rust开发环境

Rust比较特殊,不推荐用pacman来安装(可能会缺少一些东西),建议用rustup

1
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

以后要升级Rust的话,使用命令:

1
rustup update

Jetbrains为Rust开发了IDE,RustRover,目前处于功能测试阶段,是免费的,可以抢先体验下。笔者体验下来目前感觉不错:

1
yay -S rustrover

Java运行时环境:如果要执行Java程序,可以安装openjdk

1
2
sudo pacman -S jre-openjdk
sudo pacman -S jdk-openjdk  # 如果需要开发,安装这个,其中包括了jre

Intellij IDEA:Java的王者IDE,社区版是免费的

1
2
yay -S intellij-idea-community-edition-jre  # 社区免费版
yay -S intellij-idea-ultimate-edition-jre   # 收费版

显卡驱动

Intel核显

通过下面命令可以一键安装Intel核显驱动:

1
sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel

注意,只有 Intel HD 4000 及以上的核显才支持 vulkan。

AMD显卡

AMD核显和独显方法相同

如果是A卡,需要确认架构是什么才能安装驱动,建议到List of AMD graphics processing units进行查询。

下面的表格列出了不同架构的驱动支持:

GPU 架构 Radeon 显卡 开源驱动 非开源驱动
GCN 4 及之后 多种* AMDGPU* AMDGPU PRO*
GCN 3 多种 AMDGPU AMDGPU PRO
GCN 2 多种 AMDGPU/ ATI* 不支持
GCN 1 多种 AMDGPU / ATI 不支持
TeraScale 2&3 HD 5000 - HD 6000 ATI 不支持
TeraScale 1 HD 2000 - HD 4000 ATI 不支持
旧型号 X1000 及之前 ATI 不支持

确认要安装哪个驱动之后,再进行安装,一般来说,A卡建议安装开源驱动:

安装AMDGPU驱动(开源,适用于一些较新的显卡):

1
sudo pacman -S mesa lib32-mesa xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon

安装ATI驱动(开源,适用于比较老的显卡):

1
sudo pacman -S mesa lib32-mesa xf86-video-ati

NVIDIA独显

N卡建议安装闭源驱动,如果你的显卡型号较新,则安装下面的包:

1
sudo pacman -S nvidia nvidia-dkms nvidia-settings lib32-nvidia-utils

如果是 GeForce 630 以下到 GeForce 400 系列的老卡,安装:

1
yay -S nvidia-390xx-dkms nvidia-settings lib32-nvidia-390xx-utils

如果是更加老的卡,安装:

1
sudo pacman -S mesa lib32-mesa xf86-video-nouveau

⚠ 警告:特别提示,在ArchLinux玩游戏时N卡体验并不好,建议有游戏需求的还是在Windows下玩游戏。

备份和恢复

Timeshift快照

对于ArchLinux这种滚动升级的操作系统,快照是很重要的,如果滚挂了,可以随时进行回滚操作。timeshift是一个快照管理工具,可以定期对我们的磁盘创建快照。

安装timeshift:

1
sudo pacman -S timeshift

打开timeshift,第一次启动会自动启动设置向导:

快照类型选择 BTRFS

timeshift-type

快照位置选择 BTRFS 分区:

timeshift-location

选择快照计划。由于 btrfs 类型快照占用空间相对较小,可以适当提高快照数量。

timeshift-schedule

若希望 /home 用户主目录也快照,则勾选在备份中包含 @home 子卷:

timeshift-user

点击 完成 结束配置。

然后,就可以非常简单地使用Timeshift图形界面完成快照的创建和回退了:

timeshift

要实现Timeshift自动备份,需要启动服务:

1
sudo systemctl enable --now cronie.service

恢复

ArchLinux激进的滚动更新意味着你的系统随时可能因为滚动更新导致错误。一般的错误可能会导致一些软件无法使用;如果kde出现错误,你可能会无法进入桌面环境;在最严重的情况下,你甚至连系统都进入不了。

首先,如果滚动更新出现错误,应该到ArchLinux 社区中寻求帮助,如果有现成的解决方案,可以直接解决软件问题是最好的。

实在没有办法,或者希望快速恢复时,就需要Timeshift上场了。正所谓养兵千日用兵一时,上面我们配置了Timeshift快照,就是为了应对这种情况。

如果这时候kde还没有挂掉,我们可以直接进入桌面环境,打开Timeshift软件进行恢复。恢复成功之后重启系统即可。

如果连桌面都进入不了,可以通过 Ctrl + Alt + F2 ~ F6 进入 tty 终端。

在终端里面,通过命令进行恢复:

1
2
sudo timeshift --list # 获取快照列表
sudo timeshift --restore --snapshot '20XX-XX-XX_XX-XX-XX' --skip-grub # 选择一个快照进行还原,并跳过 GRUB 安装,一般来说 GRUB 不需要重新安装

可能整个系统都挂掉了,无法进入,就是我们俗称的“滚挂了”的情况。

遇到这种情况,先不要慌,把自己事先准备的ArchLinux启动U盘拿出来,重新进入archiso模式。

在这里,通过arch-chroot进入坏掉的系统:

1
2
3
4
5
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p3 /mnt
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p3 /mnt/home
mount /dev/nvme0n1p1 /mnt/boot/efi
swapon /dev/nvme0n1p2
arch-chroot /mnt

然后进行恢复:

1
2
3
sudo timeshift --restore --snapshot-device /dev/sdx
sudo timeshift --list # 获取快照列表
sudo timeshift --restore --snapshot '20XX-XX-XX_XX-XX-XX' --skip-grub # 恢复

无法进入系统很有可能是grub坏了,如果你觉得你的grub有问题,可以在恢复的时候去掉--skip-grub选项,以重新安装grub。

另外,也可以通过下面的方式手动重新安装grub:

1
2
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ARCH
grub-mkconfig -o /boot/grub/grub.cfg  # 重新生成配置文件

总之,身边一定要准备一个archiso,或是其他形式的Live CD,能够在系统本身无法进入时有手段进行抢修。

不建议动不动就重装,archiso重装grub可以解决大部分系统无法进入的问题。

其他软件

这里推荐一些其它日常中可能会用到的软件,仅供参考。

Flameshot - 强大但简单易用的屏幕截图软件。截图后可以进行快捷的编辑。

1
sudo pacman -S flameshot

WPS - 国产软件里面少有的原生支持Linux的,如果你有在Linux下编辑Office的需求,可以安装:

1
yay -S wps-office

LibreOffice - 如果不想用WPS专有软件,自由开源的LibreOffice很适合你:

1
2
sudo pacman -S libreoffice-still libreoffice-still-zh-cn  # 正式版
sudo pacman -S libreoffice-fresh libreoffice-fresh-zh-cn  # 尝鲜版

Telegram - Telegram(电报)是跨平台的即时通信软件。其客户端是自由软件(桌面端在 GPLv3open 协议下发布),但服务器是专有软件。

1
sudo pacman -S telegram-desktop

Linux QQ - 腾讯基于electron做的跨平台版本QQ

1
yay -S linuxqq

ArchLinux下的微信还没有electron版,只有基于wine的版本(有一个Deepin主导的星火商店版本com.qq.weixin.spark)。个人认为体验不好(各种字体、缩放问题),因此这里不做推荐。

KMail - 先进的电子邮件客户端,能与 GMail 等常用电子邮件服务提供商进行整合。KMail 支持各种电子邮件协议,包括 POP3、IMAP、Microsoft Exchange(EWS)等。

1
sudo pacman -S kmail

kcalc - 科学计算器

1
sudo pacman -S kcalc

Okular - KDE 开发的一款功能丰富、轻巧快速的跨平台文档阅读器。可以使用它来阅读 PDF 文档、漫画电子书、Epub 电子书,浏览图像,显示 Markdown 文档等。

1
sudo pacman -S okular

YesPlayMusic - 高颜值的第三方网易云播放器。

1
yay -S yesplaymusic

Listen 1 - Listen 1 作为“老牌”的听歌软件可以搜索和播放来自网易云音乐、虾米、QQ 音乐、酷狗音乐、酷我音乐、Bilibili、咪咕音乐网站的歌曲,让你的曲库更全面。

1
yay -S listen1-desktop-appimage

苹果投屏

UxPlay是一个苹果设备投屏工具,可以将iPhone或iPad屏幕投射到ArchLinux上面。

1
2
yay -S uxplay-git
sudo pacman -S gst-plugins-good gst-plugins-bad gst-libav  # 一些额外的gst插件依赖

每次启动uxplay都需要启动avahi-daemon这个服务,我们可以重定义uxplay命令,让其在执行前启动服务。将下面的语句加到.zshrc中:

1
alias uxplay="sudo systemctl start avahi-daemon.service && uxplay"

确保苹果设备跟ArchLinux处于同一个局域网中(需要处于5Ghz Wifi下),在ArchLinux中启动uxplay

1
uxplay

在苹果设备中,使用屏幕镜像即可找到你的ArchLinux设备:

ios

现在,你可以在ArchLinux上看到苹果设备的投屏了:

ios-archlinux

系统美化

系统美化永远不是一件重要的事情。一个Linux系统应该优先是好用的,稳定的,其次才是美化。因此我将美化相关内容放在最后一节进行。

⚠️警告:KDE过度美化可能会造成系统不稳定或出现奇怪的错误,在美化前强烈建议使用Timeshift创建备份,以在出现问题之后能够快速回滚到之前的状态。

每个人的审美不同,对于美化的界定也不同,这里只给出基于我自己审美的美化步骤作为参考,每个人的ArchLinux都应该是不一样的!

系统图标

我们可以更改默认的系统图标,推荐Tela icon theme,安装:

1
sudo pacman -S tela-icon-theme-git

在设置页面直接更改即可:

icon

全局主题

推荐Layan主题,这是一个来自中国的设计师设计的主题,还是比较好看的。

主题配合Kvantum Manager可以达到更好的效果:

1
sudo pacman -S kvantum

这里下载Layan kvantum主题,并解压。

打开Kvantum Manager,选择主题并安装,接下来在Change/Delete Theme中选择Layan,Use this theme

Kvantum

然后在KDE系统设置中的Application Style中选择Kvantum

kde-app-style

安装Layan全局主题:

1
yay -S plasma5-themes-layan-git

设置全局主题为Layan:

layan-theme

重启电脑,让主题生效。

引导页面

开机时有个漂亮的GRUB也是很舒服的。

这里下载Distro的GRUB主题并解压。接下来cd进解压出来的文件夹,输入命令:

1
sudo cp . /usr/share/grub/themes/Distro -rf

以将主题放置在系统的GRUB默认文件夹内。

接着编辑/etc/default/grub文件,找到#GRUB_THEME=一行,将前面的注释去掉,并指向主题的theme.txt文件。即

1
2
#GRUB_THEME=
GRUB_THEME="/usr/share/grub/themes/Distro/theme.txt" #修改后

然后再在终端输入:

1
sudo grub-mkconfig -o /boot/grub/grub.cfg

这样,引导页面美化就完成了。

SDDM主题

安装McSur主题:

1
yay -S plasma5-theme-mcsur-git

设置SDDM主题:

sddm

输入法

推荐fcitx5-nord主题,安装方法:

1
2
3
4
5
6
git clone https://github.com/tonyfettes/fcitx5-nord.git
mkdir -p ~/.local/share/fcitx5/themes/
cd fcitx5-nord
cp -r Nord-Dark/ Nord-Light/ ~/.local/share/fcitx5/themes/
cd ..
rm -rf fcitx5-nord

设置输入法主题:

1
vim ~/.config/fcitx5/conf/classicui.conf

修改内容为:

1
2
3
Theme=Nord-Dark
# or
# Theme=Nord-Light

重启输入法,即可生效。

定制

KDE的定制性是非常强大并且简单的,从各种方面都暴打Gnome。所有定制基本都不需要修改配置文件,通过界面点击即可完成。并且社区有很多他人设计好的定制内容供你下载。

KDE的所有布局都是通过Widget来完成的,你可以在桌面右键Enter Edit Mode来编辑小组件。

至于如何设计你的布局,请依赖自己的喜好来完成。你可以实现类似MacOS的Dock布局,也可以实现类似Windows的布局(KDE的默认布局)。

有一个类似MacOS Dock的小组件插件latte-dock,但是个人使用下来发现有不少BUG,因此不推荐使用,最好用KDE自带的PlaneWidget来实现Dock布局。

我自己是采用的MacOS的布局,但是没有Dock(我习惯用Meta+W快捷键来切换应用,用左上角的Application Launcher来启动应用),仅作参考:

menu

恭喜,到这里,就完成了整个ArchLinux的安装和美化工作。