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


11

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

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


sdaにGRUBがありません...「GRUBをsdaに配置」を使用:help.ubuntu.com/community/Boot-Repair
jmunsch

3
UEFIを使用すると、sdaのMBRにgrubがなく、efiパーティションにあるだけです。
オールドフレッド14年

回答:


17

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

  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 
    
  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が利用可能

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


はい!名前の変更は私のために働いた!efiパーティションをマウントし、ファイル../EFI/ubuntu/grubx64.efiを../EFI/Boot/および/ EFI / Microsoft / Bootにコピーし、ファイルの名前を次のように変更しました。../EFI/Bootディレクトリでbootx64.efiをファイルで上書きし、.. / EFI / Microsoft / Boot iでbootmgfw.efiをファイルで上書きしました。それが私が考えるすべてでした。どうもありがとうございました!
user296880 14年

Windowsで立ち往生している場合:Windowsを離れることなく、オプションa1で説明されている名前変更アプローチを実行できました。管理者としてコマンドウィンドウを開き、実行mountvol S: /SしてEFIパーティションをS:としてマウントしました。フォルダーの上下に奇妙な問題がありましたが、grubx64.efiのコピーを一度に1フォルダーずつ/ EFI / Bootに移動してから、bootx64.efiに名前を変更しました。
ピーターベッカー

私の投稿の番号を付け直した英国のメジャーがそうしなかったことに驚いています。私は、A:&B:を主要なセクションとして言及している古いコメントがありました。:)
オールドフレッド

0

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

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

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


0

上記の答えは、私の友人の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を手動で選択する必要があることを意味します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.