Не удается загрузиться в дублированный раздел — проблема с GRUB?

Вопрос или проблема

Кажется, я не могу загрузиться из Xubuntu 20.04 в дублированный раздел на мой начальный / корневой раздел.

Моя единственная операционная система на компьютере была Xubuntu 20.04, смонтированная как / на разделе nvme0n1p3. Я хотел добавить новый раздел и установить корневую точку монтирования для Ubuntu 24.04 в него. Я столкнулся с проблемами, при которых ручной разделитель не мог распознать мой /boot/efi раздел (аналогично этому). На данный момент я предполагаю, что Ubuntu 24.04 не может продолжить установку, потому что требует, чтобы начальный раздел был 1 ГиБ, а не 512 МиБ, которые более чем достаточно под Xubuntu 20.04.

Таким образом, я пытаюсь освободить место, чтобы увеличить первый раздел, что означает, что мне необходимо фактически переместить nvme0n1p3. Шаги, которые казались наиболее логичными, были такими:

  1. создать новый раздел (nvme0n1p4) от конца текущего раздела nvme0n1p3 с зазором в 2 ГиБ
  2. Дублировать старую Xubuntu 20.04 с оригинального (nvme0n1p3) на новый раздел (nvme0n1p4)
  3. Убедившись, что я могу загрузиться и работать из дублированного раздела (nvme0n1p4), удалить оригинальный раздел (nvme0n1p3)
  4. Изменить размер vfat /boot/efi раздела до 2.5 ГиБ (больше, чем нужно, но как мера предосторожности против аналогичных проблем в будущем)
  5. Создать новый раздел nvme0n1p3 (возможно, он не будет называться так) между загрузочными и nvme0n1p4 разделами, но пока оставить его пустым
  6. Создать новый раздел (nvme0n1p5) в нераспределенном пространстве “справа” от существующих разделов и в конечном итоге установить (надеюсь) Ubuntu 24.04 в него.

Я застрял между шагами 2 и 3. Подробности следующие:

  1. Использовать gparted для выполнения описанного выше разбиения
  2. Перезагрузиться с Ubuntu 24.04 USB-накопителя (чтобы все разделы могли быть отмонтированы)
  3. dd существующий раздел nvme0n1p3 на новый раздел nvme0n1p4
  4. Следовать инструкции здесь, чтобы дать новому разделу уникальный UUID и изменить запись /etc/fstab в разделе nvme0n1p4 соответственно
  5. Запустить update-grub и подтвердить появление новых записей в /boot/grub/grub.cfg
  6. Попробовать загрузиться в клонированный раздел 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. Давайте разберем этот вопрос и предложим решение.

Анализ проблемы

  1. UUID и GRUB: Вы упоминали, что update-grub считывает UUID нового раздела правильно, но сохраняет старый UUID в строке загрузки Linux (linux /boot/vmlinuz). Это указывает, что файл /boot/grub/grub.cfg не был обновлен должным образом для нового UUID. Это приводит к тому, что загрузка происходит с оригинального раздела.

  2. Разделы os-prober и 10_linux: Заметка о том, что ваш раздел nvme0n1p4 появляется в секции os-prober, а не в 10_linux, также важна. Это может указывать на то, что GRUB не распознает ваш дублированный раздел как полноценную загрузочную систему.

Решение

  1. Ручное исправление GRUB:

    • Осторожно с прямыми правками: Хотя вы временно решили проблему, вручную редактируя файл /boot/grub/grub.cfg, это не рекомендуется как долгосрочное решение, потому что каждое последующее обновление GRUB может перезаписать ваши изменения.
    • Проверка UUID: Перепроверьте, что UUID, указанный в /etc/fstab на новом разделе, совпадает с реальным UUID новой копии раздела nvme0n1p4. Исправьте все несоответствия.
  2. Пересоздание и обновление 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 и дисковые устройства участвуют в конфигурации.
  3. Освежение GRUB в EFI:

    • Убедитесь, что GRUB установлен корректно на вашем EFI-разделе. Используйте команду:
      grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
    • Подтвердите, что ваш grub.cfg действительно учитывает новую конфигурацию.
  4. Проверка корректности fstab:

    • Перепроверьте файл /etc/fstab на новом разделе, чтобы все записи были актуальными и не ссылались на старые идентификаторы или устройства.

Заключение

Ручные изменения в grub.cfg могут временно решить проблему загрузки, но для устойчивого решения лучше убедиться, что конфигурация автоматически создается правильно. Внимательное использование chroot с последующим обновлением GRUB позволяет гарантировать корректную загрузку с правильного раздела. В долгосрочной перспективе, такой подход предотвратит проблемы при обновлениях системы и настройках загрузки.

Оцените материал
Добавить комментарий

Капча загружается...