[Comm] Где же всё-таки взять исходники Альтовских ядер?

Andrii Dobrovol`s`kii dobr на iop.kiev.ua
Вт Ноя 7 12:55:27 MSK 2006


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/<user-name>/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************************

----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: OpenPGP digital signature
Url     : http://lists.altlinux.org/pipermail/community/attachments/20061107/67045235/attachment-0001.bin 


Подробная информация о списке рассылки Community