UEFI で Windows 10 と Ubuntu 16.04 をデュアルブートする

UEFI で Windows 10 と Ubuntu 16.04 をデュアルブートする

Ubuntu の長年のユーザーとして、私は最近、60GB SSD に Windows 8 がプリインストールされた Acer Revo One を購入しました。今回はライセンスを保持することにしました。MS Windows 10 への無料アップグレードを利用しました (SSD のパーティションを制御できるように USB ディスクからクリーン インストールを選択しました。ルート パーティション用に十分なスペースを残しました)。このインストールは問題なく動作しました。

次に、HDD をインストールし、ライブ USB を使用して Ubuntu 16.04 のインストールを続行しました。

ディスクを次のようにパーティション分割しました (Ubuntu ライブ USB から起動した後、GParted から取得しました)。

/dev/sda

/dev/sdb

基本的に私が望むのは:

  1. 両方のOSをSSDから起動する
  2. UbuntuはHDDを名目上の/homeスワップパーティションとして使用し、/tmp
  3. WindowsとUbuntuの両方が書き込み可能な共有パーティション

理由はわかりません/dev/sdb3が、/dev/sdb4「msftdata」フラグが表示されています。

セキュア ブートは有効になっています (さまざまな投稿を読みましたが、Ubuntu のインストール時に無効にすべきだという投稿もあれば、そうする必要がないという投稿もあります)。高速ブートは無効になっています。

Ubuntu は期待どおりにインストールされますが、再起動すると (ライブ USB ディスクを削除した後)、マシンは Windows のみを起動します。

BIOS を確認しましたが、Windows ブート マネージャー (またはインストールされている場合はライブ USB ディスク) 以外を起動するオプションはありません。

efibootmgr は次のように報告します:

BootCurrent:0002 
Timeout: 2 seconds  
BootOrder: 0000,0002,0001 
Boot0000* Windows Boot Manager  
Boot0001 ubuntu 
Boot0002* UEFI: SanDisk

Boot0001 の横にアスタリスクが付いていないことに気付きました。これは「アクティブ」ではないことを意味します。これをアクティブに設定しようとし、また Boot0001 が最初になるようにブート順序を変更しようとしました。BootNext を 0001 に変更しようとさえしました。これらのいずれも機能しません。Boot0001 をアクティブにする変更は次回のブート時にリセットされるので、変更は保存されないことに気付きました。

私は、いくつかの推奨事項を示す投稿をいくつか読みました。

  1. 最初に Windows をインストールするべきだと言う人もいれば、その逆だと言う人もいます。
  2. Grub を再度インストールします。
  3. EFI ブートローダ エントリを手動で修復します (EFI パーティションをマウントし、エントリをコピー/名前変更する)、またはブート修復を使用します。

EFI パーティションのダンプを添付することはできないようですが、ここにその一部を示します。

./EFI
./EFI/Microsoft
./EFI/Microsoft/Boot
./EFI/Microsoft/Boot/bg-BG
./EFI/Microsoft/Boot/bg-BG/bootmgfw.efi.mui
./EFI/Microsoft/Boot/bg-BG/bootmgr.efi.mui
./EFI/Microsoft/Boot/bootmgr.efi
./EFI/Microsoft/Boot/memtest.efi
./EFI/Microsoft/Boot/boot.stl
./EFI/OEM/Boot
...
./EFI/Microsoft/Boot/en-GB
./EFI/Microsoft/Boot/en-GB/bootmgfw.efi.mui
./EFI/Microsoft/Boot/en-GB/bootmgr.efi.mui
...
./EFI/OEM
./EFI/OEM/Boot
./EFI/OEM/Boot/boot.stl
./EFI/OEM/Boot/bootmgfw.efi
./EFI/OEM/Boot/bootmgr.efi
./EFI/OEM/Boot/memtest.efi
./EFI/OEM/Boot/BOOTSTAT.DAT
./EFI/OEM/Boot/BCD
./EFI/OEM/Boot/BCD.LOG
./EFI/OEM/Boot/BCD.LOG1
./EFI/OEM/Boot/BCD.LOG2
...
./EFI/OEM/Boot/en-GB
./EFI/OEM/Boot/en-GB/bootmgfw.efi.mui
./EFI/OEM/Boot/en-GB/bootmgr.efi.mui
...
./EFI/ubuntu
./EFI/ubuntu/fw
./EFI/ubuntu/fwupx64.efi
./EFI/ubuntu/grubx64.efi
./EFI/ubuntu/grub.cfg
./EFI/ubuntu/shimx64.efi
./EFI/ubuntu/MokManager.efi
./OEM
./OEM/AcerOA30.xml
./OEM/Factory
./OEM/Factory/AMIDEWINx64.exe
./OEM/Factory/AMIFLDRV64.sys
./OEM/Factory/CHK.bat
./OEM/Factory/CHK_DK.bat
./OEM/Factory/Delay-Diags.exe
...

