Kernels/Compilation/Traditional (Русский)
Представленная ниже информация будет полезна при сборке пользовательского ядра c kernel.org. Данный метод компиляции ядра является традиционным методом, общим для всех дистрибутивов; однако, он отличается от установки ядра при помощи makepkg и pacman.
Вы также можете использовать ABS для сборки и установки своего ядра; смотрите: Kernel Compilation. Использование существующего PKGBUILD из архива позволит автоматизировать большинство процессов и создаст готовый установочный пакет. Хотя некоторые пользователи предпочитают традиционный метод сборки.
Начинающие пользователи, которые не в полной мере знакомы с компиляцией ядра, должны взглянуть на Compilation without ABS for New Users.
Contents
Получение исходников
- Вы можете получить исходники ядра на
ftp.xx.kernel.org/pub/linux/kernel/
, где xx определяет вашу страну (f.e. 'us', 'uk', 'de', ... - Ознакомьтесь [1] с полным списком зеркал). Если у вас нет графического ftp-клиента, воспользуйтесь командойwget
. В этом примере мы будем скачивать и компилировать ядро версии 2.6.32.8; вам необходимо изменить только версию, чтобы получить новое ядро.
Например:
$ wget -c [http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.8.tar.bz2 ]
- Хорошей идеей будет проверка подписи полученного ядра. Взгляните на http://kernel.org/signature.html, чтобы узнать, как это сделать.
- По существу:
$ gpg --import public-key.sign $ gpg --verify detached-signature.sign kernel.tar.bz2
- Скопируйте архив с ядром в вашу рабочую директорию.:
$ cp linux-2.6.32.8.tar.bz2 ~/kernelbuild/
- Распакуйте архив и войдите в полученную директорию:
$ cd ~/kernelbuild $ tar -xvjf linux-2.6.32.8.tar.bz2 $ cd linux-2.6.32.8
Подготовьтесь к компиляции посредством следующей команды:
make mrproper
Это может понадобиться для очистки каталогов после предыдущих компиляций. Разработчики ядра рекомендуют выполнять эту команду перед каждой компиляцией ядра.
Конфигурирование
- (Необязательно) Скопируйте файл .config вашего текущего ядра, если хотите модифицировать настройки ядра Arch, заданные по умолчанию.
$ zcat /proc/config.gz > .config
- Сконфигурируйте ваше ядро.
Традиционный путь:
$ make menuconfig (Будет создана новая конфигурация и файл '.config'.)
Другие команды, которые могут быть использованы:
$ make oldconfig (работает только со старым файлом '.config', копируя его в директорию, где проходит сборка. Также позволяет выбрать опции скачанного вами ядра, которые помечены как 'НОВЫЕ'.) $ make localmodconfig (пытается извлечь /proc/config.gz из работающего ядра. Допускает предварительный выбор опций/модулей.) $ make localyesconfig (Same as above, except that as many modules as possible compiled into the kernel.) $ make xconfig (Требует установки Qt. Приятный интерфейс.) $ make gconfig (Требует установки GTK. Другая реализация xconfig.) $ make help (Справочная информация.)
Примечание: более подробная информация о "localmodconfig" указана в 2.6.32 release notes.
- Внесите изменения в конфигурацию ядра и сохраните конфигурационный файл. Это неплохая идея - делать его копию, поскольку вы можете испробовать несколько вариантов сборки, пока не получите тот, который действительно вас устроит.
- Если вы компилируете ядро, используя текущий конфигурационный файл, не забудьте переименовать версию ядра, иначе вы можете по ошибке заменить существующее.
$ make menuconfig General setup ---> (-ARCH) Local version - append to kernel release '3.n.n-RCn'
Как насчет /usr/src/ ?
Вы можете использоввать директорию /usr/src/ для сборки ядра от пользователя root c предварительным созданием символической ссылки, хотя это считается плохой практикой. Наилучшим вариантом будет просто использовать вашу домашнюю директорию. Если вы согласны с этой точкой зрения, собирайте и конфигурируйте ваше ядро от имени непривилегированного пользователя и лишь устанавливайте от имени суперпользователя root, или при помощи makepkg и pacman (описано ниже).
Хотя эта концепция является предметом дискуссий и некоторые опытные пользователи рассматривают практику компилирования от root в /usr/src/ полностью безопасной, приемлемой и даже предпочтительной.
Используйте тот метод, с которым можете чувствовать себя более уверенно.
Компиляция и установка
Выберите один из вариантов:
1. Традиционный метод
- Соберите его:
$ make
(Или make vmlinux && make modules && make bzImage - смотрите make help для получения подробной информации.)
- Если у вас многоядерный процессор ( Dual Core, Quad Core, etc), вы можете компилировать ядро быстрее, добавив флаг -j . Это сработает на всех процессорах на 100% .
$ make -j[# число ядер + 1]
- Установка модулей: ( предстоит сделать с правами root.)
# make modules_install
Это скопирует скомпилированные модули в директорию /lib/modules с именем версии ядра. Эти модули будут храниться отдельно от тех, что уже используются другими ядрами в системе.
- Копирование ядра:
# cp -v arch/x86/boot/bzImage /boot/vmlinuz-НазваниеВашегоЯдра
- Если вам нужны какие-либо модули для того, чтобы смонтировать корневую файловую систему, создайте виртуальный диск (большинству пользователей это нужно). The -k parameter accepts the kernel version and appended string you set in menuconfig and is used to locate the modules in /lib/modules::
# mkinitcpio -k ПолноеНазваниеЯдра -g /boot/initramfs-НазваниеВашегоЯдра.img
Вы можете назвать ядро при копировании в /boot как вам угодно. Однако, использование схемы [kernel-major-minor-revision] поможет поддержать порядок, если вы имеете несколько ядер/часто используете mkinitcpio/собираете сторонние модули.
Если вы используете LILO и он не может взаимодействовать с kernel device-mapper driver, в первую очередь запустите modprobe dm-mod
.
2. Использование makepkg и pacman (рекомендуется)
Смотрите Kernel Compilation.
Конфигурация загрузчика
Добавьте строку для загрузки вашего нового ядра в GRUB или LILO как указано в примерах. Заметим, что если у вас установлен LILO, исходные тексты ядра содержат скрипт для автоматизации процесса:
$ arch/i386/boot/install.sh
При использовании LILO, не забудьте скомандовать lilo
как root, чтобы обновить его.
Использование драйвера NVIDIA в ядре
Об использовании драйвера NVIDIA в ядре смотрите: Installing the driver for a custom kernel. Также вы можете установить драйвер nvidia из AUR.