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

12

один жесткий диск вышел из строя из моего 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-grub2I получим:

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), я перезапустил систему. Система загрузилась и предупреждения исчезли. Я не знаю, что вызвало предупреждения.

pythonimus
источник
Похоже, вы что-то упустили. Какой уровень RAID вы используете? После того, как вы добавили устройство в RAID, вы не должны работать с ним напрямую. Пожалуйста, опубликуйте результат cat /proc/mdstatздесь.
маньяк
добавил вывод в мой пост. Уровень RAID 1. Повторная синхронизация уже выполнена.
питонимус
Итак, все ваши диски и md-устройства работают. Не следует пытаться установить grub напрямую - mdadm автоматически синхронизирует содержимое жесткого диска. Если вы хотите установить grub на md-устройство, используйте его grub-install /dev/md1, но уверены ли вы, что вам нужен grub на md-устройстве? Вы загружаетесь с устройства md?
маньяк
1
Я делаю это так, как упомянуто здесь. Шаг 12: Переустановите GRUB 2 ([...] Не указывайте номер раздела) [...] Если системные разделы находятся на программном RAID, установите GRUB 2 на все диски в RAID. [...] Или здесь
pythonimus

Ответы:

16

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

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

blockdev --flushbufs /dev/sda1

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

Фрукты
источник
это сделало это для меня, этого было достаточно для запуска в / boot разделе
lifeofguenter
15

У меня была такая же проблема при восстановлении устаревшего массива 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.

Harald
источник
1
Я просто сменил жесткий диск и перестроил рейд. Когда я запустил grub-install во время перестройки, я получил эти предупреждения. Я могу подтвердить, что когда восстановление завершилось и я снова запустил grub-install, эти предупреждения исчезли!
Вангелис Тасулас
2
Не исчез для меня в течение 3 дней. Перестройка была сделана, когда я впервые попробовал grub-install.
питонимус
3

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

pythonimus
источник
2

При использовании grub2-install при переходе с одного диска на raid1 у меня были очень похожие симптомы: несколько строк предупреждения были следующими. Я не хотел перезагружаться, чтобы просто «проверить», является ли это фатальной проблемой. В моем случае я хотел поместить / boot на 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.
zaTricky
источник
1

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

grub-mkdevicemap -n

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

grub-install

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

Хенрик
источник