Специально собранное ядро ​​создает незагружаемый initramfs - CentOS 7

Специально собранное ядро ​​создает незагружаемый initramfs - CentOS 7

Я собирал свое собственное ядро ​​(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/grubperэтот пост SE. Ни то, ни другое не помогло.

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

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

конец Паника ядра - не синхронизируется: VFS: Невозможно смонтировать корневую файловую систему на 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моделью упреждения. Я не могу понять, что я тогда сделал по-другому.

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


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

Связанный контент