Сборка та встановлення

Матеріал з Wiki TNEU
Версія від 23:14, 20 вересня 2012; Donserg (Обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

Отримання исходников ядра і підготовка до конфігурації

Можна кількома шляхами отримати вихідні:

1. Отримати оригінальні архіви коду з The Linux Kernel Archives The Linux Kernel Archives ,у вигляді gzip або bzip2 архівів, за допомогою команди:

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.1.tar.bz2 cp linux-2.6.36.1.tar.bz2 /usr/src/ cp linux-2.6.36.1.tar.bz2 / usr / src /

1.Отримати исходники з репозиторіїв дистрибутивів (наприклад: Debian Debian , , Ubuntu Ubuntu , , CentOS i386 CentOS i386 ) у вигляді бінарного пакету deb або rpm (src.rpm) з патчами від виробника дистрибутива. Наприклад:

kernel-server:/tmp/123# apt-cache search source | grep linux

ketchup - update utility for linux-kernel sources

linux-patch-grsecurity2 - grsecurity kernel patch - new major upstream version

linux-wlan-ng-source - linux-wlan-ng driver

linuxdoc-tools - convert LinuxDoc SGML source into other formats

linux-patch-lustre - Linux kernel patch for the Lustre Filesystem

libcorelinux-dev - Foundation Classes, Design Patterns, IPC and Threads

libcorelinux-doc - Foundation Classes, Design Patterns, IPC and Threads

libcorelinux-examples - Foundation Classes, Design Patterns, IPC and Threads

libcorelinuxc2a - Foundation Classes, Design Patterns, IPC and Threads

linux-patch-openswan - IPSEC Linux kernel support for Openswan

selinux-policy-src - Source of the SELinux reference policy for customization

user-mode-linux-doc - User-mode Linux (Documentation)

linux-patch-xenomai - Linux kernel patches for Xenomai

linux-patch-debian-2.6.26 - Debian patches to version 2.6.26 of the Linux kernel

linux-source-2.6.26 - Linux kernel source for version 2.6.26 with Debian patches

linux-tree-2.6.26 - Linux kernel source tree for building Debian kernel images

Print-server:~# apt-get install linux-source-2.6.26

Чтение списков пакетов... Готово

Построение дерева зависимостей

Чтение информации о состоянии... Готово


Будут установлены следующие дополнительные пакеты:

binutils bzip2 cpp cpp-4.3 gcc gcc-4.3 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl linux-libc-dev make

Предлагаемые пакеты:

binutils-doc bzip2-doc cpp-doc gcc-4.3-locales gcc-multilib manpages-dev autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.3-multilib

libmudflap0-4.3-dev gcc-4.3-doc libgcc1-dbg libgomp1-dbg libmudflap0-dbg glibc-doc libncurses-dev ncurses-dev kernel-package libqt3-mt-dev make-doc

НОВЫЕ пакеты, которые будут установлены:

binutils bzip2 cpp cpp-4.3 gcc gcc-4.3 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl linux-libc-dev linux-source-2.6.26 make обновлено 0, установлено 13 новых пакетов, для удаления отмечено 0 пакетов, и 5 пакетов не обновлено.


Необходимо скачать 50,2MB/63,2MB архивов.

После данной операции, объём занятого дискового пространства возрастёт на 89,4MB.

Хотите продолжить [Д/н]? y

Получено:1 http://ftp.debian.org lenny/main linux-libc-dev 2.6.26-26 [769kB]

Получено:2 http://ftp.debian.org lenny/main linux-source-2.6.26 2.6.26-26 [49,5MB]

Получено 50,2MБ за 1min49s (460kБ/c)

Выбор ранее не выбранного пакета binutils.

(Чтение базы данных... на данный момент установлено 16621 файлов и каталогов.)

Распаковывается пакет binutils (из файла .../binutils_2.18.1~cvs20080103-7_i386.deb)...

Выбор ранее не выбранного пакета bzip2. ..... Распаковывается пакет make (из файла .../archives/make_3.81-5_i386.deb)...

Обрабатываются триггеры для man-db ...

Настраивается пакет binutils (2.18.1~cvs20080103-7) ... ..... Настраивается пакет linux-source-2.6.26 (2.6.26-26) ...

Настраивается пакет make (3.81-5) ...

kernel-server:~# ls /usr/src/

linux-source-2.6.26.tar.bz2



Хочу відзначити, що ім'я архіву з исходниками або пакета, має приблизно такий вигляд: linux-source-2.6.26 або kernel-source-2.6.18. З лістингу другого прикладу, видно що при установці исходников з репозиторію, apt нам пропонує встановити і інші супутні пакунки, без яких ядро ​​зібрати не вийти.

Отже. Після отримання исходников одним з вищевказаних шляхів (копіюванні архіву (у першому випадку) і установки пакета (у другому випадку)), ми отримуємо в каталозі / usr / src / - архів з ім'ям, аналогічним linux-source-2.6.26.tar. bz2. Далі нам необхідно розпакувати динний архів командою: tar-xjf linux <version>. Tar.bz2. В результаті, отримуємо дерево каталогів исходников ядра, розташовані в каталозі / usr/src/linux-2.6.36.1 /. Так само рекомендується створити посилання / usr / src / linux на вищевказаний каталог:

kernel-server:~# cd /usr/src/ kernel-server:/usr/src# ln -s linux-2.6.36.1 linux kernel-server:/usr/src# ls -l lin* lrwxrwxrwx 1 root src 14 Дек 3 16:31 linux -> linux-2.6.36.1 -rw-r--r-- 1 root src 70236745 Дек 3 15:57 linux-2.6.36.1.tar.bz2



Перш ніж приступати до спроби побудови та конфігурації, необхідно переглянути файл Changes, розташований в каталозі Documentation. Він, серед іншого, містить список пакетів, необхідних для збірки ядра, із зазначенням номерів версій. Переконайтеся, що ці пакети встановлені (якщо установка исходников проводилася за допомогою пакетного менеджера, то швидше за все потрібні пакунки вже встановлені).

В розпакованому дереві підкаталогів міститься файл Makefile. Make-файл містить різні цілі збірки для конфігурування опцій ядра, складання ядра і його модулів, установки модулів і створення пакунків RPM або deb. Найбільш свіжі версії исходников ядра дозволяють використовувати make help для отримання короткої довідки для кожної мети. У більш старих системах було необхідно звертатися до документації або переглядати make-файл. Нижче показана частина виведення make help :

kernel-server:/usr/src/linux-2.6.36.1# make help Cleaning targets: clean - Remove most generated files but keep the config and enough build support to build external modules mrproper - Remove all generated files + config + various backup files distclean - mrproper + remove editor backup and patch files

Configuration targets: config - Update current config utilising a line-oriented program nconfig - Update current config utilising a ncurses menu based program menuconfig - Update current config utilising a menu based program xconfig - Update current config utilising a QT based front-end gconfig - Update current config utilising a GTK based front-end oldconfig - Update current config utilising a provided .config as base .......



Далі, якщо з якихось причин на ядро необхідно накласти патч, то його слід завантажити заздалегідь і покласти в каталог / usr / src. Якщо патчити ядро ​​не потрібно, можна сміливо переходити до конфігурації. Обновляється ядро ​​наступним чином:

kernel-server:/usr/src/linux-2.6.36# gzip -cd ../patch-2.6.xx.gz | patch -p1 #или Print-server:/usr/src/linux-2.6.36# bzip2 -dc ../patch-2.6.xx.bz2 | patch -p1



Конфігурування

Поточна конфігурація ядра зберігається у файлі. Config. Даний файл формується за допомогою однієї з конфігураційних цілей (мета - це, кажучи простою мовою, команда виконується у вигляді make мета):


config config

Цель config использует интерфейс командной строки для получения ответов многие на вопросы, касающиеся создания или обновления файла .config. Мета config використовує інтерфейс командного рядка для отримання відповідей багато на питання, що стосуються створення або поновлення файлу. Config. В порівнянні з цілями використовують меню - дуже незручна штука.

cloneconfig cloneconfig

Копіювання налаштувань поточного ядра в файл. Config. Дана мета застаріла і в нових ядрах замінена oldconfig .(Зручно для додавання нових функція поточного ядра)

menuconfig menuconfig

Мета menuconfig використовує програму з меню-інтерфейсом, побудовану на базі ncurses, для створення або поновлення файлу. Config. Ви повинні тільки відповісти на питання для елементів, які потрібно змінити. Цей підхід замінив стару мета config. Виконується у вікні терміналу віддалено або локально.

nconfig nconfig

Мета nconfig використовує програму з меню-інтерфейсом, побудовану на базі ncurses, для створення або поновлення файлу. Config. Дана версія заснована на menuconfig, але має більш сучасний зовнішній вигляд. Додана після релізу Linux-ядра 2.6.35. Ви повинні тільки відповісти на питання для елементів, які потрібно змінити. Виконується у вікні терміналу віддалено або локально.

xconfig xconfig

Мета xconfig використовує систему графічного меню, засновану на QT front-end, що використовується в KDE desktop.

gconfig gconfig

Мета gconfig використовує систему графічного меню, засновану на QT front-end, використовуваному в GNOME desktop.

oldconfig oldconfig

Мета oldconfig дозволяє створити конфігурацію з використанням існуючого файлу. Config, створеного раніше або взятого з іншої системи. Наприклад, ви можете скопіювати конфігураційний файл для вашої системи з / lib / modules / $ (uname-r) / build / .config в / usr / src / linux. Зробивши це, можна використовувати одну з цілей меню конфігурації, щоб при необхідності внести зміни. Так само при виконанні даної команди, якщо в новому ядрі додано багато нових можливостей - буде поставлено багато питань по налаштуванню нових параметрів. (Зручно для додавання нових функція поточного ядра)

Повторюю, що список всіх цілей команд можна побачити, ввівши make help. Отже, почнемо конфігурування. Найзручніша для консолі - make menuconfig.



Збірка Ядра

Тепер, коли ми сконфигурировали ядро, ми готові до його складання. Якщо ви не знаєте, який стан дерева для складання, перш ніж приступати до конфігурації нового ядра виконайте make clean . Для більш повного очищення виконайте make mrproper (при цьому - make mrproper - буде видалений файл. config, а також деякі інші файли, які використовуються в процесі складання).

В ході проби конфігурування, бажано дати новому ядру спеціальну назву, яке дозволить вам легко його ідентифікувати. Щоб зробити це, необхідно встановити значення Local version та активувати опцію Automatically append version information to the version string у відповідному рядку розділу General setup.

В принципі, для збірки ядра не потрібні повноваження root, незважаючи на те, що для установки нового ядра ці повноваження необхідні.

Щоб розпочати складання ядра 2.6, необхідно виконати make .

Щоб розпочати складання ядра 2.4, необхідно виконати 3 команди:

make dep 
make bzImage 
make modules 

Перша створює файли необхідних залежностей. Друга збирає ядро. ИІ остання збирає модулі.



Установка нового ядра

Після закінчення зборки ядра, його потрібно встановити. Перед установкою, необхідно виконати make modules_install для встановлення модулів ядра в новий підкаталог / lib / modules. Після встановлення модулів, необхідно виконати make install для встановлення нового ядра і стартового RAM-диска (initial RAM disk) в каталог / boot та безпека конфігурації завантажувача.

Хочу звернути увагу, що в процесі складання автоматично створюється необхідний стартовий RAM-диск (initial RAM disk або initrd). Якщо у вас виникне необхідність створити його вручну, це можна зробити за допомогою команди mkinitrd .

Після виконання make install повинен оновитися конфігураційний файл завантажувача. Але в мене він чомусь оновився після команди update-grub .

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти