%20%D0%B2%20%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E%20%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%83%20Virtual%20Box.png)
Недавно я перенес образ DD моего Vultr VPS на свой домашний компьютер. Я использовал Debian VirtualBox VM для создания нового виртуального диска, смонтировал образ DD, синхронизировал все файлы из образа DD на новый виртуальный диск с помощью rsync. Я отредактировал /etc/fstab
с новым UUID для корневой файловой системы и отредактировал /etc/networking/interfaces
с новым интерфейсом на виртуальном диске. Затем я отсоединил его от этой VM.
Я создал совершенно новую виртуальную машину VirtualBox, подключил этот недавно созданный виртуальный диск и предположил, что он загрузится. Но он не загрузился. Все, что я получаю, это мигающий курсор на черном экране. Больше ничего не происходит. Я даже сделал rsync /boot
из работающей виртуальной машины Debian VirtualBox. Все еще только мигающий курсор.
Есть ли что-то очевидное, что я упускаю? Есть мысли? Спасибо за ваш вклад.
решение1
Есть.
Прежде чем в процессе загрузки появится концепция файловой системы, что-то должно загрузить фрагмент кода, способный понимать файловую систему. Он называется загрузчиком и обычно располагается в первых нескольких секторах диска или в специальной папке на специальном разделе UEFI.
В вашем случае это, скорее всего, GRUB, который необходимо установить на новый образ (опять же: вне корневой файловой системы!)
Загрузитесь с работающей системы Linux в режиме восстановления и (пере)установите Grub на виртуальный диск.
решение2
Благодаря ответу @Eugen Rieck у меня все заработало!
Также спасибоhttps://unix.stackexchange.com/questions/191218/how-to-install-grub-on-a-new-driveи как исправить неправильный UUID в grub.cfg?
Решение:
- Я загрузил GParted Live и запустил терминальный сеанс.
sudo mount /dev/sda1 /mnt
sudo /mnt/usr/sbin/grub-install /dev/sda --skip-fs-probe --boot-directory=/mnt/boot
sudo sed -i 's/OLD-UUID/NEW-UUID/g' /mnt/boot/grub/grub.cfg
(Я взял старый UUID из файла grub.cfg. Он указан несколько раз, отсюда и глобальная замена наsed
. А новый UUID берется изblkid
.)