この問題の解決に近づいているのはわかっていますが、上記の提案のうちどれが機能しそうですか? Windows が起動しなくなり、もう一度やり直さなければならない状況には陥りたくありません。すべてを再インストールするには長い時間がかかります。

ある種の成功。

BIOS が古かったので、更新しました。

また、USB ブート ディスクから Boot-Repair を使用して、EFI ブート パーティションを修復しました (まったく壊れていなかったかどうかはわかりません)。

次に、@fords の提案を試しました - w$ 内で bcdedit を実行 - 成功しました! Grub がさまざまな選択肢とともに表示されます - Ubuntu がデフォルトです。

しかし、Windows を再起動した際に、シャットダウン時に更新プログラムを適用してしまい、Ubuntu の起動が停止したため、すべてが無駄になってしまいました。(深いため息)。

私が受け取ったのは、試してみることを勧める数行のメッセージだけだった

sysctl reboot

または

sysctl defaults

どちらもあまり効果はありませんでした。

Windows アップデートにより、Windows bcdedit や Linux ブート修復が元に戻されましたか? もしそうなら、Windows アップデートが日常的に大混乱を引き起こすのを防ぐにはどうすればよいですか?

答え1

Windows コマンド プロンプトでデフォルトのブート ローダーを Grub に設定してみましたか? Windows 10 で実行するために Ubuntu をインストールしたときに、そのようにする必要がありました。

bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi

また、セキュア ブートをオフにすることもお勧めします。Windows はデュアル ブートに関しては扱いが難しいです。

答え2

Windows 10 Creator's Update 以降、Windows ロゴを右クリックすると、コマンド プロンプト (管理者) ではなく PowerShell (管理者) オプションが表示されます。PowerShell を使用して bcdedit を編集しようとしましたが、失敗しました。そのため、何をしているのかわからない場合は、PowerShell を bcdedit とともに使用しないでください。

解決策は、コマンドプロンプトを検索し、管理者モードで開き(右クリック -> 管理者として開く)、上ですでに説明した一般的なコマンドを使用することです。

bcdedit /set {bootmgr} path "\EFI\ubuntu\shimx64.efi"

bcdedit で PowerShell を使用する方法がわかった方は、ここに投稿してください。

答え3

すべて取り消します... w$ は私の一日を台無しにしませんでした (驚いたことに) - SSD 最適化のために /etc/fstab を編集する私の能力不足が、Ubuntu の起動を妨げていました。世の中はすべて順調です。

私の経験が誰かの役に立つことを願っています!

答え4

もう 1 つの解決方法は、2 つの EFI パーティションを使用することです。1 つは Windows 専用、もう 1 つは Linux とその他のシステム用です。2 番目のパーティションに EFI\Microsoft\Boot\ パスを作成し、このパス内の bootmgrfw.efi に shimx64.efi をコピーして、EFI\ubuntu\ はそのままにします。ACER ラップトップは、このパーティションの shim を Windows ブート マネージャーとして認識し、ここからも起動します。このパーティションに bootmgrfw.efi のみがあり、BCD などがない場合、os-prober は最初の元のパーティションにある Windows ブートローダーのみを認識し、grub.cfg に二重のメニューエントリを作成しません。したがって、GRUB EFI を起動し、他のパーティションに正しいチャネルロードを使用して ubuntu または Windows を呼び出すことができます。このモードでは、Windows は最初のパーティションに正しい EFI パーティション構造を保持し、更新中に 2 番目のパーティションにある偽の bootmgrfw.efi (shim) を上書きしません。私の場合は ACER 5750g で作業しています。

関連情報