Kernel (Русский) - ArchWiki

# Kernel (Русский)

From ArchWiki
Jump to navigation Jump to search

Ссылки по теме

- Модули ядра
- Compile kernel module
- Kernel Panics
- sysctl

Состояние перевода: На этой странице представлен перевод статьи Kernel. Дата последней синхронизации: 1 мая 2020. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Из Википедии:

  Ядро Linux — ядро операционной системы, соответствующее стандартам POSIX, составляющее основу операционных систем семейства Linux.

Дистрибутив Arch Linux основан на ядре Linux. Помимо основной стабильной (stable) версии в Arch Linux можно использовать некоторые альтернативные ядра. В статье описываются доступные в официальных репозиториях версии ядер, возможные патчи, а также способы, которыми пользователи могут скомпилировать собственное ядро.

Пакет ядра устанавливается на файловую систему в разделе `/boot/`. Для загрузки нужного ядра при запуске системы необходимо соответствующим образом настроить загрузчик.

## Официальные пакеты

- Stable — "ванильное" ядро Linux с модулями и некоторыми патчами.

  https://www.kernel.org/ || linux

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

  https://github.com/anthraxx/linux-hardened || linux-hardened

- Longterm — версия ядра и модулей с долгосрочной поддержкой (Long Term Support, LTS).

  https://www.kernel.org/ || linux-lts

- Zen Kernel — результат коллективных усилий исследователей с целью создать лучшее из возможных ядер Linux для систем общего назначения. Подробности проекта можно найти на сайте liquorix.net (там же можно скачать бинарные файлы Zen-ядра для Debian).

  https://github.com/zen-kernel/zen-kernel || linux-zen

## Компиляция

В Arch Linux есть два способа компиляции собственного ядра.

/Arch Build System
  Преимущества — наличие готового PKGBUILD для пакета linux и удобство использования системы управления пакетами.
Традиционная компиляция
  Ручная загрузка архива файлов с исходными кодами ядра и их компиляция.

## Ядра с сайта kernel.org

- Git — ядро Linux, собранное из файлов с исходным кодом из git-репозитория Линуса Торвальдса.

  https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git || linux-gitAUR

- Mainline — версии ядра с добавлением новых функций. Выходят каждые 2-3 месяца.

  https://www.kernel.org/ || linux-mainlineAUR

- Next — новейшие версии ядра, с улучшениями, которые будут добавлены в следующий mainline-выпуск.

  https://www.kernel.org/doc/man-pages/linux-next.html || linux-next-gitAUR

- Longterm 3.16 — LTS-ядро версии 3.16.

  https://www.kernel.org/ || linux-lts316AUR

- Longterm 4.4 — LTS-ядро версии 4.4.

  https://www.kernel.org/ || linux-lts44AUR

- Longterm 4.9 — LTS-ядро версии 4.9.

  https://www.kernel.org/ || linux-lts49AUR

- Longterm 4.14 — LTS-ядро версии 4.14.

  https://www.kernel.org/ || linux-lts414AUR

- Longterm 4.19 — LTS-ядро версии 4.19.

  https://www.kernel.org/ || linux-lts419AUR

## Патчи

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

Лучший способ повысить производительность — адаптировать ядро под свою систему, в первую очередь под архитектуру и тип процессора. Стандартные пакеты-ядра чаще всего собираются с обобщёнными настройками архитектуры и из-за этого могут потерять в эффективности. Кроме того, если оставить в ядре только действительно нужные вам функции, то удастся уменьшить его размер и, следовательно, время сборки. Например, можно начать эксперименты с базового ядра последней версии — удалите из него Bluetooth, Video4Linux, 1000Mbit Ethernet и прочие вещи, которые на вашей машине точно не понадобятся. Эта статья в целом не о кастомизации ядра, так что перечисленные примеры даны скорее для рекомендации "с чего начать" — перед установкой наборов патчей (патчсетов) стоит освоить основы.

