Вопрос или проблема
Кажется, я не могу загрузиться из Xubuntu 20.04 в дублированный раздел на мой начальный / корневой раздел.
Моя единственная операционная система на компьютере была Xubuntu 20.04, смонтированная как / на разделе nvme0n1p3. Я хотел добавить новый раздел и установить корневую точку монтирования для Ubuntu 24.04 в него. Я столкнулся с проблемами, при которых ручной разделитель не мог распознать мой /boot/efi раздел (аналогично этому). На данный момент я предполагаю, что Ubuntu 24.04 не может продолжить установку, потому что требует, чтобы начальный раздел был 1 ГиБ, а не 512 МиБ, которые более чем достаточно под Xubuntu 20.04.
Таким образом, я пытаюсь освободить место, чтобы увеличить первый раздел, что означает, что мне необходимо фактически переместить nvme0n1p3. Шаги, которые казались наиболее логичными, были такими:
- создать новый раздел (nvme0n1p4) от конца текущего раздела nvme0n1p3 с зазором в 2 ГиБ
- Дублировать старую Xubuntu 20.04 с оригинального (nvme0n1p3) на новый раздел (nvme0n1p4)
- Убедившись, что я могу загрузиться и работать из дублированного раздела (nvme0n1p4), удалить оригинальный раздел (nvme0n1p3)
- Изменить размер vfat /boot/efi раздела до 2.5 ГиБ (больше, чем нужно, но как мера предосторожности против аналогичных проблем в будущем)
- Создать новый раздел nvme0n1p3 (возможно, он не будет называться так) между загрузочными и nvme0n1p4 разделами, но пока оставить его пустым
- Создать новый раздел (nvme0n1p5) в нераспределенном пространстве “справа” от существующих разделов и в конечном итоге установить (надеюсь) Ubuntu 24.04 в него.
Я застрял между шагами 2 и 3. Подробности следующие:
- Использовать gparted для выполнения описанного выше разбиения
- Перезагрузиться с Ubuntu 24.04 USB-накопителя (чтобы все разделы могли быть отмонтированы)
- dd существующий раздел nvme0n1p3 на новый раздел nvme0n1p4
- Следовать инструкции здесь, чтобы дать новому разделу уникальный UUID и изменить запись /etc/fstab в разделе nvme0n1p4 соответственно
- Запустить
update-grub
и подтвердить появление новых записей в /boot/grub/grub.cfg - Попробовать загрузиться в клонированный раздел Xubuntu 20.04 nvme0n1p4
Я, видимо, могу выбрать правильный вариант в меню grub, но это загружает меня в оригинальный раздел nvme0n1p3.
Некоторые детали:
sudo lsblk -f
:
nvme0n1
– | – | – | – | – | – |
---|---|---|---|---|---|
├─nvme0n1p1 | vfat | 995C-7BB0 | 469M | 1% | /boot/efi |
├─nvme0n1p2 | swap | e67db830-5b33-41bb-859d-8ab967d79db6 | [SWAP] | ||
├─nvme0n1p3 | ext4 | 63c24e20-9e18-4b6d-9091-5289f1398d61 | 21.8G | 65% | / |
├─nvme0n1p4 | ext4 | e3a93f78-5ba8-445a-9a9f-bcd95aabd7dd | |||
└─nvme0n1p5 | ext4 | d777c31a-6fb1-4b27-bedd-1d5400569eee |
sudo fdisk -l
Устройство | Начало | Конец | Секторы | Размер | Тип |
---|---|---|---|---|---|
/dev/nvme0n1p1 | 2048 | 976895 | 974848 | 476M | Система EFI |
/dev/nvme0n1p3 | 976896 | 157227007 | 156250112 | 74.5G | Файловая система Linux |
/dev/nvme0n1p4 | 161323008 | 325163007 | 163840000 | 78.1G | Файловая система Linux |
/dev/nvme0n1p5 | 325163008 | 489003007 | 163840000 | 78.1G | Файловая система Linux |
/dev/nvme0n1p2 | 945522688 | 976771071 | 31248384 | 14.9G | Linux swap |
Я понимаю, что не следует редактировать файл /boot/grub/grub.cfg напрямую, но я немного озадачен записями вроде
menuentry ‘Ubuntu 20.04.6 LTS (20.04) (на /dev/nvme0n1p4)’ –class ubuntu –class gnu-linux –class gnu –class os $menuentry_id_option ‘osprober-gnulinux-simple-e3a93f78-5ba8-445a-9a9f-bcd95aabd7dd’ {
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search –no-floppy –fs-uuid –set=root e3a93f78-5ba8-445a-9a9f-bcd95aabd7dd
else
search –no-floppy –fs-uuid –set=root e3a93f78-5ba8-445a-9a9f-bcd95aabd7dd
fi
linux /boot/vmlinuz-5.15.0-127-generic root=UUID=63c24e20-9e18-4b6d-9091-5289f1398d61 ro quiet splash $vt_handoff
initrd /boot/initrd.img-5.15.0-127-generic
}
update-grub
кажется подхватывает новый UUID по большей части записи, но в конечном итоге сохраняет старый UUID в строке “linux /boot/vmlinuz-5.15.0-127-generic”. Если это проблема, update-grub
явно получает неправильную информацию откуда-то, что я еще не нашел. Это проблема? Что еще я упускаю?
Сам update-grub
не предполагает, что должны быть какие-то проблемы:
Подключение файла ‘/etc/default/grub’
Подключение файла ‘/etc/default/grub.d/init-select.cfg’
Генерация файла конфигурации grub …
Найдено изображение linux: /boot/vmlinuz-5.15.0-127-generic
Найдено изображение initrd: /boot/initrd.img-5.15.0-127-generic
Найдено изображение linux: /boot/vmlinuz-5.15.0-125-generic
Найдено изображение initrd: /boot/initrd.img-5.15.0-125-generic
Найдено Ubuntu 20.04.6 LTS (20.04) на /dev/nvme0n1p4
Добавление записи в меню загрузки для настроек UEFI прошивки
готово
ИЗМЕНЕНИЕ/ДОБАВЛЕНО: Любопытно, но не загружаемый раздел nvme0n1p4 находится в секции os-prober в grub.cfg. Это предполагает, что он должен быть в секции 10_linux. update-grub
кажется ошибается?
Изменение #2: Ответ в этом вопросе убедил меня изменить /boot/grub/grub.cfg вручную и попробовать перезагрузиться. Я перенес раздел nvme0n1p4 / root в секцию 10_linux и заменил строки …-5289f1398d61 на …-bcd95aabd7dd. Выбор того же пункта меню, что и прежде, теперь загружает меня в этот раздел. Так что успех, хотя я не должен был редактировать этот файл вручную.
И, запустив (на этот раз) sudo update-grub2
, оригинальный nvme0n1p3 / корень оказывается в секции 30_os-prober, ожидаемая взаимность предыдущего, хотя на этот раз все UUID во всех блоках меню и подменю показывают …-5289f1398d61.
Ответ или решение
Когда вы сталкиваетесь с проблемой загрузки в дублированный раздел в системе Linux, одной из наиболее распространенных проблем является неправильная конфигурация загрузчика GRUB. В вашей ситуации ваш дублированный раздел Xubuntu 20.04 на nvme0n1p4 приводит систему обратно к загрузке в оригинальный раздел nvme0n1p3. Это может быть связано с некорректным указанием UUID в конфигурации GRUB. Давайте разберем этот вопрос и предложим решение.
Анализ проблемы
-
UUID и GRUB: Вы упоминали, что
update-grub
считывает UUID нового раздела правильно, но сохраняет старый UUID в строке загрузки Linux (linux /boot/vmlinuz
). Это указывает, что файл/boot/grub/grub.cfg
не был обновлен должным образом для нового UUID. Это приводит к тому, что загрузка происходит с оригинального раздела. -
Разделы os-prober и 10_linux: Заметка о том, что ваш раздел nvme0n1p4 появляется в секции os-prober, а не в 10_linux, также важна. Это может указывать на то, что GRUB не распознает ваш дублированный раздел как полноценную загрузочную систему.
Решение
-
Ручное исправление GRUB:
- Осторожно с прямыми правками: Хотя вы временно решили проблему, вручную редактируя файл
/boot/grub/grub.cfg
, это не рекомендуется как долгосрочное решение, потому что каждое последующее обновление GRUB может перезаписать ваши изменения. - Проверка UUID: Перепроверьте, что UUID, указанный в
/etc/fstab
на новом разделе, совпадает с реальным UUID новой копии раздела nvme0n1p4. Исправьте все несоответствия.
- Осторожно с прямыми правками: Хотя вы временно решили проблему, вручную редактируя файл
-
Пересоздание и обновление GRUB:
- Chroot в новый раздел: Загрузитесь с вашего USB-диска с Ubuntu 24.04, затем войдите в chroot-окружение вашего нового раздела.
sudo mount /dev/nvme0n1p4 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt
- Обновление GRUB: После входа в chroot, выполните
update-grub
еще раз. Перепроверьте, какие UUID и дисковые устройства участвуют в конфигурации.
- Chroot в новый раздел: Загрузитесь с вашего USB-диска с Ubuntu 24.04, затем войдите в chroot-окружение вашего нового раздела.
-
Освежение GRUB в EFI:
- Убедитесь, что GRUB установлен корректно на вашем EFI-разделе. Используйте команду:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
- Подтвердите, что ваш
grub.cfg
действительно учитывает новую конфигурацию.
- Убедитесь, что GRUB установлен корректно на вашем EFI-разделе. Используйте команду:
-
Проверка корректности fstab:
- Перепроверьте файл
/etc/fstab
на новом разделе, чтобы все записи были актуальными и не ссылались на старые идентификаторы или устройства.
- Перепроверьте файл
Заключение
Ручные изменения в grub.cfg
могут временно решить проблему загрузки, но для устойчивого решения лучше убедиться, что конфигурация автоматически создается правильно. Внимательное использование chroot с последующим обновлением GRUB позволяет гарантировать корректную загрузку с правильного раздела. В долгосрочной перспективе, такой подход предотвратит проблемы при обновлениях системы и настройках загрузки.