ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: "Alexei V. Mezin" <mezin@ntmdt.ru>
To: ALT Linux Community <community@lists.altlinux.org>
Subject: Re: [Comm] Где же всё-таки взять исходники Альтовских ядер?
Date: Tue, 07 Nov 2006 12:24:36 +0300
Message-ID: <455050D4.80801@ntmdt.ru> (raw)
In-Reply-To: <45504FCC.5010300@ntmdt.ru>

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




-- 
Alexei V. Mezin

NT-MDT Co.
Phone: 095-913-5736
Fax: 095-913-573
Email: mezin@ntmdt.ru
URL: http://www.ntmdt.com


  reply	other threads:[~2006-11-07  9:24 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-03  9:45 Arcady V. Ivanov
2006-11-03 10:19 ` Vadim V. Zhytnikov
2006-11-03 10:38   ` Arcady V. Ivanov
2006-11-03 11:28     ` rt
2006-11-03 11:37       ` Arcady V. Ivanov
2006-11-03 11:49         ` Maxim Tyurin
2006-11-03 12:10           ` Arcady V. Ivanov
2006-11-03 12:22             ` Michael Shigorin
2006-11-03 12:44               ` Arcady V. Ivanov
2006-11-03 13:47                 ` Michael Shigorin
2006-11-04  1:09                   ` Arcady V. Ivanov
2006-11-04  6:53                     ` Alexey Borovskoy
2006-11-04  9:51                       ` [Comm] [JT] Круче нас только ядра? Anatol B. Bazjukin
2006-11-04 12:20                         ` Maxim Tyurin
2006-11-04 17:04                       ` [Comm] Где же всё-таки взять исходники Альтовских ядер? Michael Shigorin
2006-11-07  8:25                       ` Alexei V. Mezin
2006-11-07  8:59                         ` Andrii Dobrovol`s`kii
2006-11-07  9:20                           ` Alexei V. Mezin
2006-11-07  9:24                             ` Alexei V. Mezin [this message]
2006-11-07  9:55                               ` Andrii Dobrovol`s`kii
2006-11-07 11:07                                 ` Alexei V. Mezin
2006-11-07 11:32                                   ` Andrii Dobrovol`s`kii
2006-11-08  6:52                               ` Michael Shigorin
2006-11-08  7:06                                 ` Evgenii Terechkov
2006-11-08  7:42                                   ` Michael Shigorin
2006-11-09 15:29                                   ` Slava Grecea
2006-11-09  8:33                                 ` Alexei V. Mezin
2006-11-10 10:39                                   ` Michael Shigorin
2006-11-08  6:28                         ` [Comm] [wiki] Michael Shigorin
2006-11-04 17:01                     ` [Comm] Где же всё-таки взять исходники Альтовских ядер? Michael Shigorin
2006-11-03 12:32             ` aakarpov
2006-11-03 12:51               ` Arcady V. Ivanov
2006-11-03 18:49                 ` Andrey Rahmatullin
2006-11-03 12:39             ` Maxim Tyurin
2006-11-03 13:19               ` Arcady V. Ivanov
2006-11-03 13:44                 ` Slava Grecea
2006-11-03 13:45                 ` Michael Shigorin
2006-11-04  1:26                   ` Arcady V. Ivanov
2006-11-04  6:34                     ` Alexey Borovskoy
2006-11-04  8:30                     ` [Comm] Где же всё-таки взять исходники Альтовских ядер? [JT] Владимир Гусев
2006-11-04 16:53                     ` [Comm] [JT] Re: Где же всё-таки взять исходники Альтовских ядер? Michael Shigorin
2006-11-03 19:11                 ` [Comm] " Хихин Руслан
2006-11-03 19:18             ` Andrey Rahmatullin
2006-11-03 12:00         ` Sergey Vlasov
2006-11-03 18:51       ` Andrey Rahmatullin
2006-11-04  1:13         ` Arcady V. Ivanov
2006-11-03 14:19     ` Aleksander N. Gorohovski
2006-11-03 18:51 ` Andrey Rahmatullin
2006-11-13 17:33 ` Fr. Br. George
2006-11-13 22:42   ` Arcady V. Ivanov
2006-11-16  8:34     ` Fr. Br. George
2006-11-16 21:15       ` Arcady V. Ivanov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=455050D4.80801@ntmdt.ru \
    --to=mezin@ntmdt.ru \
    --cc=community@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git