web-dev-qa-db-ja.com

Windows 10がGRUBに表示されない

今日、ラップトップにUbuntu 18.04をインストールしました。liveUSBからインストールし、Win 10と一緒にデュアルブートしましたコンピューターを再起動してgrubが表示されると、Win 10オプションがありません。試しましたオンラインで多くのこと、ブートリペア、試してみた

Sudo update-grub

そして

Sudo os-prober

、しかし何も表示されません。詳細については、詳しくお知らせしますが、Ubuntuの初心者であることを忘れないでください。ありがとうございました。

編集:SecureBootは、入力すると無効になります(コマンドmokutil --sb-stateの出力です)。

ls /sys/firmware/efi/

それが示している

config_table  efivars  esrt  fw_platform_size  fw_vendor  runtime  runtime-map  systab  vars

Ubuntuをレガシーモードでインストールしたとは思わない。以前にチェックしたが、念のためもう一度確認する方法がわからない。

編集2:コマンドcat /etc/default/grubの結果は

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

GRUB_TIMEOUT_STYLE=行は私が変更したもので、元の値はhiddenです。変更したため、GRUBは常に再起動時に表示され、表示されることさえありませんでした。アップ。

2
kihit0mi

ステップ1

次のコマンドにより、質問者@ kihit0miのubuntuインストールにEFI boot loaderが含まれていることが確認されました。

$ ls /sys/firmware/efi/

その出力は次のとおりです。

config_table  efivars  esrt  fw_platform_size  fw_vendor  runtime  runtime-map  systab  vars

ステップ2

次のコマンドは出力を生成しませんでした:

$ Sudo os-prober

ステップ-3

GRUB menuを生成するために次のコマンドが発行されました。

$ Sudo update-grub

システムが再起動され、GRUBメニューからshiftコマンドを介してアクセスが試行されました。しかし、GRUBメニューにアクセスする代わりに、ログイン時に終了することが確認されましたUbuntuの画面!

ステップ-4

Windowsログイン画面にアクセスするには、BIOS setup画面を経由するしか方法がありませんでした。システムが再起動し、delキーを押してBIOS setup画面に到達しました。次のようにリストされているthreeブートローダーが存在することが確認されました:

Ubuntu
Windows Boot Manager and 
EFI PXE.

Windows Boot Managerを最優先に設定した後、Windows-10は正常にログオンしました。

手順5

Windows-10にログインします。 Windows + Rキーを押し、Runダイアログボックスにmsinfo32.exeと入力してから、Enterを押してSystem Infomationウィンドウを開きます。 System Summaryの右側のペインに、BIOS MODE行が表示されます。 BIOS MODEの値がLegacyの場合、Windowsはlegacyモードで起動されます。 BIOS MODEの値がUEFIの場合、WindowsはUEFIモードで起動されます。質問者@ kihit0miは、BIOSモード行にUEFIのみが含まれていることを確認しました。本当に良かった!

ステップ-6

次に、ファームウェアBIOSが最新バージョンに更新されました。 現在のBIOSバージョンを確認して更新する方法 を参照してください。

GRUB menuを生成するために、次のコマンドが再度指定されました。

$ Sudo update-grub

システムが再起動され、shiftコマンドを使用してGRUB menuに到達しようとしました。今回はGRUB menuに正常に到達したことを確認して良かったが、Windows-10の存在が見つからなかった!

手順7

WindowsエントリをGRUBメニューに生成できる/etc/grubd./40_customファイルにmenuentryを挿入することが決定されました。Windowsブートローダーに対応するdiskおよびpartition番号を見つけるために、再起動してGRUB「Shift」キーを押してメニューに到達しました。cを押してgrub >コマンドラインに入り、次のコマンドが入力されました:

grub > ls

しかし、出力はありませんでした。したがって、Windowsローダーのdiskpartitionの数値は、それぞれmenuentryの準備に必要な02であると推測されました。

menuentry "Windows" {
    set root=(hd0,2)
    chainloader +1
}

上記のmenuentryをファイル/etc/grubd./40_customに作成した後、次のコマンドを発行して、スクリプト40_customファイルを実行可能にします。

$ Sudo chmod +x /etc/grub.d/40_custom

次のコマンドでGRUBメニューを生成します:

$ Sudo update-grub

システムが再起動され、shiftキーを押してGRUB menuに到達しました。今回はWindowsローダーが見つかりました。しかし、起動しようとすると、次のエラーがスローされました。

The EFI file path is incorrect error

ステップ-8

menuentryのさまざまなディスクおよびパーティション番号のエントリを使用して何度も試行されましたが、GRUBメニューからWindowsブートローダーを選択すると、すべて同じエラーメッセージthe EFI file path is incorrect errorが表示されました。

質問者@ kihit0miのラップトップがGRUBメニューのコマンドライン:grub > lsからのlsコマンドに応答しなかったため、これらのハードルはすべて発生しました。

デスクトップのGRUBメニューからコマンドgrub > lsを使用して同じことを試みたところ、次の出力が得られました。

(hd0) (hd0.gpt8) (hd0.gpt7) (hd0.gpt6) (hd0.gpt5) (hd0.gpt4) (hd0.gpt3) (hd0.gpt2) (hd0.gpt1) (hd1) (hd2) (hd2,gpt4) (hd2,gpt3) (hd2,gpt2) (hd2,gpt1) (hd3) (hd3,gpt4) (hd3,gpt3) (hd3,gpt2) (hd3,gpt1)

GRUB lsコマンドからの上記の出力を解釈する方法?

  1. (hd0)に対して次のコマンドを発行します。

    grub > ls (hd0)

    その出力は次のとおりです。

    Device hd0: No known file system detected - Search size 512 B - Total size 117220824 KiB.
    

    No known file systemと表示されていても出力は実際には/dev/sdaを表します(合計サイズを確認してください)。 ls (hd0,gpt8)ls (hd0,gpt7)などのプローブをls (hd0,gpt1)まで続けると、/dev/sda8/dev/sda7などのデバイスに対応するパーティションが表示されます。 /dev/sda1まで続きます

    上記のデバイス/dev/sda(120 GB SSD)には、grubコマンドラインで(hd0)として表示されたUbuntuインストールが含まれています。 gpt1gpt8は、それぞれefiswap//usr/opt/tmp/var、および/homeのパーティションを表します。

  2. ここで、(hd1)に対して次のコマンドを発行します。

    grub > ls (hd1)

    その出力は次のとおりです。

    Device hd1: No known file system detected - Search size 2048 B - Total size 514 KiB.
    
  3. ここで、(hd2)に対して次のコマンドを発行します。

    grub > ls (hd2)

    その出力は次のとおりです。

    Device hd2: No known file system detected - Search size 512 B - Total size 976762584 KiB.
    

    出力はNo known file systemでしたが、実際には/dev/sdbを表しています(合計サイズを見てください)。 ls (hd2,gpt4)などのプローブを続けてls (hd2,gpt1)まで続けると、/dev/sdb4などのデバイスに対応するパーティションが/dev/sdb1まで続きます。

    上記のデバイス/dev/sdbは、my 1 TB HDD with NTFS filesystem with (hd2) as grub command line。gpt1〜gpt4は、それぞれunknownCodeWriteShareMeおよびWarehouseであるNTFSパーティションを表します。

  4. ここで、(hd3)に対して次のコマンドを発行します。

    grub > ls (hd3)

    その出力は次のとおりです。

    Device hd3: No known file system detected - Search size 512 B - Total size 244198584 KiB.
    

    出力はNo known file systemとして表示されていましたが、実際には/dev/sdcを表しています(合計サイズを見てください)。 ls (hd3,gpt4)などのプローブをls (hd3,gpt1)まで続けると、/dev/sdc4などのデバイスに対応するパーティションが/dev/sdc1まで表示されます。

    上記のデバイス/dev/sdc(250 GB SSD)には、grubコマンドラインで(hd3)として表示された私のWindows-10インストールが含まれています。 gpt1gpt4は、それぞれEFIunknownWindowsOSWinREのパーティションを表します。

手順-9

注:質問者@ kihit0miのubuntu:出力なしコマンドSudo os-probedの場合。 step-2を参照してください。

繰り返しますが、UbuntuターミナルからSudo os-probedコマンドを実行すると、次の出力が表示されました。

/dev/sdc1@/efi/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi

上記のos-probedコマンドの出力から手がかりが考案されました。試行錯誤によるディスクとパーティション番号の検索を回避するために、次の検索文字列が/etc/grubd./40_customに組み込まれました。

search --set=root --file /efi/Microsoft/Boot/bootmgfw.efi

注:Grubメニューのsearchコマンドの詳細については、 このリンクを参照

新しいmenuentryは、次に示すように、windows-10 EFIブートローダーに対応するディスクとパーティションの番号を自動的に検索できるようになりました。

menuentry "Windows" {
    search --set=root --file /efi/Microsoft/Boot/bootmgfw.efi
    chainloader /efi/Microsoft/Boot/bootmgfw.efi
}

上記のmenuentryをファイル/etc/grubd./40_customに作成した後、次のコマンドを実行してGRUB menuを生成しました。

$ Sudo update-grub

システムが再起動され、shiftキーを押してGRUB menuに到達しました。

今回はWindows-10 EFIブートローダーが選択され、Windows-10システムで正常に起動しました。

ステップ-10:

まだ完了していません。

BIOSセットアップ画面に存在するchatブートローダーの削除である保留中のタスクを完了するには、質問者@ kihit0miの存在がextraneousセッションで必要です。

3
Marmayogi