核心升級時自動在 GRUB / GRUB2 菜單中包含 N 個最新核心版本
我喜歡 Ubuntu 的地方在於 GRUB 菜單總是允許我在啟動時選擇最新的(預設)或次新的(等)核心版本。
在 Arch Linux 中,預設情況下我不能這樣做。唯一的選項是正常和備份映像,它們都引導最新的核心。如何在 Arch 中實現類似 Ubuntu 的行為?我使用 Grub 和 Grub2,但我想我不必過多配置引導載入程序。它可能會
/boot
自動包含在菜單中找到的圖像。不過,我可能是錯的。所以,從最重要到最不重要,我需要的是:
- 升級過程中創建的新核心映像
mkinitcpio
不會覆蓋之前的核心映像;- 最新的核心作為預設選項出現在引導載入程序菜單中;
- 非常舊的版本被排除在菜單之外或隱藏在“舊版本”菜單項中(不是那麼重要)。
怎麼辦?我應該查看
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 驅動程序),因此您可能也希望保留這些標頭檔。
我猜的步驟是這樣的:
- 檢測 linux 包將被升級。
2.備份解除安裝時要刪除的內容(/usr/src/ $ (uname -r), /usr/lib/modules/ $ (uname -r), /boot/{vmlinuz-linux,initramfs-linux.img,initramfs-linux-fallback.img})
讓 pacman 升級
恢復 2 中的所有內容(可能給/boot
編輯 grub 或其他內容。
替代步驟(不太好)
讓 pacman 更新
檢測核心已更新
從 /var/cache/packman/pkg/linux-${previous_version}-pkg.tar.xz 提取 /usr/src/, / usr/lib/{modules,extramodules} 和 /boot/vmlinuz(顯然是在 /boot 中重命名)
使用 -k 選項執行 mkinitcpio 以建構舊的 init
編輯 grub 或其他
在這種替代方法中,您會失去您的第 3 方模組(虛擬機、ATI/Nvidia 等),但它可能是您可以從 cron 執行並自動檢測核心更新發生的東西。