こんばんは、ハブラハブル!
今日は、LinuxからWindowsにリブートし、ワンクリック(ダブルクリック)で再起動する方法を学びます。
与えられた:
- OSが異なる2つのGPTディスク
- UEFIおよび無効なレガシーモードのマザーボード
- 完全にUEFIをサポートしたWindows
- Linux(私にはManjaroがあります)、GRUBやその他の昔ながらのものに関する記述をすべて削除して慎重にインストールされました
- rEFInd-美しいブートマネージャー(ブートローダーではない)
必要です:
- * shおよびcmd(bat)で2つのスクリプトを作成します。これにより、目的のOSを再起動できます。
注:
- 作業オプションはSolutionとして指定されており、残りは私の推論と目標へのパスの説明です。
- 設定の本質に関係のない詳細、または簡単に変わる詳細の説明は意図的に省略します。 これらの詳細は、チューニング時に私には明らかではなかったために言及されています。そのため、フクロウを描くための指示が表示されない経験の浅い読者にとって、記事はより理解しやすくなります。
- NVRAMを変更するときに注意する必要がある理由
Linux:
Linuxはコンピューターを操作するための優れた基盤であるため、必要なものはすべてリポジトリにあり、コミュニティの集合的な心はすべてを知っており、いつでも支援する準備ができています。 したがって、インターネットの簡単な調査の後、 efibootmgrを配置します 。
sudo pacman -S efibootmgr
OK、今すぐ実行:
sudo efibootmgr
Timeout: 1 seconds BootOrder: 0001,0000 Boot0000* Windows Boot Manager Boot0001* rEFInd Boot Manager
熱心な読者はおそらく結論に何かが間違っていることに気づいたでしょうが、15分後には問題なくOS間を飛ぶだろうという考えに触発され、それに十分な注意を払っていませんでした。
ドキュメントの3分で、必要なパラメーター「 -n 」が見つかります。これは、カスタムブート順序を1回だけ設定します。 このコマンドを実行しようとします:
解決策
sudo efibootmgr -n 0000 && sync && reboot
そして、必要に応じてWindowsを見つけます。 次に、このコマンドをscript / alias / *。Desktop-fileに記述して、すべてがうまくいく様子を楽しみます。
Windows:
それはすべて、Windows用のefibootmgrの類似物の検索から始まりました。これは、もちろん、純粋な形では存在しません。 良心を落ち着かせるために、Linuxサブシステムを使用しようとしましたが、これはもちろん機能しませんでした。
インターネットで簡単に検索したところ、 bcdeditユーティリティにはNVRAMを変更するための同様の機能があることがわかりました 。 素晴らしい、私は管理者の下からPowerShellを起動し、書く
bcdedit /enum firmware
Firmware Boot Manager --------------------- identifier {fwbootmgr} displayorder {6893bb38-946b-11e7-b175-9301bd8a88f4} {bootmgr} timeout 1 Windows Boot Manager -------------------- identifier {bootmgr} device partition=\Device\HarddiskVolume2 path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager locale ru-RU inherit {globalsettings} default {current} resumeobject {6893bb40-946b-11e7-b175-9301bd8a88f4} toolsdisplayorder {memdiag} timeout 30 Firmware Application (101fffff) ------------------------------- identifier {6893bb38-946b-11e7-b175-9301bd8a88f4} device partition=\Device\HarddiskVolume2 path \EFI\REFIND\REFIND_X64.EFI description rEFInd Boot Manager
Linuxはどこにありますか? どこにロードしますか? 私はWindowsが嫌い
実際、それはWindowsのせいではないことが判明しましたが、私(そう、注意深いユーザーにとってはその瞬間です)、そしてその理由は次のとおりです:rEFIndは、正常に動作するために通常インストールするだけでよい素晴らしいユーティリティです。 彼女は、すべての.efiファイル、異なるカーネルの異なるディストリビューションを取得する方法を知っており、アイコンを代用します。 ツールではなく、魅力。 しかし、対応する.efiファイルが見つからなかったため、UEFIはLinuxについて何も知らなかったことが判明したため、これは私を困らせました。
したがって、Linuxに再起動し、 systemd-boot (bootctl)を構成します 。 これですべてが次のようになります。
Timeout: 1 seconds BootOrder: 0001,0003,0000,0002 Boot0000* Windows Boot Manager Boot0001* rEFInd Boot Manager Boot0002* Linux Boot Manager Boot0003* Manjaro
戻ってもう一度実行します。
bcdedit /enum firmware
Firmware Boot Manager --------------------- identifier {fwbootmgr} displayorder {6893bb38-946b-11e7-b175-9301bd8a88f4} {bootmgr} {ff0bc716-c088-11e7-bf74-000acd2dac7d} {ff0bc716-c088-11e7-bf74-000acd2dac7d} timeout 1 Windows Boot Manager -------------------- identifier {bootmgr} device partition=\Device\HarddiskVolume2 path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager locale ru-RU inherit {globalsettings} default {current} resumeobject {6893bb40-946b-11e7-b175-9301bd8a88f4} toolsdisplayorder {memdiag} timeout 30 Firmware Application (101fffff) ------------------------------- identifier {6893bb38-946b-11e7-b175-9301bd8a88f4} device partition=\Device\HarddiskVolume2 path \EFI\REFIND\REFIND_X64.EFI description rEFInd Boot Manager Firmware Application (101fffff) ------------------------------- identifier {ff0bc716-c088-11e7-bf74-000acd2dac7d} device partition=\Device\HarddiskVolume2 path \EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI description Linux Boot Manager Firmware Application (101fffff) ------------------------------- identifier {ff0bc717-c088-11e7-bf74-000acd2dac7d} device partition=\Device\HarddiskVolume1 path \EFI\manjaro\vmlinuz-4.13-x86_64 description Manjaro
ここで言及する価値があるのは、 redditユーザーが問題の解決に役立ったということです。 彼らのおかげで、次のステップがあります。
bcdedit /bootsequence {ff0bc716-c088-11e7-bf74-000acd2dac7d}
引数は、必要なオプションの識別子です-Linux Boot Manager。
Powershellでは、このコマンドを正常に実行できません。
The entry list data is not valid as specified.
これは、Microsoftが定期的に何かを壊すことを好むという事実のためです。 解決策はシンプルでエレガントです-古典的なCMDと呼び、その中で動作します。 これはチームが行うことができます。
cmd
再起動して、ブート順序が変更されていないことを確認し、BootOrderの最初の要素(rEFIndがありました)で終了し、Windowsを選択すると、DOS時間から\ EFI \ SYSTEMD \ SYSTEMD-BOOTX64と表示されるひどいハローが表示されます。 EFIが見つかりません。 はい、Windowsブートローダーのパラメーターを変更しましたが、UEFIは変更しませんでした。
この間違いとの戦いは私をすべての休日に連れて行ったが、良いことは何もなかった。 このために、C ++で小さなプログラムを書くことをすでに考えていました(これは、EasyUEFIなどのソフトウェアの存在から可能です)。
しかし、次のサイトでは、まさにそのようなデザインを見つけました
bcdedit /set {bootmgr} path ....
それから、bcdeditに何をどこに書くかを直接指示できることがわかりました。 さらに、推測のみをチェックする価値がありました:
解決策
bcdedit.exe /set {fwbootmgr} bootsequence {ff0bc716-c088-11e7-bf74-000acd2dac7d} /addfirst
ここで重要なのは、{bootmgr}ではなく(デフォルトでは明らかにそうであるように)書き込むのではなく、UEFI設定である{fwbootmgr}に書き込むことです。
再起動すると、すべてが希望どおりに機能します。 この問題をbat / lnkに保存し、追加します
shutdown /r /t 0
管理者の下から起動を公開し、完了です!
ご清聴ありがとうございました! 私は、コメントでの技術的な部分についてのコメント、デザインに関するコメント、PMでとてもうれしいです。