Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

HowTo: Компиляция ядра - The Ubuntu Way

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Ubuntu
 
Автор Сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Вс Сен 23, 2007 11:47 am    Заголовок сообщения: HowTo: Компиляция ядра - The Ubuntu Way
Ответить с цитатой

Как скомпилировать ядро – путь Убунту.

Каждый дистрибутив имеет свои специфические инструменты для сборки самостоятельно настроенного ядра из исходников. Эта статья – о компилировании ядра Linux в ОС Ubuntu. Она объясняет, как построить «своё» ядро используя последние неизмененные исходные тексты с сайта www.kernel.org («ванильное ядро»), оставив систему независимой от ядер, предоставляемых разработчиками вашего дистрибутива. Статья также показывает, как установить патчи для исходных текстов ядра, если вам понадобятся возможности, здесь не описанные.
Я проверил это на Ubuntu 6.10 Server (”Edgy Eft”) и на Ubuntu 6.06 Desktop (”Dapper Drake”). В первую очередь хочу сказать, что это не единственный путь такой настройки системы. Есть много путей к достижению цели, но я пошел этой дорогой. Я не гарантирую, что это сработает у вас!

1.Предварительное замечание.

Я предпочитаю совершать все нижеописанные действитя как суперпользователь. Если вы еще не создали аккаунт суперпользователя, сделайте это сейчас:

sudo passwd root

Затем войдите в систему как суперпользователь:

su

Если же вы захотите работать как пользователь (вместо суперпользователя), не забывайте использовать команду sudo перед любой выполняемой командой, упомянутой в этой статье. Так что когда я запускаю

apt-get update

вы должны запустить

sudo apt-get upgrade

и так далее.

1.1.В Убунту 6.10 /bin/sh – символическая ссылка на /bin/dash по умолчанию. Мне кажется, что /bin/dash вызывает проблемы при сборке из исходников (по крайней мере, у меня такое впечатление). Именно поэтому я сделал /bin/sh символической ссылкой на /bin/bash
Если вы пользователь Убунту 6.10, сделайте сейчас вот что:

rm -f /bin/sh
ln -s /bin/bash /bin/sh

2.Установка пакетов, необходимых для компиляции ядра.

Сначала мы обновим нашу базу данных пакетов:

apt-get update

Затем установим все необходимые пакеты:

apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

3.Скачайте исходные тексты ядра.

Теперь мы скачаем исходники предполагаемого ядра и разместим их в /usr/src. На сайте www.kernel.org выберите ядро, которое вы хотели бы установить. (все ядра 2.6 вы можете найти здесь: http://www.kernel.org/pub/linux/kernel/v2.6/
Затем вы можете скачать их в папку /usr/src следующим образом.

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

Теперь мы распакуем исходники и создадим символическую ссылку на директорию с исходниками ядрами.

tar xjf linux-2.6.18.1.tar.bz2
ln -s linux-2.6.18.1 linux
cd /usr/src/linux

4.Установка патчей на исходные коды ядра (опционально)

Иногда вам нужны драйвера для устройства, которое по умолчанию не поддерживается новым ядром, или вам нужна поддержка для технологий виртуализаций или других новейших технологий, которые еще не нашли своего отражения в ядре. Во всех этих случаях вам необходимо установить патчи (буде таковые имеются) для исходников ядра.
Теперь давайте убедимся в том, что вы скачали нужный патч (я назвал его для примера patch.bz2) в директорию /usr/src. Так вы установите патч для ядра (вы все еще должны быть в директории /usr/src/linux):

bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1

Первая команда – всего лишь тест. Он ничего не делает с вашими исходниками. Если первая команда не показала ошибок, переходим ко второй, которая и установит патч. Не делайте этого, если первая команда выдала ошибку!

Вы также можете установить пре-патчи ядра для ваших исходников ядра. К примеру, если вам нужна возможность, доступная только в ядре 2.6.19-rc4, но исходный код актуального ядра не содержит нужной вам возможности. Однако, доступен файл patch-2.6.19-rc4.bz2. Вы можете установить этот патч на исходники ядра 2.6.18, но не на 2.6.18.1 или 2.6.18.2 и т.д. Почему так происходит – читайте на http://kernel.org/patchtypes/pre.html:
Пре-патчи эквивалентны альфа-релизам ядра Линукс; они «живут» в тестируемых директориях в архивах. Пре-патчи устанавливаются с помощью утилиты patch(1) на исходный код предыдущего полного релиза с трехзначным номером версии (к примеру, пре-патч 2.6.12-rc4 может быть установлен на исходники ядра 2.6.11, но не на 2.6.11.10).
Так что если вы хотите скомипилровать ядро версии 2.6.19-rc4, вы должны скачать исходный код ядра версии 2.6.18 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2), вместо 2.6.18.1, упомянутый в шаге 3.
Установить патч 2.6.19-rc4 на код ядра 2.6.18 вы можете так:

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc4.bz2
cd /usr/src/linux
bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1 –dry-run
bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1

