В этом разделе освещаются изменения и важная информация о ядре на основе 2.6.18 в составе Fedora Core 6. Ядро 2.6.18 включает:
Поддержка облегченного наследования приоритета в пространстве пользователя (http://lwn.net/Articles/178253/)
Средство отладки "lock validator" (http://lwn.net/Articles/185666/)
Новая политика снижения энергопотребления для многоядерных систем SMPnice (http://lwn.net/Articles/186438/)
Значительно улучшенный уровень SATA (http://lwn.net/Articles/183734/)
Миграция страниц без подкачки (http://lwn.net/Articles/160201/)
Счетчики VM по зонам
Учет задержек по задачам
Новый механизм контроля доступа по пакетам для SELinux - secmark (http://james-morris.livejournal.com/11010.html)
Рандомизированный i386 vDSO
Новые драйвера и поддержка дополнительного оборудования множеством существующих драйверов
Множество исправлений ошибок и других малозаметных улучшений
Fedora Core может включать дополнительные патчи с улучшениями, исправлениями ошибок или дополнительными функциями. По этой причине ядро Fedora Core может не совпадать строка-в-строку с так называемым vanilla kernel с web-сайта kernel.org:
Чтобы получить список патчей необходимо получить RPM пакет с исходным кодом и выполните для него следующую команду:
rpm -qpl kernel-<версия>.src.rpmДля того чтобы получить журнал изменений в пакете выполните следующую команду:
rpm -q --changelog kernel-<версия>Удобную версию списка изменений вы можете получить по ссылке http://wiki.kernelnewbies.org/LinuxChanges. Краткий и полный список различий между ядрами доступен на http://kernel.org/git. Версия ядра Fedora базируется на дереве Линуса.
Изменения и настройки в версии для Fedora вы найдете на http://cvs.fedora.redhat.com .
Fedora Core 6 включает следующие варианты ядер:
Обыкновенное ядро, для применения на большинстве систем. Подготовленный исходный код находится в пакете kernel-devel-.<версия>.<арх>.rpm
kernel-PAE, для применения на 32-разрядных x86 системах с > 4GB ОЗУ или для процессоров с поддержкой функции 'NX (No eXecute)' . Это ядро поддерживает как одно- так и многопроцессорные системы.
Виртуальное ядро для применения с пакетом эмуляции Xen. Подготовленнй исходный код находится в пакете kernel-xen-devel-<версия>.<арх>.rpm
Kdump ядро для применения совместно с функциями kexec/kdump. Подготовленный исходный код находится в пакете kernel-kdump-devel-.<версия>.<арх>.rpm
Вы можете установить заголовки ядра для всех типов ядра одновременно. Файлы будут установлены в каталог /usr/src/kernels/. Для этого используйте команду:<версия>-[xen|kdump]-<арх>/
su -c 'yum install kernel-{PAE,xen,kdump}-devel'Выберите один или несколько из этих вариантов, разделенные запятыми и без пробелов. Введите пароль пользователя root в ответ на запрос.
![]() | Ядро по умолчанию содержит поддержку SMP |
|---|---|
Отдельного SMP ядра не предлагается в Fedora Core 6 для архитектур i386, x86_64 и ppc64 . Многопроцессорная поддержка включена в обыкновенное ядро. |
![]() | Поддержка ядра для PowerPC |
|---|---|
Для архитектуры PowerPC в Fedora Core 6 нет поддержки Xen и kdump. 32-разрядные PowerPC все еще сопровождаются выделенным SMP ядром. |
Обратитесь к http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html за информацией о том как сообщать об ошибках в ядре Linux. Вы также можете воспользоваться http://bugzilla.redhat.com для сообщения об ошибках, специфичных для Fedora.
Во множестве руководств, примеров и текстовых документов о разработке ядра Linux предполагается, что исходные коды ядра установлены в каталог usr/src/linux/. Если вы сделаете символическую ссылку, как это показано ниже, вы сможете использовать эти учебные материалы при работе с пакетами Fedora Core. Установите соответствующие пакеты с исходными кодами ядра (это обсуждалось ранее) и введите:
su -c 'ln -s /usr/src/kernels/<версия>.<выпуск>-<архитектура>/usr/src/linux'
Введите пароль пользователя root в ответ на запрос.
Fedora Core 6 не влючает пакет kernel-source, который поставлялся в предыдущих версиях, т.к. теперь для сборки внешних модулей требуется только пакет kernel-devel. Дополнительно поставляется подготовленный и настроенный исходный код. Данный вопрос рассматривается в этом разделе.
![]() | Эти инструкции относятся к текущему ядру |
|---|---|
Для упрощения указаний мы будет предполагать, что вы хотите настроить исходный код ядра, совпадающий с работающим в данный момент. Ниже мы полагаем, что фраза |
Если вам требуется получить доступ к оригинальным исходным кодам ядра Fedora Core - вы найдете их в пакете kernel .src.rpm. Для создания развернутого дерева исходных кодов на основе этого файла, выполните следующие шаги:
![]() | Не выполняйте сборку пакетов от имени суперпользователя (root) |
|---|---|
Сборка пакетов под учетной записью суперпользователя в действительности является опасным и не требуется, даже для сборки ядра. Инструкции показанные ниже позволят установить ядро с использованием обычной учетной записи. Во многих источниках предполагается, что ядро расположено в |
Подготовьте окружение сборки RPM пакетов в своем домашнем каталоге. Запустите следующую команду:
su -c 'yum install rpmdevtools yum-utils' rpmdev-setuptree
Введите пароль пользователя root в ответ на запрос.
Скачайте файл kernel-. Задействуйте все соответсвующие исходные репозитарии, такие как Core, Updates или Testing при помощи параметра <версия>.src.rpm-e:
yumdownloader -e core-source -e updates-source --source kernel
Введите пароль пользователя root в ответ на запрос.
Установите пакет kernel- using the command: командой:<версия>.src.rpm
rpm -Uvh kernel-<версия>.src.rpmЭта команда запишет содержимое RPM в ${HOME}/rpmbuild/SOURCES и ${HOME}/rpmbuild/SPECS, где ${HOME} — это ваш домашний каталог.
![]() | Требуемое пространство на жёстком диске |
|---|---|
Полный процесс сборки ядра может потребовать несколько дополнительных гигабайт дискового пространства на файловой системе, содержащей ваш домашний каталог. |
Подготовьте исходный код ядра следующими командами:
cd ~/rpmbuild/SPECS rpmbuild -bp --target $(uname -m) kernel-2.6.spec
Дерево исходных кодов распологается в каталоге ~/rpmbuild/BUILD/kernel-.<версия>/linux-<версия>.<арх>
Настройки для вариантов ядер поставляемых с Fedora Core 6 расположены в каталоге ~/rpmbuild/BUILD/kernel-. Например, конфигурационнй файл для i686 SMP варианта называется <версия>/linux-<версия>.<арх>/configs~/rpmbuild/BUILD/kernel-. Следующая команда поместит желаемый конфигурационный файл в правильное место для выполнения сборки:<версия>/linux-<версия>.<арх>/configs/kernel-<версия>-i686.config
cp configs/<требуемый-config-файл> .configКаждое ядро получает свое имя, на основе собственно версии ядра. Это значение выводит команда uname -r. Имя ядра задается при помощи первых четырех строк файла Makefile. Файл Makefile изменен для создания ядра с другим именем, отличным от работающего ядра. Для того, чтобы ядро могло работать с модулем, он должен быть собран с ядром имеющим корректное имя. Для этого вам потребуется исправить Makefile ядра.
Например, если uname -r выводит строку 2.6.17-1.2345_FC6, измените определение EXTRAVERSION с:
EXTRAVERSION = -prep
на
EXTRAVERSION = -1.2345_FC6
Замените все что находится после дефиса и до конца.
Введите следующую команду:
make oldconfig
Далее вы можете продолжать как обычно.
![]() | Построение двоичных RPM пакетов ядра |
|---|---|
Обычно, ядра для Fedora собираются при помощи утилиты |
Развернутое дерево исходных кодов не требуется для сборки модулей ядра, таких как вас собственный драйвер устройства, для используемого в данный момент ядра. Вам потребуется только пакет kernel-devel для сборки внешних модулей. Если вы выбрали его в процессе установки, сделайте это при помощи Pirut, вызвав его из меню Приложения → Добавить/Удалить программы, или используйте для установки yum. Выполните следующую команду для установки пакета kernel-devel при помощи yum.
su -c 'yum install kernel-devel'
Например, для сборки модуля foo.ko создайте файл Makefile следующего содержания в каталоге с файлом foo.c:
obj-m := foo.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
Выполните команду make для сборки модуля foo.ko.