Присвоить названия нескольким ОС AstraLinux на одном компьютере

На компьютере установлено несколько систем AstraLinux. Нужно как-то различать их в меню grub, чтобы грузить нужную. При этом крайне желательно обойтись без ручного редактирования файла /boot/grub/grub.cfg, который будет перезаписан после установки новой системы, например.

Делаем следующее:

  1. Присваиваем всем файловым системам метку:
# e2label /dev/sda1 ASTRA1
# e2label /dev/sda2 ASTRA2

2. Правим два файла. Первый /etc/grub.d/10_linux, строка 136. Меняем

  echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"

на

  echo "menuentry '$(echo "$title ($(e2label `blkid -U $boot_device_id`))" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"

Второй — /etc/grub.d/30_os-prober, строка 297. Меняем

menuentry '$(echo "$title" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {

на

menuentry '$(echo "$title ($(e2label $DEVICE))" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {

3. Вызываем update-grub.

На выходе имеем в grub.cfg что-то такое:

menuentry 'AstraLinuxCE GNU/Linux, with Linux 4.15.3-1-generic (на /dev/nvme0n1p6) (ASTRA1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.15.3-1-generic--a009ed5b-4c18-4235-9baa-a711f5443472' {

Единственный нюанс — нужно это делать либо в каждой Астре, либо обновлять Grub только из одной.

Комментирование закрыто