В качестве отправной точки можно использовать настройки готовых пакетов ядер Arch. Файлы настроек находятся среди исходников, например — настройки ядра linux. Если на вашей системе включена опция `CONFIG_IKCONFIG_PROC`, то настройки ядра также можно найти в файле `/proc/config.gz`.

Установка патчей и изменение настроек ядра — процесс не слишком сложный, даже если вы собираетесь заняться этим впервые. Для некоторых наборов патчей на форуме можно найти файлы PKGBUILD. Однако применять патчсеты не глядя всё же не стоит, лучше привнесите в процесс некоторый элемент исследования и начните с нуля. Так вы научитесь гораздо большему, чем просто выбирать одно из ядер для загрузки, не понимая, что и как оно делает.

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

### Важнейшие патчи

- Linux-ck — патч от Con Kolivas, повышение быстродействия для настольных систем с любым типом нагрузки.

  http://ck.kolivas.org/ || linux-ckAUR

- pf-kernel — набор неплохих улучшений, не вошедших в mainline. Не использует ни один из существующих форков или патчсетов Linux, хотя некоторые неофициальные порты могут добавляться, если требуемые патчи не были выпущены официально. Наиболее важные нововведения — UKSM и планировщик процессорного времени PDS.

  https://gitlab.com/post-factum/pf-kernel/wikis/README || Packages:
  - Репозиторий разработчика pf-kernel, post-factum.
  - Репозиторий с пакетами linux-pfAUR, linux-pf-preset-defaultAUR, linux-pf-ltsAUR создателя форка pf-kernel, Thaodan.

- Realtime kernel — поддерживается небольшой группой разработчиков, возглавляемой Ingo Molnar. Патч позволяет применять kernel preemption практически ко всему ядру за исключением небольших участков кода ("raw_spinlock critical regions"). Этого удалось добиться за счёт замены большинства спинлоков ядра на мьютексы с поддержкой наследования приоритета, а также перемещением всех прерываний (в том числе и программных) в потоки ядра.

  https://wiki.linuxfoundation.org/realtime/start || linux-rtAUR, linux-rt-ltsAUR

### Прочие патчи

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

- Aufs — совместимое с aufs ядро Linux. Полезно при работе с Docker.

  http://aufs.sourceforge.net/ || linux-aufsAUR

- Clear — патчи проекта Clear Linux от Intel. Содержит улучшения производительности и безопасности.

  https://github.com/clearlinux-pkgs/linux || linux-clearAUR

- GalliumOS — ядро Linux с патчами GalliumOS для Хромбуков.

  https://github.com/GalliumOS/linux || linux-galliumosAUR

- Libre — ядро без "двоичных блобов".

  https://www.fsfla.org/ikiwiki/selibre/linux-libre/ || linux-libreAUR

- Liquorix — ядро, собранное из исходного кода Zen с настройками для Debian. Разработан для настольных, мультимедийных и игровых систем, часто используется в качестве замены основному ядру Debian. Создатель патча Liquorix, Damentz, также является разработчиком набора патчей Zen.

  https://liquorix.net || linux-lqxAUR

- MultiPath TCP — ядро с поддержкой Multipath TCP.

  https://multipath-tcp.org/ || linux-mptcpAUR

- VFIO — патч ядра от Alex Williamson с поддержкой PCI Passthrough для KVM на некоторых машинах.

  https://lwn.net/Articles/499240/ || linux-vfioAUR, linux-vfio-ltsAUR

- XanMod — улучшение производительности ядер рабочих станций, игровых компьютеров, медиацентров и других систем. Включает планировщик MuQSS, планировщик ввода-вывода BFQ, алгоритм дедупликации памяти в реальном времени UKSM, алгоритм управления перегрузками TCP BRR, расширенный набор команд для архитектуры x86_64 и другие изменения.

  https://xanmod.org/ || linux-xanmodAUR

## Смотрите также

- O'Reilly — Linux Kernel in a Nutshell — электронная книга "Ядро Linux в двух словах".
- Какую из stable-версий ядра лучше использовать? от Greg Kroah-Hartman.
- Документация ядра Linux

Categories:

- Kernel (Русский)
- Lists of software (Русский)