前言
在 Arch Linux 的世界里,有一个流传已久的“梗”叫“滚挂”
它指的是在一次 sudo pacman -Syu(系统全面更新)后,系统因为各种原因无法正常启动或运行,不得不踏上抢救之路,这种调侃背后,正是 Arch 滚动发布模式的双刃剑特性:用户能第一时间享受最新软件,也必须承受因激进更新带来的潜在不稳定性,(换其它基于Arch的发行版如Manjaro、EndeavourOS等(反正很多),已经简化且易用了)
本文将为你提供“防止滚挂”的方案,包括我遇到的一些问题
当然,Arch Wiki中也有很多很多有帮助的信息(包括需要人工干预的新闻档案)
CAUTIONroot权限很危险,请不要执行你不明白的命令,未知的命令或脚本可以先在虚拟机里实验 🤓
Arch Linux 的设计哲学是 KISS(Keep It Simple, Stupid)
Simple和Stupid是针对已经熟悉它的人而言的,初入门者选择 KISS 发行版时应格外谨慎
pacman包管理
我一般不更新 AUR,所以本文不涉及 AUR 相关内容 😋
- 基础参数
在用户命令行执行
$ pacman -h用法: pacman <操作> [...]操作: pacman {-h --help} pacman {-V --version} pacman {-D --database} <选项> <软件包> pacman {-F --files} [选项] [文件] pacman {-Q --query} [选项] [软件包] pacman {-R --remove} [选项] <软件包> pacman {-S --sync} [选项] [软件包] pacman {-T --deptest} [选项] [软件包] pacman {-U --upgrade} [选项] <文件>
使用 'pacman {-h --help}' 及某个操作以查看可用选项- 说人话就是
| 操作 | 长格式 | 功能说明 |
|---|---|---|
-h | --help | 显示帮助信息 |
-V | --version | 显示版本信息 |
-D | --database | 操作包数据库,修改已安装包的属性或检查数据库一致性 |
-F | --files | 查询文件数据库,查找某个文件属于哪个包 |
-Q | --query | 查询本地包数据库,查看已安装的包及其信息 |
-R | --remove | 从系统中移除软件包 |
-S | --sync | 从远程仓库同步并安装软件包 |
-T | --deptest | 检查依赖关系是否满足 |
-U | --upgrade | 从本地文件或 URL 升级/安装包 |
- 举例比较常用的命令
| 使用场景 | 命令 |
|---|---|
| 全量更新系统 | sudo pacman -Syu |
| 安装软件包 | sudo pacman -S <包名> |
| 移除软件包(保留配置) | sudo pacman -R <包名> |
| 移除软件包及依赖 | sudo pacman -Rs <包名> |
| 移除软件包及配置 | sudo pacman -Rns <包名> |
| 搜索软件包 | pacman -Ss <关键词> |
| 查看包详细信息 | pacman -Qi <包名> |
| 查找文件属于哪个包 | pacman -Qo <文件路径> |
| 列出孤包 | pacman -Qdt |
| 清理孤包 | sudo pacman -Rs $(pacman -Qtdq) |
| 清理包缓存(保留最新版本) | sudo pacman -Sc |
| 清理包缓存(删除所有缓存) | sudo pacman -Scc |
| 列出显式安装的包 | pacman -Qe |
| 查看包安装的文件 | pacman -Ql <包名> |
文章里关于 pacman 配置的写法及命令
参考了 Arch Wiki 上 Pacman
很全🤓
一般做法
使用全量更新命令
sudo pacman -Syu更稳的方法:双内核更新
我装了两个内核,更新切换,防止启动不了
TIP针对日常使用
需要更新内核的时候适用
内核
内核分支(常用,写的不全)
| 内核类型 | 核心特点 | 包名 |
|---|---|---|
| 主线/稳定版 (Mainline/Stable) | 最新功能,更新快 | linux |
| 长期支持版 (LTS) | 长期维护,稳定性优先 | linux-lts |
| Zen 内核 | 优化桌面性能和响应速度 | linux-zen |
查看当前的内核
uname -r我写的时候就用的6.19.11-zen1-1-zen(zen内核)
安装新内核,以lts内核为例(如果需要)
sudo pacman -S linux-lts linux-lts-headersTIP安装内核建议把内核头文件一并安上(内核包名后缀
-headers就是对应的头文件)
更新grub配置:(安装内核后会自动检测,但手动执行一次更保险)确保在 GRUB 启动菜单中能看到
Arch Linux (linux-lts)
sudo grub-mkconfig -o /boot/grub/grub.cfg修改pacman的参数:选择性忽略特定软件包
之前我因为滚内核滚挂过,所以选择在更新时忽略内核包
我习惯用vim,如果不习惯,把vim改成其他的就好
编辑 /etc/pacman.conf:
sudo vim /etc/pacman.conf#去掉下面的注释(字面意思就是忽略包)#IgnorePkg
#写入需要忽略更新的包IgnorePkg = linux-zen linux-zen-headers linux-lts linux-lts-headers
# 可选:提高并行下载线程数ParallelDownloads = 10设置以后,如果忽略更新的包有更新,pacman会问你是否忽略这个包
正式更新流程
1.先看新闻
可以用 informant 工具在更新前阅读新闻:
(虽然是全英语的就是了,还有就是要注意日期是否过时)
paru -S informantinformant read或者手动访问 Arch 新闻页
2.更新密钥
#更新AUR的把archlinux-keyring改成archlinuxcn-keyringsudo pacman -Sy archlinux-keyringIMPORTANT密钥是唯一可以单独更新的
3.更新系统软件包(忽略内核)
sudo pacman -Su请忽略内核更新
4.内核更新与切换
-
以我为例:我同时安装了
linux-zen(当前在用)和linux-lts(备用)查看当前的内核
uname -r输出
6.19.11-zen1-1-zen说明我在用 zen 内核 -
如果 lts 内核 有更新,可以先更新它(不影响正在运行的 zen):
sudo pacman -S linux-lts linux-lts-headers然后更新 GRUB:
sudo grub-mkconfig -o /boot/grub/grub.cfg -
切换内核:重启,在 GRUB 菜单中选择
Arch Linux (linux-lts)进入系统 -
进入 lts 系统后,更新 zen 内核:
sudo pacman -S linux-zen linux-zen-headerssudo grub-mkconfig -o /boot/grub/grub.cfg -
重启切回 zen 内核(或继续用 lts),完成更新
TIP如果有必要
可以重新生成 initramfs 镜像(sudo mkinitcpio -P)
- 生成 initramfs 镜像常见用途
- 更新内核后重新生成 initramfs:确保系统能够正常启动
- 修复启动问题:当 initramfs 文件损坏时,重新生成可以解决问题
保险方式
后悔药:Timeshift 系统快照
Timeshift 是一款强大的系统备份工具,它能像虚拟机快照一样,定期对系统文件和配置进行快照,当更新出现问题时,可以轻松地将整个系统回滚到之前的状态

