UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

185 lines (110 loc) 13.4 kB
Представленная ниже информация будет полезна при сборке пользовательского ядра c **kernel.org**. Данный метод компиляции ядра является традиционным методом, общим для всех дистрибутивов; однако, он отличается от установки ядра при помощи makepkg и pacman. Вы также можете использовать ABS для сборки и установки своего ядра; смотрите: [Kernel Compilation](/index.php/Kernel_Compilation "Kernel Compilation"). Использование существующего PKGBUILD [из архива](https://www.archlinux.org/packages/?name=linux) позволит автоматизировать большинство процессов и создаст готовый установочный пакет. Хотя некоторые пользователи предпочитают традиционный метод сборки. Начинающие пользователи, которые не в полной мере знакомы с компиляцией ядра, должны взглянуть на [Compilation without ABS for New Users](/index.php/Kernel_Compilation_without_ABS_for_New_Users "Kernel Compilation without ABS for New Users"). ## Contents * [1 Получение исходников](#.D0.9F.D0.BE.D0.BB.D1.83.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B8.D1.81.D1.85.D0.BE.D0.B4.D0.BD.D0.B8.D0.BA.D0.BE.D0.B2) * [2 Конфигурирование](#.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5) * [2.1 Как насчет /usr/src/ ?](#.D0.9A.D0.B0.D0.BA_.D0.BD.D0.B0.D1.81.D1.87.D0.B5.D1.82_.2Fusr.2Fsrc.2F.C2.A0.3F) * [3 Компиляция и установка](#.D0.9A.D0.BE.D0.BC.D0.BF.D0.B8.D0.BB.D1.8F.D1.86.D0.B8.D1.8F_.D0.B8_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0) * [4 Выберите один из вариантов:](#.D0.92.D1.8B.D0.B1.D0.B5.D1.80.D0.B8.D1.82.D0.B5_.D0.BE.D0.B4.D0.B8.D0.BD_.D0.B8.D0.B7_.D0.B2.D0.B0.D1.80.D0.B8.D0.B0.D0.BD.D1.82.D0.BE.D0.B2:) * [4.1 1\. Традиционный метод](#1._.D0.A2.D1.80.D0.B0.D0.B4.D0.B8.D1.86.D0.B8.D0.BE.D0.BD.D0.BD.D1.8B.D0.B9_.D0.BC.D0.B5.D1.82.D0.BE.D0.B4) * [4.2 2\. Использование makepkg и pacman (рекомендуется)](#2._.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_makepkg_.D0.B8_pacman_.28.D1.80.D0.B5.D0.BA.D0.BE.D0.BC.D0.B5.D0.BD.D0.B4.D1.83.D0.B5.D1.82.D1.81.D1.8F.29) * [5 Конфигурация загрузчика](#.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B0.D1.86.D0.B8.D1.8F_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D1.87.D0.B8.D0.BA.D0.B0) * [6 Использование драйвера NVIDIA в ядре](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B4.D1.80.D0.B0.D0.B9.D0.B2.D0.B5.D1.80.D0.B0_NVIDIA_.D0.B2_.D1.8F.D0.B4.D1.80.D0.B5) ## Получение исходников * Вы можете получить исходники ядра на `ftp.xx.kernel.org/pub/linux/kernel/`, где xx определяет вашу страну (f.e. 'us', 'uk', 'de', ... - Ознакомьтесь [[1](http://www.kernel.org)] с полным списком зеркал). Если у вас нет графического 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](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](http://kernelnewbies.org/Linux_2_6_32#head-11f54cdac41ad6150ef817fd68597554d9d05a5f).* * Внесите изменения в конфигурацию ядра и сохраните конфигурационный файл. Это неплохая идея - делать его копию, поскольку вы можете испробовать несколько вариантов сборки, пока не получите тот, который действительно вас устроит. * Если вы компилируете ядро, используя текущий конфигурационный файл, не забудьте переименовать версию ядра, иначе вы можете по ошибке заменить существующее. ``` $ 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](/index.php/Kernel_Compilation "Kernel Compilation"). ## Конфигурация загрузчика Добавьте строку для загрузки вашего нового ядра в [GRUB](/index.php/GRUB_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "GRUB (Русский)") или [LILO](/index.php/LILO "LILO") как указано в примерах. Заметим, что если у вас установлен LILO, исходные тексты ядра содержат скрипт для автоматизации процесса: ``` $ arch/i386/boot/install.sh ``` При использовании LILO, не забудьте скомандовать `lilo` как root, чтобы обновить его. ## Использование драйвера NVIDIA в ядре Об использовании драйвера NVIDIA в ядре смотрите: [Installing the driver for a custom kernel](/index.php/NVIDIA "NVIDIA"). Также вы можете установить драйвер nvidia из AUR.