私のコンピューターはSony Vaioノートブックです。デュアルブートでUbuntuとWin 8を使用しましたが、Windowsは起動時にOSを選択するメニューをどうにかして削除しました。BIOSはUEFIだと思います。セキュアブートはすでに無効になっており、ブート修復は何らかの理由で失敗します。
どうすれば修正できますか?
私のコンピューターはSony Vaioノートブックです。デュアルブートでUbuntuとWin 8を使用しましたが、Windowsは起動時にOSを選択するメニューをどうにかして削除しました。BIOSはUEFIだと思います。セキュアブートはすでに無効になっており、ブート修復は何らかの理由で失敗します。
どうすれば修正できますか?
回答:
Sony、HP、および多くのラップトップベンダーは、Windowsのみを起動するようにハードコードされています。
Windows上でgrub grubx64.efi
またはshimx64.efi
ファイルを移動することをお勧めする回避策がいくつかあります/EFI/windows/bootmgfw.efi
。ただし、Windows Updateが復元されbootmgfw.efi
、起動ウィンドウのみに戻るため、これは推奨されません。
代わりに、フォールバック/EFI/Boot/bootx64.efiの名前を変更し、ハードドライブエントリを起動するか、rEFIndを使用することをお勧めします。
変更を行う前に、必ずEFIパーティション全体をバックアップしてください。
利用可能ないくつかのオプションがあります:
I. grubファイルを移動して名前を変更するgrubx64.efi
か、shim64.efi
(セキュアブート用に)このフォルダー/ファイルに移動します/EFI/BOOT/BOOTX64.EFI
/efi/boot/bootx64.efiの名前を変更し、shimまたはgrubを/ efi / bootにコピーし、bootx64.efiという名前を付けてから、ハードドライブエントリを起動します。Boot-Repairの新しいバージョンは、詳細オプションの「標準EFIファイルを使用」でこれを自動的に行います。また、おそらくWindows .efiブートファイルの単なるコピーである現在のbootx64.efiをバックアップします。
ライブインストーラーからefiパーティションをハードドライブにマウントします:efiパーティションをマウントします。ブートフラグを使用してFAT32であるパーティションを確認します。多くの場合、sda1またはsda2ですが、異なります。
sudo mount /dev/sda1 /mnt
まだ存在しない場合のみ、
sudo mkdir /mnt/EFI/Boot
sudo cp /mnt/EFI/ubuntu/* /mnt/EFI/Boot
新しいフォルダーが作成された場合、bootx64.efiは存在しません。このコマンドをスキップしてください
sudo mv /mnt/EFI/Boot/bootx64.efi /mnt/EFI/Boot/bootx64.efi.backup
UEFIでgrubをハードドライブブートエントリにします。存在しない場合は、efibootmgrでUEFIも更新する必要があります。
sudo mv /mnt/EFI/Boot/grubx64.efi /mnt/EFI/Boot/bootx64.efi
必要に応じて、新しいUEFIハードドライブブートエントリを追加します。
man efibootmgr
ESPがsdaまたはデフォルトのドライブとパーティションエントリの場合:
sudo efibootmgr -c -L "UEFI Hard drive" -l "\EFI\Boot\bootx64.efi"
ESPがsda1ではない場合、sdXはドライブ、Yはefiパーティション、NVMeドライブも同様です:
sudo efibootmgr -c -g -w -L "UEFI hard drive" -l '\EFI\Boot\bootx64.efi' -d /dev/sdX -p Y
sudo efibootmgr -c -L "UEFI hard drive" -l "\EFI\Boot\bootx64.efi" -d /dev/nvme0n1 -p 2
(これは、IIで Boot-Repairが行っていたものと同じです。現在推奨されていません:/efi/Microsoft/Boot/bootmgfw.efiの名前を変更し、grubまたはshimを/ efi / Microsoft / Bootにコピーし、bootmgfw.efi grubメニューにブートするWindowsエントリをブートします。名前を変更したWindows efiファイルをブートするには、grubメニューエントリを手動で追加する必要があります。grub2のos-proberエントリはbootmgfw.efiエントリをブートします。
efiファイルを手動で移動したユーザーは、投稿#6を参照してください。
http://ubuntuforums.org/showthread.php?t=2101840
http://ubuntuforums.org/showthread.php?t=2219452
http://ubuntuforums.org/showthread.php?t=2221498&p=13012109#post13012109
II。古いコピーで「バグのあるUEFI」のBoot-Repairの修正を実行した場合は、元に戻すことをお勧めします。そして、上記の変更を行ってbootx64.efiを使用します。ファイルを元に戻し、元の名前に変更するには、Boot-Repairの[Restore EFI backups]オプションをオンにするだけです。
手動またはBoot-Repairを使用した名前変更は、Windowsの更新後にWindowsファイルを復元するため、やり直す必要があります。
III。Windows BCDを編集します。これは、Boot-Repairの名前変更に代わるものの1つで、shimにWindows名を付けます。一部のシステムは、Windowsをデフォルトとしてリセットし続けるシステムの場合、Windows内からgrub / shimを登録する方が適切に動作します。
Windows 8.1 Ubuntu 13.10デュアルブートの起動時にGRUBが表示されない
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
https://coderwall.com/p/vfyqkg
IV。説明をWindowsにする必要がある場合は、UEFIの説明を変更します。これは、UbuntuだけでWindowsがまったくインストールされていない場合にのみ有効です。
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\ubuntu\shimx64.efi"
復元または新しいWindows UEFIエントリ-sda2の場合、デフォルトのsda1が-p 2を追加すると想定します(man efibootmgr -d drive&-p partition optionsを参照):
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi"
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi" -d /dev/nvme0n1 -p 1
V.一部のユーザーはrEFIndをインストールしますが、これは別の回避策と思われ、起動アイコンがあります。
http://www.rodsbooks.com/refind/index.html
http://www.rodsbooks.com/refind/secureboot.html
Ubuntuに簡単にインストールできるPPAが利用可能
mountvol S: /S
してEFIパーティションをS:としてマウントしました。フォルダーの上下に奇妙な問題がありましたが、grubx64.efiのコピーを一度に1フォルダーずつ/ EFI / Bootに移動してから、bootx64.efiに名前を変更しました。
上記の答えは、私の友人のHPパビリオンでは機能しませんでしたが、適切な回避策が見つかりました。HPのファームウェアは常にBootOrder
すべての起動時に上書きし、Windowsを最初に設定するようですが、それでもが尊重されBootNext
ます。そこでBootNext
、ブートごとに設定するスタートアップスクリプトを作成しました。
走る
efibootmgr
の数値コードを見つけますBootCurrent
。私の友人の場合、これはでした0003
。
/etc/systemd/system/boot-linux-next.service
:
[Unit]
Description=Boot Linux next
[Service]
Type=oneshot
# Replace '3' in the next line with the appropriate code.
ExecStart=efibootmgr --bootnext 3
[Install]
WantedBy=multi-user.target
走る
systemctl enable --now boot-linux-next.service
これは、他の何かをブートした場合、次回ブート時にLinuxを手動で選択する必要があることを意味します。