|
Окна veka Предложение дилерам. Ссылки на сайты строительной тематики. artes-okna.ru |
|
Светодиодное освещение Техники отечественного и зарубежного производства. Контактная информация. ltcompany.com |
Прежде чем приступить, попробуем вначале ответить на вопрос: А зачем собственно нужна пересборка ядра? Большинство современных пользователей Linux редко задумываются о том, какое у них установлено ядро, какие функции в нем заложены, чего там не хватает, и тем более о том, что его можно (и нужно) обновлять или пересобирать под конкретные нужды.
Доступность и бесплатность дистрибутивов позволяют любому выбрать себе тот, на котором будет работать все доступное пользователю оборудование, не задумываясь о причинах почему же оно не работает и не вникая в проблему. А часто нужна всего лишь установка единственного пакета содержащего требуемый модуль ядра. Производители дистрибутивов собирают свои ядра так сказать по максимуму, стараясь охватить наиболее широкий спектр оборудования и задач. Основные компоненты включены в ядро, устанавливаемое вместе с системой, а то что считается необязательным выносится в отдельные пакеты.
Чтобы найти пакеты, имеющие отношение к ядру, используйте репозитарий своего дистрибутива, например в Ubuntu и других системах использующих менеджер APT, чтобы получить весь список достаточно ввести:
$ sudo apt-cache search kernel
Второй причиной пересборки ядра является его оптимизация и уменьшение его размера. Пользователь или администратор может просто захочет собрать систему, собранную под свою марку процессора. Или модифицировать системные параметры, например включить поддержку большого количества памяти, дисковых квот, поддержку файловых систем и многое другое. Еще одна причина это устранение ошибки, найденной в ядре или одном из драйверов. И наконец — проба новых возможностей недоступных в дистрибутиве, а доступных пока только в виде патча. Да может и просто захочется попробовать свои силы в сборке нового ядра.
Установленное обычным образом ядро (то есть стандартная компиляция) не будет видно менеджеру пакетов, в принципе это возможно и не нужно. Но удалить ядро установленное при помощи менеджера пакетов проще, обновление ядра из репозитария также пройдет без сучка и задоринки. Поэтому лучше вначале собрать пакет, который установить принятым в дистрибутиве способом. В большинстве дистрибутивов такая возможность естественно предусмотрена. В Debian/Ubuntu это просто. Вначале обновляем базу данных приложений, чтобы загрузить самые последние доступные версии пакетов.
$ sudo apt-get update
Теперь установим все необходимые для сборки пакеты.
$ sudo apt-get install kernel-package libncurses5-dev fakeroot wget
Пакет kernel-package содержит исходные тексты ядра, которые будут распакованы в /usr/src. Вместо него можно использовать и любое другое ядро с патчами.
Если нет make, gcc и прочего, то и:
$ sudo apt-get install build-essential
Для упрощения берем настройки текущего ядра, который будем использовать как базовый, и копируем текущую конфигурацию в /usr/src/linux.
$ sudo cp /boot/config-`uname -r` /usr/src/linux/.config
В некоторых дистрибутивах просмотреть содержимое файла .config с которым собрано ядро можно обратившись к файлу /proc/config.gz, его можно взять за основу при дальнейших настройках. Рабочий .config лучше сохранять, это просит последующие пересборки ядра.
Далее при необходимости конфигурируем его введя одну из команд: make config, make menuconfig, make xconfig, make gconfig или make oldconfig.
Для компилляции и сборки deb-пакета вводим следующую команду.
$ sudo make-kpkg clean fakeroot make-kpkg —initrd —append-to-version=-custom-kernel kernel_image kernel_headers
Строка —append-to-version позволяет добавить свою нумерацию или название к версии ядра, которое будет выводиться командой uname. Здесь можно вписать любую строку, но она обязательно должна начинаться с тире.
В Debian, Ubuntu и некоторых других дистрибутивах принят формат пакета с расширением deb, который содержит, как правило, скомпилированную программу и позволяет легко ее установить, удалить или обновить.
Через некоторое время в каталоге /usr/src появятся два deb пакета. Пакет с именем linux-image-2.6.23.deb будет содержать скомпилированное ядро, а linux-headers-2.6.23.deb – заголовочные файлы, которые могут понадобиться при самостоятельной компилляции некоторых других приложений или модулей. Цифра в вашем случае будет скорее всего другая. Устанавливаются они при помощи dpkg. В нашем примере команда будет выглядеть так.
$ sudo dpkg -i linux-image-2.6.23.deb linux-headers-2.6.23.deb
Еще одно удобство такого способа. Такое ядро теперь можно быстро и без проблем установить на другие компьютеры при условии, что при конфигурации было учтено все возможное оборудование. Если посмотреть сейчас в файл /boot/grub/menu.lst, то можно обнаружить в списке новое ядро. Еще один плюс, не нужно возиться с настройкой загрузчика. Linux forever!
13 Комментариев к Компиляция ядра — Ubuntu way
Февраль 17th, 2008 | 13:28
«Теперь установим все необходимые для сборки пакеты.»
Я бы еще дописал make и gcc
«Строка –append-to-version позволяет добавить свою нумерацию или название к версии ядра, которое будет выводиться командой uname.»
Совершенно не обязательно добавлять append-to-version, достаточно лишь в конфиге ядра в
General setup указать свою версию в «Local version — append to kernel release», а также включить в ядро параметр «Automatically append version information to the version string»
Я всегда собираю ядро командой make-kpkg —roocmd=fakeroot kernel_image
В принципе, если есть полное дерево сырцов ядра, то хедеры не нужны.
Февраль 17th, 2008 | 13:32
—rootcmd*
Февраль 17th, 2008 | 13:43
В Ubuntu make, gcc и прочее ставится просто:
$ sudo apt-get install build-essential
Февраль 17th, 2008 | 13:52
боян, давным давно была эта статья на английском, ещё в том году
Февраль 17th, 2008 | 14:10
А ничего сверх секретного здесь и не написано, что делаю то и пишу. Книги для чайников тоже эту инфу содержат, но их читают и радуются.
Февраль 17th, 2008 | 14:42
«В Ubuntu make, gcc и прочее ставится просто:»
просто, не просто, а в статье не описано.
Февраль 17th, 2008 | 14:46
2vlas Спасибо, подправил.
Февраль 28th, 2008 | 6:07
apt-get install build-essential их как раз и ставит.
apt-cache show build-essential | grep depends :
Depends: libc6-dev | libc-dev, gcc (>= 4:4.1.1), g++ (>= 4:4.1.1), make, dpkg-dev (>= 1.13.5)
Февраль 28th, 2008 | 8:52
[...] Компиляция ядра — Ubuntu way (tags: ubuntu howto) Posted by mitry Filed in blog [...]
Апрель 21st, 2008 | 1:57
в ubuntu 7.10:
также надо чтобы версия совпадала с параметром Debian revision number в фаеле /etc/kernel-pkg.conf
если он не установлен, то поумолчанию — debian = $(version)-10.00.Custom
сооветсвенно, если не совпадает, то весь процесс останавливается.
Август 14th, 2008 | 20:42
спасибо за подробную справку о настройках
Сентябрь 13th, 2008 | 20:31
[...] вариант не приемлем, ядро придется собрать самостоятельно. Берем с http://www.kernel.org/ необходимое ядро, с сайта swasup2 [...]
Август 5th, 2010 | 15:30
Да статья неплохая, вот только это шапка айсберга. Куда более интересно и полезно было бы как раз про настройку ядра и его компонентов. Вот это в сети постов нет, а если и есть то про старые ядра.