一、熄屏滚挂
情况:好久没有滚Arch,更新内容太多,等待时熄屏,可能刚好在更新相关内容导致无法亮屏查看(属于倒霉蛋了)
解决:control + alt + F1/2/3/4可以切换tty3/4重新滚
P.S. 我观察到没什么报错,等了一段时间,直接硬关机后重启(比较危险,其实不应该容易 kernel panic)但这次比较幸运还能打开图形化界面(不用修kde/内核
1 | ❯ sudo pacman -Syu |
这时候其实安装软件也会提示,删除下面软件包数据库相关文件
1 | sudo rm -rf /var/lib/pacman/db.lck |
二、更新源问题
情况:又是好久没有滚Arch,更新内容太多,滚挂如下图

解决:首先怀疑是清华源的问题,故改源
- 安装
reflector
(用于帮助自动选择最快的镜像源)1
sudo pacman -S reflector
- 使用
reflector
选择最快的镜像源并更新/etc/pacman.d/mirrorlist
文件:这个命令会列出100个镜像源,使用 HTTPS 协议,根据下载速度排序,并将最快的镜像源保存到 mirrorlist 文件中。1
sudo reflector --verbose -l 100 -p https --sort rate --save /etc/pacman.d/mirrorlist
-country
: 指定国家和区域-age
: 指定最后更新/同步时间,可以过滤掉某些已经停止维护的镜像地址, 单位: 小时-sort
: 指定排序方式, 可选{age,rate,country,score,delay}
, 分别为{最后更新, 下载速度, 镜像分数, 延迟}
-protocol
: 指定http或https协议-save
: 将结果覆写到文件, 一般都是/etc/pacman.d/mirrorlist
, 请提前备份旧的Mirrorlist-threads
: 指定多线程数量,不可大于cpu总线程数量-list-countries
: 列出国家代码和镜像数量
还有一些其他参数, 具体请使用reflector --help
查看帮助
(
- 选择中国的镜像源:
1 | sudo reflector --verbose --country 'China' -l 100 -p https --sort rate --save /etc/pacman.d/mirrorlist |
- 手动指定某个特定的镜像源,直接编辑
/etc/pacman.d/mirrorlist
文件,将首选的镜像源地址放在文件的最顶端。使用清华大学开源软件镜像站:
1 | echo 'Server = [https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch](https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch)' > /etc/pacman.d/mirrorlist |
)
- 更新完镜像源后,运行以下命令来更新软件包数据库:
1 | sudo pacman -Syy |
注意,更换镜像源后,可能需要重新导入 GPG 密钥,如果在使用 pacman -Syu
时遇到了问题,可以尝试使用 pacman -Syyu
来强制更新数据库或者使用 pacman -Syyuu
来尝试降级部分软件包。
重启电脑安装依旧失败,怀疑是’rime-ice-git-r748.2a2bb24-1-any.pkg.tar.zst’等软件包的问题,尝试手动更新这些包,但是失败了
1 | ❯ sudo pacman -S rime-ice-git |
改用aur库安装也失败
1 | ❯ yay -S rime-ice-git |
强制安装同样失败
1 | ❯ sudo pacman -Syyu |
决定删除报错的软件包再整体更新
1 | sudo pacman -Rns …… |
删除后更新成功
重新检查,怀疑是在 pacman -Syu 更新时调用缓存,但是缓存已过期或者正在尝试安装版本已更新且本地缓存中存在旧链接的软件包,收到先前的错误
清个缓存
1 | ❯ sudo pacman -Sc |
但是单独安装这些包依旧失败,所以最后只是认为镜像源中没有这些软件包(镜像源问题
发现在 /etc/pacman.conf 里面有
1 | [archlinuxcn] |
是导致使用清华源下载的原因
改用中科大源
1 | Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch |
更新数据库
1 | sudo pacman -Syy |
下载先前未能下载的软件包,下载成功
三、依赖冲突问题
情况:依旧是好久没有滚Arch 所以真的要养成良好的更新习惯,然后出现了依赖冲突,导致icu未能更新,以至于报以下错误:
pacman:error while loading shared libraries: libicuuc.so.76:cannot open shared object file :no such file or directory
接下来是,pacman输出各种error,后来系统终端与软件等卡死
P.S.其实这个时候应该还能进入tty尝试修复,但当时以为是其他原因(卡键等)选择重启系统,然后迎来了kernel panic ……

解决:重装内核以修复
插u盘(以前装系统搞的Ventoy刻录盘),进live系统,挂载受损的系统
1
2
3# 查看磁盘情况
lsblknvme1n1p1nvme1n1p1
fdisk -l进入系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 如果有两个盘一定要先执行上面命令查看一下,注意分辨磁盘设备号:
设备 起点 末尾 扇区 大小 类型
/dev/nvme0n1p1 …… …… …… …… EFI 系统
/dev/nvme0n1p2 …… …… …… …… Microsoft 保留
/dev/nvme0n1p3 …… …… …… …… Microsoft 基本数据
/dev/nvme0n1p4 …… …… …… …… Microsoft 基本数据
/dev/nvme0n1p5 …… …… …… …… Windows 恢复环境
设备 起点 末尾 扇区 大小 类型
/dev/nvme1n1p1 …… …… …… …… Microsoft 保留
/dev/nvme1n1p2 …… …… …… …… Microsoft 基本数据
/dev/nvme1n1p3 …… …… …… …… EFI 系统
/dev/nvme1n1p4 …… …… …… …… Linux swap
/dev/nvme1n1p5 …… …… …… …… Linux 文件系统这里的设备号nvme0n1p1与nvme1n1p1可能相互会变,如果挂载错误可能破坏分区数据(比如装Linux系统的时候把原来的windows系统分区格式化了)
挂载分区
先前安装系统参考的是 ArchLinux简明指南,所以这里挂载也一样
1
2
3
4
5
6
7
8
9
10
11# /dev/nvme1n1p3 是/boot启动目录
# /dev/nvme1n1p4 是/swap交换分区目录
# /dev/nvme1n1p5 是/根目录
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme1n1p5 /mnt # 挂载 / 目录
mkdir /mnt/home # 创建 /home 目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme1n1p5 /mnt/home # 挂载 /home 目录
mkdir -p /mnt/boot # 创建 /boot 目录
mount /dev/nvme1n1p3 /mnt/boot # 挂载 /boot 目录
swapon /dev/nvme1n1p4 # 挂载交换分区
df -h # 查看挂载情况进入受损的硬盘系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20arch-chroot /mnt
# 查看内核是否存在
ls /boot
# 没有的话需要重装内核
pacman -S linux # 我的是linux-zen
# 更新grub配置,重新生成引导区
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
# 回到live系统
exit
# 重新生成分区挂载配置文件
rm -rf /mnt/etc/fstab
genfstab -U /mnt >> /mnt/etc/fstab
# 关机重启
reboot解决依赖冲突
上面是一般情况下内核受损重装修复内核,但是这次原因略有不同,见[ICU 76.1.1 Issue]
由于是icu与electron等的依赖冲突所以按照上述方式进入受损的硬盘系统使用pacman或yay命令依旧会出现如下报错:
pacman:error while loading shared libraries: libicuuc.so.76:cannot open shared object file :no such file or directory
必须先更新好icu才可以(pacman依赖于icu)
所以需要在外部(live系统)使用pacman或者pacstrap命令进行更新
1
2
3
4
5
6
7
8
9# 更新icu
pacman -r /mnt -S icu
# 或使用 pacstrap /mnt icu
# 可能需要删除或替换冲突包 如electron可以换成electron-bin不与icu冲突
pacman -r /mnt -Rns xxx
# 或使用 pacstrap /mnt icu
# 更新完icu后可以再进入硬盘系统完整更新一遍修复内核
arch-chroot /mnt
pacman -Syu其他
- 修复全程连接网线,如果只有wifi连接详见 ArchLinux简明指南
- 天选笔记本的bios是开机按F2键进入的(进入改变启动顺序进live系统)
- 没找到electron33-bin(obsidian依赖需要),但是后来重装没有再冲突报错