「古い」カーネルをデフォルトのgrubエントリとして設定します


93

テスト用にメインラインカーネルをインストールしました。デフォルトで古いカーネルからブートするようにgrubを設定したいと思います。

GRUB_DEFAULT=0grubの最初のページの設定を行うことができますが、2番目のページ(詳細ページ)の1つのカーネルからデフォルトで起動するように設定するにはどうすればよいですか?

他のソフトウェア(grub-customizerなど)をインストールせずにこれを行うことをお勧めします。

関連質問:
ブートローダーでWindowsをデフォルトとして起動するように設定するにはどうすればよいですか?
GRUBのブート順序を変更するにはどうすればよいですか?


3
@belacqua:重複ではありません。この質問は、grubのオプションの最初のページに存在しない古いカーネルをデフォルトとして設定することに関するものです。
行うには

この方法は、12.10、古いカーネルなどの方法を更新する必要がある場合でも、以前の質問でカバーする必要があるようです
。– belacqua

3
質問のユースケースは異なり、答えは、他の主張された複製には適用されない方法で非常に具体的です。この特定の問題を解決するためにここに来ました。起動順序を変更しない。Windowsを起動することもできません。「重複しない」ための+1。
ロビーバサック

回答:


128

まず、のバックアップコピーを作成します/etc/default/grub。何か問題が発生した場合、既知の正常なコピーに簡単に戻すことができます。

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

次に、選択したテキストエディタ(geditなど)を使用してファイルを編集します。

sudo -H gedit /etc/default/grub

含まれている行を見つけますGRUB_DEFAULT-これは、デフォルトを設定するために編集するものです。必要なカーネルのフルネームを知っている必要があります-例えばUbuntu, with Linux 3.13.0-53-generic-「高度なメニュー」のフルネーム-例えばAdvanced options for Ubuntu

次に、これら2つの文字列を組み合わせて>、次のように設定GRUB_DEFAULTしますGRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"(引用符を含む)。

保存してから、更新されたgrubメニューを作成します。

sudo update-grub

参照:GNU GRUBマニュアル2.02、またはより具体的には、デフォルトの設定に関するセクション15.1.0


注:カーネルとメニューにアクセスするために数字を使用する方法がありますが、カーネルの更新が発生したときに信頼できないため、これは推奨されません。


24
更新の発生時に数値を使用すると問題が発生する場合があります。テキストのデフォルト、つまりGRUB_DEFAULT = "Previous Linux versions> Ubuntu、Linux 3.2.0-18-generic"を使用することをお勧めします
Bealer

27
sudo grub-mkconfig | lessすべての可能なオプションを見るために使用することができます
-Nitz

9
これは良い解決策ですが、さらに良いのは/boot/grub/grub.cfg、そこを開くmanuentryと、すべてが表示されsubmenusます。それらを編集すれば、デフォルトを簡単に設定でき、コンピューターを再起動するときにgrubリストのオプションのタイトルを変更することもできます。
アレクス

7
/boot/grub/grub.cfg使用する正確な名前を決定するために調べることは間違いなく便利です。ただしupdate-grub、パッケージの更新を含め、によって自動的に再生成されるため、このファイルは変更しないでください。
ロビーバサック

18
GRUB_DEFAULTのフォーマットは少し古いです(少なくともUbuntu 14.04.2以降)。実行中update-grubに警告が発生しました:Previous Linux versions>Ubuntu, with Linux 3.13.0-53-genericGRUB_DEFAULTに古いタイトルを使用せず、Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(2.00より前のバージョンの場合)またはgnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(2.00以降の場合)
-Wumms

22

私にとって最良の解決策は、設定することでした/etc/default/grub

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

この設定では、最後に選択された値が次回のブートまで保持されます。新しいカーネルを使用している場合、設定を編集する必要はありません。

再実行することを忘れないでください sudo update-grub

解決策は以下を読むことです: info grub-mkconfig


4
これは素晴らしいです
メフィスト

;行末のセミコロン()について確信していますか?!?
DJCrashdummy

この瞬間に使用したコンピューターを調べることはできませんが、あなたはまさに「;」です。間違っているか不要なようです!
マーティンT.

21

今というAdvancedメニューがUbuntuのではデフォルトで、あなたが使用したいカーネルの前にそれを選択する必要があります>文字を。

設定例:

GRUB_DEFAULT="1>7"

/etc/default/grub再実行しsudo update-grubます。

GRUBメニューエントリの番号はで始まることに注意することが重要0です。したがって、1上記はAdvancedメニューを指します。予防措置として、最初にを設定することもできますGRUB_TIMEOUT=5。ブート時にキーを押してGRUBにアクセスできない場合があります。これは、Memory test代わりに何かを誤ってポイントした場合の安全策です。上記の数値を引用符で囲む必要もあります。それ以外の場合は機能しません。

16.04 LTSでテストしました。


Debianでも機能します。
ローレンスドーリベイロ

カーネルの更新後も最新のカーネルを指すため、この回答は非常に便利です。たとえば、私のセットアップでは1> 0です。つまり、詳細優先リスト(常に最新のカーネル)です。私のシステムはいつか停止して、最新のカーネルでgrubの0エントリを自動的に更新するので、この方法を使用します。
ピーターフレックス

9

デフォルトとして使用するブートオプションを設定できるようにするには、何があるかを知る必要があります...

実際に起動せずにメニューエントリを表示するには、次のようにします。

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16.04
ゼニアル

$ update-grub --version
grub-mkconfig(GRUB)2.02〜beta2-36ubuntu3.17

$ grep -Ei 'submenu | menuentry' /boot/grub/grub.cfg | sed -re "s /(。?) '([^'] +) '。* / \ 1 \ 2 /"
menuentry Ubuntu
サブメニューUbuntuの詳細オプション
    menuentry Ubuntu、Linux 4.4.0-34-genericを使用
    menuentry Ubuntu、Linux 4.4.0-34-generic(アップスタート)
    menuentry Ubuntu、Linux 4.4.0-34-generic(回復モード)
menuentryシステムのセットアップ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.