Сборка ядра под свое железо, фс и т.п.?

Автор Human, 26 апреля 2014, 17:56:00

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Human

Собственно вопрос в названии темы. Сделать что-то типа ядра generic, но без initrd, а с прикрученными модулями. Если смысл в этом есть, то на какие параметры в первую очередь обратить внимание? Цель - ускорение загрузки и повышение производительности. Опыт сборки ядер в других дистрибах имеется. Слака 14.1

зы. и еще вопрос: можно-ли для этого использовать исходники ядра от версии current? Или это потянет еще много всего?

bormant

1) Про "без initrd". Нужно понимать, что задача initrd обеспечить ядро модулями, которые не вкомпилированы в ядро, но необходимы для подключения корневого раздела (от контроллер диска до драйвера файловой системы). Если всё вкомпилировано в ядро, то initrd не нужен.

2) Про "ускорение загрузки и повышение производительности". Такое было бы возможно только за счет подгрузки модулей и времени их инициализации. То есть, экономия только за счет включения непосредственно в ядро нужных модулей. Сколько при этом можно реально сэкономить,  судить трудно. Возможные проблемы/непонятки -- параметры вкомпилированным в ядро модулям задаются иначе, чем отдельным.

3) Использовать можно любые исходники нужной версии.

4) Особенность Slackware -- это только сборка собранного ядра и набора модулей в отдельные пакеты (при наличии желания) слакбилдами или вручную.

Human

Я застал еще те времена, когда было ограничение на размер ядра в 1,44 МБ и тогда с помощью команды #dd if=/boot/vmlinuz of=/dev/fd0 было возможно создание загрузочной дискеты. Но сейчас думаю это давно уже неактуально и никакой проблемы встроить  в ядро модуль ext4 или reiser fs или любой другой и сейчас нет и тогда не было, а загрузка модулей возможна будет из обычной папки, в которую их после окончания сборки и помещают. Функционированием huge ядра я доволен и никаких видимых проблем проблем у меня с ним нет, но хотелось бы заточить его немного под свои задачи и свою архитектуру.

bormant

В нынешних ядрах есть презабавные варианты настройки, вроде
make localyesconfig
make localmodconfig
(только не забыть все возможное к применению оборудование подключить)
...
Ну или /proc/config.gz или /boot/config-* взяв за основу, отрихтовать сообразно потребностям.

Human

И еще один вопрос. Как указать ядру что оно должно искать свои модули в корневой файловой системе, а не в initrd? Какая-то команда в консоли была, но сейчас уже не вспомню.

bormant

Не совсем понятно о чем речь.
С другой стороны, если уж собираете свое ядро, что мешает включить в него (=y) драйвер корневой системы? А раз драйвер корневой ФС вкомпилирован в ядро, то и initrd не нужен, все остальное ядро возьмет из /lib/modules/версия-ядра-с-localversion/.

Human

#6
Все, теперь вспомнил. Если ядро грузится непосредственно с устройства, необходимо было заранее указать ему где именно корень искать, иначе две лампочки и kernel panic. Но сейчас не тот случай. То есть я выбираю =y для всроенного модуля ext4, загрузчик (lilo или grub) грузит ядро, остальное все как обычно?

bormant


hexray

Тоже один раз захотелось собрать заточенное под железо (ноут) ядро без всего лишнего. Вроде было это на слаке 13.37.
В итоге добиться сколь нибудь значимого ускорения загрузки или уж тем более производительности при работе, увеличения свободной RAM не удалось.
Единственное, что в ФС само ядро по размеру и его модули стали занимать меньше места. Сэкономил на спичках.
Во время загрузки львиная доля времени тратиться на выполнение скриптов /etc/rc.d/rc.{S,M}, а после ресурсы в основном кушают всякие сервисы и приложения. Так что выдающихся результатов от пересборки ядра ждать не стоит.