В дистрибутивах ALT Linux 2.x используется ядро 2.4 в качестве основного; ALT Linux 2.4 Master имеет поддержку 2.6.x и включает в себя экспериментальную (не рекомендуемую к применению) сборку 2.6.8. В Sisyphus с 4.10.2006 поддерживаются только ядра >2.6.9 по причине перехода на glibc-2.5.
Ядра автоматически не обновляются (см. /etc/apt/apt.conf про Hold); можете снять при уверенности, что не забудете вернуть или что так лучше, но лучше воспользоваться скриптом update_kernel.sh имени VitalyLipatov или apt-upgrade-kernel Ильи Евсеева (см. тж. здесь).
Технология сборки описана в документации (kernel-policy.txt) пакета kernel-build-tools; в то же время считается, что в большинстве случае самостоятельная сборка не должна быть оправдана. При необходимости подпишитесь на список рассылки devel-kernel@ и обсудите возникший вопрос там, если краткого HOWTO не хватит.
FIXME! В связи с переходом сборщиков ядер на git, схема сборки кардинально поменялась, поэтому большая часть информации, изложенной в HOWTO, неверна.
kernel-image-$flavour: головной пакет, содержащий образ ядра разновидности $flavour, основные модули и запускающий скрипты обновления конфигурации загрузчика;
kernel-modules-$name-$flavour: дополнительный пакет, содержащий модули $name для ядра разновидности $flavour.
$flavour, в свою очередь, заканчивается суффиксом -smp или -pae в зависимости от типа сборки (с поддержкой smp или поддержкой smp с PAE). Раньше еще практиковались т.н. -up сборки, для систем с одним процессором, которые сейчас неактуальны по-причине изложенной ниже.
Начиная с версии 2.6.17, ядра в сизифе стали собираться в конфигурации т.н. SMP alternatives, что позволяет более гибко использовать возможности современных CPU (например, hotplug). Обратная сторона этого изменения – отказ от -up сборок ядер. Зато теперь можно избежать еще одного костыля, который был изложен здесь ранее :)
Следует обратить внимание на то, что по крайней мере std*-smp ( и std26-smp) обычно собираются с опцией CONFIG_HIGHMEM64G, что даёт возможность использовать гигабайт и более памяти (в отличие от std*-up), но не работает на i586 (Pentium первого поколения и аналоги, включая VIA C3), т.к. используется режим Physical Address Extension (PAE), появившийся начиная с Pentium Pro. Внимание: старые Pentium M (400MHz FSB) также не имеют поддержки PAE!
Сейчас разделение таково: -smp – для систем с поддержкой SMP alternatives и _без_ PAE, и -pae, собранный с CONFIG_HIGHMEM64G.
Пора на эту тему FAQ писать. На нынешних ядрах сборка как up _не имеет_ преимущества в скорости перед smp. Ибо соответствующий код в ядре выбирается при старте.
mithraen@
Ядра std-smp и std-pae отличаются только одной опцией конфигурации: в std-smp используется HIGHMEM4G, а в std-pae – HIGHMEM64G. (Дифф между конфигами больше одной строки, поскольку там показываются и зависимые опции, которые устанавливаются автоматически.) Необходимость сборки двух вариантов ядра для i586 вызвана тем, что ядро, собранное с HIGHMEM4G, не может использовать более 4GB RAM, зато работает на всех процессорах >= i586, в то время как ядро, собранное с HIGHMEM64G, может использовать до 64GB RAM, но не работает на процессорах, не поддерживающих режим PAE (поддержка PAE появилась начиная с Pentium Pro, кроме того, первые варианты Pentium M также не поддерживают PAE). На самом деле пакеты ядер std-pae должны были бы иметь архитектуру i686, а не i586, но я не знаю, есть ли способ заставить incoming пересобирать пакеты именно таким образом. Для архитектуры x86_64 всё это неактуально, поэтому вариант std-pae существует только на i586.
Были известны std, std26 (standard), om (OpenMosix), vs, vs26 (VirtualServer), wks, wks26, ll, ovz; из них om, vs, vs26 и ovz штатно собирались только для SMP-систем, остальные доступны для UP/SMP. По состоянию на 03.01.2007 в Sisyphus имеются:
Аббревиатура | Поддерживаемые версии | Особенности | Назначение |
std | 2.6 (pae, smp) | Стандартное и основное ядро дистрибутивов ALT Linux. При сборке используются патчи из -stable ядер и патчи, исправляющие какие-либо неприятности в работе железа.
Note:: | Сервера или рабочие станции, где важна безопасность или стабильность вопреки повышенной производительности и времени реакции на события |
wks | 2.6 (smp) | Содержит патчи для повышения производительности и уменьшения времени реакции на события (lowlatency), поддержки badram, swsusp2, realtime-режима для jack, патчи для undervolt'а CPU на базе Centrino проекта linux-phc, а также файловой системы reiserfs4. Внимание! поддержка win4lin на сейчас в wks26 отсутствует (не требуется майнтейнеру, поддерживать же — труд); в backports/3.0 наблюдается w4l26 на базе std26-up. | Рабочие станции |
vs | 2.6 (smp) | ядра с поддержкой технологии виртуализации linux vserver. Еще приложен патч, позволяющий реализовать non-executable stack либо программно, либо процессорными средствами (на x86–64). | Сервера (системы), где необходимо организовывать виртуальные сервера в рамках одной аппаратной платформы. В настоящий момент живет только в git'е у lakostis@, но скоро будет в сизифе |
ovz | 2.6 (smp/pae?) | Сборка с поддержкой технологии виртуализации OpenVZ. Еще приложен патч, позволяющий реализовать non-executable stack либо программно, либо процессорными средствами (на x86–64). | Сервера или рабочие станции, где требуются повышенная безопасность и контроль ресурсов, а также запуск нескольких контекстов (возможно, с различными дистрибутивами Linux в них) |
Примечание относительно pae (c) vsu:
##Summary:## и ##%description## соответствующих пакетов в Сизифе (предложение)
В данный момент ситуация такая:
Причём в wks-smp применяется специальный патч 1gb_lowmem, уменьшающий потери производительности при использовании до 1Gb памяти включительно (HIGHMEM их вносит, предоставляя возможность работать с расширенной памятью как таковой).
Был приложен по необдуманной просьбе mike@ к 2.4.18 из ALM2.0, вследствие чего при очередном обновлении ядра в updates что-то где-то немного изменилось и разъехался ABI, вследствие чего команда iptables до пересборки падала по segmentation fault.
Пример сборки модуля ядра с использованием kernel-headers: