那天下午,行版我盯着用了五年的迁徙情结Ubuntu桌面发呆。熟悉的导航紫色壁纸角落已经出现了像素损坏,就像老朋友的行版衬衫磨破了边。突然萌生的迁徙情结念头像野草一样疯长:“换个发行版试试?”这个决定让我在接下来两周里,和GRUB这个老朋友打了无数次交道——它时而像固执的导航守门人,时而像可靠的行版向导。

为什么我们总想换个“新家”?迁徙情结

在咖啡厅见到搞运维的老张,他听说我要换发行版,导航眼镜片后闪着狡黠的行版光:“又痒痒了?我今年已经换了三个发行版了。”确实,迁徙情结Linux用户多少都有这种“迁徙情结”:

  • 软件包管理之争:有人受不了apt的导航依赖地狱,转头投入pacman的行版怀抱
  • 桌面环境的诱惑:GNOME的极简派和KDE的功能党永远在互相安利
  • 滚动更新的魅力:总有人想体验“永远在最新版本”的刺激感
发行版软件包管理默认桌面更新策略
Ubuntuapt/dpkgGNOME半年周期
Fedoradnf/rpmGNOME半年滚动
Archpacman无默认持续滚动

当迁徙遇到GRUB:启动器的前世今生

记得第一次在实体机安装Linux时,安装程序问我要不要把GRUB装到MBR。迁徙情结当时手一抖选了“否”,导航结果第二天抱着笔记本去电脑城重装系统——这就是我交的第一笔“GRUB学费”。

GRUB的三大生存法则

  • 多系统和平共处:它能记住每个操作系统藏在哪个硬盘分区
  • 内核版本管理员:即使你装了十个内核版本,它也能给你列菜单
  • 急救小能手:当系统启动失败时,那个grub>提示符就是最后的希望

迁徙前的生存指南

迁移当天,我像准备野外露营一样列了张清单:

  • dd把整个EFI分区备份到移动硬盘
  • /etc/fstab打印出来贴在显示器边框上
  • 在手机里存好LiveUSB的创建教程——别问我怎么想到的

分区表的罗生门

新旧系统交替时最容易翻车的就是分区方案。我的500GB固态硬盘现在看起来像块瑞士奶酪:

  • 前1GB留给EFI系统分区(ESP)
  • 中间200GB是Ubuntu留下的ext4
  • 最后50GB藏着Windows的NTFS
  • 新划出来的120GB准备迎接Arch

实战迁移:当GRUB遇上新邻居

安装程序进行到“引导加载程序”这一步时,我的手悬在回车键上三分钟。想起《Linux就该这么学》里的警告:“错误的引导设置可能让所有系统消失。”

GRUB重装四部曲

  1. 进入新系统的Live环境
  2. chroot到新系统分区
  3. 运行grub-install /dev/sda
  4. update-grub生成新配置

当熟悉的GRUB菜单重新出现,包含新旧系统时,那种成就感不亚于拼好2000块的拼图。

那些年我们踩过的GRUB坑

症状常见原因急救命令
黑屏无菜单GRUB未安装grub-install
进入救援模式分区UUID变更set root=(hd0,gpt2)
内核panicinitrd未更新mkinitcpio -P

配置文件里的文字游戏

有次更新内核后启动失败,发现/boot/grub/grub.cfg里写着linux /vmlinuz-5.15-generic,而实际文件名是vmlinuz-5.15.0-76-generic。原来update-grub时有个符号链接断了,这个发现让我觉得自己像个侦探。

当GRUB遇上UEFI新世界

现在的电脑基本都转向UEFI启动,这让事情变得有点不同。有次在GPT硬盘上装系统,GRUB死活不认,后来发现是忘了创建BIOS启动分区。现在的ESP分区就像机场的中转大厅:

  • 每个系统都在这里存了登机牌
  • GRUB是地勤,负责核对每个航班的乘客
  • efibootmgr成了值机柜台的控制面板

窗外的夕阳把键盘染成金色,新系统的终端提示符闪烁着。我抿了口凉透的咖啡,在笔记里写下:“第7次GRUB修复成功”。迁移就像搬家,总有些小物件会掉在旧房子的角落,但好在有GRUB这个尽职的导航员,永远记得所有系统藏在哪个房间。