web-dev-qa-db-ja.com

「Windows To Go」外付けHDDをgrub2ブートメニューに追加します

Windows 10を外部USB 3.0 HDDにインストールしました。現在、起動できる唯一の方法は、BIOS起動オプションに移動してリストから選択することです。

Ubuntu 16.04を内部M.2 SSDにインストールしましたが、Ubuntuインストーラーは、期待どおりに外部ドライブを起動するGRUB2のオプションを自動的に追加しませんでした。

Windows 10がインストールされている外部ドライブから起動するようgrubに指示するメニューエントリを追加する方法がわかりません。外付けドライブのuuidで検索コマンドを使用してルート変数を設定できることは知っていますが、その後ブートコマンドを使用する方法や、ブートオプションを追加するために編集するファイルはわかりません。

[〜#〜] update [〜#〜]:受け入れられた答えのようなことをすることになりましたが、もっと簡単です

menuentry "Windows 10" {
    set root=(hd0,msdos1)
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
1
Broseph

通常、Grubはos-probermountedパーティションで実行し、エントリを自動的に追加します。

カスタムメニューエントリの場合は、/etc/grub.d/40_customに独自の構成を追加できます。 os-proberに依存するには、Grubの設定が更新されるたびに他のOSのパーティションが常にマウントされる必要があるため、このオプションをお勧めします。これは、アップデートマネージャーが新しいLinuxカーネルをインストールするか、grubパッケージ自体を更新する場合(例:セキュリティアップデート)。

次の手順では、UbuntuがUEFIで起動し、Windows 10も同じことを行うと仮定します。そうでない場合は、 こちら または Arch wikiの記事 から次のコードを借りました:

menuentry "Microsoft Windows Vista/7/8/8.1 UEFI-GPT" {
    insmod part_gpt
    insmod fat
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --set=root $hints_string $fs_uuid
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

これを40_customに配置し、$hints_stringおよび$fs_uuid変数をgrub-probeコマンドからの出力に置き換えます。これを行うには、Windows To GoドライブのEFIシステムパーティション([〜#〜] esp [〜#〜]の略)をマウントする必要があります。最も簡単な方法は、gnome-disksを起動し、ドライブとパーティションを選択してから、再生ボタン(‣)をクリックし、ドライブをマウントした場所(通常は/ media/your_username)をメモし、$esp次のコマンドの文字列(必要に応じて引用符を追加):

# fs_uuid
grub-probe --target=fs_uuid $esp/EFI/Microsoft/Boot/bootmgfw.efi

# hints_string
grub-probe --target=hints_string $esp/EFI/Microsoft/Boot/bootmgfw.efi
1
LiveWireBT

GRUB=と指定して、他のOSの検出を試みてください。

ターミナル(CTRL+ALT+T)、次のコマンドを実行します:

Sudo update-grub

それでもうまくいかない場合は、ライブDVD/USBから起動して、ターミナルから次のコマンドを実行してみてください。

Sudo grub-install /dev/sda #Replace block accordingly
1
Android Dev