我对 Windows 可以说是积怨已久了。在 Win10 时代及以前我还是 Windows 的忠实拥趸,一方面是彼时 win10 的设计语言比较诱人(相对 Win7 来说),另一方面是 wsl 的出现几乎让 windows 把 linux 在日用这一赛道上踩在脚下。彼时 MS 的控制欲大约还不是那么严重,屎山也尚未到无药可救的地步。既然微软说出 Win10 是最后一代 Windows 系统,那我就做好了长期使用的准备。
然而不久后,Win11 横空出世,自此 Windows 就在堆屎的路上狂奔一去不复返了。我从 10 年就习惯了把任务栏放在屏幕右边,win11 居然不准我这么放。而砍右键菜单、砍 Explorer 工具栏、砍控制面板……甚至当初吸引我升级 Win11 的 WSA 都被砍了,实在是让人颇生怨言。另外一边,MS 又往里面加一堆莫名其妙的东西,预装的小组件、Copilot,每次重装系统之后都要好生一阵配置,而每次配置的时候都要被恶心一次。
最恶心的还当属强制微软帐号登录和 OneDrive 同步,虽然我有 MS365 开发者的订阅,但这并不意味着我要用你的服务(在多年前我被 OneDrive 同步错误删了半个硬盘,自那之后我再没用过)。而不知道在最近的哪个更新中,MS 居然把用户目录(桌面、图片、文档等)挪到了 OneDrive 的文件夹里,让我大受震撼,这陈年屎山也是可以动的?当我去搜索此问题的解决方案时,MS 约等于没有的客户支持又给了我一记巴掌,论坛对什么问题都是重启修复重装三板斧,好不容易查到了一个帖子说这个功能可以在 OneDrive 设置里面关掉,然而我早已将其卸载,最后还是改注册表才把文件夹改回来——注册表,大约又是 MS 的屎山造物,宛如黑雾中的深海一般不可知的领域,恐怖之处想必不需我多提了。
说了 Windows 的毛病,那 Linux 有什么好处呢?我想大约有这么几条:
经此一番折腾,更换 Linux 便被我提上了日程。装系统容易,但经年累月的使用习惯可不好改。换系统意味着我过去攒的软件可能都不能再使用,必须寻找替代品。首当其冲的是 Adobe 全家桶,好在我现在并非深度用户,只是改改图,切切音频,剪剪视频的程度,还是可以找到开源替代的。MS Office 我也不准备再用了,而是同样转投开源替代(希望以后给老板做 PPT 的时候不要出现兼容性问题)。再就是各种社交软件,我早就有关注 Linux 微信的更新情况,QQ 也同样有跨平台版本,这边也不成问题。至于其他的一些 QoL 工具,想必天才的 Linux 用户们应该也都开发了类似的,大约是不用担心的。
让我更换 Linux 的另一大推动力是——FF14 7.0。由于在 Linux 上打狒并不十分方便,之前没有迁移的考量之一就是我还要打狒。而 7.0 版本的到来直接让我放心大胆地 afk 了——不再打算打高难,房子也炸了,所以没有什么好留念的了。其他游戏的话,毕竟 Linux 还是可以安装 Steam 的,用 wine 也不是不能玩。
那么最后的决策便是,挑选 Linux 发行版。虽然说我对 Ubuntu 相对熟悉一些(用的服务器全是 Ubuntu 的),但经过一番调查之后,我最终确定了选用 Arch,原因也有三点:
一切准备就绪,备份好数据之后准备重装!
我的全程安装基本遵循archlinux 简明指南的指导流程,以下做笔记以备以后使用。
在tuna下载 ISO 镜像,刻录到 U 盘中(在 Windows 下用的是 Rufus,Linux 下可以用 Ventoy)。如果使用无线网的话,请确定网络 SSID 可以在英文环境下识别,当然最好是用有线网安装。另外还需要将启动模式改成 UEFI,不过现代电脑应该默认都是这个启动模式了。
由于我是打算直接抹除 Windows,所以不需要准备双系统,但一定一定备份好数据,重装开始就没有回头路可走了。如果需要双系统的话可以参考原文配置分区。
如何从 U 盘启动这种老生常谈就不再赘述了,总之启动进 U 盘开始装系统!
虽然有 archinstall 这种工具提供更方便的安装,但是其有很多东西没法自定义,也无助于我们理解安装过程中发生了什么,这显然不是我想要的,所以还是直接使用最原始的安装方式:命令行安装。
在 GRUB 引导界面选择第一个选项(Arch Linux 安装介质),就进入了安装环境。
2020 年,archlinux 安装镜像中加入了 reflector
服务,它会自己更新 mirrorlist
(软件包管理器 pacman
的软件源)。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。也许它是一个好用的工具,但是很明显,因为地理上造成的特殊网络环境,这项服务并不适合启用。
systemctl stop reflector.service
q
退出结果输出:systemctl status reflector.service
禁用 reflector
服务后,我们再来确认一下是否为 UEFI
模式:
ls /sys/firmware/efi/efivars
若输出了一堆东西(efi
变量),则说明已在 UEFI
模式。否则请确认你的启动方式是否为 UEFI
。
若使用无线网络,使用 iwctl
进行连接。操作前请确保设备的 WLAN 硬件开关已打开。
iwctl # 进入交互式命令行
device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0
station wlan0 scan # 扫描网络
station wlan0 get-networks # 列出所有 wifi 网络
station wlan0 connect [wifi-name] # 进行连接,注意这里无法输入中文,可以用tab补全。回车后输入密码即可
exit # 连接成功后退出
如果操作报错,按如下流程排查故障: 你可以使用如下命令查看内核是否加载了你的无线网卡驱动。
lspci -k | grep Network
如果输出了网卡名称,再用以下命令检查无线网络是否被阻止,如果输出中 blocked: yes 就是被阻止
rfkill list
如果被阻止,使用以下命令解除阻止
rfkill unblock wifi
如果没有被阻止,或者完成上述命令后,使用以下命令启动网卡
ip link set wlan0 up
启动后再重复上方的联网流程。
通过 ping
命令测试网络连通性:
ping t.cn
如果无线网络还是无法连接,请使用 ip link
命令查看无线网卡设备,使用 ip link set <设备名> up
命令激活对应的无线网卡。若看到类似 Operation not possible due to RF-kill
的报错,继续尝试 rfkill unblock wifi
来解锁无线网卡。
使用 timedatectl
确保系统时间是准确的。这一步不是可选的,正确的系统时间对于部分程序来说非常重要:
timedatectl set-ntp true # 将系统时间与网络时间进行同步
timedatectl status # 检查服务状态
使用 vim
编辑器修改 /etc/pacman.d/mirrorlist
文件。将 pacman
软件仓库源更换为国内软件仓库镜像源:
vim /etc/pacman.d/mirrorlist
在下列选择一个镜像源放在该文件中的其他镜像源的前面,推荐的镜像源如下:
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch # 清华大学开源软件镜像站
Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch # 华为开源镜像站
Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch # 兰州大学开源镜像站
前车之鉴 —— 请不在这一步中添加
archlinuxcn
源!如果你在/etc/pacman.conf
中添加了内容,请将它们删掉。
由于我不使用双系统,而且使用两个硬盘,这部分和原文会有不同。
/boot
EFI 分区:256MB
(一般已经存在了,无需再次创建。如果有需要也可以删掉重新创建,不影响。)/
根目录 和 /home
用户主目录:占用剩余空间(因为采用 Btrfs
文件系统,所以根目录和用户主目录实际在一个分区上,只是在不同的子卷上而已。)
Btrfs 的好处一个是可以管理子卷,不用预先给根目录和主目录分空间;另一个是创建还原点很简单。考虑到 Arch 自己折腾容易挂,强烈建议使用该系统。通过 lsblk
命令,区分要安装 archlinux 的磁盘(通过观察磁盘的大小、已存在的分区情况等判断)并显示当前磁盘的分区情况:
lsblk # 显示当前分区情况
在我的情况中,需要安装系统的硬盘是 /dev/nvme1n1
,数据盘可以暂时先不处理,等到装完系统再处理。
接下来使用 cfdisk
命令对磁盘分区:
cfdisk /dev/nvme1n1 # 对安装 archlinux 的磁盘分区
进入 cfdisk
分区工具之后,通过方向键 ↑
和 ↓
可以在要操作磁盘分区或空余空间中移动;通过方向键 ←
和 →
在对当前高亮的磁盘分区或空余空间要执行的操作中移动。
!warning 这是你最后考虑数据有没有备份好的机会,请务必谨慎。
由于我要全新安装,所以删除了除 EFI 以外的全部分区。首先创建 Swap 分区。选中 Free space
> 再选中操作 [New]
> 然后按下回车 Enter
以新建 swap
分区(类似 Windows 的交换文件)。按下回车后会提示输入 分区大小
,Swap 分区建议不小于电脑内存大小的 60% ,我这里直接使用了内存大小。然后按下回车 Enter
。
默认新建的类型是 Linux filesystem
,我们需要将类型更改为 Linux swap
。选中操作 [Type]
> 然后按下回车 Enter
> 通过方向键 ↑
和 ↓
选中 Linux swap
> 最后按下回车 Enter
。(一般来说Linux swap
就在原来的上面一个,不要像我眼瞎找了半天。)
我们再只需要一个分区即可(因为使用 Btrfs
文件系统,所以根目录和用户主目录在一个分区上),所以类似的:选中 Free space
> 再选中操作 [New]
> 然后按下回车 Enter
以新建分区
输入 分区大小
(默认是剩余的全部空间。请根据实际情况输入)> 然后按下回车 Enter
分区类型默认即可,无需更改。
接下来选中操作 [Write]
并回车 Enter
> 输入 yes
并回车 Enter
写入分区表。只有这里提交了分区表更改才会生效。
选中操作 [Quit]
并回车 Enter
以退出 cfdisk
分区工具。分区完成后,使用 fdisk
或 lsblk
命令复查分区情况:
格式化 EFI 分区 (这里的分区编号请根据实际情况修改,下同)
mkfs.fat -F32 /dev/nvme1n1p0
格式化 Swap 分区
mkswap /dev/nvme1n1p1
格式化 Btrfs 分区:首先我们需要将整一个分区格式化为 Btrfs
文件系统。使用如下命令进行格式化:
mkfs.btrfs -L myArch /dev/nvme1n1p2
-L
选项后指定该分区的 LABLE
,这里以 myArch
为例,也可以自定义,但不能使用特殊字符以及空格,且最好有意义
为了创建子卷,我们需要先将 Btrfs
分区挂载到 /mnt
下:mount -t btrfs -o compress=zstd /dev/nvme1n1p2 /mnt
-t
选项后指定挂载分区文件系统类型-o
选项后添加挂载参数: - compress=zstd
—— 开启透明压缩
使用 df
命令复查挂载情况:df -h # -h 选项会使输出以人类可读的单位显示
通过以下命令创建两个 Btrfs
子卷,之后将分别挂载到 /
根目录和 /home
用户主目录:
btrfs subvolume create /mnt/@ # 创建 / 目录子卷
btrfs subvolume create /mnt/@home # 创建 /home 目录子卷
!warning 除非你清楚你的操作产生的后果,否则请保持子卷名称和结构与本指南一致,因为在后面我们会设置的快照工具
timeshift
只支持这种子卷布局。
通过以下命令复查子卷情况:
btrfs subvolume list -p /mnt
子卷创建好后,我们需要将 /mnt
卸载掉,以挂载子卷:
umount /mnt
在挂载时,挂载是有顺序的,需要从根目录开始挂载。使用如下命令挂载子卷:
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme1n1p2 /mnt # 挂载 / 目录
mkdir /mnt/home # 创建 /home 目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme1n1p2 /mnt/home # 挂载 /home 目录
mkdir -p /mnt/boot # 创建 /boot 目录
mount /dev/nvme1n1p0 /mnt/boot # 挂载 /boot 目录
swapon /dev/nvme1n1p1 # 挂载交换分区
使用 df
命令复查挂载情况:
df -h
使用 free
命令复查 Swap 分区挂载情况:
free -h
通过如下命令使用 pacstrap
脚本安装基础包:
pacstrap /mnt base base-devel linux linux-firmware btrfs-progs
## 如果使用btrfs文件系统,额外安装一个btrfs-progs包
base-devel
—— base-devel
在 AUR
包的安装过程中是必须用到的linux
—— 内核软件包,这里建议先不要替换为其它内核
如果提示 GPG 证书错误,可能是因为使用的不是最新的镜像文件,可以通过更新 archlinux-keyring
解决此问题:pacman -S archlinux-keyring
通过如下命令使用 pacstrap
脚本安装其它必要的功能性软件:
pacstrap /mnt networkmanager vim sudo zsh zsh-completions
zsh
—— zsh-completions
如果你是 bash 的爱好者,请把这两个包换成bash-completion
fstab
用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab
自动根据当前挂载情况生成并写入 fstab
文件:
genfstab -U /mnt > /mnt/etc/fstab
复查一下 /mnt/etc/fstab
确保没有错误:
cat /mnt/etc/fstab
使用以下命令把系统环境切换到新系统下:
arch-chroot /mnt
此时,原来安装盘下的 /mnt
目录就变成了新系统的 /
目录。同时,可以发现命令行的提示符颜色和样式也发生了改变。
/etc/hostname
设置主机名:vim /etc/hostname
设置文件内容为你想为主机取的主机名,不要包括特殊字符和空格 2. 接下来在 /etc/hosts
设置与其匹配的条目:
vim /etc/hosts
加入如下内容:
127.0.0.1 localhost
::1 localhost
127.0.1.1 {hostname}.localdomain {hostname}
/etc/localtime
下用 /usr
中合适的时区创建符号链接:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
使用如下命令将系统时间同步到硬件时间:
hwclock --systohc
Locale
决定了软件使用的语言、书写习惯和字符集。
编辑 /etc/locale.gen
,去掉以下行前的注释符号(#
)。有几个选项极具迷惑性,请不要取消注释错了。你也可以根据你的需求配置其他的 Locale
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8
vim /etc/locale.gen
然后使用如下命令生成 locale
:
locale-gen
执行以下代码向 /etc/locale.conf
输入内容:
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
passwd root
通过以下命令安装对应芯片制造商的微码:
pacman -S intel-ucode # Intel
pacman -S amd-ucode # AMD
如有需要可以参阅 ArchWiki 相关内容。 安装相应的包:
pacman -S grub efibootmgr os-prober
-S
选项后指定要通过 pacman
包管理器安装的包: - grub
—— 启动引导器 - efibootmgr
—— efibootmgr
被 grub
脚本用来将启动项写入 NVRAM - os-prober
—— 为了能够引导 win10,需要安装 os-prober
以检测到它。如果不需要总之安了也没什么问题
安装 GRUB 到 EFI 分区:grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
--efi-directory=/boot
—— 将 grubx64.efi
安装到之前的指定位置(EFI 分区)--bootloader-id=ARCH
—— 取名为 ARCH
接下来使用 vim
编辑 /etc/default/grub
文件:vim /etc/default/grub
进行如下修改:
GRUB_CMDLINE_LINUX_DEFAULT
一行中最后的 quiet
参数
loglevel
的数值从 3
改成 5
。这样是为了后续如果出现系统错误,方便排错nowatchdog
参数,这可以显著提高开关机速度。如果是 Intel 的话改成加入modprobe.blacklist=iTCO_wdt
参数GRUB_DISABLE_OS_PROBER=false
最后生成 GRUB
所需的配置文件:grub-mkconfig -o /boot/grub/grub.cfg
输入以下命令:
exit # 退回安装环境
umount -R /mnt # 卸载新分区
reboot # 重启
重启的时候拔掉 U 盘,重启后使用 root 账户登录系统 设置开机自启并立即启动 networkmanager 服务,即可连接网络:
systemctl enable --now NetworkManager # 设置开机自启并立即启动 NetworkManager 服务
使用 nmcli
连接无线网络:
nmcli dev wifi list # 显示附近的 Wi-Fi 网络
nmcli dev wifi connect "Wi-Fi名(SSID)" password "网络密码" # 连接指定的无线网络
也可以使用 nmtui
来配置网络
nmtui
如果使用有线网络可以跳过。
ping t.cn # 测试网络连接
fastfetch
可以将系统信息和发行版 logo 一并打印出来。通过 pacman
安装 fastfetch
:
pacman -S fastfetch
使用 fastfetch
打印系统信息:
fastfetch
默认情况下,archlinux 在一些终端编辑场景调用 vi
编辑器,但是我们使用 vim
编辑器。
如果不做额外配置且不显式的指定编辑器,在一些终端场景下(如下面的 visudo
、git
等)调用编辑器时会出错。
使用 vim
编辑 ~/.bash_profile
文件:
vim ~/.bash_profile
在适当位置加入以下内容:
export EDITOR='vim'
保存并退出 vim
通过以下命令添加用户,比如新增加的用户叫 myusername
:
useradd -m -G wheel -s /bin/bash myusername
-m
创建用户的同时创建用户家目录-G
选项后指定附加组
wheel
—— wheel
附加组可 sudo
进行提权-s
选项后指定 shell 程序myusername
—— 用户名(请自定义,但不要包含空格和特殊字符)
通过以下命令根据提示设置新用户 myusername
的密码:passwd myusername
使用 vim
编辑器通过 visudo
命令编辑 sudoers
文件:
EDITOR=vim visudo # 这里需要显式的指定编辑器,因为上面的环境变量还未生效
#
去掉:##%wheel ALL=(ALL:ALL) ALL
关于这里的原理,可以看原文
/etc/pacman.conf
文件:vim /etc/pacman.conf
[multilib]
一节中两行的注释,来开启 32 位库支持archlinuxcn
源。推荐的镜像源(选一个即可)也一并列出:[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch # 清华大学开源软件镜像站
Server = https://mirrors.hit.edu.cn/archlinuxcn/$arch # 哈尔滨工业大学开源镜像站
Server = https://repo.huaweicloud.com/archlinuxcn/$arch # 华为开源镜像站
vim
编辑器pacman
数据库并更新:pacman -Syyu
pacman -S plasma-meta konsole dolphin # plasma-meta 元软件包、konsole 终端模拟器和 dolphin 文件管理器
pacman -S plasma-workspace xdg-desktop-portal
## N卡用户需要额外安装egl-wayland,xdg-desktop-portal包是为了如obs此类工具录制屏幕使用
## xdg-desktop-portal包组提供了不同环境下使用的软件包
## 例如kde用户可选择xdg-desktop-portal-kde包
安装完成后,可以在后续登录时选择使用 xorg 还是 wayland
!info 如果要求多显示器不同缩放支持的话,请使用 wayland
systemctl enable sddm
systemctl start sddm # 直接启动显示管理器,与以下reboot命令二选一即可
reboot
Enter
即可登录桌面ping t.cn # 测试网络连通性
KDE 桌面环境中连接网络和 win10 一样,这里不再赘述。 3. 接下来安装一些基础功能包:
sudo pacman -S sof-firmware alsa-firmware alsa-ucm-conf # 声音固件
sudo pacman -S ntfs-3g # 使系统可以识别 NTFS 格式的硬盘
## 安装几个开源中文字体。一般装上文泉驿就能解决大多 wine 应用中文方块的问题。此处不建议使用该字体,直接使用Noto
## sudo pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra # 安装谷歌开源字体及表情
sudo pacman -S firefox #chromium # 安装常用的火狐、chromium 浏览器
sudo pacman -S ark # 压缩软件。在 dolphin 中可用右键解压压缩包
sudo pacman -S packagekit-qt6 packagekit appstream-qt appstream # 确保 Discover(软件中心)可用,需重启
sudo pacman -S gwenview # 图片查看器
## sudo pacman -S steam # 游戏商店。稍后看完显卡驱动章节再使用
archlinuxcn
源所需的相关步骤:sudo pacman -S archlinuxcn-keyring # cn 源中的签名(archlinuxcn-keyring 在 archlinuxcn)
sudo pacman -S yay # yay 命令可以让用户安装 AUR 中的软件(yay 在 archlinuxcn)
若安装 archlinuxcn-keyring
时报错,是由于密钥环的问题。可先按照 archlinuxcn 官方说明 执行其中的命令,再安装 archlinuxcn-keyring
。
archlinuxcn
社区源的 keyring
包 archlinuxcn-keyring
由 farseerfc
的 key 签署验证,而 Arch Linux
官方 keyring
中包含了 farseerfc 的 key 。自 12 月初 archlinux-keyring
中删除了一个退任的 master key 导致 farseerfc
的 key 的信任数不足,由 GnuPG
的 web of trust
推算为 marginal trust
,从而不再能自动信任 archlinuxcn-keyring
包的签名。
如果你在新系统中尝试安装 archlinuxcn-keyring
包时遇到如下报错:
error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) <farseerfc@archlinux.org>" is marginal trust
请使用以下命令在本地信任 farseerfc 的 key
。此 key
已随 archlinux-keyring
安装在系统中,只是缺乏信任:
sudo pacman-key --lsign-key "farseerfc@archlinux.org"
之后继续安装 archlinuxcn-keyring
: sudo pacman -S archlinuxcn-keyring
检查家目录下的各个常见目录是否已经创建,若没有则需通过以下命令手动创建:
cd ~
ls -hl
xdg-user-dirs-update
vim
编辑 ~/.bashrc
文件:vim ~/.bashrc
~/.bash_profile
中。)export EDITOR='vim'
System Settings
> Language and Regional Settings
> 在 Language
中点击 Add languages...
> 选择中文加入 ADD
,再拖拽到第一位 > 点击 Apply
如有需要可以参阅 Fcitx5 官方文档。
sudo pacman -S fcitx5-im # 输入法基础包组
sudo pacman -S fcitx5-chinese-addons # 官方中文输入引擎,这里暂时先不建议使用rime,可以后面再改成rime
sudo pacman -S fcitx5-anthy # 日文输入引擎
## sudo pacman -S fcitx5-pinyin-moegirl # 萌娘百科词库。二刺猿必备(archlinuxcn)
sudo pacman -S fcitx5-material-color # 输入法主题
vim
创建并编辑文件 ~/.config/environment.d/im.conf
:vim ~/.config/environment.d/im.conf
XMODIFIERS=@im=fcitx
在「系统设置 - 输入设备 - 虚拟键盘」中选中 Fcitx 5。在基于 Chromium 的程序(包括浏览器和使用 Electron 的程序)中加入 --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime --ozone-platform-hint=auto
启动参数。
检查一下是否有拼写错误,如果输入法无法正常切换,可尝试执行 fcitx5-diagnose
命令来诊断问题的原因。 4. 打开 系统设置
> 区域设置
> 输入法
5. 点击提示信息中的 运行 Fcitx
6. 点击 添加输入法
> 找到简体中文下的 Pinyin
> 点击 添加
即可加入拼音输入法: 7. 回到输入法设置 > 点击 配置附加组件
> 找到 Classic User Interface
> 在主题里选择一个你喜欢的颜色 > 最后点击 应用
8. 注销并重新登陆,发现已经可以在各个软件中输入中文了:
通过以下命令开启蓝牙相关服务并设置开机自动启动:
sudo systemctl enable --now bluetooth
yay -S timeishift
安装之后,如果 Timeshift 没有自动备份,需要手动开启cronie
服务:
sudo systemctl enable --now cronie.service
subvolid
:sudo sed -i -E 's/(subvolid=[0-9]+,)|(,subvolid=[0-9]+)//g' /etc/fstab
否则,恢复 BTRFS 类型快照时,可能因子卷 ID 改变导致无法正常进入系统,参阅 恢复后无法挂载目录。
!info 在进行本章节设置前,请务必确保进行过一次 Timeshift 快照,便于装爆炸之后回滚系统。 若在设置过程中导致黑屏无法进入桌面,请尝试使用使用
Ctrl
+Alt
+F1 ~ F6
在tty1 ~ tty6
之间切换。 将导致黑屏的配置删掉或使用快照恢复后重新启动电脑。
本章以单独 Nvidia 显卡配置,涉及 A 卡、I 卡等情况参考原文。如有需要可以参阅 ArchWiki 相关内容。 首先,从nouveau 英伟达代号查询页中查找您的显卡系列代号。您也可以运行以下命令获知显卡型号/名称:
lspci -k -d ::03xx
GPU 家族 | 驱动 | 支持状态 |
---|---|---|
Turing (NV160/TUXXX)系列或更新版本 | nvidia-open包 (适用于linux包) nvidia-open-dkms包 (适用于其他内核) | 上游推荐使用,支持中 |
Maxwell (NV110/GMXXX)系列到 Ada Lovelace (NV190/ADXXX)系列 | nvidia包 (适用于linux包) nvidia-lts包 (适用于linux-lts包) nvidia-dkms包 (适用于其他内核) | 支持中 |
Kepler (NVE0/GKXXX)系列 | nvidia-470xx-dkmsAUR | 过时,不再支持 2,3 |
Fermi (NVC0/GF1XX)系列 | nvidia-390xx-dkmsAUR | |
Tesla (NV50/G80-90-GT2XX)系列 | nvidia-340xx-dkmsAUR | |
Curie (NV40/G70) 以及更老的系列 | Arch Linux 没有相应的驱动包 |
我的 GeForce RTX470 属于 ADXXX 系列,需要安装 nvidia 包。由于我们前面使用的是 linux 内核,这里不要尝试使用 dkms 包,会爆炸。 对于 32 位应用程序支持,请安装 multilib 仓库中对应的 lib32 nvidia 软件包(例如 lib32-nvidia-utils包)。
建议使用 dae
yay -S dae
安装后启动服务:
sudo systemctl enable --now dae
然后你就可以参照官方文档来使用了。注意 dae 的配置文件在 /etc/dae/config.dae
(这东西怎么不在文档里,让我一顿好找)
通过以下命令确认 Swap 分区的 UUID
:
lsblk -o name,mountpoint,size,uuid
用 vim
编辑 /etc/default/grub
文件:
sudo vim /etc/default/grub
将相关参数加入内核启动参数中 —— 找到 GRUB_CMDLINE_LINUX_DEFAULT
一行,在其值后添加类似如下数据(根据你自身的 UUID 确定,参数之间以空格分隔):
resume=UUID=13ec7b86-eb9c-45a9-ae50-9606279b506a
通过以下命令更新 GRUB 配置:
sudo grub-mkconfig -o /boot/grub/grub.cfg
除此之外,还需配置 initranfs
的 resume
钩子。使用 vim
编辑 /etc/mkinitcpio.conf
:
sudo vim /etc/mkinitcpio.conf
在 HOOKS 行添加 resume
值。注意,resume
需要加入在 udev
后。若使用了 LVM 分区,resume
需要加入在 lvm2
后。
使用 Intel CPU 并且为触摸板加载 intel_lpss_pci
模块的笔记本电脑,可能会在唤醒时发生内核崩溃(Caps Lock 灯闪烁),黑屏并无法成功唤醒。
此时需要编辑 /etc/mkinitcpio.conf
,在 MODULES 行添加 intel_lpss_pci
值:
MODULES=(intel_lpss_pci)
最后通过以下命令重新生成 initramfs
镜像:
sudo mkinitcpio -P
重启电脑后即可休眠
诸如桌面美化、终端美化、面板控件、系统主题等等等等,参考原文
安装 openconnect
sudo pacman -S openconnect
测试能否连接到学校 VPN
echo <Password> | openconnect --protocol=pulse --no-dtls --reconnect-timeout=5 https://sslvpn.tsinghua.edu.cn/ --user=<StudentNo> --passwd-on-stdin --useragent Pulse-Secure/9.1.11.6725
加上
##!/bin/bash
后将上述内容写入 ~/.local/bin/sslvpn.sh
,并配置可执行权限。
将以下内容写入 /etc/systemd/system/sslvpn.service
[Unit]
Description=SSLVPN OpenConnect Service
After=network.target
[Service]
Type=simple
ExecStart=/homerika/.local/bin/sslvpn.sh
Restart=always
User=root
WorkingDirectory=/home/rika/.local/bin
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
执行
sudo systemctl daemon-reload
重载配置,然后即可通过
sudo systemctl start sslvpn.service
启动 VPN 了。
运行 sudo visudo
找到 env_keep
参数,去掉 !visudo
的限定,使得后面的 EDITOR 等变量可以继承到 sudo
参见 Howdy
先 yay -S v4l-utils
,然后 v4l2-ctl --list-devices
以确定摄像头视频流地址
安装 Howdy
yay -S howdy
配置 Howdy 的识别
sudo EDITOR=<editor> howdy config
将其中的 device_path
设置为你需要的视频流地址,保存退出。
测试视频流正常
sudo howdy test
添加人脸信息
sudo howdy add
在当前的 howdy 版本中,需要修改 /lib/security/howdy/pam.py
文件,将其中的
import ConfigParser
改为
import configparser as ConfigParser
然后配置 PAM,打开 /etc/pam.d/
,编辑特定文件,在顶部加上
## Comment following to enable face prior to password
auth sufficient pam_unix.so try_first_pass likeauth nullok
auth sufficient pam_python3.so /lib/security/howdy/pam.py
如果注释掉第一行,就只能用人脸解锁;如果保留第一行,会先提示输入密码,密码错误再人脸解锁。 不建议只用人脸解锁,否则人脸解锁不开的时候就尬住了。
编辑 /etc/pam.d/
中的 sudo
system-local-login
sddm
system-auth
一般就足够了,如果还有希望添加的也可以再添加。
可以通过sudo ls
测试一下能否正常使用,如果不行的话可以查看日志来检查问题
journalctl -b | grep howdy
journalctl -b | grep pam
参考 https://wiki.archlinuxcn.org/wiki/Rime
输入方案可以使用这个双拼辅助码方案 https://github.com/gaboolic/rime-shuangpin-fuzhuma
使用体验可以参考博文 墨奇双拼方案体验
如果你和我一样有神必需求,要显示大量生僻字,安装ttf-th-tshyn
这个字体。(目前 4.1.0 版本还是有一些扩 G 区汉字没收,但应该够用了。
别问我为什么不用 SimSun,不希望它污染我的字体列表。
汉字显示测试 ↓
字符集 | Unicode 编码范围 | 字数 | 测试汉字 |
---|---|---|---|
CJK 基本 | 4E00–9FEF | 20,902 | 义礼说选 |
CJK 扩展 A | 3400–4DB5 | 6,582 | 㡛㬐㖧䵍 |
CJK 扩展 B | 20000–2A6D6 | 42,711 | 𣚣䶅𪘆𦞕 |
CJK 扩展 C | 2A700–2B734 | 4,149 | 𪢨𪪖𫔺𫜴 |
CJK 扩展 D | 2B740–2B81D | 222 | 𫝀𫞂𫝻𫠝 |
CJK 扩展 E | 2B820–2CEA1 | 5,762 | 𫠫𬚚𬳕𬺡 |
CJK 扩展 F | 2CEB0–2EBE0 | 7,473 | 𬺰𬺱𮯟𮯠 |
CJK 扩展 G | 30000-3134F | - | 𰀃 |
CJK 兼容 | F900–FAFF | 472 | - |
CJK 兼容增补 | 2F800-2FA1F | 542 | - |
参考 https://wiki.archlinux.org/title/Activating_numlock_on_bootup#
安装 systemd-numlockontty
并自动启动 numLockOnTty
服务
系统设置-键盘里面就可以改
在 /var/lib/sddm/.config/kcminputrc
中设置选项 :
[Keyboard]
NumLock=0
本质安装一个 Windows 虚拟机,参考 README 安装