単にqcow2ファイルをvhdxファイルにコンバートすればいいのかなと思ったら
# qemu-img convert -p -f qcow2 -O vhdx {qcow2ファイル名} {vhdxファイル名}
起動に失敗した。
Linux起動時にgrub2の画面でカーネルを選択後、
/bootの下のinitramfsファイルを読んで一時的にファイルシステムとして使用されるが
フルセットでは重いからインストーラは
# dracut --kver {カーネル名} -f -v
で必須なドライバを見繕ったinitramfsファイルをカーネルごとに作成している。
つまり、KVMで作成したVMはKVM環境のドライバしか入っていないので、そのままHyper-Vに移行してもドライバ不足で何もできなくなる。
仕方が無いので、KVMで動いている状況下で
# dracut --kver $(uname -r) -f --add-drivers "hv_vmbus hv_storvsc hv_netvsc hv_utils hv_balloon hyperv-keyboard hyperv_fb hid-hyperv"
Hyper-V用のinitramfsファイルを作成する必要がある。
またネットワークの状況も違い
# nmcli con show
NAME UUID TYPE DEVICE
virbr0 63189c34-2fc4-48f8-adc8-8a631ab7e98c bridge virbr0
ens2 dc75b52c-b3eb-4fe3-9027-7983b30c0ed5 ethernet --
ens3 e18ddd44-7abe-4297-b16f-919c7cd32430 ethernet --
Hyper-Vではブリッジではなくeth0に繋がる仕組みなので、
nmcli –offline connection コマンドでとりあえずファイルを作り
# nmcli --offline connection add type ethernet con-name eth0 ipv4.address 192.0.2.1/24 ipv4.dns 192.0.2.200 ipv4.method manual > /etc/NetworkManager/system-connections/eth0.nmconnection
Hyper-V上で作成したAlmaLinux9.5VMを見ながら一部コピペ
[connection]
id=eth0
uuid=20f2b6eb-7e6c-473c-b362-4d390d16e5a9 ※AlmaLinux9.5VMからコピペ
type=ethernet
autoconnect-priority=-999 ※AlmaLinux9.5VMからコピペ
interface-name=eth0
timestamp=1741709046 ※AlmaLinux9.5VMからコピペ
[ethernet]
[ipv4]
method=auto ※DHCPモード
[ipv6]
addr-gen-mode=eui64 ※AlmaLinux9.5VMからコピペ
method=auto
[proxy]
と書き換え
# chmod 600 eth0.nmconnection
# chown root:root eth0.nmconnection
# systemctl start NetworkManager-dispatcher.service
# reboot
再起動後は
# nmcli con show
NAME UUID TYPE DEVICE
eth0 20f2b6eb-7e6c-473c-b362-4d390d16e5a9 ethernet eth0 ※これが欲しかった
virbr0 63189c34-2fc4-48f8-adc8-8a631ab7e98c bridge virbr0 ※多分要らない
ens2 dc75b52c-b3eb-4fe3-9027-7983b30c0ed5 ethernet --
ens3 e18ddd44-7abe-4297-b16f-919c7cd32430 ethernet --
となり何とかなった。
不要なvirbr0は消した方がいいだろう。
また、起動状態を見たい場合は
grub2の画面で[e]キーを押して設定を一時的に修正しctrl+xで起動。
起動時に出てくる
probing edd (edd=off to disable)... ok
は、カーネルのオプションに
edd=off
を追加すると消える。
また、カーネルのオプショのconsole=以降を
console=tty0 console=ttyS0,115200
に変えるとコンソールに普通に起動の進行状況が表示される
永続的に変えたい場合は /etc/default/grub のGRUB_CMDLINE_LINUXの行を
修正前
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap console=ttyS0,115200n8"
修正後
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap console=tty0 console=ttyS0,115200n8 edd=off"
とエディタで書換え
# grub2-mkconfig -o /boot/grub2/grub.cfg
でgrub2が使う設定を更新できるらしい。