web-dev-qa-db-ja.com

Windows 10の項目がopenSUSEのインストール後にGRUB=メニューに表示されない

OpenSUSE Leap 15をWindows 10と同じハードドライブにインストールしましたが、割り当てられた空き領域にあります。デュアルブートオプションを期待していましたが、Windows 10の項目がGRUB=メニューにまったく表示されません。すべてのパーティション(Windows EFIシステムパーティションを含む)はまだそこにありますが、わかりません。 Windowsの起動を回復するにはどうすればよいですか(openSUSEを失うことなく)Windowsを再起動するにはどうすればよいですか?

ハードドライブの現在の状態は次のとおりです。

Device: /dev/sda
Size: 232.89 GiB
Encrypted: No
Device Path: pci-0000:00:1f.2-ata-1
Device ID 1: ata-Samsung_SSD_850_EVO_250GB_S21NNXAG700322J
Device ID 2: scsi-0ATA_Samsung_SSD_850_S21NNXAG700322J
Device ID 3: scsi-1ATA_Samsung_SSD_850_EVO_250GB_S21NNXAG700322J
Device ID 4: scsi-35002538d4028bcda
Device ID 5: scsi-SATA_Samsung_SSD_850_S21NNXAG700322J
Device ID 6: wwn-0x5002538d4028bcda

そして写真:

enter image description here

1
ravy amiry

GRUBパッケージの名前を確認してください。grub2-i386-pc(またはディレクトリ/boot/grub2/i386-pcが存在する)のようなものが含まれている場合、SuSEインストーラーをレガシーBIOSモードで誤って起動した、などレガシーBIOSバージョンのGRUBブートローダーがインストールされています。これは当然、新しいUEFIブートスキームを使用するオペレーティングシステムをブートできません。

これを修正するには:

まず、システムをUEFIモードでLinuxから起動し、OpenSUSEインストールにアクセスする方法を見つけます。 Rescue SystemモードのopenSUSEインストールメディア、またはLiveCD/USBがこれに適しています。 openSUSEドキュメントからの関連する手順へのリンクです

efibootmgr -vを実行して、実際にUEFIモードであることを確認します。それがEFI variables are not supported on this systemで応答する場合、UEFIモードではなく、レガシーBIOSモードで起動するように管理されています。 (レガシーBIOSモードで起動すると、EFI NVRAM変数へのアクセスに使用されるメカニズムであるUEFIランタイムサービスが無効になります。)

UEFI BIOS設定を変更して、レガシーBIOSよりもUEFIブートを優先するか、レガシー互換性(CSM =互換性サポートモジュールとも呼ばれる)を完全に無効にする必要がある場合があります。この時点での実際の手順は、ハードウェアとUEFI BIOSに固有です。ハードウェアのドキュメントを参照してください。

システムをUEFIモードで起動し、openSUSEインストールにアクセスしたら、remove現在のGRUBブートローダーパッケージ。次に、EFIシステムパーティションを/boot/efiとしてマウントし、GRUB2を完全に再インストールします。パッケージ管理でGRUB2ハードウェア依存パッケージの実際のバージョンを選択する必要がある場合は、grub2-x86_64-efiではなくgrub2-i386-pcを選択します。

通常、GRUBの完全な再インストールには、efibootmgrツールを使用してEFI NVRAM変数を自動的に更新するスクリプトが含まれています。efibootmgr -vを使用すると、同様のブートオプションのリストが表示されます。 UEFI BIOS設定で利用可能なものに変更します。GRUBのUEFIバージョンを(再)インストールした後、リストにはOpenSUSEの新しいエントリが含まれ、EFIシステムパーティション内のgrubx64.efiブートローダーファイルの場所を指定する必要があります。何らかの理由で発生する場合は、次のようなコマンドを使用して手動で作成できます。

efibootmgr -c -d /dev/sda -L "openSUSE" -l '\EFI\opensuse\grubx64.efi'

efibootmgr -dオプションは、パーティション自体ではなく、EFIシステムパーティションを含むディスクデバイス全体を指定することに注意してください。

EFIシステムパーティションはWindows専用ではありません。UEFIシステムでは、インストールされているすべてのオペレーティングシステムがプライマリブートローダーをそこに配置することになっています。ブートローダー間の競合を回避するための標準化されたディレクトリスキーマさえあります。各ベンダーは、ブートローダーを\EFI\<vendor name>\ディレクトリに配置することになっており、openSUSEとMicrosoftの両方がこれに準拠しています。

2
telcoM

あなたは見つかった解決策に似た何かを試すことができます here

  1. SUSEを起動し、Windowsパーティションをマウントします。
  2. シェル実行から:

    Sudo os-prober
    
  3. ウィンドウが見つかったら、次を実行:

    grub2-mkconfig -o /boot/grub2/grub.cfg
    
1
user1794469