LINUX.ORG.RU

Howto. Загрузка ядра собранного с конфигом allmodconfig

 


0

1

Конфиг allmodconfig позволяет все модули отметить как 'm', т.е. как подгружаемые а не встроенные в ядро.

Но проблема в том что ядро с таким конфигом не загружается.

Я подразумеваю в этой статье что вы уже отметили в конфиге подходящие для вашего компьютера дисковые драйвера sata/ide/scsi как встроенные в ядро 'y' или как 'm' для размещения на initrd. Но ядро всё равно не грузится.

--------- Загрузочное сообщение ядра: Cannot open root device '(null)'

Если вы указали в grub параметр root=/dev/sda1 (sda1 указан для примера), а при при загрузке появляется сообщение 'Cannot open root device '(null)' or unknown-block(0,0)' (обратите внимание что вместо sda1 появилось null). Это значит что нужно измненить конфиг на 'CONFIG_CMDLINE_BOOL=n'.

Объяснение. CONFIG_CMDLINE_BOOL указывает что нужно использовать строку аргументов встроенное в ядро при сборке ядра. Что приводит к потере аргументов указанных в загрузчике grub. Т.е. параметра root.

---------- Загрузочное сообщение ядра: Failed to execute /init

При использовании initrd при загрузке может появится сообщение 'Failed to execute /init' и нужно измненить конфиг на 'CONFIG_BINFMT_SCRIPT=y'.

Объяснение. CONFIG_BINFMT_SCRIPT отвечает за поддержку возможности запускать скрипты начинающиеся к примеру на '#!/bin/sh'.

2016

init скриптом на баше

anonymous ()
Ответ на: комментарий от anonymous

Это initrd на ram-диске. Который указывается в грубе в параметре «initrd=/boot/initrd.gz».

stalkerhouse ()

Почему я написал это HOWTO. Дело в том что в readme файла ядра написано что make allmodconfig лишь выставляет 'm' для всех модулей. А на самом деле он ещё и другие параметры включает в 'y'. Например включает встроенную в ядро строку аргументов ядра (CONFIG_CMDLINE_BOOL). А CONFIG_BINFMT_SCRIPT становится в 'm' и изза этой опции система не загрузится ни в initrd, ни с реальную систему.

stalkerhouse ()
Ответ на: комментарий от stalkerhouse

У всего прогрессивного человечества давно

$ lsinitrd | grep ' init ->'
lrwxrwxrwx   1 root     root           23 May 13 11:01 init -> usr/lib/systemd/systemd

deadNightTiger ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.