-
安装 Timeshift:
sudo pacman -S timeshift -
配置建议:
- 快照类型:推荐使用
RSYNC模式(当然我的文件系统是Btrfs,所有我选的就是BTRFS) - 存储位置:选择一个独立分区或外部硬盘
- 计划任务:设置每周或每两周自动创建快照,并保留 3-5 个最新快照即可(手动备份的话就去掉勾选即可)
- 排除目录:默认排除
/home目录,以免个人文件占用额外空间,你的个人文档应该通过其他方式备份
- 快照类型:推荐使用
-
创建与恢复:(系统内有thimeshift图形界面,以下是命令行)
- 创建快照:
sudo timeshift --create --comments "更新前备份" - 恢复快照:
sudo timeshift --restore
- 创建快照:
TIP若系统完全无法启动,可用 Arch Linux 的 Live USB 启动,在 Live 环境中安装 Timeshift 并挂载快照存储分区,即可进行恢复操作
随身携带的 Live USB
Arch Linux 的 Live USB 是系统维护的必备工具,建议常备一个
- 制作方法:从 Arch Linux 官网 下载 ISO 镜像,我使用的是 Ventoy工具写入 U 盘(可以放多个镜像,就很方便)
- 使用场景:
- 系统无法启动时,进入 Live 环境进行修复
- 对硬盘分区、挂载、进行
chroot操作 - 重新安装或修复
bootloader
Chroot
若系统完全无法启动,Chroot 是你的最后防线,它能让你从一个只读 Live 环境,挂载进入你已损坏的系统进行修复
主要是防滚挂,所以Chroot就略提
- Step 1: 启动 Live 系统:插入 Live USB,从中启动你的电脑
- Step 2: 挂载分区:将你硬盘上的根分区(
/)、/boot分区(如有)和/home分区(如有)挂载到 Live 环境的/mnt目录下参考Archwiki的Arch Chroot使用指南# 假设 /dev/sda2 是根分区,/dev/sda1 是 /boot 分区mount /dev/sda2 /mntmount /dev/sda1 /mnt/boot # 如果 /boot 是独立分区#挂载必要的文件系统mount -t proc /proc /mnt/procmount -t sysfs /sys /mnt/sysmount --rbind /dev /mnt/dev - Step 3: Chroot 进入系统:使用
arch-chroot脚本切换到你的系统环境arch-chroot /mnt - Step 4: 执行修复:你现在已身处“损坏”的系统内部,可以尝试重新执行完整的系统更新、重建
initramfs、更新grub引导等操作
Last
希望本文能帮助你在 Arch Linux 的世界里玩得开心! 祝你 Rolling 永不挂,Linux 之旅愉快! Happy Arch Linux, Happy Rolling!
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
