# Kernels/Compilation/Traditional (Русский)

< Kernels‎ | Compilation

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Эта статья или раздел нуждается в улучшении грамматики, форматирования или стиля.

Причина: Излишнее использование HTML-тегов (обсуждение: Talk:Kernels/Compilation/Traditional (Русский)#)

Представленная ниже информация будет полезна при сборке пользовательского ядра c kernel.org. Данный метод компиляции ядра является традиционным методом, общим для всех дистрибутивов; однако, он отличается от установки ядра при помощи makepkg и pacman.

Вы также можете использовать ABS для сборки и установки своего ядра; смотрите: Kernel Compilation. Использование существующего PKGBUILD из архива позволит автоматизировать большинство процессов и создаст готовый установочный пакет. Хотя некоторые пользователи предпочитают традиционный метод сборки.

Начинающие пользователи, которые не в полной мере знакомы с компиляцией ядра, должны взглянуть на Compilation without ABS for New Users.

## Получение исходников

- Вы можете получить исходники ядра на `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 all`, если вы используете GRUB и всё ещё имеете установленный LILO; в итоге это сконфигурирует LILO и вы можете не суметь загрузить вашу машину! Удалите LILO (pacman -R lilo) перед запуском `make all,если вы используете` GRUB!

- Соберите его:

    $ make

(Или make vmlinux && make modules && make bzImage - смотрите make help для получения подробной информации.)

- Если у вас многоядерный процессор ( Dual Core, Quad Core, etc), вы можете компилировать ядро быстрее, добавив флаг -j . Это сработает на всех процессорах на 100% .

    $ make -j[# число ядер + 1]

Примечение: Рекомендуется выставить число на один больше, чем имеется ядер в вашей машине. Например: для двухъядерной машины вы можете выставить значение make -j3. Двухъядерный процессор с 2.8Ghz компилирует ядро за 10-15 минут.

- Установка модулей: ( предстоит сделать с правами 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.

Categories:

- Kernel (Русский)
- Русский