Назад | Перейти на главную страницу

Миграция с CentOS 7 VMWare на Hyper-V - диск не отображается

У меня была виртуальная машина, которая была перенесена из VMWare, и я подтвердил, что диск соответствует ожиданиям, загрузившись с Live CD, смонтировав и проверив файловую систему.

Система также до некоторой степени загружается, но через некоторое время она перестает пытаться, переходя к терминалу «dracut», я прочитал журналы в /run/initramfs/rdsosreport.txt и увидел это:

Hyper-V Virtual Machine detected, ATA device ignore set

В терминале я тоже увидел ошибку о том, что /dev/disk/by-uuid/{uuid here} не было в наличии. Пока я был в Ubuntu, я проверил UUID, указанные в ошибке, /etc/fstab и все совпало с выводом из blkid.

Я также выполнил чистую установку CentOS, которая загрузилась нормально, так что это почти наверняка связано с перенесенной установкой.

Извините, если этого недостаточно для продолжения, если кому-то понадобится какая-либо конкретная информация, я сделаю все возможное, чтобы обновить вопрос.

В случае, если это поможет, я использую Windows 10, версия 1903, сборка 10.0.18941.1001 (это версия отчетов Hyper-V).

Я считаю, что вам нужно будет восстановить файл initramfs /boot/initramfs-(kernel version).img, из-за смены виртуального оборудования. Модуль, используемый ядром CentOS для доступа к виртуальному диску, вероятно, отличается. Пожалуйста, следуйте этим инструкциям:

  • Прикрепите установочный ISO-образ CentOS 7 к виртуальной машине
  • Загрузитесь в режиме восстановления Anaconda (инструкции) (альтернативные инструкции)
  • Убедитесь, что файловая система внутри виртуального диска правильно смонтирована на /mnt/sysimage
  • Использовать dracut для восстановления initramfs: # chroot /mnt/sysimage dracut --no-hostonly --force --regenerate-all --verbose
  • Запрограммируйте перемаркировку SELinux: # touch /mnt/sysimage/.autorelabel
  • Выйти из режима восстановления Anaconda

Initramfs - это образ файловой системы, который загрузчик извлечет в память после загрузки ядра и перед переключением на него контекста выполнения. Ожидается, что такой образ будет содержать все модули, которые потребуются ядру для поиска блочного устройства, содержащего корневую файловую систему. Я не знаю, какие модули нужны для виртуальной машины Hyper-V; если вы можете найти их самостоятельно, вы можете сказать dracut чтобы добавить их в восстановленные initramfs с помощью --add-drivers аргумент.