Собранное ядро ​​создает не загружаемые initramfs на Centos 7 - PullRequest
0 голосов
/ 02 июня 2019

Я собираю свое собственное ядро ​​(4.19.37) и у меня нет проблем во время сборки (make) или установки (make install_modules + make install). Кажется, все идет хорошо, пока я не выполню grub2-mkconfig -o /boot/grub2/grub.cfg. При выполнении этой команды grub находит как мои существующие, так и новые vmlinuz-* ядра в /boot/, а также соответствующие им initramfs-*.img. Однако в этот момент система зависает на неопределенное время (> несколько часов). Ctrl+C похоже не останавливает это и я должен перезагрузиться. Я изучил эту проблему, и все, что я обнаружил, что может быть проблемой, - это исследование дисков для удаления загрузочных ОС, которые я удалил, удалив их и добавив GRUB_DISABLE_OS_PROBER=true к /etc/default/grub на в этом SE почта . Ни то, ни другое не помогло.

После перезагрузки я попадаю в командную строку grub>, предположительно потому, что grub2-mkconfig никогда не завершал работу и не повредил файл конфигурации grub. Здесь я могу без проблем загрузить как старое, так и новое ядро, а также initramfs, но когда я выполняю загрузку, у меня возникает паника ядра:

end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

Естественно, я предполагаю, что что-то не так с моим initramfs-4.19.37.img, созданным в процессе сборки. В качестве эксперимента я проверил, могу ли я загрузить новое ядро, но использовать старые initramfs (4.19.10), и оно действительно загружается в emergency mode. Я, однако, не могу сделать наоборот, старое ядро ​​с новыми initramfs. Что-то не так с моим новым образом initramfs.

Становясь умнее, мой последний эксперимент заключался в монтировании старого и нового образа initramfs с помощью mount. Они оба успешно монтируются без ошибок и имеют одинаковую структуру файлов. Я также сравнил мои новые и старые .config файлы для сборок ядра, и различия тривиальны.

Несколько других заметок / замечаний:

  • На изображении выше вы видите, что List of all partions: ничего не производит, поэтому мне интересно, есть ли проблема с типом файловой системы? Мой жесткий диск xfs, какая файловая система для initramfs? CPIO
  • В командной строке grub>, ls / производит то, что я ожидаю увидеть в /boot. Он содержит все мои vmlinuz-* и initramfs-*.img файлы
  • Моя файловая система xfs
  • Я пробовал разные версии ядра с такими же результатами
  • У меня дважды были успешные сборки и установки, когда-то существующее ядро ​​(4.19.10), это было обновление, и второй раз с тем же ядром с моделью low-latency pre-emption. Тогда я не могу понять, что я сделал по-другому.

Итак, последний вопрос (и): что не так с initramfs формой этих сборок? Что еще я могу сделать, чтобы проверить его целостность? Есть ли какие-либо изменения .config, которые я должен внести при сборке ядра для файловой системы xfs?


Отказ от ответственности: Так что это на самом деле продолжение [этого вопроса] [3], но я немного упростил проблему. Некоторая справочная информация там может быть актуальной.

...