Файл конфигурации ядра linux

Содержание
  1. Сборка ядра Linux — общие советы
  2. Плюсы от сборки ядра Linux с собственным конфигурационным файлом
  3. Минусы сборки ядра Linux с собственным конфигурационным файлом
  4. Сборка ядра Linux
  5. Конфигурация ядра Linux
  6. Компиляция и установка ядра Linux
  7. Итоги
  8. HOW-TO: Сборка ядра Linux
  9. Содержание
  10. Шаг 1. Получение исходного кода ядра
  11. Шаг 2. Получение необходимых для сборки пакетов
  12. Шаг 3. Применение патчей
  13. Шаг 4. Конфигурация будущей сборки ядра
  14. Шаг 5. Сборка ядра
  15. Шаг 6. Установка образов и заголовков ядра
  16. Шаг 7. Генерация начального RAM-диска
  17. Шаг 8. Обновление конфигурации загрузчика GRUB
  18. Шаг 9. Проверка ядра
  19. Настройка ядра Linux
  20. Как выполняется настройка?
  21. Настройка ядра Linux
  22. abi.vsyscall32
  23. debug.exception-trace
  24. dev.cdrom.autoclose
  25. dev.cdrom.autoeject
  26. dev.hpet.max-user-freq
  27. fs.aio-nr
  28. fs.file-max
  29. fs.inotify.max_queued_events
  30. fs.inotify.max_user_instances
  31. fs.inotify.max_user_watches
  32. cad_pid
  33. kernel.ctrl-alt-del
  34. kernel.domainname
  35. kernel.hostname
  36. kernel.modules_disabled
  37. kernel.panic
  38. kernel.pid_max
  39. kernel.random.boot_id
  40. kernel.random.uuid
  41. kernel.randomize_va_space
  42. kernel.sysrq
  43. kernel.threads-max
  44. net.ipv4.icmp_echo_ignore_all
  45. net.ipv4.icmp_echo_ignore_broadcasts
  46. net.ipv4.ip_default_ttl
  47. net.ipv4.ip_forward
  48. net.ipv4.ip_local_port_range
  49. net.ipv4.tcp_rfc1337
  50. net.ipv4.tcp_fin_timeout
  51. net.ipv4.tcp_keepalive_time
  52. net.core.rmem_default
  53. net.core.rmem_max
  54. net.core.wmem_default
  55. net.core.wmem_max
  56. net.ipv4.tcp_rmem
  57. vm.dirty_background_ratio
  58. vm.dirty_ratio
  59. vm.laptop_mode
  60. vm.swappiness
  61. Выводы

Сборка ядра Linux — общие советы

Отличительной особенностью дистрибутивов операционной системы GNU/Linux является то, что можно настроить практически любые части ОС на своё усмотрение. Можно, конечно, еще и поиграть с исходным кодом отдельных программ по-своему желанию, но на деле это требуется совсем уж редко и при очень специфических вкусах xD

Плюсы от сборки ядра Linux с собственным конфигурационным файлом

  • Можно включить непосредственно в ядро все необходимые драйвера — снизится время загрузки.
  • Исключая ненужные модули и драйвера — уменьшаем размер ядра и, возможно, снижаем время его загрузки.
  • Сделав монолитное ядрышко можно вообще всё необходимое включить непосредственно в него. Больше не нужны будут модули (в том числе пропритарные драйвера Nvidia). Это таки тоже незначительно улучшит скорость загрузки и работы.
  • Поигравшись с планировщиком задач и прочими штучками можно немного увеличить производительность операционной системы.
  • В некоторых дистрибутивах (к примеру, в Debian) старые версии ядер, в которые не включены последние драйверы.
  • Скомпилировав более свежую версию можно заставить какое-то оборудование заработать.
  • На ядра можно наложить специфические патчи, которые не включены в стандартное ядро или то, которое идёт вместе с дистрибутивом операционной системы GNU/Linux.

Однако как и у всего в нашей бренной жизни, есть и негативные стороны у этого действа.

Минусы сборки ядра Linux с собственным конфигурационным файлом

  • При неправильной конфигурации таки что-то может и не заработать.
  • Собственное ядро скорее всего не запуститься с первого раза 😀 Во всяком случае у меня это случается редко.
  • Это достаточно длительный процесс, можно сказать медитативный, под конкретное оборудование у меня только раз на 10-й получается именно то, что необходимо.
  • Придется много гуглить и читать на английском.
  • Все манипуляции, вопреки ожиданиям, могут только увеличить объём ядра, время загрузки и отклик системы.

