GRUB_DEFAULT = _ 無法正常運作

GRUB_DEFAULT = _ 無法正常運作

由於核心升級錯誤,我進行了此設定:

GRUB_DEFAULT = 4

/etc/default/grub

比我執行的

sudo setup-grub

然而,這並沒有成功。我想要的版本是 4.2.0-16-generic,因為 4.2.0-18 和 4.2.0-17(實際上未列出)不起作用。在列表中,4.2.0-16 排名第四。

當它不起作用時,我嘗試了以下方法:

GRUB_DEFAULT = "Advanced options for Ubuntu>Ubuntu, with Linux 4.2.0-16-generic"

sudo setup-grub

但是,它仍然無法工作並打開了一個無法工作的核心版本。目前我只能透過 Ubuntu 的高級選項手動存取 4.2.0-16,但我希望它自動加載。您會推薦我什麼解決方案?

輸出dpkg --list | grep linux-image

ii  linux-image-extra-4.2.0-16-generic                          4.2.0-16.19                                amd64        Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii  linux-image-extra-4.2.0-17-generic                          4.2.0-17.21                                amd64        Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii  linux-image-extra-4.2.0-18-generic                          4.2.0-18.22                                amd64        Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii  linux-image-generic                                         4.2.0.18.20                                amd64        Generic Linux kernel image

作為最後 4 個輸出(僅適用於包含核心 4.2.0 的 Ubuntu 15.10)。

答案1

submenu您需要使用相應的和menuentry線路的 ID 。

筆記 ”Ubuntu 的進階選項" 是一個submenu,您需要使用它的 ID。

跑步grep -E "^\\s*(menuentry|submenu) " /boot/grub/grub.cfg

例如,如果輸出是:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-140-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-140-generic-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-140-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-140-generic-init-upstart-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-140-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-140-generic-recovery-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-101-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-101-generic-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-101-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-101-generic-init-upstart-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-101-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-101-generic-recovery-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
menuentry 'Memory test (memtest86+)' {
menuentry 'Memory test (memtest86+, serial console 115200)' {

正確的設定是:

GRUB_DEFAULT="gnulinux-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76>gnulinux-4.4.0-101-generic-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76"

請注意,您也可以使用從 0 開始的編號,但請考慮子選單項目:

GRUB_DEFAULT="1>3"

別忘了跑到update-grub最後。

答案2

  1. 備份目前的 grub。

    sudo cp /etc/default/grub /etc/default/grub.bak

  2. 現在,打開文件。

    sudo gedit /etc/default/grub

  3. 打開另一個終端機並輸入:

    cat /boot/grub/grub.cfg | grep 4.2.0-16

    你會看到這樣一行:

    menuentry 'Ubuntu,使用 Linux 4.2.0-16-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-18-generic-advanced-esx5367c-bugug -19sd-v6j8-ty2hj01ui3kj' {........................

  4. 複製此行並貼上:

編輯自:

GRUB_DEFAULT =“gnulinux-4.2.0-16-generic-advanced-2e2221b2-b6c7-4553-815f-67afdc924a98”

編輯為:

GRUB_DEFAULT =“gnulinux-advanced-2e2221b2-b6c7-4553-815f-67afdc924a98>gnulinux-4.2.0-16-generic-advanced-2e2221b2-bdcc7-16-b8145553”

  1. 儲存文件。

  2. 現在,輸入命令:

    sudo update-grub

答案3

好的!我找到了解決方案。我必須將 PPA 連結到 grub-customizer。

sudo add-apt-repository ppa:danielrichter2007/grub-customizer

比我做的:

sudo apt-get update

下一步是

sudo apt-get install grub-customizer

之後,我透過 unity dash 打開 grub-customizer,然後從那裡選擇所需的內核,tada!

答案4

bash 小函數列出所有適合插入的 Ubuntu GRUB_DEFAULT內核/etc/default/grub

 MENUID=$( grep -E "^\\s*(submenu) " /boot/grub/grub.cfg  | grep -oP "gnuli.*(?=')"    )
grep '(?<=menuentry_id_option ).gnuli\S+' /boot/grub/grub.cfg  -Po | \
    sed "s@'@@g" |grep -vE 'recovery|simple|gnulinux-advanced' | sed "s@^@GRUB_DEFAULT=\"${MENUID}>@; s@\$@\"@"

輸出:

GRUB_DEFAULT="gnulinux-advanced-20dfee37-ad84-49b2-8c69-a54699da855d>gnulinux-6.6.10-usb2-advanced-20dfee37-ad84-49b2-8c69-a54699da855d"
GRUB_DEFAULT="gnulinux-advanced-20dfee37-ad84-49b2-8c69-a54699da855d>gnulinux-5.15.0-35-generic-advanced-20dfee37-ad84-49b2-8c69-a54699da855d"

然後只需選擇一個並貼上 /etc/default/grub並運行update-grub並重新啟動即可。

相關內容