Отличительной особенностью дистрибутивов операционной системы 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
        Чтобы она успешно выполнилась, скорее всего, потребуется установить пакеты:

        1. make
        2. gcc
        3. config
        4. ncurses-dev

        И возможно что-то еще =) Так выглядит конфигурация ядра с помощью make menuconfug:
        Конфигурация ядра Linux с menuconfig

      • Тут всё просто вход в ветку с помощью Enter, выход из ветки через Escape, поиск на клавише /, а описание на ?.
      • Строчки, помеченные [*] — включены в ядро, [M] — компилируются в виде модуля, а [ ] — не собираются.
      • Теперь осталось всё что нужно включить в ядро, то что совершенно не нужно — убрать из него, а то что возможно когда-то и потребуется — включить в виде модуля. Кажется просто, но всё совсем не так.
      • Узнать список модулей, которые сейчас загружены, можно с помощью команды:$ lsmod
      • Команды:
        $ lspci
        и
        $ dmesg
        Помогут узнать примерный список оборудования и ошибки при загрузки системы, которые наверняка появятся после первой сборки под конкретное оборудование.
      • Информацию о конкретных строках, о том, что вам нужно или нет, уже придётся гуглить. Расписывать это нет смысла, ибо всё постоянно обновляется и изменяется. Однако, я бы посоветовал в обязательном порядке включать в ядро следующие вещи:
        • драйвера материнской платы;
        • драйвера жестких дисков;
        • драйвера usb;

Остальное уже — как душе будет угодно.

Компиляция и установка ядра Linux

После конфигурации можно приступить непосредственно к сборке и установке, что достаточно просто и выполняется в три команды:

      1. Компиляция ядра и модулей:
        $ make
      2. Установка модулей в /lib/modules:
        # make modules_install
      3. Установка ядра:
        # make install

Возможно еще потребуется настроить загрузчик, однако в моём Debian всё произошло само после установки ядра. Скорее всего в большинстве дистрибутивов будет так же. Но суть тут проста — прописать все параметры примерно таким же образом, как и для других версий ядер в конфигурационном файле загрузчика (для grub2 это /boot/grub/grub.cfg).

Если после всего этого действа результат вас не удовлетворяет, то возвращаемся к пункту конфигурации ядра, сохраняем конфигурационный файл, делаем очистку с помощью команды:

$ make mrproper

Удаляем ядро из /boot и /lib/modules, а затем повторяем весь процесс заново.

Итоги

Мне не нужно использовать проприетарные драйвера, поэтому у меня получилось монолитное ядрышко весом 3 мегабайта, но тут уж нет предела совершенства. Субъективный онлайн тест браузера показал прирост производительности в 7-8%, кроме того, flash игры перестали лагать =)

Навигация по записям