Я собираю свое собственное ядро (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)
Естественно, я предполагаю, что что-то не так с моим 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], но я немного упростил проблему. Некоторая справочная информация там может быть актуальной.