Назад | Перейти на главную страницу

Предупреждение GRUB «Некоторые модули могут отсутствовать в основном образе»

один жесткий диск разбился из моего RAID, и я добавил новый жесткий диск.
Теперь я хотел установить GRUB на новый жесткий диск: с grub-install /dev/sdb. Я получаю эти предупреждения:

Installing for i386-pc platform.
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
Installation finished. No error reported.

На update-grub2 Я получил:

Generating grub configuration file ...
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
Found linux image: /boot/vmlinuz-3.13.0-32-generic
Found initrd image: /boot/initrd.img-3.13.0-32-generic
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
Found linux image: /boot/vmlinuz-3.13.0-30-generic
Found initrd image: /boot/initrd.img-3.13.0-30-generic
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
done

Выход cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md3 : active raid1 sdb4[3] sda4[2]
      1847608639 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sdb2[3] sda2[2]
      524276 blocks super 1.2 [2/2] [UU]

md2 : active raid1 sdb3[3] sda3[2]
      1073740664 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sdb1[3] sda1[2]
      8387572 blocks super 1.2 [2/2] [UU]

unused devices: none

Я переустановил оба ядра с apt-get install --reinstall но эти ошибки / предупреждения сохраняются.
Кто-нибудь знает, как от них избавиться?

Обновить:

Поскольку это было всего лишь предупреждение, а не ошибка (и GRUB должен быть все еще на sda), я перезапустил систему. Система загрузилась, и предупреждения исчезли. Я не знаю, что вызвало предупреждение.

Было то же самое сегодня. Оказывается, это вызвано grub-probe пытается получить доступ к разделам через /dev/sda, который не согласован с кешем /dev/sda1sda2 и так далее).

Вы можете исправить это, используя

blockdev --flushbufs /dev/sda1

(при необходимости повторите для других разделов).

У меня была такая же проблема при восстановлении деградированного массива SW-RAID, и я споткнулся об этом на другом веб-сайте:

Источник grub-2.00, в котором возникает предупреждение, находится в ./grub-core/disk/diskfilter.c и имеет следующий комментарий:

/* TRANSLATORS: This message kicks in during the detection of
   which modules needs to be included in core image. This happens
   in the case of degraded RAID and means that autodetection may
   fail to include some of modules. It's an installation time
   message, not runtime message.  */

(Взято из https://bbs.archlinux.org/viewtopic.php?id=160785)

Другими словами, эта странная ошибка возникает, когда у вас ухудшились RAID-массивы, и должна исчезнуть (что произошло в вашем случае), когда ваши массивы будут работать правильно.

Когда мои RAID-массивы, наконец, завершили синхронизацию, ошибка исчезла как в update-grub, так и в grub-install.

Поскольку это было всего лишь предупреждение, а не ошибка (а GRUB все еще должен быть на sda), я перезапустил систему.
Система загрузилась, и предупреждения исчезли.
Я не знаю, что вызвало предупреждение.

Используя grub2-install при переходе с одного диска на raid1, у меня были очень похожие симптомы - несколько строк с предупреждениями, как показано ниже. Однако я не хотел перезагружаться только для того, чтобы «проверить», является ли это фатальной проблемой. В моем случае я хотел разместить / загрузиться на 4-дисковый RAID1, в то время как другие разделы должны были быть разделены на 2-дисковые RAID1:

grub2-install: warning: Couldn't find physical volume ‘(null)’. Some modules may be missing from core image..

grub2-mkconfig также показал несколько ошибок в полученной конфигурации:

/usr/sbin/grub2-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..

Я обнаружил, что проблема в том, что я создал массив RAID без указания версии метаданных. Более старые версии grub требуют --metadata = 0.90 при создании массива. После повторного выполнения этого бита в разделе / ​​boot grub2-install сработал на 100%. Имейте в виду, что исходный раздел с / boot был / dev / sda1, поэтому в приведенных ниже командах отсутствует 3 диска + 1 вместо всех 4 дисков.

Перед:

$ mdadm --create --level 1 /dev/md2 --raid-devices=4 /dev/sd{b,c,d}1 missing

После:

$ mdadm --create --level 1 /dev/md2 --raid-devices=4 --metadata=0.90 /dev/sd{b,c,d}1 missing

Что касается карты устройств, у grub была команда «grub-mkdevicemap». Это было заменено флагом "--recheck" в grub2-install:

Старый:

$ grub-mkdevicemap -n
$ grub-install /dev/sda

Новое:

$ grub2-install --recheck /dev/sda

Также помните, что при использовании нескольких дисков необходимо повторить команду на всех дисках. Это предотвращает ситуацию, когда у вас установлен grub только на один диск, но этот диск умирает на вас (что приведет к незагружаемой системе):

$ for disk in sd{a,b,c,d} ; do grub2-install --recheck /dev/$disk ; done
Installing for i386-pc platform.
Installation finished. No error reported.
Installing for i386-pc platform.
Installation finished. No error reported.
Installing for i386-pc platform.
Installation finished. No error reported.
Installing for i386-pc platform.
Installation finished. No error reported.

Это происходит из-за того, что карта устройств grub (/boot/grub/device.map) больше не верна после замены диска из рейда. Просто беги

grub-mkdevicemap -n

для обновления карты устройства и

grub-install

для соответствующих устройств.