LINUX.ORG.RU
ФорумAdmin

Почему во время обновления системы изменился UUID диска?

 


0

2

Здравствуйте.

Имеется VDS на debian 11.

Решил сделать обновление системы: apt update && apt upgrade.

Во время обновления grub-pc в консоле вылезло вот такое сообщение как на скриншоте - https://imgur.com/a/0zbfSmd

Дублирую текст со скриншота:

Системный загрузчик GRUB был установлен на диск, которого больше нет в системе, или по какой-то причине был изменён уникальный идентификатор.
Важно убедиться, что установленный основной образ GRUB синхронизирован с модулями GRUB и grub.cfg. Проверьте ещё раз, что GRUB записан на  правильные загрузочные устройства.                                                                                                              
Если вы не знаете какое устройство указано в BIOS для загрузки, часто лучше всего установить GRUB на все устройства.                            
Замечание: также возможно установить GRUB в загрузочную запись раздела, и здесь предлагаются соответствующие разделы. Однако, это включает в    
GRUB использование механизма блок-листа, при котором уменьшается надёжность, и поэтому это не рекомендуется.                                    
Устройства, на которые устанавливается GRUB:
/dev/sda
/dev/sda1

Подскажите пожалуйста почему такое сообщение появилось, почему мог измениться уникальный идентификатор?

В процессе обновления системы так же обновилось ядро, если это имеет значение.

Последовательность настройки пакетов была такая:

сначала пакет linux-image-5.10.0-32-amd64 с вот такими действиями

Настраивается пакет linux-image-5.10.0-32-amd64 (5.10.223-1) …
I: /vmlinuz.old is now a symlink to boot/vmlinuz-5.10.0-23-amd64
I: /initrd.img.old is now a symlink to boot/initrd.img-5.10.0-23-amd64
I: /vmlinuz is now a symlink to boot/vmlinuz-5.10.0-32-amd64
I: /initrd.img is now a symlink to boot/initrd.img-5.10.0-32-amd64
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-5.10.0-32-amd64
/etc/kernel/postinst.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.10.0-32-amd64
Found initrd image: /boot/initrd.img-5.10.0-32-amd64
Found linux image: /boot/vmlinuz-5.10.0-23-amd64
Found initrd image: /boot/initrd.img-5.10.0-23-amd64
Found linux image: /boot/vmlinuz-5.10.0-21-amd64
Found initrd image: /boot/initrd.img-5.10.0-21-amd64
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
done

чуть позже linux-image-amd64

Настраивается пакет linux-image-amd64 (5.10.223-1) …

и ещё чуть позже grub-pc с сообщением, которое я указал и выложил на скриншоте

Настраивается пакет grub-pc (2.06-3~deb11u6) …

lsblk выглядит так

$ lsblk  -f
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sda                                                                          
└─sda1 ext4   1.0         417a7b04-8613-47d8-ad48-6ccdb14a26c8     41G    49% /
sr0

sda1 не загрузочный

Разве установка нового ядра меняет UUID раздела? Спасибо.

Разве установка нового ядра меняет UUID раздела?

Граб не умеет пользоватся uuid, в этом-то и проблема. Малейшее изменение символьных названий разделов (удалили, добавили, сменили интерфейс, сменили контроллер в биосе и т.п.) и он уже выпадает в свою консоль восстановления.

raspopov
()
Ответ на: комментарий от raspopov

Граб не умеет пользоватся uuid

4.2

menuentry 'Void GNU/Linux' --class void --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-caa978a9-3e88-4a27-bec8-a69524c97a38' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod f2fs
	search --no-floppy --fs-uuid --set=root caa978a9-3e88-4a27-bec8-a69524c97a38
	echo	'Loading Linux 6.6.52_1 ...'
	linux	/boot/vmlinuz-6.6.52_1 root=UUID=caa978a9-3e88-4a27-bec8-a69524c97a38 ro  
	echo	'Loading initial ramdisk ...'
	initrd	/boot/initramfs-6.6.52_1.img
}

u5er ★★
()

Ещё можно добавить исходное сообщение, до локализации:

The grub loader was previously installed to a disk that is no longer present, or whose unique identifier has changed.
It warns that grub has to be written to the appropriate boot devices in order for it to stay in sync.

По нему гуглить веселее. Дальше советуют смотреть ″debconf-show grub-pc″ и думать, почему дебиан считает, что установил grub на устройство, которого нет в системе.

Тут целая мешанина, из того, что виртуалка меняет выдаваемую информацию, dpkg думает о том, куда ставил grub и grub, который не может передать системе информацию откуда он загружался.

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от u5er

Это вобще мимо кассы. Содержимое конфига grub не связано с процессом его загрузки. GRUB в начале должен загрузить сам себя и загрузить в себя конфиг-файл.

Можете поизучать команду ″grub-probe″ и понять, можно ли из MBR или файла BOOTX64.EFI вытащить информацию, откуда GRUB будет себя и конфиг загружать и какие модули он засунул в stage1.

mky ★★★★★
()
Ответ на: комментарий от u5er

Граб не умеет пользоватся uuid

4.2

grub действительно не умеет в uuid.
Тот uuid что прописывается в конфиге обрабатывает не grub, а или скрипты+udev записанные в initramfs.

Atlant ★★★★★
()
Последнее исправление: Atlant (всего исправлений: 1)
Ответ на: комментарий от Atlant

Тот uuid что прописывается в конфиге обрабатывает не grub

Ну эту то строку обрататывает grub:

search --no-floppy --fs-uuid --set=root caa978a9-3e88-4a27-bec8-a69524c97a38

То есть искать ФС с ядром и initramfs он может по UUID.

Другое дело, что с поиском самого конфига у него плохо. Он обычно ищет по номеру раздела. Но, если каталог grub/ будет на MD-RAID, то в grubx64.efi (и в core.img) будет прописано что-то типа (mduuid/77716c1d5a0125faec3aa8b3c8e4e34)/grub, то есть поиск по uuid md-raid'а.

Ну или через grub-mkimage, наверно, можно что-то сотворить.

mky ★★★★★
()
Ответ на: комментарий от mky

То есть …

Ну или …

Зачем гадать? Поставьте виртуалку и попробуйте вcтавить или удалить раздел перед системным, и пощупайте результат сами.

P.S. Проще всего иметь загрузочную флешку с SuperGrub (https://www.supergrubdisk.org/). Загрузить систему, ответственную за граб, с неё. И штатно обновить конфигурацию граба изнутри (update-grub).

raspopov
()
Ответ на: комментарий от raspopov

Что значит «удалить раздел перед системным»?

У меня так: «Bios Boot», «ESP», «/boot (grub)», «swap», «/». Причём, у меня снят образ первого гигабайта этого диска, и когда мне надо сделать ещё одну систему, я этот гигабайтый образ dd на новый ssd, потом восстанавливаю копию GPT, меняю размеры swap и root разделов, случайный GUID, UUID, редактирую grub.cfg. Но grub не переустанавливаю и всё работает, в гибридном режиме (MBR и EFI).

Чтобы сломать дефолтный груб нужно удалить раздел перед /boot/grub. Причём не просто удалить, а чтобы у номера разделов сдвинулись. Об этом обычно никто не просит и разделы нулевого размера никому не помешают, но разработчики программ (редакторов разделов) об этом не в курсе.

mky ★★★★★
()