再起動する前に、Windowsで再起動したいとGRUBにどのように通知できますか?

再起動する前に、Windowsで再起動したいとGRUBにどのように通知できますか?

私はデュアルブートLinux / Windowsシステムをセットアップし、あるシステムから別のシステムに頻繁に切り替えます。 GRUBプロンプトで停止せずにWindowsに直接再起動するために、メニューの1つにメニュー項目を追加できるかどうか疑問に思います。

私は見たこの問題フォーラムでは、これはまさに私が望むものですが、私の場合ではなくliloを処理しています。

GRUBメニューの基本項目を修正して再起動する解決策を思いつきましたが、いくつかの欠点があり、よりきちんとした選択肢があるかどうかを知りたいです。

(また、WindowsからLinuxに直接起動するソリューションにも興味がありますが、これはおそらくもっと難しく、ここにはありません。

修正する誰が尋ねたと思います。エマルジョン/boot/grub/grubenvこれが提案された答えであれば、編集してgrub-reboot実行することをお勧めします。 )grub-set-defaultgrub-editenv

どんなアドバイスもよろしくお願いします。

修正する:

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

実行しようとしましたが、grubonceコマンドが見つかりませんでした。リポジトリを検索しましたが、何も見つかりませんでした。私はLinux Mintを使っていますが、そうかもしれません...

man grub-reboot私の要件にも合うようですgrubonce。また、どこでも使用できます(少なくとも私は grub パッケージの一部だと思います)。 2つの関連コマンドが表示されます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

これはどちらも同じことを意味します(1つは一時的で1つはそうではありません)。

驚くべきことに、私が試したとき:

sudo grub-reboot 4
sudo reboot now

動作しません。まるで何もしないようです。通常どおりメニューを表示し、最初の項目を選択し、10秒後にその項目を開始すると言います。

もう一度試してみましたが、私が間違って書いたのではないかと思いました(最初から始めましたか?)。当時は、メニュー画面でのみ停止して起動するには、コンピュータをハードリセットする必要がありました。

誰もがこれを試してみて、私だけそのようなものであることを確認できたら、非常に感謝します。 (ミントはいつも私を悲しくしました。これは変化のための良い機会になります:P)。

のコードを読むと/boot/grub/grub.cfgこれが行く道だと思われますが、私が観察したところによると、これらの設定は無視されます。

答え1

  1. /etc/default/grubを編集し、次のようGRUB_DEFAULT=0に置き換えます。GRUB_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>ください<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 Advanced Options」が親メニューで、「Ubuntu, with Linux 4.13.0-26-generic」がサブメニューです。

関連情報