Сборка ядра Linux
Необходимо собирать ядро Linux в следующих случаях:
- чтобы задействовать свойства, которых нет в поставляемых сборках ядра;
- для установки обновлённого ядра, в котором есть необходимые свойства или поддержка вашего оборудования;
- для создания монолитного ядра, без модулей.
Кроме того, в ядро PCLinuxOS, установленное по умолчанию, включено максимально возможное количество модулей, чтобы охватить как можно больше разнообразного оборудования. Но ядро - это единственная часть системы, которая полностью загружается в оперативную память и никогда не переносится в swap. Конечно, модульность ядра несколько спасает ситуацию: не загружаются модули оборудования, которое отсутствует в системе. Но многие модули включены в ядро по умолчанию. Все это приводит к тому, что ядро получается сильно "раздутым". Это не принципиально, если у вас мощный современный компьютер, но и его можно заставить работать быстрее и лучше.
Для оптимизации ядра его пересобирают, оставив в ядре лишь то оборудование, которое реально установлено на компьютере, и модули того, что бывает используется или потенциально может использоваться.
Для того, чтобы собрать/пересобрать ядро Linux, нужно:
1. Узнать версию своего ядра командой:
uname -a
2. Скачать последнюю стабильную версию ядра с сайта http://www.kernel.org/.
3. Разархивировать скачанный файл в любую папку. Многие рекомендуют использовать /usr/src/, создавать ссылку linux на распакованную папку:
cd /usr/src tar xjf linux-3.0.4.tar.bz2
rm linux
ln -s linux-3.0.4 linux
cd /usr/src/linux
Но на самом деле это не играет какой-то значимой роли. Можно собирать ядро и в домашней папке home/user/temp.
4. Дать ядру имя. Для этого зайти в папку с ядром и в файле Makefile прописать значение строки EXTRAVERSION, например:
EXTRAVERSION=-mykernel.ver.1
Значение этого поля может быть любым. Его предназначение - помочь вам не запутаться в массе ядер, если вы будете перекомпилировать его несколько раз.
5. Для оптимизации ядра надо исключить из него все лишнее, а для этого надо точно знать, какие устройства используются в системе, и какие будут использоваться в будущем. То есть нужна информация об оборудовании: процессор(ах), оперативной памяти, чипсете материнской платы, видеокарте, сетевой карте(ах), звуковой карте, жестких дисках и CD/DVD приводах, устройствах ввода/вывода (клавиатура, мышь), файловой системе, параметрах сети (протоколы разных уровней), usb-устройствах и т. д.
Вообще, чем больше вы знаете о своем компьютере, тем эффективнее вы сможете собрать ядро. Можно рекомендовать постепенно накапливать информацию и пересобирать ядро в свете новых сведений, улучшая его день за днем.
В PCLinuxOS эту информацию можно получить в «PCLinuxOS Control Center» --> «Оборудование» --> «Поиск и настройка оборудования» или с помощью утилиты hardinfo (есть в репозитории). При конфигурировании ядра держите открытыми эти окна, постоянно сверяясь с содержащейся в них информацией.
6. Иногда требуются драйвера или средства, которые не поддерживаются в имеющемся ядре. В любом случае это исправляется наложением так называемых патчей (если таковые имеются). Но без необходимости не делайте этого!
Предположим, вы скачали необходимый патч (например, 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
Первая команда — только тест и никакие изменения не будут применены к исходникам. Если после первой команды не было выдано никаких ошибок, можно выполнить вторую команду для применения патча. Ни в коем случае не выполняйте вторую команду, если после первой были выданы ошибки!
7. Начиная конфигурирование опций ядра, логично будет взять конфиг работающего ядра PCLinuxOS, а не конфигурировать с нуля. Для этого в консоли нужно набрать:
make oldconfig
Здесь придется поотвечать на вопросы насчет новых возможностей, включенных в ядро 3.0.4. Читайте внимательно и выбирайте, как включить новую функцию (монолитно в ядро (y), модулем (m) или вообще не включать (n)). В конце все данные будут записаны в файл .config.
8. Теперь самый ответственный этап - конфигурирование ядра! Для этого в консоли пишем:
make menuconfig
Загрузится графическое меню конфигурации ядра. В меню пробелом нужно отключить ненужные опции ядра, постоянно нужные включить в ядро монолитно (*), возможно нужные - включить модулями (M), сохранить изменения. Главное - не отключить чего-нибудь важного, иначе система потом не загрузится с новым ядром, или будет работать некорректно.
Разобраться в функциях ядра и определиться, что вам нужно, что нет, можно, прочитав информацию здесь и здесь. Также не забывайте, что в menuconfig есть кнопка HELP с комментариями практически к каждой опции.
После того как ядро отконфигурировано, выберите «Exit» и выйдите из утилиты menuconfig. Перед выходом из утилиты выскочит сообщение с вопросом - сохранить проделанные изменения, выберите Yes.
9. Советы и подсказки по конфигурированию ядра:
- Перед сборкой нового ядра убедитесь, что абсолютно все устройства вашей текущей конфигурации работаю нормально.
- При первом запуске конфигуратор будет использовать файл настроек вашего текущего ядра (make oldconfig), т.к. обнаружит файла .config в папке с новым ядром. Поэтому, если все устройства в системе работают нормально, то не добавляйте никакие пакеты, т.к. они точно не будут использоваться в системе.
- Не включайте в ядро и не делайте модулем никаких функций, рядом с которыми написано слово EXPERIMENTAL или DEPRECATED! Это может вывести систему из стабильного состояния и добавить вам совершенно ненужных проблем - включайте только в том случае, если это очень необходимо и вы знаете, что делаете.
- Чтобы система после перезагрузке загрузилась с новым ядром, обязательно включите поддержку следующих опций монолитно: корневую файловую систему; файловые системы initramfs и cramfs в меню Device drivers --- Block devices; поддержку вашего дискового контроллера в Device drivers --- ATA/ATAPI/MFM/RLL support.
- Если вы не уверены в необходимости того или иного модуля/драйвера, выбирайте "установить модулем". Тогда есть шанс, что он не будет мешать системе, даже если он не требуется.
- Внимательно вчитывайтесь в описание модулей, если там есть рекомендации, то прислушайтесь к ним.
- Удаляйте только то, что вы уверены вам не пригодится. Например, если у вас процессор от Intel, то все связанное с процессорами AMD можно удалять (и наоборот).
- Используйте поиск (есть в графическом xconfig — make xconfig — для запуска которого вам нужно будет установить ряд требуемых пакетов через Synaptic). Сначала включите в меню Show all для отображения скрытых элементов (вложенные элементы, родитель которых не помечен для установки). Например, у вас ноутбук Asus, поэтому введите название марки в поиск и последовательно включите все, касающееся ноутбуков Asus. Аналогичным образом можно исключать модули, которые вам не нужны. Например, модули для ноутбуков Dell, Compaq, Toshiba и др.
- Не поленитесь найти все модули, которые вы определили с помощью hardinfo и убедитесь, что они включены в ядро (полностью включены, а не как модули), это даст прирост в производительности компьютера.
10. Теперь необходимо собрать отконфигурированное ядро командой:
make bzImage
11. Затем собрать модули:
make modules
Процесс сборки длительный. Правда, все зависит от мощности компьютера.
12. Затем от пользователя root установить модули и само ядро:
make modules_install (установка модулей)
make install (установка ядра)
13. Ядро само создаст загрузочный образ initrd и пропишет ядро в загрузчик GRUB.
14. Останется только перезагрузиться, выбрать нужный пункт в загрузчике и загрузить систему с новым ядром.
15. Советы по работе с ядроv? Которое вы скомпилируете:
- Не торопитесь сразу еще раз собирать ядро, урезав его еще сильнее. Поработайте активно 2-3 дня на компьютере, фиксируя все сбои и нестандартное/непривычное поведение системы. Когда же вы дойдете до следующего этапа сборки, то сохраняйте конфигурационный файл .config, чтобы всегда иметь возможность откатиться к рабочей версии.
- Не стоит держать большое количество собранных ядер, поэтому не забывайте очищать систему от собранных и установленных ядер.
- При выходе новой версии ядра, копируйте ему свой .config, тогда вам придется лишь внимательно просмотреть изменения в новом ядре и выбрать нужное модули.
- Перед сборкой нового ядра сделайте бэкап файла .config. И выполните в папке с ядром команды
- make clean
- make mrproper
- чтобы удалить все файлы, оставшиеся от предыдущей компиляции.