Собственно с последствиями ознакомились и можно приступать.

Сборка ядра Linux

В первую очередь нужно раздобыть само ядро и желательно рабочий конфигурационный файл. Ядро Linux можно скачать отсюда. А конфигурационный файл взять в дистрибутиве. К примеру, в Debian они лежат в папке /boot и называются config-версия.

Затем следует скопировать архив с ядром в какую-нибудь папку для сборки (рекомендую

/src) и распаковать его командой:

И скопировать файл конфигурации ядра от вашего дистрибутива в появившуюся папку.

Конфигурация ядра Linux

Как было выше сказано — это процесс медетативный, точной инструкции нет, а есть только общие рекомендации лично от меня (как уже прошедшего по этому пути истины):

      • Для конфигурации лучше использовать старый добрый bash с псевдографикой от ncurses. Потому как всякие xconfig, gconfig и прочие графические приблуды, как это не было бы странным, обладают меньшей функциональностью и наглядностью. Поэтому я бы порекомендовал использовать команду:
        $ make ncurses
        Чтобы она успешно выполнилась, скорее всего, потребуется установить пакеты:
        1. make
        2. gcc
        3. config
        4. ncurses-dev

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

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

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

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

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

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

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

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

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

Итоги

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

Источник

HOW-TO: Сборка ядра Linux

Содержание

В данном пошаговом руководстве вы узнаете, как правильно собрать и установить ядро ветвей >2.6 в семействе ОС Ubuntu.

Шаг 1. Получение исходного кода ядра

Исходники ядра Ubuntu можно получить двумя способами:

150 Мб в текущую папку. Чтобы получить исходники ядра, версия которого установлена на компьютере выполните команду:

Или вместо `uname -r` можно указать конкретную версию из имеющихся в репозитории.

Не забудьте включить общий доступ к исходникам в репозитории ( Параметры системы → Программы и обновления → Программное обеспечение Ubuntu → Исходный код ). Из консоли это сделать можно раскомментировав строки начинающиеся с deb-src в файле /etc/apt/sources.list, а затем выполнить обновление командой: «sudo apt-get update».

Где — имя релиза, например:

Другие ядра

Также существуют ядра, работоспособность которых в Ubuntu не гарантируется. Например, известна проблема с рядом популярных системных приложений (в частности драйвера NVidia, VirtualBox), которые при своей установке компилируются под установленное ядро. Поэтому для их установки на ядро, нестандартное для данной версии Ubuntu (например, Ubuntu 16.04 идёт с ядром 4.4.0), может потребоваться их отдельная компиляция вручную или специальные патчи, а последние версии ядер с kernel.org приложение может вообще не поддерживать.

Распакуйте полученный архив, используя команды:

Или в случае с linux-source:

Шаг 2. Получение необходимых для сборки пакетов

Выполните следующие команды для установки основных пакетов:

Далее всё зависит от того, каким способом вы хотите произвести конфигурацию ядра. Это можно сделать несколькими способами.

В случае, если вы хотите использовать config, oldconfig, defconfig, localmodconfig или localyesconfig, вам больше не нужны никакие дополнительные пакеты. В случае же с оставшимися тремя вариантами необходимо установить также дополнительные пакеты.

Для установки пакетов, необходимых для использования menuconfig выполните следующую команду:

Для установки пакетов, необходимых для использования gconfig выполните следующую команду:

Для установки пакетов, необходимых для использования xconfig выполните следующую команду:

Шаг 3. Применение патчей

Официальные патчи уже наложены на исходники, если ядро получалось описанной выше командой:

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

Эта команда установит программу patch, необходимую для, как можно догадаться, применения патчей. Теперь скачайте файл патча в папку, куда вы распаковали ядро. Это может быть либо архивный файл (напр. Bzip2 или Gzip), либо несжатый patch-файл.

На данный момент подразумевается, что вы уже сохранили файл в ту папку, куда ранее распаковали ядро, и установили программу patch.
Если скачанный вами файл был в формате Gzip (*.gz), тогда выполните следующую команду для распаковки содержимого архива:

