Alexei V. Mezin пишет: > Alexei V. Mezin пишет: >> Я когда-то что-то писал, но давно. В архивах найду, и попробую выложить >> на wiki. Но там все с точки зрения "любителя", так что может быть >> местами неправда и устарело. Нужно, чтоб текст потом редактировали те, >> кто в этом разбирается. > > Вот, нашел: > Для начала определим, чего мы хотим получить: > 0. Понять, зачем нам пересобирать ядро. > 1. Задача-минимум: собрать пакет со "стандартным" > ядром/заголовками. Т.е. такое же ядро, которое можно > поставить из репозитария с бинарными пакетами (или > дистрибутивных дисков). > 1.1. Собрать версию пакета с драйверами nVidia для > нового ядра. > 2. Основная задача: собрать чуть модифицированное ядро, > т.е. с дополнительными опциями или с дополнительными > патчами взятыми из Сизифа. > 2.1. Собрать RPM-пакеты с дополнительными модулями ядра. > 3. Задача-максимум: собрать ядро с посторонними патчами. > > > 0. Итак, вы решили пересобрать ядро. Зачем? Ядра в системах > от ALT Linux Team собраны так, чтобы быть универсальными. В > них включены максимум функций и возможностей, причем все, > что можно собрать в виде модулей, именно так и собрано. > Поэтому если у вас возникли проблемы, например какое-либо > устройство не работает, так как для него не найден (не > загружен) модуль, не спешите "пересобирать ядро". Возможно > модуль просто "не загрузился автоматически" (если > возможность автозагружать модули вообще когда-нибудь > нормально заработает в Сизифе). > Совет: изучите команды depmod, modprobe, modinfo > Или просто пакет с нужным модулем не установлен. > Совет: изучите команду apt-cache search > Если вам нужно специфическое ядро, например с поддержкой > RealTime, Win4Lin и т.п., то просто проверьте альтовский > репозитарий. Может там уже все есть? > > Так зачем же пересобирать ядро? Причины могут быть такими: > * В ядре не включена (или наоборот) нужная опция. > * Патологическая проблема с железом, которая требует > пересборки. > * Драйвера (например ALSA) в вашей текущей системе устарели > и почему-то их пересборка не может быть проведена без > пересборки ядра. > * Хочется экзотических функций, которые обеспечиваются > только после наложения патчей на ядро. > > > > > > 1.1. Определимся. > Для начала определим, какое ядро сейчас запущено и что > именно мы хотим собрать: > > [alexei at localhost alexei]$ uname -r > 2.6.10-std26-smp-alt1 > > Итак, версия и тип ядра определены. > > Примечание: версия и тип ядра в вашей системе скорее > всего не совпадают с вышеприведенным. > > Для сборки ядра в системе должно быть установлено множество > пакетов, например компилятор, скрипты для сборки RPM и > т.п.Далее предполагается, что все это уже установлено, или > вы знаете, как доустановить нужные пакеты. > > FIXME: наверное тут нужен список пакетов, необходимых > для сборки ядра. > > Кроме того, нужны > пакеты, связанные непосредственно с конкретным ядром: > * пакет с исходными кодами ядра > * пакеты с патчами, исправляющими сборку и проблемы с > безопасностью > * пакеты с патчами, расширяющими функциональность > * пакет и конфигурационным файлом и spec-файлом для сборки. > > Установку начнем несколько нетрадиционно, "с конца" и из-под > пользователя: > установим src-пакет с настройками ядра и spec-файлом. > Название таких пакетов начинается с kernel-image, далее > следует тип ядра (wks, std, vs, wks26 и т.п.) и -up для > однопроцессорных систем и -smp для мультипроцессорных. > > Примечание: не путайте kernel-image*.src.rpm и > kernel-image*.rpm > > FIXME: нужно нормальное описание типов ядер. > Т.е. что такое и в чем отличия wks/std/vs/ll/rt > и т.п. > > [alexei at localhost alexei]$ apt-get source > kernel-image-std26-smp > Чтение списков пакетов... Завершено > Построение дерева зависимостей... Завершено > Необходимо получить 0B/56,6kB исходных архивов. > kernel-image-std26-smp > ############################################# > > Примечание: делаем эту операцию именно из-под > пользователя, так как установка src.rpm > администратору запрещена по соображениям > безопасности. > > После этого у вас в ~/RPM/SPECS появился файл > kernel-image-std26-smp.spec -- это инструкция для RPM по > сборке пакетов с ядром и заголовками. В каталоге > ~/RPM/SOURCES появился файл config-2.6.10-std26-smp -- это > настройки ядра по умолчанию. > > Заглянем в начало spec-файла: > > # Fixes: > %add_patch_list kernel-fix-build > %add_patch_list kernel-fix-core > %add_patch_list kernel-fix-acpi > %add_patch_list kernel-fix-fs > %add_patch_list kernel-fix-net > %add_patch_list kernel-fix-drivers-net > %add_patch_list kernel-fix-drivers-usb > %add_patch_list kernel-fix-drivers-ide > %add_patch_list kernel-fix-drivers-ieee1394 > %add_patch_list kernel-fix-drivers-sound > #add_patch_list kernel-fix-drivers-serial > %add_patch_list kernel-fix-drivers-parport > %add_patch_list kernel-fix-security > > # Feathures: > > %add_patch_list kernel-feat-drivers-video-splash > %add_patch_list kernel-feat-drivers-input > %add_patch_list kernel-feat-drivers-lirc > %add_patch_list kernel-feat-drivers-pktcdvd > %add_patch_list kernel-feat-fs-squashfs > %add_patch_list kernel-feat-net-ppp-mppe > %add_patch_list kernel-feat-evms-nodm > > Это список пакетов, которые необходимо установить для сборки > вашего ядра. Перейдем в режим суперпользователя и установим > сначала исходники ядра: > найдем, где они и как называются > [root at localhost root]# apt-cache search kernel-source > kernel-source-2.4.26 - Linux kernel 2.4.26rel sources > kernel-source-2.6.10 - Linux kernel 2.6.10 sources > ........ > ........ > и установим их > [root at localhost root]# apt-get install > kernel-source-2.6.10 > Чтение списков пакетов... Завершено > Построение дерева зависимостей... Завершено > Следующие НОВЫЕ пакеты будут установлены: > kernel-source-2.6.10 > 0 будет обновлено, 1 новых установлено, 0 пакетов будет > удалено и 1 не будет обновлено. > .............. > .............. > > А затем аналогичным образом установим все остальные пакеты > kernel-fix* и kernel-feat* из вышеприведенного списка. > > FIXME: можно ли сделать эту операцию автоматически? > > Выйдете из режима суперпользователя, т.к. сборки > RPM-пакетов по соображениям безопасности невозможна из-под > суперпользователя. В принципе уже все готово для сборки > ядра. Но вы наверняка захотите проделать некоторые > дополнительные настройки. > Откройте в вашем любимом редакторе spec-файл. Исправьте > строку > %define krelease alt1 > заменив в ней "alt1" на что-нибудь другое, например, на > "myown1". Это нужно для того, чтобы ваше ядро не > конфликтовало с ядром из дистрибутива. Кроме того желательно > заменить строку > %make_build oldconfig > на строку > %make_build menuconfig > Это позволит вам перед началом сборки ядра отредактировать > настройки в стиле классического "make menuconfig". > > FIXME: у меня не собираются пакеты если не > закомментировать строку > %__cp -a ./scripts/kconfig/conf > %buildroot%_prefix/src/linux-%version-%flavour/scripts/kconfig/ > > Теперь можно приступить к сборке: > cd ~/RPM/SPECS > rpm -bb kernel-image-std26-smp.spec > > FIXME: нужно ли для сборки пакетов предварительно > редактировать ~/.rpmmacros? > > Если все сложилось удачно, то будут удалены файлы, которые > могли остаться после предыдущих сборок, распакованы > исходные коды ядра, приложены все необходимые патчи и запущен > текстовый интерфейс для настройки параметров ядра. Если > этого не произошло, внимательно читайте вывод в консоли и > принимайте меры. > После того, как вы покинете конфигуратор ядра, начнется > сборка. Тут самое время откинуться на спинку кресла, > расслабиться и получать удовольствие от созерцания этого > завораживающего процесса. > > Примечание: так как ядро собирается со всеми доступными > модулями, этот процесс может занимать довольно > продолжительное время (особенно в сравнении со сборкой > по "классической" технологии с "ручной" настройкой опций > ядра). Например на Dual P-III 1Gz сборка продолжается > около 1.5 часов. > > Если сборка ядра и модулей прошла без ошибок и > RPM-скрипты отработали исправно, то в > > ~/RPM/RPMS/i686 > > FIXME: что тут будет на другой архитектуре? > > вы обнаружите пакеты > > kernel-headers-modules-std26-smp-2.6.10-alt1.i686.rpm > kernel-image-std26-smp-2.6.10-alt1.i686.rpm > kernel-headers-std26-smp-2.6.10-alt1.i686.rpm > > То есть вы получили пакет с ядром kernel-image и два > пакета с заголовками. Осталось только установить их: > перейдите в режим суперпользователя > cd /home//RPM/RPMS/i686 > rpm -i ./kernel-image-std26-smp-2.6.10-alt1.i686.rpm > rpm -i ./kernel-headers-std26-smp-2.6.10-alt1.i686.rpm > rpm -i ./kernel-headers-modules-std26-smp-2.6.10-alt1.i686.rpm > > FIXME: э-э-э... нужно ли тут править конфиги для > возможности установки параллельно нескольких версий > ядра? > > FIXME: нужно написать короткое (или не очень) > пояснение, куда в ALTовских системах встают хидеры и > как бороться с alternatives. А то в common@ у > пользователей с этим связано много проблем. > > При установке ядра RPM автоматически пропишет новую запись в > /etc/lilo.conf и запустит lilo > > FIXME: а что тут с grub? > > Так что вам наверняка захочется заглянуть в /etc/lilo.conf и > поправить там что-нибудь (но и "по умолчанию" все должно > хоты бы загрузиться). После правки /etc/lilo.conf не > забудьте запустить lilo. > > Примечание: новое ядро добавляется в > загрузочное меню, но по умолчанию загрузится ваше старое > ядро. Так спокойнее! :) > > Примечание: если у вас видеокарта nVidia, то с новым > ядром видеодрайвер не загрузится без дополнительных > действий (вот он, недостаток закрытых драйверов), и > поэтому разумно сначала загрузиться в runlevel 3, > убедиться, что новое ядро работает как ожидается, > пересобрать видеодрайверы, установить их, и только после > этого переходить в runlevel 5. > > FIXME: для других видеокарт проблем нет? > > reboot > :) Вполне возможно, что именно по Вашей "козе" я и собирал тогда сво' ядро. За пару дней разобрался, собрал, запустил в эксплуатацию и забыл... :) Вобщем, кладите на вики, если там ещё нет и будем звать ядерщиков на "разбор полетов". -- Rgrds, Andriy ********************************************************************* email: dobr at iop dot kiev dot ua Kyiv, Ukraine Phone: (380-44) 525-7824 Department of Gas Electronics Fax: (380-44) 525-2329 Institute of Physics of NASU *********************dobrATjabber.iop.kiev.ua************************