Arch-Linux

核心升級時自動在 GRUB / GRUB2 菜單中包含 N 個最新核心版本

  • December 26, 2013

我喜歡 Ubuntu 的地方在於 GRUB 菜單總是允許我在啟動時選擇最新的(預設)或次新的(等)核心版本。

在 Arch Linux 中,預設情況下我不能這樣做。唯一的選項是正常和備份映像,它們都引導最新的核心。如何在 Arch 中實現類似 Ubuntu 的行為?我使用 Grub 和 Grub2,但我想我不必過多配置引導載入程序。它可能會/boot自動包含在菜單中找到的圖像。不過,我可能是錯的。

所以,從最重要到最不重要,我需要的是:

  1. 升級過程中創建的新核心映像mkinitcpio不會覆蓋之前的核心映像;
  2. 最新的核心作為預設選項出現在引導載入程序菜單中;
  3. 非常舊的版本被排除在菜單之外或隱藏在“舊版本”菜單項中(不是那麼重要)

怎麼辦?我應該查看mkinitcpio配置還是pacman配置?我實際上已經嘗試過查看兩者的配置文件,到目前為止還沒有任何想法。

看到這個錯誤: https ://bugs.archlinux.org/task/16702#comment80122

這篇博文:http: //losinggeneration.homelinux.org/2009/10/16/why-arch-linuxs-kernel-upgrades-suck/

到目前為止,我還沒有找到一個好的解決方案,但如果我找到了,我會更新。

除了 grub、核心和 initrd 之外,要記住的一件事是 /usr/lib/modules/。當 linux 包更新舊包時,它會刪除它在 /usr/lib/modules/ 中的文件夾,而新核心會添加它的新模組。如果您希望兩個核心都工作,那麼您將需要兩組模組。並且 /usr/src/ 包含核心標頭檔(需要建構新模組,例如 nvidia 驅動程序),因此您可能也希望保留這些標頭檔。

我猜的步驟是這樣的:

  1. 檢測 linux 包將被升級。

2.備份解除安裝時要刪除的內容(/usr/src/ $ (uname -r), /usr/lib/modules/ $ (uname -r), /boot/{vmlinuz-linux,initramfs-linux.img,initramfs-linux-fallback.img})

  1. 讓 pacman 升級

  2. 恢復 2 中的所有內容(可能給/boot

  3. 編輯 grub 或其他內容。

替代步驟(不太好)

  1. 讓 pacman 更新

  2. 檢測核心已更新

  3. 從 /var/cache/packman/pkg/linux-${previous_version}-pkg.tar.xz 提取 /usr/src/, / usr/lib/{modules,extramodules} 和 /boot/vmlinuz(顯然是在 /boot 中重命名)

  4. 使用 -k 選項執行 mkinitcpio 以建構舊的 init

  5. 編輯 grub 或其他

在這種替代方法中,您會失去您的第 3 方模組(虛擬機、ATI/Nvidia 等),但它可能是您可以從 cron 執行並自動檢測核心更新發生的東西。

引用自:https://unix.stackexchange.com/questions/50579