Ядро - центральная часть операционной любой системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память и внешнее аппаратное обеспечение. Также обычно ядро предоставляет сервисы файловой системы и сетевых протоколов. Более подробно о ядре операционной системы можно прочитать в этой статье http://ru.wikipedia.org/wiki/%D0%AF%D0%B4%D1%80%D0%BE_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B
О ядре ОС Линукс подробно читайте здесь: http://ru.wikipedia.org/wiki/%D0%AF%D0%B4%D1%80%D0%BE_Linux
При установке любого дистрибутива Линукс, в систему устанавливается ядро, собранное поставщиком дистрибутива. Но не всегда это нас устраивает: не тот набор драйверов, нет поддержки нужных устройств, отключены или наоборот включены какие-то опции. Иногда просто надо поставить проприетарный драйвер. И приходится собирать ядро самому. В каждой новой версии появляются десятки или даже сотни новых возможностей: поддержка устройств, протоколов, способов управления и т.д.
У каждой версии ядра есть редакции, в которых исправляются ошибки обнаруженные в процессе эксплуатации. К каждой новой версии увеличивается не только размер ядра, но и повышается скорость работы. Хотя это можно оспорить, если у Вас компьютер образца начала века. Но в основном скорость работы на имеющемся оборудовании увеличивается с каждой новой версией ядра (в отличие от windows, где с выходом новой версии OC, требования к оборудованию практически удваиваются).
Собрать ядро (откомпилировать) поначалу кажется чем-то фантастическим и страшным. Ведь это сердце ОС, там могут работать только спецы. Это не так, хотя при первом знакомстве с ОС Линукс именно так я думал сам. Но время не стоит на месте.
1. Получить исходники.
Качаем с сайта http://www.kernel.org нужную версию ядра. Например 2.6.32.хх. (2.6.32 - версия ядра, хх - номер редакции). Рамер около 70 Mb.
2. Готовимся к сборке
Для компиляции ядра необходимо установить в систему следующие пакеты gcc - компилятор С, libncurses5-dev - библиотека псевдографического интерфейса, kernel-package - непосредственно сборщик ядра в deb пакет :
#apt-get install gcc libncurses5-dev kernel-package
3. Подготовка исходников
Войдя под пользователем root копируем архив 2.6.32.хх.tar.bz2 в папку /usr/src. Распаковываем
# tar xjf 2.6.32.хх.tar.bz2
Можно и просто в mc войти в архив и скопировать из него содержимое в нужную папку. Не имея большого опыта я так сам делал, но как оказалось, при таком способе распаковки, времени уходит в 2 раза больше. А при распаковке архивов 200Mb и более, это очень ощутимо.
Создаем на папку /usr/src/2.6.32.хх символическую ссылку в папку /usr/src/
#ln -s /usr/src/2.6.32.хх /usr/src/
4. Первый этап на пути к ядру
Заходим в папку с исходниками и даем команду:
# make oldconfig
При этом:
- если версии ядра совпадают, то просто появится сообщение о создании файла .config в папке исходников.
- если версия ядра была была младше нашей, Вам будет предложено ответить на вопросы о включении в состав ядра новых, по сравнению с текущим ядром, возможностей. Возможные варианты ответов: Y/n/m/? - может быть три, а не четыре. При этом ответ по умолчанию (т.е. то что будет принято просто нажав Enter) стоит первым и является безопасным. Ответ Y (да, включить в ядро) редко стоит первым в списке ответов, в основном всегда стоит N (нет, не включать в ядро ), m - (да, включить в ядро модулем). Модуль подгружается в память только при необходимость его использования или при явной команде об этом). ? - помощь по данной опции ядра: всегда на английском, в большинстве случаев понятна, часто содержит рекомендацию типа: если не уверен что делаешь, поставь N или безопасно поставить m. Результат сохранится в файле .config в папке исходников.
- если версия ядра ниже используемой, подумай-те, зачем вам это. Снижать версию ядра можно, но зачем?
5. Конфигурирование ядра или основной этап
Запускаем программу конфигурирования ядра.
# make menuconfig
Здесь Вы и уведите зачем была нужна библиотека псевдографики.
Главное окно программы конфигурации ядра содержит список разделов или групп опций.
General setup ---> # главные настройки
[*] Enable loadable module support ---> # поддержка загрузки модулей ядра
-*- Enable the block layer ---> # включение уровня блокировок
Processor type and features ---> # тип процессора и с этим связанные настройки
Power management and ACPI options ---> # настройка управление питанием
Bus options (PCI etc.) ---> # настройка шин
Executable file formats / Emulations ---> # Выполняемые файлы / Эмуляция
-*- Networking support ---> # Опции настройки сетевых возможностей
Device Drivers ---> # Драйверы устройств
Firmware Drivers ---> # Настройка несвободных драйверов
File systems ---> # Поддерживаемые файловые системы
Kernel hacking ---> # Настройка ядра (продвинутые настройки или хакинг)
Security options ---> # Настройки безопасности
-*- Cryptographic API ---> # Настройки шифрования
[*] Virtualization ---> # Виртуализация
Library routines ---> # Опции библиотек
---
Load an Alternate Configuration File
Save an Alternate Configuration File
---> означает что это раздел
[ ] блок может быть скомпилированным как встроенным в ядро (Y) или не включаться в ядро вообще (n)
< > блок может быть скомпилированным как встроеным в ядро, подгружаемым модулем (m) или не включаться в ядро вообще
{ } блок может быть скомпилированным как встроеным в ядро или подгружаемым модулем (т.е. в любом случае скомпилируется)
* - блок будет встроенным
M - будет скомпилирован как подгружаемый модуль
пробел - блок не будет компилироваться.
Здесь http://sogiuu.oskoluno.ru/area/forum/download/file.php?id=5 есть готовый файл конфигурации для ядра 2.6.32. (в архиве нет точки перед названием файла, переименуйте его в .config). Он подойдет для большинства компьютеров и ноутбуков с одной поправкой. Я компилировал его для двухядерных процессоров Intel. Поэтому для себя Вы должно выбрать тот процессор, который вам необходим. Для этого надо зайти в раздел Processor type and features --->, в пункте Processor family (Core 2/newer Xeon) ---> выбрать нужный тип процессора.
При использовании готового конфигурационного файла команду make oldconfig выполнять не надо, все равно .config будет заменен.
6. Компилируем модули.
Этот этап занимает довольно таки много времени. В зависимости от мощность процессора он может занять от 15 мин. (4-х ядерный и 5 потоков компиляции) до 40 мин и более.
Если вы обладатель многоядерного процессора, то операцию компиляции модулей можно существенно ускорить, включив параллельную работу компилятора.
Для одноядерного процессора команда будет
# make modules.
Для многодерного
# make -j N modules
где -j - (jobs) - флаг - указатель на многопоточную компиляцию, N - целое число потоков, рассчитанное по принципу: количество ядер плюс один (для двухядерного процессора N=3)
Для процессоров Intel Pentium 4 HT, i3, i5, i7, поддерживающих гипертрейдинг думаю будет справедливо попробовать рассчитать N из следующих соображений N = (количество ядер) * 2 +1. Прервать компиляцию можно комбинацией Ctrl+C.
Внимание!!! При многопоточной компиляции процессор загружается на 98-100% , и его температура резко возрастает. Например, корпус моего ноутбука разогревается так, что его невозможно взять в руки. Поэтому, обеспечьте компьютеру хорошую вентиляцию.
7. Собираем deb пакет ядра.
После того, как у Вас безошибочно прошла компиляция модулей, можно (НО НЕ НАДО) находясь в папке с исходниками установить ядро командой
#make install
Ядро установится, но в случае каких-либо проблем, его не так просто удалить. Таким способом работают любители дистрибутива Slackware linux. При работе с этим дистрибутивом все программы компилируются из исходников. Это надежно, но очень долго.
Надо сказать большое СПАСИБО разработчикам Debian, которые заранее позаботились об установке и удалении программного обеспечения. Наряду с исконно линуксовой установкой через make install, ими была разработана система управления процессом установки/удаления ПО. Эта система управляет deb - пакетами, архивными файлами с расширением deb. Система отвечает за правильность установки ПО, обеспечение зависимостей, контролем размещения файлов и соответственно удалением всего этого хозяйства при необходимости. В общем МОЛОДЦЫ.
Собираем deb пакет
# make-kpkg --initrd kernel_image
Через минут 15-40 в каталог появится файл linux-image-2.6.32-тра-та-та.deb
Если у Вас многоядерный процессор, то команда принимает вид:
# CONCURRENCY_LEVEL=N make-kpkg --initrd kernel_image
где N - число потоков компилирования (расчет N см. выше )
8. Самое приятное. Установка ядра.
Находясь в папке /usr/src/ устанавливаем пакет с ядром командой:
# dpkg -i linux-image-2.6.32-тра-та-та.deb
Иногда при перезагрузке, после установки ядра, машина не хочет загружаться, появляется текст kernel panic. Это известный баг и устраняется он просто:
- Перезагружаемся под старой версией ядра.
- Смотрим в папке /boot/ загрузочный образ ядра initrd.img-2.6.32-тра-та-та. Если его нет, то смотрим правильное название нового ядра по файлу vmlinuz-2.6.32-тра-та-та и следующей командой создадим загрузочный образ initrd
# update-initramfs -c -k 2.6.32-тра-та-та
Следующей командой обновим конфигурацию загрузчика GRUB
# update-grub
Перезагружаемся
# reboot
И пользуемся.
______________________________________________________
Если после очередной компиляции и сборки ядро выполняет какие-то странные действия после установки (от полной остановки вашей системы, странных проблем с вводом/выводом до малой производительности), то перед повторной компиляцией надо произвести чистку:
#make clean
!!!!При такой чистке файл .config сотрется. Делайте копию.
Для приведения компилированных исходников в девственно-скаченный вид выполняй команду:
#make mrproper
воскресенье, 29 августа 2010 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий