1937 字
5 分钟
自用Archlinux防”滚挂“小技巧
2026-04-15

前言#

在 Arch Linux 的世界里,有一个流传已久的“梗”叫“滚挂”
它指的是在一次 sudo pacman -Syu(系统全面更新)后,系统因为各种原因无法正常启动或运行,不得不踏上抢救之路,这种调侃背后,正是 Arch 滚动发布模式的双刃剑特性:用户能第一时间享受最新软件,也必须承受因激进更新带来的潜在不稳定性,(换其它基于Arch的发行版如ManjaroEndeavourOS等(反正很多),已经简化且易用了)
但是我还是对Arch Linux情有独钟

本文将为你提供“防止滚挂”的方案,包括我遇到的一些问题
当然,Arch Wiki中也有很多很多有帮助的信息(包括需要人工干预的新闻档案

CAUTION

root权限很危险,请不要执行你不明白的命令,未知的命令或脚本可以先在虚拟机里实验 🤓


Arch Linux 的设计哲学是 KISS(Keep It Simple, Stupid)
SimpleStupid是针对已经熟悉它的人而言的,初入门者选择 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 WikiPacman
很全🤓

一般做法#

使用全量更新命令

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-headers
TIP

安装内核建议把内核头文件一并安上(内核包名后缀-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 informant
informant read

或者手动访问 Arch 新闻页

2.更新密钥#

#更新AUR的把archlinux-keyring改成archlinuxcn-keyring
sudo pacman -Sy archlinux-keyring
IMPORTANT

密钥是唯一可以单独更新的

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-headers
    sudo grub-mkconfig -o /boot/grub/grub.cfg
  • 重启切回 zen 内核(或继续用 lts),完成更新

TIP

如果有必要
可以重新生成 initramfs 镜像(sudo mkinitcpio -P

  • 生成 initramfs 镜像常见用途
    • 更新内核后重新生成 initramfs:确保系统能够正常启动
    • 修复启动问题:当 initramfs 文件损坏时,重新生成可以解决问题

保险方式#

后悔药:Timeshift 系统快照#

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 目录下
    # 假设 /dev/sda2 是根分区,/dev/sda1 是 /boot 分区
    mount /dev/sda2 /mnt
    mount /dev/sda1 /mnt/boot # 如果 /boot 是独立分区
    #挂载必要的文件系统
    mount -t proc /proc /mnt/proc
    mount -t sysfs /sys /mnt/sys
    mount --rbind /dev /mnt/dev
    参考Archwiki的Arch Chroot使用指南
  • Step 3: Chroot 进入系统:使用 arch-chroot 脚本切换到你的系统环境
    arch-chroot /mnt
  • Step 4: 执行修复:你现在已身处“损坏”的系统内部,可以尝试重新执行完整的系统更新、重建 initramfs、更新grub引导等操作

Last#

希望本文能帮助你在 Arch Linux 的世界里玩得开心! 祝你 Rolling 永不挂,Linux 之旅愉快! Happy Arch Linux, Happy Rolling!

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

自用Archlinux防”滚挂“小技巧
https://text.lilystar.cn/posts/archlinux-update/
作者
Lily
发布于
2026-04-15
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录