Virtualbox Red Hat/Centos VM'leri Hyper-V'ye Taşıma

Virtualbox üzerinde çalışan Red Hat ve Centos sanal makinelerinizi Hyper-V sanal makine yöneticisine taşıdığınızda hata alır ve sanal makineleri direkt çalıştıramazsınız. Uzun uğraşlar ve denemeler sonucunda bulduğumuz yöntem ile artık problemsiz bir taşıma işlemi gerçekleştirebilirsiniz.

Hyper-V, yönetimsel, performans açısından ve Windows entegrasyonu gibi sebeplerle birçok sistem yöneticisinin kullandığı başarılı ve profesyonel bir sana makine yöneticisidir. Aynı şekilde Virtualbox’ta birçoklarının işini fazlasıyla görmekte. Fakat bir gün sanal makinelerinizi Virtualbox ortamından hyper-V ortamına taşımayı planlarsanız ve işletim sistemi olarak Red Hat veya Centos kullanıyorsanız bir takım sorunlar sizi bekliyor.

Virtualbox sanal makine yöneticisindeki VM’leri Hyper-V’ye taşıyıp VM’i açtığınızda aşağıdaki resimde gördüğünüz hatayı almış olma ihtimaliniz çok yüksektir. Boot edemem sorununu aşmak için bir çok yöntem denedik, farklı disk export programlarını kulandık vs. Fakat sorun daha karmaşık çıktı. Yine de güzel haber, çözümü hemen aşağıda.

Aldığımız hata metni şu şekilde;

Warning: /dev/cl/root does not exist
Warning: /dev/cl/swap does not exist
Warning: /dev/mapper/cl-root does not exist

Virtualbox’ta kullandığınız VM’in vdi disk dosyasını vhd‘ye çevirip Hyper-V’de import ettikten sonra boot edememe sorunu yaşıyoruz. Ve bu diskler recovery modda girdiğinizde de dev dizini altında gözükmüyor. Öyleyse gelelim çözüme.

Çözüm

Virtualbox üzerindeki Red Hat ve Centos VM’lerinin vdi dosyalarını vhd’ye çevirmeden önce hyperv-tools paketini kuracağız ve ardından aşağıdaki komutla kerneli yeniden derleyeceğiz. Önce paketi kuralım.

dnf install -y hyperv-tools

Ardından kerneli derleyecek kodumuzu çalıştıralım. Bu aşamada işletim sistemi major sürümünüze göre birkaç çeşit komut bloku mevcut. Yazıyı yazdığım bu tarihte yüksek ihtimalle Centos 7 veya 8 kullanıyor olmanıza rağmen yine de diğer sürümler için gereken komutu da ekleyelim.

mkinitrd -f -v --with=hid-hyperv --with=hv_utils --with=hv_vmbus --with=hv_storvsc --with=hv_netvsc /boot/initramfs-$(uname -r).img $(uname -r)
  • Centos 6 için:
mkinitrd -f -v --with=hid-base-hv --with=hid-hyperv --with=hv_utils --with=hv_vmbus --with=hv_storvsc --with=hv_netvsc /boot/initramfs-$(uname -r).img $(uname -r)
  • çok eskide kaldı fakat yinede Centos 5 için:
mkinitrd -f -v --with=hid-base-hv --with=hid-hyperv --with=hv_utils --with=hv_vmbus --with=hv_storvsc --with=hv_netvsc /boot/initrd-$(uname -r).img $(uname -r)

Şimdi VirtualBox programında File -> Virtual Media Manager‘a girelim.

Red Hat / Centos imajınızı seçerek Kopyala butonuna tıklayınız.

Disk tipini vhd ve depolama türünü değişken seçtikten sonra disk dosyasını istediğiniz bir dizine kopyalayınız.

Sıra Hyper-V’ye geldi. Yeni bir Hyper-V VM oluşturunuz ve Disk ekleme aşamasında yukarıda export aldığımız vhd diski ekleyiniz.

Şimdi sanal makinemizi çalıştıralım.

Tebrikler! Artık eskiden virtualbox üzerinde olan sanal makinelerimizi Hyper-V’ye taşıdık ve başarıyla çalıştırdık.