Ключевые слова:linux, kernel, compile, deb, debian, ubuntu, (найти похожие документы)
From: SIR <http://jedi-linux.blogspot.com>
Date: Sun, 10 Mar 2008 17:02:14 +0000 (UTC)
Subject: Пересборка Linux ядра в Debian и Ubuntu
Оригинал: http://jedi-linux.blogspot.com/2007/09/blog-post_3999.html
Подготовка.
Для того, чтобы у нас все получилось, необходимо сначала установить в
системе следующие пакеты:
* linux-source-2.6.18
* build-essential
* kernel-package
* fakeroot
* msort-gui
* initrd-tools
* pkg-config
* qt3-dev-tools
* libqt3-mt-dev
"Одноходовка" установки выглядит так:
# apt-get install linux-source-2.6.18 build-essential kernel-package fakeroot \
msort-gui initrd-tools pkg-config qt3-dev-tools libqt3-mt-dev
А еще одна подготовка...
Лучше день потерять, потом за 5 минут долететь.
(С) М/ф " Крылья, ноги, хвосты"
:-)
Здесь и далее будьте ВНИМАТЕЛЬНЫ на то, кем выполняется операция $ -
юзером, или # - root-ом!
Как юзера менять помним? Тогда повторим:
$ su -
Password:
#
... это мы стали root-ом
Если мы еще находимся в этой же консоли, то можно просто выйти из
окружения root-a, так:
# exit
$
Если сразу были root-ом, то:
# su - vasya
$
... это мы стали обычным пользователем.
Итак, все наши приготовления закончены. Ну-с, приступим!
Ну-с, приступим!
Делаем каталог /usr/src/ доступным для записи пользователя vasya (у вас
свой юзер):
debian:~# chown vasya -R /usr/src/
Или можно добавить себя в группу src.
Если сразу запускали консоль под рутом, то:
debian:~# su - vasya
Или, описание смотри выше...
debian:~# exit
Переходим в директорию с архивом исходников:
vasya@debian:~$ cd /usr/src
Проверяем, а там есть архив?
vasya@debian:~$ ls -l
Распакуем архив ядра (имейте ввиду - процесс небыстрый!):
vasya@debian:/usr/src$ tar -jxvf linux-source-2.6.18.tar.bz2
Скопируем конфиг-файл из нашей системы для дальнейшего "тюнинга":
vasya@debian:/usr/src$ cp /boot/config-2.6.18-4-686 /usr/src/linux-source-2.6.18/.config
vasya@debian:/usr/src$ cd /usr/src/linux-source-2.6.18
Если с этими исходниками уже была компиляция ядра ранее, то нужно
"почистить хвосты" за ней:
vasya@debian:/usr/src/linux-source-2.6.18$ make clean && make mrproper
Тогда после этого нужно скопировать либо "исходный" файл конфига ядра:
vasya@debian:/usr/src/linux-source-2.6.18$ cp /boot/config-2.6.18-4-686 /usr/src/linux-source-2.6.18/.config
... либо использовать сохраненную ранее "заначку" в виде вашего
config-файла, так же скопировать.
Конфигурируем ядро.
Подробнейший документ по конфигурированию ядра взять здесь или
здесь. Так же, в обязательном порядке прокачать тему нашего
товарища по-оружию. :-)
Ну, теперь сконфигурим наше ядро, из графической оболочки, написанной
на QT прямо для KDE :-) !
vasya@debian:/usr/src/linux-source-2.6.18$ make xconfig
Note: Если уж все-таки это все для вас осталось "матрицей за гранью
разума", то тогда вот вам задание - сделать пингвина при загрузке. Прям
как в Knoppix-e. Если вы еще этого не видели, то тогда срочно сюда,
а посмотреть можно здесь.
А для этого в разделе:
Graphics support -> Logo configuration
Включаем опцию:
Bootup logo -> Standart 224-color Linux logo
Дальше делаем:
File -> Save
File -> Exit
Компиляция!
Итак мы на финишной прямой. Сейчас самый важный и долгий момент. Если
ваш комп не такой уж мощный как хотелось бы, то приготовьтесь к
нескольким часам компиляции (как вариант - на ночь).
Меняем свои полномочия:
vasya@debian:/usr/src/linux-source-2.6.18$ su -
Password:
debian:~# cd /usr/src/linux-source-2.6.18
Финальная команда для компиляции, создания рамдиска, прописывания в
grub:
debian:/usr/src/linux-source-2.6.18# make-kpkg --append-to-version "-tux" --revision "2.6.18" --us --uc --initrd kernel_image
Создает deb-пакет готовый к "употреблению":
/usr/src/linux-image-2.6.18-tux_2.6.18_i386.deb
Можно теперь его "накатить" обычным образом:
debian:/usr/src# dpkg -i linux-image-2.6.18-tux_2.6.18_i386.deb
И ВСЕ!
Вариант.
Бывает ситуация когда нет смысла держать исходники ядра у себя на винте
(это то, что в папке /usr/src/linux-source-2.6.18). Даже размер тому
может являться причиной - как никак 256 Мб. И не забудьте, что это
корневая директория. Попробуйте выполнить команду, как на рисунке ниже.
А сколько у вас свободного места? А если несколько ядер?
Исходники ядра бывают нужны, например, для установки правильных
драйверов для видеокарты они нужны. А если получилось собрать жутко
оптимальное ядро, и сменили производителя видео-карты, а? Ну для
десктоповых машин это может быть не очень и важно, а если у вас
ноутбук?? Ну аргументов для этого можно привести целую массу. Короче!
Если вселенная против того, чтобы мы держали исходники ядра на будущее
у себя именно в этой директории (/usr/src/), то для этих целей
придуманы т.н. headers (типа "заголовки" на самое важное в структуре
ядра). С несоизмеримо-меньшими размерами. И если мы не знаем,
понадобятся нам в дальнейшем исходники ядра, или не понадобятся, то
тогда после конфигурирования ядра выполни немного модифицированную
команду.
Итак - финальная команда для компиляции, создания рамдиска,
прописывания в grub и создания т.н. Headers-ов:
debian:/usr/src/linux-source-2.6.18# make-kpkg --append-to-version "-tux" --revision "2.6.18" --us --uc --initrd kernel_image kernel_headers
Создает 2 бинарных файла с ядром:
/usr/src/linux-headers-2.6.18-tux_2.6.18_i386.deb
/usr/src/linux-image-2.6.18-tux_2.6.18_i386.deb
Установим:
debian:/usr/src# dpkg -i linux-headers-2.6.18-tux_2.6.18_i386.deb linux-image-2.6.18-tux_2.6.18_i386.deb
И опять ВСЕ!
Причем, господа, имейте ввиду, что после этой команды Debian сам
установит вообще ВСЕ, и даже пропишет нужные строчки в меню нашего
загрузчика GRUB, и причем еще со "служебным" вариантом загрузки нашего
нового ядра!!!
Ну не прелесть ли, а?
:-)
Да, если кто правда делал пингвина при загрузке, то надо добавить в
файл /boot/grub/menu.lst в конец строки
kernel /vmlinuz-2.6.18-tux root=/dev/xxx ro vga=791
где ххх - ваш корневой диск. Если точнее, то партиция где находится
каталок grub.
vga=791 - означает, что нужно выводить всю информацию загрузки в разрешении 1024х768
Подробнее про загрузчик Grub - на блоге.
Естественно сделать это можно из-под рута, например, в mc.
И что в итоге?!
Теперь самое время послать сиситему в reboot, и с замиранием сердца
ожидаем загрузку системы.
Заключение.
Ну вот и все. Теперь, когда самый сложный и ранее непонятный процесс
подготовки и компиляции ядра нами освоен, настало самое время заняться
исключительно творчеством - сосредоточиться на конфигурации ядра. А эта
очень обширная и достаточно сложная тема. Надеюсь, к ней еще вернемся.
Удачи в творчестве!