
私はデュアル ブートの Linux/Windows システムをセットアップしており、頻繁に一方から他方に切り替えています。GRUB プロンプトで停止せずに、メニューの 1 つに Windows を直接再起動するメニュー項目を追加できないかと考えていました。
私が見たこの質問フォーラムでは、まさにそれが私が望んでいることですが、それは lilo を扱うことであり、私のケースではありません。
GRUB メニューのデフォルト エントリを変更して再起動するという解決策を考えましたが、いくつか欠点があり、よりクリーンな代替手段があるかどうか疑問に思っていました。
(また、Windows から直接 Linux を起動するソリューションにも興味がありますが、これは難しいかもしれないので、ここでは取り上げません。とにかく、1 つの方法で設定しておけば、他の方法をデフォルトとして設定できます。
アップデート誰かが尋ねたようだ同様の質問、そして、それらが提案された回答である場合、私は編集して/boot/grub/grubenv
、grub-reboot
そうgrub-set-default
するかもしれませんgrub-editenv
。
何かヒントがあれば、よろしくお願いします。
アップデート:
これは私の GRUB バージョンです:(GRUB) 1.99-12ubuntu5-1linuxmint1
を実行してみましたがgrubonce
、コマンドが見つかりません。リポジトリで検索しても何も見つかりません。Linux Mint を使用しているので、それが原因かもしれません...
を見るとman grub-reboot
、 と同様に、私の希望どおりに機能しているように見えます。 また、どこでも使用できます (少なくとも私にとってはそうです。grub パッケージの一部だと思います) 。および というgrubonce
2 つの関連コマンドを確認しました。grub-editenv
grub-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
- /etc/default/grubを編集して
GRUB_DEFAULT=0
、GRUB_DEFAULT=saved
sudo update-grub
コマンドは次のようになります:
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 付き」がサブメニューです。