Arch Linux 踩坑记录

 1567 字 [系统] [极简主义]

引言

Linux 拥有各种各样的发行版本,但是 Arch Linux 是我入坑 Linux 的一个比较重要的版本(同时后面也无法放下的一个版本)。

我非常喜欢 Arch Wiki 里面的几句话:

  • Arch Linux 将简洁定义为:避免任何不必要的添加、修改和复杂增加
  • Keep It Simple, Stupid(对应中文为“保持简单,且一目了然”)。

我个人的安装是参考 ArchLinux 的 官方 Wiki 基本安装需要参考的文章顺序如下(这里只给出英文的链接,自行切换中文):

  1. Installation guide

  2. Arch boot process

  3. General recommendations

  4. List of applications

这里是我的踩坑记录,部分软件安装现在由下面两个项目替代解决,本文只记录碰到的问题和参考用到的文章或者教程什么的,关于安装部分我参考了:

其中「简明指南」派生自「ArchTuroriali」,并且 简明指南 对虚拟机的模拟,是尽量模拟了物理机的,所以我个人更加倾向简明指南,当然,无论这两个指南写的再棒

双系统分区方案

双系统不是必须的,如果不喜欢双系统,可以参考下面的 [WSL Archlinux]

由于存在不同的硬盘接口,这里的分区使用 pn 替代

挂载点 分区 大小 挂载顺序
/mnt p3 256 GiB 1
[SWAP] p2 「与内存大小一致」 2
/mnt/efi/boot p1 512 MiB 3
/mnt/home p4 剩余空间 4

多系统解决

机启动出现 错误 sparse file not allowed archlinux

1sudo vim /etc/default/grub

/etc/default/grub 进行取消注释

1GRUB_DISABLE_OS_PROBER=false

问题记录

一、使用 pacman 更新时遇到「GPGME 错误:无数据」

解决方案1

