Отличительной особенностью дистрибутивов операционной системы GNU/Linux является то, что можно настроить практически любые части ОС на своё усмотрение. Можно, конечно, еще и поиграть с исходным кодом отдельных программ по-своему желанию, но на деле это требуется совсем уж редко и при очень специфических вкусах xD
Плюсы от сборки ядра Linux с собственным конфигурационным файлом
- Можно включить непосредственно в ядро все необходимые драйвера — снизится время загрузки.
- Исключая ненужные модули и драйвера — уменьшаем размер ядра и, возможно, снижаем время его загрузки.
- Сделав монолитное ядрышко можно вообще всё необходимое включить непосредственно в него. Больше не нужны будут модули (в том числе пропритарные драйвера Nvidia). Это таки тоже незначительно улучшит скорость загрузки и работы.
- Поигравшись с планировщиком задач и прочими штучками можно немного увеличить производительность операционной системы.
- В некоторых дистрибутивах (к примеру, в Debian) старые версии ядер, в которые не включены последние драйверы.
- Скомпилировав более свежую версию можно заставить какое-то оборудование заработать.
- На ядра можно наложить специфические патчи, которые не включены в стандартное ядро или то, которое идёт вместе с дистрибутивом операционной системы GNU/Linux.
Однако как и у всего в нашей бренной жизни, есть и негативные стороны у этого действа.
Минусы сборки ядра Linux с собственным конфигурационным файлом
- При неправильной конфигурации таки что-то может и не заработать.
- Собственное ядро скорее всего не запуститься с первого раза 😀 Во всяком случае у меня это случается редко.
- Это достаточно длительный процесс, можно сказать медитативный, под конкретное оборудование у меня только раз на 10-й получается именно то, что необходимо.
- Придется много гуглить и читать на английском.
- Все манипуляции, вопреки ожиданиям, могут только увеличить объём ядра, время загрузки и отклик системы.
Собственно с последствиями ознакомились и можно приступать.
Сборка ядра Linux
В первую очередь нужно раздобыть само ядро и желательно рабочий конфигурационный файл. Ядро Linux можно скачать отсюда. А конфигурационный файл взять в дистрибутиве. К примеру, в Debian они лежат в папке /boot и называются config-версия.
Затем следует скопировать архив с ядром в какую-нибудь папку для сборки (рекомендую ~/src) и распаковать его командой:
$ tar -xvf linux-*
И скопировать файл конфигурации ядра от вашего дистрибутива в появившуюся папку.
Конфигурация ядра Linux
Как было выше сказано — это процесс медетативный, точной инструкции нет, а есть только общие рекомендации лично от меня (как уже прошедшего по этому пути истины):
- Для конфигурации лучше использовать старый добрый bash с псевдографикой от ncurses. Потому как всякие xconfig, gconfig и прочие графические приблуды, как это не было бы странным, обладают меньшей функциональностью и наглядностью. Поэтому я бы порекомендовал использовать команду:
$ make ncurses
Чтобы она успешно выполнилась, скорее всего, потребуется установить пакеты:- make
- gcc
- config
- ncurses-dev
И возможно что-то еще =) Так выглядит конфигурация ядра с помощью make menuconfug:
- Тут всё просто вход в ветку с помощью Enter, выход из ветки через Escape, поиск на клавише /, а описание на ?.
- Строчки, помеченные [*] — включены в ядро, [M] — компилируются в виде модуля, а [ ] — не собираются.
- Теперь осталось всё что нужно включить в ядро, то что совершенно не нужно — убрать из него, а то что возможно когда-то и потребуется — включить в виде модуля. Кажется просто, но всё совсем не так.
- Узнать список модулей, которые сейчас загружены, можно с помощью команды:
$ lsmod
- Команды:
$ lspci
и
$ dmesg
Помогут узнать примерный список оборудования и ошибки при загрузки системы, которые наверняка появятся после первой сборки под конкретное оборудование. - Информацию о конкретных строках, о том, что вам нужно или нет, уже придётся гуглить. Расписывать это нет смысла, ибо всё постоянно обновляется и изменяется. Однако, я бы посоветовал в обязательном порядке включать в ядро следующие вещи:
- драйвера материнской платы;
- драйвера жестких дисков;
- драйвера usb;
Остальное уже — как душе будет угодно.
Компиляция и установка ядра Linux
После конфигурации можно приступить непосредственно к сборке и установке, что достаточно просто и выполняется в три команды:
- Компиляция ядра и модулей:
$ make
- Установка модулей в /lib/modules:
# make modules_install
- Установка ядра:
# make install
Возможно еще потребуется настроить загрузчик, однако в моём Debian всё произошло само после установки ядра. Скорее всего в большинстве дистрибутивов будет так же. Но суть тут проста — прописать все параметры примерно таким же образом, как и для других версий ядер в конфигурационном файле загрузчика (для grub2 это /boot/grub/grub.cfg).
Если после всего этого действа результат вас не удовлетворяет, то возвращаемся к пункту конфигурации ядра, сохраняем конфигурационный файл, делаем очистку с помощью команды:
$ make mrproper
Удаляем ядро из /boot и /lib/modules, а затем повторяем весь процесс заново.
Итоги
Мне не нужно использовать проприетарные драйвера, поэтому у меня получилось монолитное ядрышко весом 3 мегабайта, но тут уж нет предела совершенства. Субъективный онлайн тест браузера показал прирост производительности в 7-8%, кроме того, flash игры перестали лагать =)