5.Конфигурирование ядра.

Хорошей мыслью будет использование конфигурации вашего текущего ядра в качестве базиса для конфигурирования нового ядра. Скопируем текущую конфигурацию в /usr/src/linux:

cp /boot/config-`uname -r` ./.config

Затем запускайте

make menuconfig

Вы попадете в меню конфигурации ядра. Выберите Load an Alternate Configuration File, затем выберите .config (который содежит вашу текущую конфигурацию ядра) в качестве файла конфигурации.


Затем просмотрите меню конфигурации ядра и… сделайте ваш выбор! (о том, что нужно убрать, а что – оставить, можно книгу написать. В 2.6.18 много экспериментальных фич, многое из поддержки железа вам не понадобится в силу того, что этого железа у вас не и не будет… смотрите сами) Когда вы закончите, выберите Exit и на последующий вопрос (Do you wish to save your new kernel configuration?) ответьте Yes.

6.Компиляция ядра.

Чтобы скомпилировать ядро, выполните следующие команды:

make-kpkg clean
fakeroot make-kpkg –initrd –append-to-version=-custom kernel_image kernel_headers

После –append-to-version= вы можете вписать все что угодно – все, что поможет вам в дальнейшем идентифицировать «ваше» ядро, но это название должно начинаться на минус («-») и не содержать пробелов.
Теперь потерпите – компиляция ядра может занять несколько часов, все зависит от того, как вы сконфигурировали ядро и от того, насколько быстр ваш процессор.

7.Инсталляция нового ядра.

После того, как компиляция нового ядра успешно завершится, в директории /usr/src появятся два deb-файла:

cd /usr/src
ls -l

В моей системе они назывались linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb (который содержал само ядро) и linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb (который содержал файлы, которые могут понадобиться, если вы в дальнейшем захотите скомпилировать дополнительные модули ядра). Я их установил так:

dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb

(Кстати, теперь вы можете аналогичным образом устанавливать «свое» ядро и на других машинах с Убунту, то есть вам не надо еще раз собирать ядро) (что, впрочем, не означает, что оно заработает на другой машине – прим.пер.)

Вы сделали это. (That’s it. - прим.пер). Теперь вы можете проверить /boot/grub/menu.lst – там вы найдете две новых записи для вашего нового ядра:

vi /boot/grub/menu.lst

(а еще можно nano /boot/grub/menu.lst – прим.пер).

Записи в menu.lst на моей системе выглядели так:

title Ubuntu, kernel 2.6.18.1-custom
root (hd0,0)
kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro quiet splash
initrd /boot/initrd.img-2.6.18.1-custom
savedefault
boot
title Ubuntu, kernel 2.6.18.1-custom (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro single
initrd /boot/initrd.img-2.6.18.1-custom
boot

Теперь перезагружайтесь:

shutdown -r now

Если все прошло гладко, вы загрузите свою ОС с использованием нового ядра. Чтобы проверить, действительно ли используется новое ядро:

uname -r

На дисплей будет выведено что-то вроде 2.6.18.1-custom.
Если же система не грузится, перезагружайтесь и на экране GRUB’а нажмите Esc чтобы попасть в меню загрузки.



Выберите ваше старое ядро и запускайте систему. Теперь вы можете еще раз попробовать собрать работающее ядро. Не забудьте удалить нерабочие записи из /boot/grub/menu.lst.


Последний раз редактировалось: den (Сб Сен 29, 2007 3:36 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Вс Сен 23, 2007 11:48 am    Заголовок сообщения:
Ответить с цитатой

Одна из проблем с которой сталкиваются пользователи видеокарт nVidia – бинарные драйвера. Они откажутся работать с новым ядром (соответственно, вы не получите Иксов) до тех пор, пока вы их не переустановите.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Сб Сен 29, 2007 3:37 pm    Заголовок сообщения:
Ответить с цитатой

Оригинал linux.xlibs.net/2006/11/20/howto-compile-a-kernel-the-ubuntu-way/
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
petrelius1150

Завсегдатай


Зарегистрирован: 25.01.2009
Сообщения: 492
Откуда: С-Петербург, Россия

СообщениеДобавлено: Вс Мар 15, 2009 3:03 pm    Заголовок сообщения:
Ответить с цитатой

Цитата:

fakeroot make-kpkg –initrd –append-to-version=-custom kernel_image kernel_headers

В этой строке ошибка. Надо: fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Ubuntu Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис