
Я обновился до Windows 10 с помощью резервной копиивсеиз старой старой Windows, а затем установил с чистым форматированием; все новое.
У меня есть Debian 8.1 в Virtual Box, который также был сохранен полностью, а не только образ диска.
Я устанавливаю VirtualBox, снова запускаю эту машину и, к моему удивлению, Debian жалуется, что не может найти корневой раздел (раздела с таким UUID не существует), переходит в небольшую оболочку и отказывается загружаться.
Я подозревал, что записи в fstab
больше не верны, поэтому я загрузил живой дистрибутив и проверил его ... blkid
сообщаю те же UUID, что и вfstab
Так,в чем подвох?!?
В VMware я делаюнетсталкиваюсь с этой проблемой, если копирую/перемещаю машины, переустанавливаю VMware и т. д., то появляется вопрос, скопировано или перемещено, и никогда не было подобных проблем.
P.S. Пожалуйста, не отмечайте этот вопрос как тупой, я читал«Какой рекомендуемый способ переноса виртуальной машины VirtualBox на другой компьютер?»и попробовалвариант 2 в этом вопросеЯ скопировал все файлы и поместил их в нужное место. Опять же, загружая живой Linux в этой виртуальной машине, я вижу жесткий диск с правильным UUID.
решение1
Ну, я бы сказал, что вам лучше экспортировать свою виртуальную машину (в .ova
контейнер) перед тем, как стереть данные с хост-системы, а затем импортировать ее позже — VirtualBox может сделать это из своего графического интерфейса.
Но ладно, вернемся к вашему вопросу... Я припоминаю, что у VirtualBox есть отдельный «реестр» для всех носителей, которые используют ваши виртуальные машины. Если я правильно помню, он хранится в XML-файле где-то в профиле текущего пользователя.
Итак, я бы начал с открытия окна управления носителями из графического интерфейса VBox и убедился, что диск Debian действительно существует и известен менеджеру носителей VBox.
Следующее, что следует проверить, — это перейти к свойствам виртуальной машины и убедиться, что носитель, представляющий жесткий диск виртуальной машины, доступен и имеет статус «OK».
Если загрузка виртуальной машины после этого не удалась, сделайте следующее: когда во время ранней загрузки (после BIOS) появится окно GRUB (загрузчик Debian), нажмите e
(или что там подскажет — я так и не запомнил), чтобы отредактировать загрузочную запись для вашей системы — вам будет представлена командная строка, переданная загрузчиком ядру, и она содержит параметр с именем «root» (имеется в виду корневая файловая система). В наши дни аргумент root содержит некоторое закодированное в UUID имя устройства, и поэтому все это выглядит примерно так:
/boot/vmlinuz-3.2.0-4-amd64 root=UUID=2cb5a97c-75ab-4c8b-afd9-19297e3553bd ro single
Вам следует заменить эту UUID=blah...
часть на /dev/sda1
что-то вроде
/boot/vmlinuz-3.2.0-4-amd64 root=/dev/sda1 ro single
и, скорее всего, он загрузится нормально.
(Обратите внимание, что путь к файлу ядра /boot/vmlinuz-3.2.0-4-amd64
указан из моей системы; на вашей он может быть другим — не лезьте в него, вам следует изменить только параметр root=
).
Обратите внимание, что это /dev/sda1
означает первый первичный раздел на первом жестком диске (SATA/SCSI). Если ваш корневой раздел находится где-то в другом месте, вам придется это выяснить. Если вы понятия не имеете, что это такое, попробуйте и т. д. 2
, 3
пока не получится.
После загрузки системы запустите
# dpkg-reconfigure grub-pc
перенастроить GRUB так, чтобы он использовал правильное имя устройства для корневой файловой системы.
Вам также может потребоваться исправить /etc/fstab
файл, если UUID устройства действительно изменился. Для этого запустите
# blkid /dev/sda1
и замените значение UUID в соответствующей записи fstab на то, которое указано blkid
в UUID
значении.
Число в нем, /dev/sdN
очевидно, должно совпадать с тем, что у вас работает в качестве root=
параметра ядра.
решение2
Если после перемещения виртуальной машины и попытки ее запуска вы получаете примерно такое сообщение:
Не удалось открыть жесткий диск.
Невозможно зарегистрировать жесткий диск, так как жесткий диск с UUID уже существует.
Затем перейдите в каталог вашей виртуальной машины; конечно же, измените фактический путь так, чтобы он соответствовал фактическому пути, по которому вы переходите:
cd /full/path/to/virtualbox/virtualmachine/Sandbox
И выполните эту команду, чтобы назначить диску новый UUID:
VBoxManage internalcommands sethduuid Sandbox.vdi