Arch Linux 踩坑记录

预估阅读时间:3 分钟

引言

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

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

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

双系统分区方案

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

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

挂载点分区大小挂载顺序
/mntp3256 GiB1
[SWAP]p2「与内存大小一致」2
/mnt/efi/bootp1512 MiB3
/mnt/homep4剩余空间4

多系统解决

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

sudo vim /etc/default/grub

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

GRUB_DISABLE_OS_PROBER=false

问题记录

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

解决方案1

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

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

原因:Windows 系统使用 UTC2

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

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

右键左下角的开始菜单

reg 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... 内容

# 构建内核模块
sudo mkinitcpio -P

警告内容如下:

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

新错误:

==> WARNING: Possibly missing firmware for module: bfa
==> WARNING: Possibly missing firmware for module: qed
==> WARNING: Possibly missing firmware for module: qla1280
==> WARNING: Possibly missing firmware for module: qla2xxx

Arch Linux CN 源 和 4edu 源

# file: /etc/pacman.cfg
[archlinuxcn]
SigLevel = Optional TrustAll
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
Server = https://repo.archlinuxcn.org/$arch

[arch4edu]
Server = https://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch

需执行:

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

解决:

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

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

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


echo 0 | sudo tee /sys/module/hid_apple/parameters/fnmode

# 写入配置文件以永久保持,否则重启需要重新执行
echo "options hid_apple fnmode=0" | sudo tee -a /etc/modprobe.d/hid_apple.conf

# 执行下面命令并重启
sudo mkinitcpio -P && sudo reboot now

个人配置

关闭 fish 启动提示

set -U fish_greeting ""

Arch Linux 软件安装及配置

中文输入法 fcitx5

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

yay -S fcitx5-im  fcitx5-chinese-addons fcitx5-pinyin-zhwiki fcitx5-pinyin-moegirl

# 推荐两个皮肤
yay -S community/fcitx5-nord
yay -S ommunity/fcitx5-material-color

配置

# ~/.pam_environment
GTK_IM_MODULE DEFAULT=fcitx5
QT_IM_MODULE  DEFAULT=fcitx5
XMODIFIERS    DEFAULT=@im=fcitx5
INPUT_METHOD  DEFAULT=fcitx5
SDL_IM_MODULE DEFAULT=fcitx

KDE 窗口装饰器

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

Code OSS

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

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

yay -S code

# 切换微软扩展源

yay -S code-marketplace

坚果云

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

yay -S nutstore

WPS Office

# 这里安装的是国内版本,国际版本请将 `aur/wps-office-cn` 替换成 `aur/wps-office`

yay -S aur/wps-office-cn aur/wps-office-mui-zh-cn aur/ttf-wps-fonts

LibreOffice

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

Clash

# 安装
sudo pacman -S clash

安装 Country.mmdb3

https://cdn.jsdelivr.net/gh/alecthw/mmdb_china_ip_list@release/Country.mmdb

配置文件位置

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

配置 Systemd 服务

  • 下方的 hencter 为当前用户名

  • 使用 echo $USER 查看当前用户名

  • /etc/systemd/system/clash.service

[Unit]
Description=Clash daemon, A rule-based proxy in Go.
After=network.target

[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/clash -d /home/hencter/.config/clash

[Install]
WantedBy=multi-user.target
sudo systemctl enable clash
sudo systemctl start clash

浏览器访问 UI 控制界面

直接访问下方地址即可

https://127.0.0.1:9090/ui

Virtualbox

yay -S  community/virtualbox-host-dkms community/virtualbox archlinuxcn/virtualbox-ext-oracle community/virtualbox-guest-iso core/net-tools

# 加载 Virtualbox 内核模块
sudo modprobe vboxdrv vboxnetadp vboxnetflt

# 使用下面命令检查 Virtualbox 模块加载
# 该命令需要在 Root 权限下运行
sudo vboxreload

# 将当前用户添加到 `vboxusers` 用户组中
sudo gpasswd -a $USER vboxusers

Go

sudo pacman -S go

Go 1.13 及以上(推荐)

打开你的终端并执行

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

参考:https://goproxy.cn/

Tags: