web-dev-qa-db-ja.com

デュアルブートWin 8 / UbuntuはWinのみをロードします

私のコンピューターはSony Vaioノートブックです。デュアルブートでUbuntuとWin 8を使用しましたが、Windowsは起動時にOSを選択するメニューをどうにかして削除しました。 BIOSはUEFIだと思います。セキュアブートはすでに無効になっており、ブート修復は何らかの理由で失敗します。

どうすれば修正できますか?

11
user296880

ソニー、HP、および多くのラップトップベンダーは、Windowsのみを起動するようにハードコードされています。

Windows grubx64.efiの上にgrub 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

  1. /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 
  1. (これは、Boot-RepairがIIで行っていたものと同じです。現在は推奨されません:/efi/Microsoft/Boot/bootmgfw.efiの名前を変更し、 grubまたはshimを/ efi/Microsoft/Bootにコピーし、bootmgfw.efiという名前を付けてから、Windowsエントリを起動してgrubメニューを起動します。 .efiエントリは現在grubであるため、機能しません。

    Efiファイルを手動で移動したユーザーは、投稿6を参照してください。

    http://ubuntuforums.org/showthread.php?t=210184
    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つで、シムに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。Descriptionを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が利用可能

http://www.rodsbooks.com/refind/getting.html

16
oldfred

これは私のために働いた。 UEFIを搭載したToshibaラップトップを使用しました。

  1. UEFIモードでUbuntuをインストールします。ハードドライブの/ boot、/、およびスワップスペースを必ず指定してください。

  2. Windows 10に移動します。管理コマンドプロンプトを開き、手順3に従います。

  3. リブート。ブートメニューが表示されます。

0
Sean Gibbons

上記の回答 は友人のHPパビリオンでは機能しませんでしたが、適切な回避策が見つかりました。 HPのファームウェアは、ブートのたびにBootOrderを常に上書きし、最初にWindowsを設定するようですが、BootNextを尊重しています。そこで、ブートごとにBootNextを設定するスタートアップスクリプトを作成しました。

  1. 走る

    efibootmgr
    

    BootCurrentの数値コードを検索します。私の友人の場合、これは0003でした。

  2. /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
    
  3. 走る

    systemctl enable --now boot-linux-next.service
    

これは、他の何かをブートした場合、次回ブート時にLinuxを手動で選択する必要があることを意味します。

0

同じ問題を抱えているエイサーがいます。私の解決策は、シャットダウンではなく、ウィンドウを「再起動」することです(これは実際には休止状態です)。

再起動することで(更新がトリガーされる場合があります)、システムがシャットダウンし、BIOSからブートを選択できます。再起動する前にキャッチする必要があります。

私はめったにウィンドウを使用しないので、この方法でブートしてもまったく気になりません。もちろん、Windowsが更新されない限り。

0
Buck