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

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

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

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

Причина: Излишнее использование 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.