再起動する前に、GRUB に Windows を再起動したいことをどのように伝えればよいでしょうか?

再起動する前に、GRUB に Windows を再起動したいことをどのように伝えればよいでしょうか?

私はデュアル ブートの Linux/Windows システムをセットアップしており、頻繁に一方から他方に切り替えています。GRUB プロンプトで停止せずに、メニューの 1 つに Windows を直接再起動するメニュー項目を追加できないかと考えていました。

私が見たこの質問フォーラムでは、まさにそれが私が望んでいることですが、それは lilo を扱うことであり、私のケースではありません。

GRUB メニューのデフォルト エントリを変更して再起動するという解決策を考えましたが、いくつか欠点があり、よりクリーンな代替手段があるかどうか疑問に思っていました。

(また、Windows から直接 Linux を起動するソリューションにも興味がありますが、これは難しいかもしれないので、ここでは取り上げません。とにかく、1 つの方法で設定しておけば、他の方法をデフォルトとして設定できます。

アップデート誰かが尋ねたようだ同様の質問、そして、それらが提案された回答である場合、私は編集して/boot/grub/grubenvgrub-rebootそうgrub-set-defaultするかもしれませんgrub-editenv

何かヒントがあれば、よろしくお願いします。

アップデート:

これは私の GRUB バージョンです:(GRUB) 1.99-12ubuntu5-1linuxmint1

を実行してみましたがgrubonce、コマンドが見つかりません。リポジトリで検索しても何も見つかりません。Linux Mint を使用しているので、それが原因かもしれません...

を見るとman grub-reboot、 と同様に、私の希望どおりに機能しているように見えます。 また、どこでも使用できます (少なくとも私にとってはそうです。grub パッケージの一部だと思います) 。および というgrubonce2 つの関連コマンドを確認しました。grub-editenvgrub-set-default

sudo grub-set-default 4を実行した後、 を実行するとgrub-editenv list次のような結果になることがわかりました。

saved_entry=4

を実行するとgrub-reboot 4、次のようになります。

prev_saved_entry=0
saved_entry=4

つまり、両方とも同じことを行います (一方は一時的、もう一方はそうではありません)。

驚いたことに、私が試してみると:

sudo grub-reboot 4
sudo reboot now

何もしていないかのように動作しませんでした。通常どおりメニューが表示され、最初のエントリが選択され、10 秒後にこのエントリが起動すると表示されました。

もう一度試してみましたが、間違ったエントリを書き込んだかもしれないと思いました (ゼロベースですよね?)。そのときは、メニュー画面でハングしてしまい、起動できるように PC をハードリセットする必要がありました。

もし誰かがこれを試して、私だけなのか確認していただけるとありがたいです。(ミントは私にとっては大変なことなので、変更するにはいい機会です :P)。

のコードを読むと/boot/grub/grub.cfg、これが正しい方法のように思えますが、私の観察では、これらの設定が無視されているだけです...

答え1

  1. /etc/default/grubを編集してGRUB_DEFAULT=0GRUB_DEFAULT=saved
  2. sudo update-grub
  3. コマンドは次のようになります:

    sudo grub-reboot "$(grep -i windows /boot/grub/grub.cfg|cut -d"'" -f2)" && sudo reboot
    

    かわいい~/.bashrcまたはの機能は.bash_aliases次のようになります。

    # Reboot directly to Windows
    # Inspired by http://askubuntu.com/questions/18170/how-to-reboot-into-windows-from-ubuntu
    reboot_to_windows ()
    {
        windows_title=$(grep -i windows /boot/grub/grub.cfg | cut -d "'" -f 2)
        sudo grub-reboot "$windows_title" && sudo reboot
    }
    alias reboot-to-windows='reboot_to_windows'
    

    編集者注:

    • 私は交換しました非推奨のバッククォート``) 構築によって$(...)

    • 全体的に、現在の状況に合わせて書き直しました。POSIX (ウィキ)標準に準拠し、ついでにいくつかの小さな変更も行いました。

    • 完全性を期すため、比較のために以下の関数はそのまま残しました。


grub.conf に Windows 用の行が複数含まれている場合、次の関数は、で始まる行のみを処理しmenuentry、Windows を参照して最初の行だけを選択します。

function my_reboot_to_windows {
    WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
    sudo grub-reboot "$WINDOWS_TITLE"
    sudo reboot
}

答え2

コマンドが機能するためにはgrub-reboot、いくつかの必要な構成変更を行う必要があります。

  • grubのデフォルトエントリは に設定する必要がありますsaved。これを設定する場所の1つはGRUB_DEFAULT=/etc/default/grub
  • grub-set-defaultデフォルトのエントリを通常使用するエントリに設定する場合に使用します。
  • grub 設定を更新します (例update-grub)。

これで初期設定は完了です。今後は、grub-reboot <entry>を 1 回起動するだけで済みます<entry>

答え3

Ubuntu 20.04/22.04 用にこれを実行するためのツールを作成しました: https://github.com/mendhak/grub-reboot-picker

ここに画像の説明を入力してください

以前の Ubuntu でも動作するかもしれませんが、テストしたことはありません。

答え4

@jw013 に同意します。また、メニュー タイルを grub-reboot に渡すこともできます (親メニューのタイトルを含む)。例:

$ sudo grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 4.13.0-26-generic"
$ sudo reboot

「Ubuntu の詳細オプション」が親メニューで、「Ubuntu、Linux 4.13.0-26-generic 付き」がサブメニューです。

関連情報