Grubは、最後に起動したOSを記憶するように設定できますか?


17

通常、ブートメニューに2〜3個のOSがあります。

  • Ubuntu 10.04
  • Windows 7
  • [Ubuntu 10.04 Netbookなどの3番目のオプション]

デフォルトの選択肢(この場合はWindows 7)以外のOSを使用していて、再起動すると、GrubはUbuntu 10.04で起動します。これは起こるべきではありません。Windows7で再起動するとき、Windows 7のままにしておきたいと思います。Grubを設定して、最後の選択を記憶して起動する方法はありますか?

別の方法として、Grub がこれを行うのはリブートしたときだけである(コンピューターを最初にオンにしたときではなく)こともできます。私はこれが不可能かもしれないことを理解しているので、私は単純な最後の選択を覚えて満足しています。

回答:


20

元のGrub では、/ boot /grub/menu.lstでデフォルトキーワードを「saved」に設定し、各ブートメニューエントリでsavedefaultキーワードを使用して、これを行います。


更新
Grub2はもう少し複雑です。また、まだ進化しているため、Ubuntu 9.10と10.04は両方ともGrub2を使用していますが、物事をパッケージ化して構成する方法には、物事を面白くするための十分な違いがあります。

両方でsavedefaultトリックを行う方法は次のとおりです。

  • Ubuntu 10.04:
    9.10の方向はトリックです。明idははるかに簡単です。参照してくださいUbuntuのヘルプをもっと血みどろの詳細については。/ etc / default / grubで 2つの変更を行う必要があります

    1. 読み込みラインの変更GRUB_DEFAULT=0にはGRUB_DEFAULT=saved

    2. 次の行を追加します GRUB_SAVEDEFAULT=true

    それでおしまい。実際、それほど悪くないですか?実行することを忘れないでくださいsudo update-grub

  • Ubuntu 9.10:
    これを機能させるために、Ubuntuフォーラムにいくつかのハックがあります。どうやらsavedefaultキーワードは、GRUBのv1.97でバギーでした。 Ubuntuフォーラムのこの投稿では、1つの方法を提供しています。 別の投稿では、少し簡単な方法を提案しています。

    1. / etc / default / grubにGRUB_DEFAULT = savedを設定します

    2. これらの2行を/etc/grub.d/40_custom(「exec tail」行の後の下部近く)に配置します。

      saved_entry=${chosen}
      save_env saved_entry
      

    Ubuntu 9.10でこのメソッドをテストしましたが、動作します。次のブートでは、最後に選択されたエントリが自動的に強調表示されます。タイムアウトと組み合わせると、最後に起動したOSが自動的に起動します。

そして、走ることを忘れないでくださいsudo update-grub。変更が完了したら。それは重要であり、恥ずかしいほど忘れがちです。


Grubには再起動コールドブートを区別する方法がないため、Grubは単独で再起動することはできません。ただし、Linuxを起動する場合sudo grub-set-default Nは、(Nは0から始まる起動メニューエントリの番号です)を使用して、エントリNを(保存されたエントリではなく)次の起動時に選択するように設定できます。

理論的には、Linuxにシャットダウンするように指示したときに(ただし、再起動するように指示したときではなく)grub-set-defaultを実行するシャットダウンルーチン(おそらくUpstartスクリプト)にフックしたものをハッキングできます。ただし、Windowsをシャットダウンしても同じ機能は得られません。

GrubをFAT32またはNTFS / bootパーティションにインストールするGrub4DOSまたはGrub1のテクニックについて聞いたことがあります。これにより、Windowsからgrub-set-defaultを実行できるようになり、Windowsログオフスクリプトから呼び出すことができます。前回私がそれについて何かを見たとき、これはGrub2では不可能でした。それは今では変わっているかもしれません。


解決策#2はうまくいかないようです。/ etc / default / grubを編集し、/ etc / grub.d / 40_customを編集して実行しましたsudo update-grub。Windows 7を起動してシャットダウンし、コンピューターの電源を入れてテストしました。Ubuntu 10.04(デフォルト)が選択されたままです。私はまた、「saved」の代わりに「etc」/「default」/「grub」に「saved_entry」を入れてみました(grub configスクリプトの動作はわかりません)が、助けにはなりませんでした。解決策1はまだ試していません。
マシュー

@Matthew:/etc/grub.d/40_customが実行可能であることを再確認します(そうでない場合は、sudo chmod + x)。ええ、Ubuntu 10.04マシンで試してみましたが、そこでも動作しません。なぜにチェックイン...
キホーテいんちき

@マシュー:わかった。申し訳ありませんが、私はLucidとKarmicが異なることを知っていたはずです。(ああ。そして、あなたが実行することを確認してくださいsudo update-grub。)
クワックキホーテ

3

この投稿はおそらくあなたにとって役に立つでしょう、それはかなり自明です。10.04と9.10は同じGRUBバージョンを使用しているため、状況はまったく同じである必要があります。

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