Если скачанный вами файл был в формате Bzip2 (*.bz2), тогда выполните следующую команду для распаковки содержимого архива:

где 2.6.x.y — версия патча ядра. Соответствующие команды распакуют файл патча в папку с исходным кодом ядра. Прежде чем применить патч, необходимо удостовериться, что он заработает без ошибкок. Для этого выполните команду:

где 2.6.x.y — версия патча ядра. Эта команда сымитирует применение патча, не изменяя сами файлы.

Если при её выполнении не возникнет ошибок, то изменения можно смело внедрять в сами файлы. Для этого выполните команду:

где 2.6.x.y — версия патча ядра. Если не было никаких ошибок, значит к исходному коду был успешно применён патч.

где 2.6.x.y — версия патча и ваших исходников

Шаг 4. Конфигурация будущей сборки ядра

Перейдите в папку, куда вы распаковали ядро, выполнив команду

где 2.6.x.y — версия загруженного вами ядра.

На данный момент вы уже должны были определиться с методом конфигурации ядра (если нет, то ознакомьтесь с ними в разделе «Получение необходимых для сборки пакетов». В зависимости от этого, выполните следующую команду для запуска выбранного вами способа конфигурации:

Читайте также:  Курсор хром для windows 10

После вызова соответствующая программа конфигурации будет запущена. Произведите необходимые настройки в соответствии с вашими потребностями, сохраните файл конфигурации и переходите к следующему шагу.

Шаг 5. Сборка ядра

Итак, приготовления завершены. Теперь можно запустить процесс сборки ядра. Чтобы это сделать, выполните команду:

Шаг 6. Установка образов и заголовков ядра

Когда сборка ядра подошла к концу, в вашей домашней папке появятся два deb-пакета. Их и необходимо установить. Для этого выполните команды:

где 2.6.x.y — версия собранного ядра, arc — архитектура процессора (i386 — 32-бит, amd64 — 64-бит).
Если вы не знаете точного названия пакета, выведите список файлов в домашнем каталоге командой

и найдите эти самые два пакета.

Шаг 7. Генерация начального RAM-диска

Для корректной работы Ubuntu требует наличия образа начального RAM-диска. Чтобы его создать, выполните команду:

где 2.6.x.y — версия собранного ядра.

Шаг 8. Обновление конфигурации загрузчика GRUB

Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера, выполните следующую команду:

Файл menu.lst (для GRUB версии 1) или grub.cfg (для GRUB версии 2) обновится в соответствии с наличием установленных операционных систем и образов ядер.

Шаг 9. Проверка ядра

Сборка и установка ядра успешно выполнены! Теперь перезагрузите компьютер и попробуйте загрузить систему с новым ядром. Чтобы удостовериться, что система запущена с новым ядром, выполните команду

Она выведет на экран используемую версию ядра.

Если всё сделано правильно, то вы можете удалить архивы с исходным кодом и весь каталог linux-2.6.x.y в вашей домашней папке. Это освободит около 5 ГБ на вашем жёстком диске (размер освобождаемого пространства зависит от параметров сборки).

На этом процесс сборки и установки завершён, поздравляю!

Источник

Настройка ядра Linux

Ядро Linux — очень гибкая вещь, позволяющая настроить очень много параметров. Такие параметры, как поддерживаемые устройства и функции настраиваются при сборке ядра. Но сегодня не будет рассматриваться компиляция ядра Linux. Мы поговорим о более тонкой настройке параметров ядра на лету, прямо во время его работы.

Да, мы не можем включать добавлять неподдерживаемые модули и драйвера устройств, но мы можем настроить такие параметры ядра Linux, как особенности работы процессора, памяти, виртуального пространства памяти, планировщика ядра, сетевой стек и многое другое. Все эти настройки доступны через файловую систему proc. Мы рассматривали подробно ее в предыдущей статье, теперь же остановимся только на директории /proc/sys, с помощью которой мы и будем настраивать ядро.

Как выполняется настройка?

Здесь все предельно просто. В этом каталоге и его подкаталогах лежат файлы, это и есть параметры, а значения в файлах нам и нужно изменять. Для этого можно использовать самую простую конструкцию из команды echo и оператора перенаправления вывода:

echo «1» > /proc/sys/net/ipv4/ip_forward

Значение 1 будет записано в файл ipv4_forward. Но измененные таким способом параметры не сохраняются после перезагрузки. Перед тем как рассматривать как сохранить параметры ядра linux из proc рассмотрим еще один способ их модификации.

Для работы с параметрами ядра есть утилита sysctl. Она представляет все параметры в виде переменных. Имена этих переменных соответствуют адресу файла в папке /proc/sys только слеш заменен точкой. Например:

Вы можете установить значение параметра такой командой:

Но это изменение тоже не сохранится, чтобы сохранить настройку после перезагрузки нужно добавить опцию -w:

sysctl -w net.ipv4.ip_forward=1

Вы можете также сразу посмотреть все доступные переменные с помощью опции -a:

abi.vsyscall32 = 1
debug.exception-trace = 1
dev.cdrom.autoclose = 0
dev.cdrom.autoeject = 0
dev.cdrom.check_media = 0
dev.cdrom.debug = 0
.
vm.stat_interval = 1
vm.swappiness = 60
vm.user_reserve_kbytes = 131072
vm.vfs_cache_pressure = 100
vm.zone_reclaim_mode = 0

Все эти переменные сохраняются в обычные конфигурационные файлы для сохранения между перезагрузками. Переменные, в зависимости от назначения распределяются между этими файлами:

  • /run/sysctl.d/*.conf
  • /etc/sysctl.d/*.conf
  • /usr/local/lib/sysctl.d/*.conf
  • /usr/lib/sysctl.d/*.conf
  • /lib/sysctl.d/*.conf
  • /etc/sysctl.conf

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

* Applying /boot/sysctl.conf-4.1.21-14-default .
kernel.hung_task_timeout_secs = 0
kernel.msgmax = 65536
kernel.msgmnb = 65536
kernel.shmmax = 0xffffffffffffffff
kernel.shmall = 0x0fffffffffffff00
vm.dirty_ratio = 20

Теперь вы знаете как работать с переменными, дальше мы рассмотрим значение некоторых, самых важных переменных, с помощью которых может быть выполнена настройка ядра linux.

Настройка ядра Linux

abi.vsyscall32

Если установлено 1, разрешает выполнение 32 битных программ в 64 битной системе. По умолчанию включено, можете отключить, а затем попробовать запустить, например, skype.

debug.exception-trace

При возникновении ошибки в ядре выводить значения регистров процессора и стек вызовов процедур. По умолчанию включено.

dev.cdrom.autoclose

Ваш CDROM будет автоматически закрыт при попытке его монтирования, по умолчанию отключено.

Читайте также:  Атол windows 10 один порт

dev.cdrom.autoeject

CDROM будет открыт после размонтирования содержащегося там диска с помощью команды umount.

dev.hpet.max-user-freq

Максимальная частота генерации прерываний от системного таймера High Precision Event Timer (HPET), который пришел на замену таймеру реального времени RTC. По умолчанию 64.

fs.aio-nr

Количество асинхронных операций ввода и вывода в вашей файловой системе.

fs.file-max

Максимальное количество дескрипторов файлов, которые может создать и обрабатывать ядро. Если вы часто получаете сообщения об ошибке из-за невозможности создать дескриптор файла увеличьте этот лимит. По умолчанию установлено значение 10 % от вашей оперативной памяти.

fs.inotify.max_queued_events

Подсистема ядра inotify позволяет следить за изменениями в файловой системе. Этот параметр устанавливает максимальное количество событий, которые могут находиться в очереди, перед тем как их обработает программа.

fs.inotify.max_user_instances

Максимальное количество объектов inotify, которые может создать один пользователь.

fs.inotify.max_user_watches

Максимальное количество файлов и директорий, за которыми может наблюдать один объект inotify.

cad_pid

PID процесса, который получит сигнал, если будет нажато сочетание клавиш Ctrl+Alt+Del

kernel.ctrl-alt-del

Если значение параметра 0, система отправляет сигнал процессу Init или тому, который вы назначили в предыдущей переменной, чтобы выполнить правильную перезагрузку. Если значение больше нуля, будет выполнена немедленная перезагрузка.

kernel.domainname

Позволяет установить доменное имя NIS (Network Internet Services) и YP (Yellow Pages). Но не путайте это доменное имя с DNS, это совсем разные вещи.

kernel.hostname

Имя вашего компьютера. Это самый простой способ изменить имя компьютера прямо сейчас, без перезагрузки.

kernel.modules_disabled

Позволяет отключить загрузку модулей ядра.

kernel.panic

Указывает количество секунд после ошибки в ядре (kernel panic) до перезагрузки.

kernel.pid_max

Максимальное значение PID процесса. Когда PID достигает этого значения, ядро переходит опять к минимальному. Значения больше этого не выделяются.

kernel.random.boot_id

Этот файл доступен только для чтения и содержит уникальный, случайный идентификатор загрузки. Генерируется для каждой загрузки.

kernel.random.uuid

При каждом запросе генерирует случайный UUID. Тоже доступен только для чтения.

kernel.randomize_va_space

Рандомизация адресного пространства это функция увеличивающая безопасность вашей системы. Она защищает от атак на переполнение буфера. По умолчанию включена.

kernel.sysrq

Позволяет включить или отключить управление ядром с помощью SysRQ. Доступны такие параметры:

  • 0 — отключить все функции
  • 1 — разрешить все функции
  • 2 — разрешить настройку уровня логгирования
  • 4 — разрешить управление клавиатурой
  • 8 — разрешить получение отладочных сообщений и дампов
  • 16 — разрешить команду sync
  • 32 — разрешить перемонтирование файловых систем в read-only
  • 64 — разрешить завершение процессов
  • 128 — разрешить перезагрузку, выключение
  • 256 — разрешить управление планировщиком

kernel.threads-max

Максимальное количество запущенных потоков для процессов.

net.ipv4.icmp_echo_ignore_all

Если включено, ядро будет игнорировать все icmp запросы. Рекомендуется для защиты от DDOS атак.

net.ipv4.icmp_echo_ignore_broadcasts

Так же, как и в предыдущем варианте, только игнорироваться будут только широковещательные icmp запросы.

net.ipv4.ip_default_ttl

Максимальное количество узлов, через которые может пройти отправленный пакет перед тем, как достигнет цели.

net.ipv4.ip_forward

Разрешить проходящие пакеты через этот компьютер. Обычно такая настройка параметров ядра Linux нужна для роутеров.

net.ipv4.ip_local_port_range

Диапазон локальных портов, которые могут быть использованы вашими программами.

net.ipv4.tcp_rfc1337

Установите 1 чтобы защитить компьютер от атаки TCP TimeWait.

net.ipv4.tcp_fin_timeout

Таймаут ожидания завершения соединения после отправки пакета FIN. Рекомендовано 15.

net.ipv4.tcp_keepalive_time

Поддерживать соединение активным определенное время, например, 300 секунд. По истечении этого времени TCP соединение будет разорвано.

net.core.rmem_default

Указывает размер по умолчанию буфера для сокета получения данных по сети.

net.core.rmem_max

Максимальный размер буфера сокета для получения данных по сети.

net.core.wmem_default

Размер сокета по умолчанию для отправки данных по сети.

net.core.wmem_max

Максимальный размер буфера сокета для отправки данных по сети.

net.ipv4.tcp_rmem

Количество памяти, доступной для работы TCP.

vm.dirty_background_ratio

Указывает процент от общей системной памяти, когда фоновый демон pdflush записи данных начнет переписывать кешированные данные на диск. По умолчанию установлено 10, но в быстрых системах такое частое сбрасывание не нужно, поэтому этот параметр можно увеличить.

vm.dirty_ratio

Похожий параметр. Только на этот раз он указывает сколько общей оперативной памяти должно быть занято, чтобы процесс, который ведет запись данных на диск инициировал запись кэшированных данных непосредственно на жесткий диск.

vm.laptop_mode

Функция laptop mode позволяет не сразу записывать данные на жесткий диск после запроса, а хранить их указанное время в оперативной памяти. Может быть полезно если вы экономите заряд батареи и не хотите, чтобы жесткий диск всегда вращался.

vm.swappiness

Устанавливает процент свободной памяти, по достижении которого данные начинают переноситься на swap раздел, для систем с большим количеством памяти рекомендовано значение 10.

Выводы

Мы рассмотрели далеко не все параметры ядра linux, здесь описаны лишь самые интересные из них. Более подробную информацию и еще больше переменных вы можете найти в официальной документации по ядру Linux. И будьте осторожны, конфигурация ядра Linux — дело серьезное. Если я упустил какой-то важный параметр, напишите в комментариях!

Источник

Оцените статью