У меня Ubuntu на SSD и HDD. Как загрузиться в Ubuntu на SSD вместо Ubuntu на HDD

  • При копировании загрузочного сектора вы также скопировали в него таблицу разделов. В зависимости от версии fdisk и точных параметров, использованных при разбиении исходного файла sdaи файла образа, ограничения на разделы могут быть или не быть в одних и тех же местах. Если бы это было не так... при монтировании циклов использовались смещения разделов, созданные вами fdisk, но при загрузке виртуальная машина использовала бы смещения разделов, скопированные из исходного sda.

  • Вы скопировали MBR с помощью dd, но содержимое /bootс помощью rsync. MBR включает смещения уровня блока -для определения местонахождения дополнительных компонентов загрузчика(<filesystem>_stage1.5или stage2для GRUB Legacy ). Крайне маловероятно, что эти файлы были бы точно в тех же местах блоков после копирования на основе rsync-.

  • Вероятно, вы полностью пропустили некоторые части загрузчика. GRUB Legacy может вставлять свои части в начало раздела, в область, которая находится за пределами файловой системы ; GRUB2 почти всегда записывает большую часть своего основного образа в блоки диска сразу после MBR,но до начала первого раздела . Копирование только первых 512 байтов диска позволяет получить только традиционную MBR, но пропускает эти вещи. Я думаю, что это наиболее вероятная причина, по которой ваша загрузка не удалась.

В зависимости от того, какой метод виртуализации вы планируете, вам, вероятно, следует использовать mount --bind /dev /mnt/img/dev, а также для /procи /sys, затем chrootвнедрить в среду образа и использовать его grub-installдля правильной перезаписи. загрузчик в файл образа с правильными смещениями блоков.

Другим возможным подходом была бы загрузка исходной системы в однопользовательском режиме или иная остановка как можно большего количества демонов в исходной системе (, т.е. приостановка системы ), а затем просто ddвсей системы. диск в образ как одна операция. Таким образом, вам обязательно нужно будет запустить fsckпри первой загрузке полученного образа, но вы избежите всех сложностей с MBR и загрузчиками.

1
10.08.2020, 12:08
1 ответ

В /boot/efi/EFI/ubuntu/grub.cfgесть UUID файловой системы, ссылающийся на любой раздел, содержащий каталог/файловую систему /boot. Это используется GRUB для поиска настоящего /boot/grub/grub.cfg, который содержит дополнительные ссылки на основе UUID -на файловую систему Ubuntu.

Когда вы копировали раздел Ubuntu на SSD, он также копировал UUID файловой системы. Таким образом, у вас есть две файловые системы с одним и тем же UUID, и при поиске этого UUID GRUB сначала просматривает жесткий диск.

Если вам больше не нужна копия на жестком диске, вам следует изменить UUID копии на жестком диске, чтобы он больше не соответствовал тому, что ищет GRUB. Команда для изменения UUID файловой системы специфична для каждого типа файловой системы :, см. этот вопрос для соответствующих команд для нескольких типов файловых систем.

Кроме того, вместо этого вы можете изменить UUID файловой системы Ubuntu на SSD, а затем заменить все ссылки на этот UUID новым UUID при установке на основе SSD -. Вам нужно будет отредактировать как минимум /boot/efi/EFI/ubuntu/grub.cfg, /boot/grub/grub.cfg, /etc/fstabи, возможно, также /etc/initramfs-tools/conf.d/resume, а затем заново сгенерировать файл initramfs на SSD. Это больше работы, но, сохранив оригинал без изменений на жестком диске, вы сможете повторить попытку копирования, если допустите грубую ошибку.

0
18.03.2021, 23:13

Теги

Похожие вопросы