Документация по LinuxLinuxDoc.Ru 🔍
🕛

Как произвести компиляцию ядра? Это заложено в установках линукса или здесь есть какие хитрости?

    cd /usr/src/linux
Опции, с которыми компилируется ядро (тип процессора, драйверы которые нужно включить (возможно в виде модулей) и еще сотни других вещей), задаются в файле /usr/src/linux/.config. Так вот, желательно не создавать его самому с нуля (особенно, если вы собираете ядро первый/второй/третий раз в жизни или наложили патч на исходники из которых уже что-то компилировали), а взять за основу .config с которым было собрано старое, работающее ядро. При этом вам прежде всего надо выдать команду make oldconfig - она используется, когда есть .config от _другой_ (обычно, более старой) версии ядра, и нужно просто получить точно такой же для текущей (возможно, ответив на пару вопросов о тех фичах, которых в старом не было), не отвечая заново на все три сотни вопросов. Затем выдайте make menuconfig и исправьте те опции, ради которых вы собственно и решили пересобрать ядро. Если вы используете Red Hat и хотите воспользоваться теми .config, c помощью которых были собраны ядра в этом дистрибутиве, то возьмите их из kernel-sources-*.i386.rpm/usr/src/linux/configs/ Затем:
    make dep make clean make zImage (make bzImage для ядер версий > 2.2) make modules
Если у вас раньше стояла эта же версия ядра, то удалите старые модули от этого ядра (/lib/modules/версия).
    make modules_install
/usr/src/linux/arch/i386/boot/(b)zImage - и есть свежесобранное ядро. Его теперь можно поинсталировать на место старого. Хотя лучше сначала попробовать, работает ли оно. Нужно добавить в lilo.conf еще один выбор - например, linux.test, - который берет ядро прямо из /usr/src/linux/arch/i386/boot/zImage. ("Valentin Nechayev" mailto:nnlx@nn.kiev.ua) Я пpедлагаю дpугой метод - пpовеpен только для Red Hat-а.
    cd /usr/src/linux-нужная_веpсия vi Makefile и заменить extraversion на свой - напpимеp, EXTRAVERSION = -vasya1
после этого все то же самое, но

make modules_install поставится в свой отдельный каталог

установка (пpавильная!) ядpа в /boot сделается сама чеpез make install

это работает только с ядрами 2.2.x (у 2.0 просто нет параметра EXTRAVERSION) и, по крайней мере теоретически, может "сломать" чей-нибудь автоконфигуратор, рассчитывающий на n.n.nn по uname -r.
(Alexander Pevzner, 2:5020/59.9) Тем, кто отважился на сборку ядра лично под себя, советуем обратить внимание на следующие факты:

В начале ядерного Makefile (/usr/src/linux/Makefile) есть переменная EXTRAVERSION. Используя ее можно получать ядра одной и той же версии, но с названиями, отличающимися суффиксом (напр, 2.2.12-20 и 2.2.12-vasya). Это хорошо, поскольку позволяет сохранить экземпляр ядра, который заведомо умеет грузиться. Родное ядро, с которым ставилась система, лучше сохранить на случай всяких неприятностей. Hадо только не забыть добавить дополнительную запись в /etc/lilo.conf (достаточно иметь всего 2 записи: на родное ядро и на свежесобранное).

В редхате в /usr/src/linux правильно работает make install и make modules_install. Ядро и модули копируются в нужное место и правильно настраиваются символические линки. Причем, что приятно, это относится не только к ядрам, полученным в виде .src.rpm, но и если просто взять ядро с ftp.kernel.org, все заработает. (эту правильную установку осуществляет редхатовский скрипт /sbin/installkernel, входящий в пакет с фирменным ядром редхата, поэтому перед make install желательно убедиться в наличии этого скрипта (Alex Kanavin).) EXTRAVERSION в этих ядрах по дефолту не выставлено, поэтому ядро будет получаться под именем навроде 2.2.13 (конечно, EXTRAVERSION при желании можно выставить)

Когда ядро собирается в дереве, в котором уже собиралось ядро, очень рекомендуется после make *config сказать make clean. Во всяком случае, если какие-то части ядра были переселены в модули или обратно, надо делать это _обязательно_, иначе есть шанс собрать неправильное (не работающее) ядро.

Также по теме:
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Linux - FAQ по Linux - Как произвести компиляцию ядра? Это заложено в установках линукса или здесь есть какие хитрости?
Мы в соцсетях ✉