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 は 4 番目です。

うまくいかなかったときは、次のことを試しました:

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対応する行の ID を使用する必要がありますmenuentry

注記 "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-b4ug-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-b6c7-4553-815f-67afdc924a98"

  1. ファイルを保存します。

  2. 次に、次のコマンドを入力します。

    sudo update-grub

答え3

OK! 解決策を見つけました。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 を開き、そこから目的のカーネルを選択すると、完了です! :)

答え4

GRUB_DEFAULT挿入に適したすべてのUbuntuカーネルをリストする小さなbash関数 /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"

次に、1つ選択して貼り付け /etc/default/grub、実行しupdate-grubて再起動します。

関連情報