変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

2025年3月12日

[AlmaLinux]KVMからHyper-Vに移行

単に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が使う設定を更新できるらしい。




top