1sudo rm /var/lib/pacman/sync/*.sig

二、双系统时间不同步问题

原因:Windows 系统使用 UTC2

Windows 使用 UTC 后,请记得禁用 Windows 的时间同步功能,以防 Windows 错误设置硬件时间。如上文所说,Linux 可以使用NTP 服务来在线同步硬件时钟。

使用 regedit,新建如下 DWORD 值,并将其值设为十六进制的 1

右键左下角的开始菜单

1reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

如果以上操作不起作用,并且你使用的是 Windows 64 位系统,将 DWORD 修改为 QWORD

如果 Windows 要求根据夏令时更新时钟,可以允许。时钟仍然是 UTC,仅是显示时间会改变。

三、模块缺失的警告[^3]

解决 Arch Linux 构建内核模块时报模块缺失的警告

当我们安装完 Arch Linux 时,你会发现构建内核模块「执行下述命令」时出现警告 ==> WARNING: Possibly... 内容

1# 构建内核模块
2sudo mkinitcpio -P

警告内容如下:

1==> WARNING: Possibly missing firmware for module: wd719x
2==> WARNING: Possibly missing firmware for module: aic94xx
3==> WARNING: Possibly missing firmware for module: xhci_pci

新错误:

1==> WARNING: Possibly missing firmware for module: bfa
2==> WARNING: Possibly missing firmware for module: qed
3==> WARNING: Possibly missing firmware for module: qla1280
4==> WARNING: Possibly missing firmware for module: qla2xxx

Arch Linux CN 源 和 4edu 源

1# file: /etc/pacman.cfg
2[archlinuxcn]
3SigLevel = Optional TrustAll
4Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
5Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
6Server = https://repo.archlinuxcn.org/$arch
7
8[arch4edu]
9Server = https://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch

需执行:

1# [cn源]
2sudo pacman -S archlinuxcn-keyring
3# [4edu源]
4sudo pacman-key --recv-keys 7931B6D628C8D3BA
5sudo pacman-key --finger 7931B6D628C8D3BA
6sudo pacman-key --lsign-key 7931B6D628C8D3BA

解决:

1yay -S wd719x-firmware aic94xx-firmware upd72020x-fw
2yay -S mkinitcpio-firmware

四、关于键盘 F1-F12 被识别为多媒体键

这个问题的原因是我的 RK61 键盘 Fn 按下后出现的问题

1
2echo 0 | sudo tee /sys/module/hid_apple/parameters/fnmode
3
4# 写入配置文件以永久保持,否则重启需要重新执行
5echo "options hid_apple fnmode=0" | sudo tee -a /etc/modprobe.d/hid_apple.conf
6
7# 执行下面命令并重启
8sudo mkinitcpio -P && sudo reboot now

个人配置

关闭 fish 启动提示

1set -U fish_greeting ""

Arch Linux 软件安装及配置

中文输入法 fcitx5

输入法还是很重要的,毕竟有了输入法你才能描述你的问题给搜索引擎,fcitx5-pinyin-zhwikifcitx5-pinyin-moegirl 是词库

1yay -S fcitx5-im  fcitx5-chinese-addons fcitx5-pinyin-zhwiki fcitx5-pinyin-moegirl
2
3# 推荐两个皮肤
4yay -S community/fcitx5-nord
5yay -S ommunity/fcitx5-material-color

配置

1# ~/.pam_environment
2GTK_IM_MODULE DEFAULT=fcitx5
3QT_IM_MODULE  DEFAULT=fcitx5
4XMODIFIERS    DEFAULT=@im=fcitx5
5INPUT_METHOD  DEFAULT=fcitx5
6SDL_IM_MODULE DEFAULT=fcitx

KDE 窗口装饰器

1# 更新后不建议安装
2sudo pacman -S archlinuxcn/sierrabreeze-kwin-decoration-git

Code OSS

Code 是 Visual Studio Code 的替代品,即不带微软官方私有的纯开源编译版本

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

1yay -S code
2
3# 切换微软扩展源
4
5yay -S code-marketplace

坚果云

说实话,坚果云的安装有点运气成分在里面

1yay -S nutstore

WPS Office

1# 这里安装的是国内版本,国际版本请将 `aur/wps-office-cn` 替换成 `aur/wps-office`
2
3yay -S aur/wps-office-cn aur/wps-office-mui-zh-cn aur/ttf-wps-fonts

LibreOffice

1sudo pacman -Ss libreoffice-fresh libreoffice-fresh-zh-cn

Clash

1# 安装
2sudo pacman -S clash

安装 Country.mmdb3

https://cdn.jsdelivr.net/gh/alecthw/[email protected]/Country.mmdb

配置文件位置

1# file: ~/.config/clash/config.yml
2external-controller: 127.0.0.1:9090
3# secret: 'admin.123'
4# 配置 Web UI  请安装 yacd,该包在 ArchLinuxCN 源中
5external-ui: '/usr/share/yacd'

配置 Systemd 服务

 1[Unit]
 2Description=Clash daemon, A rule-based proxy in Go.
 3After=network.target
 4
 5[Service]
 6Type=simple
 7Restart=always
 8ExecStart=/usr/bin/clash -d /home/hencter/.config/clash
 9
10[Install]
11WantedBy=multi-user.target
1sudo systemctl enable clash
2sudo systemctl start clash

浏览器访问 UI 控制界面

直接访问下方地址即可

https://127.0.0.1:9090/ui

Virtualbox

 1yay -S  community/virtualbox-host-dkms community/virtualbox archlinuxcn/virtualbox-ext-oracle community/virtualbox-guest-iso core/net-tools
 2
 3# 加载 Virtualbox 内核模块
 4sudo modprobe vboxdrv vboxnetadp vboxnetflt
 5
 6# 使用下面命令检查 Virtualbox 模块加载
 7# 该命令需要在 Root 权限下运行
 8sudo vboxreload
 9
10# 将当前用户添加到 `vboxusers` 用户组中
11sudo gpasswd -a $USER vboxusers

Go

1sudo pacman -S go

Go 1.13 及以上(推荐)

打开你的终端并执行

1go env -w GO111MODULE=on
2go env -w GOPROXY=https://goproxy.cn,direct

参考:https://goproxy.cn/