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/sda1
。chroot /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
。)