Відмінності між версіями «Сборка та встановлення»
Donserg (Обговорення • внесок) |
Donserg (Обговорення • внесок) м (Захист на Сборка та встановлення встановлено ([edit=sysop] (безстроково) [move=sysop] (безстроково))) |
Поточна версія на 23:14, 20 вересня 2012
[ред.] Отримання исходников ядра і підготовка до конфігурації
Можна кількома шляхами отримати вихідні:
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 .