UEFIブートは/ dev / sdaでは実行されませんが、回復DVDでは機能します。

UEFIブートは/ dev / sdaでは実行されませんが、回復DVDでは機能します。

RHEL 7.9を実行する第1世代の仮想マシンを搭載したWindows 10ノートブックにHyper-Vがインストールされています。 UEFIブートを使用してGen 2 VMで実行するように更新しようとしています。

Gen 2仮想マシンへの移行中は、UEFIブートコードを/ bootパーティションにインストールする必要があります。

私に必要な次のパッケージをインストールしました。

grub2-efi-x64.x86_64         (1:2.02-0.07.el7_9.9)
shim-x64.x86_64              (15-11.el7)
grub2-efi-x64-modules.noarch (1:2.02-0.07.el7_9.9)
shim-unsigned-x64.x86_64     (15-9.el7)

efibootmgr -v以下を表示します。

ここに画像の説明を入力してください。

ご覧のとおり、いくつかの他の設定を試してみましたが、efibootmgrそのうち何も機能しないようです。

VM起動設定:

ここに画像の説明を入力してください。

したがって、理論的には\EFI\redhat\shimx64.efi、仮想マシンはから/boot/efi/EFI/redhat/shimx64.efi起動する必要があります。

ここに画像の説明を入力してください。

df -hリカバリDVDから起動するときのI/boot以降のインストールを表示します/dev/sda1chroot /mnt/sysimage

/bootパーティションのスクリーンショットに示すように、カーネルの有効なinitramfsファイルがあるようです(まだ到達していないと思います)。

ここに画像の説明を入力してください。

また、グラブの設定をリセットしてみました。

grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

ファイルgrub.cfgにはカーネルバージョンの観点から見ると正しく見えるメニュー項目が含まれていますが、grubメニューを見たことがないのでまだここまで届いていないと思います。 UEFIブートローダの問題のようですが、解決策がわかりません。

DVDを取り外してコンピュータを起動すると、Hyper-Vはネットワークアダプタに到達するまで起動順序を下げます。

ここに画像の説明を入力してください。

結局、Hyper-Vは次のことを示しました。

ここに画像の説明を入力してください。

私は何が間違っていましたか?

リカバリDVDから起動し、grubメニューのコマンドラインに移動してをc実行すると、インストールさconfigfile (hd0,gpt1)/efi/EFI/redhat/grub.cfgれているLinux OSを起動できます。

mount | grep -i "boot"オペレーティングシステムから起動すると、以下が表示されます。

/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

ベストアンサー1

UEFIには「ブートブロック」のようなものがないことを理解する必要があります。UEFIファームウェアはファイルシステムを理解します。そしてファイルのロード

ブート*.efiファイルは、UEFIファームウェア(またはハイパーバイザー)が理解しているファイルシステムに存在する必要があります。 UEFI仕様にはファームウェアのみが必要です。〜しなければならない他の種類のファイルシステムについて学びます。可能必要に応じて追加できます。

ただし、RHEL 7.xのデフォルトのファイルシステムタイプはXFSであり、HyperVの仮想ファームウェアにはXFSファイルシステムのサポートは含まれていません。

したがって、システムディスクに小さなパーティションを追加し(512Mで十分であれば、それより小さい場合は十分です。最新のディスクでは、ディスクを1 GB未満のパーティションに分割することはファイン管理だと思います)、次の種類に設定する必要があります。システムディスクがMBRパーティションであるかのようにパーティションテーブル0xefまたはGPTパーティションを使用している場合は、選択したパーティションツールを使用してパーティションタイプをESP(= EFIシステムパーティション)に設定します。次に、mkfs.fatそのパーティションで実行し、/boot/efi現在の内容を新しいパーティションに移動できる場所にマウントし、新しいパーティションを/boot/efi

後でこのefibootmgrコマンドを使用して以前の試行をクリアしてgrub2-install再実行して、正しいUEFIブート変数エントリを自動的にビルドできます。またはefibootmgr、必要に応じて自分で行うこともできます。表示される起動エントリのUUID文字列は、インストールefibootmgr -vするFAT32パーティションのPARTUUIDと一致する必要があります/boot/efi。 ( を利用して確認できますlsblk -o +PARTUUID。)

おすすめ記事