Arch Linux: grub-mkconfig зависает на создании /boot/grub/grub.cfg

Автор: | 23/02/2019

Во время установки новой системы на новый компьютер – grub-mkconfig зависает при создании файла конфигурации GRUB.

Нет ни ошибок, ни предупреждений.

Решение нагуглилось тут>>>, запишу его и себе.

Сама ошибка выглядит так:

[simterm]

[root@archiso boot]# grub-mkconfig -o /boot/grub/grub.cfg
^C

[/simterm]

Прерываем по Ctrl+C.

Проверяем скрипт /usr/bin/grub-mkconfig – находим все редиректы 2> (stderror) в /dev/null:

[simterm]

[root@archiso boot]# cat  /usr/bin/grub-mkconfig | grep null
  case "`uname 2>/dev/null`" in
      for g in `id -G 2>/dev/null` ; do
GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true
GRUB_DEVICE_BOOT_UUID="`${grub_probe} --device ${GRUB_DEVICE_BOOT} --target=fs_uuid 2> /dev/null`" || true
GRUB_FS="`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2> /dev/null || echo unknown`"

[/simterm]

Редактируем скрипт, и удаляем 2> /dev/null из следующих строк, что бы вывести ошибки на консоль:

GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true
GRUB_DEVICE_BOOT_UUID="`${grub_probe} --device ${GRUB_DEVICE_BOOT} --target=fs_uuid 2> /dev/null`" || true
GRUB_FS="`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2> /dev/null || echo unknown`"

Запускаем grub-mkconfig ещё раз:

[simterm]

[root@archiso boot]# grub-mkconfig -o /boot/grub/grub.cfg
  WARNING: Failed to connect to lvmetad. Falling back to device scanning.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sda not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/vg_arch/root not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/vg_arch/home not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb3 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdb4 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdc not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdc1 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/sdc2 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.
  WARNING: Device /dev/vg_arch/root not initialized in udev database even after waiting 10000000 microseconds.
^C

[/simterm]

Решение

Выходим из chroot-окружения по Ctrl+D, создаём каталог /mnt/hostlvm и монтируем /run/lvm с хоста в этот каталог:

[simterm]

[root@archiso ~]# mkdir /mnt/hostlvm
[root@archiso ~]# mount --bind /run/lvm /mnt/hostlvm

[/simterm]

Возвращаемся в устанавливаемую систему, создаём там симлинк:

[simterm]

[root@archiso ~]# arch-chroot /mnt
[root@archiso /]# ln -s /hostlvm /run/lvm

[/simterm]

И запускаем grub-mkconfig ещё раз:

[simterm]

[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done

[/simterm]

Готово.