Linux zen что это
Кроме т.н. «ванильных» (оригинальных, немодифицированных) ядер, в дистрибутиве Arch Linux есть возможность установки и/или сборки из исходного кода кастомных ядер Linux, включающих в себя новые возможности, оптимизации или собирающиеся с обеспечением повышенной безопасности работы. В этом материале предлагаю собственный мини-обзор кастомных ядер для Arch Linux, который поможет определиться нужен ли вам кастомный пингвин под капотом (спойлер: нужен) и какое ядро выбрать под свои задачи.
Linux Zen
Ядро Zen содержит множество оптимизаций и улучшений по сравнению с «ванильным» ядром, нацеленных на предоставление «десктопного» ядра Linux для решения повседневных задач и игры, подо что и оптимизировано.
Установка Linux Zen
Zen ядро лежит в официальном репозитории «extra» Arch Linux, поэтому компилить ничего не надо. Ставится стандартным пакетным менеджером Pacman:
Linux Xanmod
Отличная модификация ядра Linux. Имеется большое количество улучшений, в том числе использование в качестве планировщика ЦП CacULE («какуля», у него и логотип соответсвующий). Не смотря на название — один из лучших планировщиков ЦП. В ядре содержатся модули Ashmem и Binder, с помощью которых можно запускать Anbox. С полным списком изменений и улучшений ядра Xanmod можно ознакомиться на официальном сайте. Кстати, там же есть инструкции по добавлению реп с ядром Xanmod в Debian/Ubuntu/Linux Mint. А вот в Arch Linux ядро Xanmod нужно собирать самостоятельно, с помощью PKGBUILD-сценария из AUR.
Установка Linux Xanmod
В AUR есть множество сценариев сборки данной модификации ядра. Обратите внимание, что по умолчанию собирается «generic» версия ядра, хотя можно собрать версию Xanmod, оптимизированную для своего процессора, о чём я хочу написать отдельный материал позже. А пока рассмотрим самые интересные варианты Xanmod в AUR.
linux-manjaro-xanmod
Xanmod с модификациями для дистрибутива Manjaro:
linux-xanmod-anbox
Вариант Xanmod с модулями Binder и Ashmem для Anbox:
linux-xanmod-cacule
Xanmod с планировщиком центрального процессора CacULE:
linux-xanmod-cacule-uksm
Xanmod с ЦП планировщиком CacULE и патчем UKSM (Ultra Kernel Samepage Merging). Последнее — очень классная штука, позволяющая в некоторых ситуациях сильно экономить оперативную память проводя её дедубликацию. Например, если на обычном ядре запустить 10 одинаковых виртуальных машин — они будут жрать ОЗУ как 10 виртуальных машин. С патчем UKSM эти же 10 виртуалок сожрут ОЗУ только как одна виртуальная машина. В этом мощь UKSM!
Linux Liquorix
Ядро Liquorix содержит все тюны ядра Zen, но в дополнение к ним использует I/O планировщик MuQSS, предназначенный для игры, мультимедиа и задач, требующих минимальные задержки. Подробности есть на официальном сайте проекта.
Установка Liquorix
Ядро собирается с помощью сценария из AUR:
Linux CK
Ядро CK собрано с патчами от Con Kolivas, включает планировщик ЦП MuQSS. Linux CK обеспечивает максимальную производительность и отзывчивость для настольных систем и не предназначено для серверов. Пользователи Arch Linux отмечают отличную отзывчивость системы, работающей на CK ядре под любыми нагрузками.
Установка Linux CK
CK ядро в AUR есть в нескольких вариантах.
linux-ck
Стандартная модификация ядра CK. Установка:
linux-ck-uksm
Модификация Linux CK с патчем UKSM. Именно этот вариант ядра использую и я:
Linux PF
Данная версия модифицированного ядра Linux так же ориентирована на использование в десктопных системах. Включает UKSM в станадртонй поставлке. Вариант для тех, кому нужно минимально модифицированное ядро Linux с поддержкой UKSM.
Установка Linux PF
Собираем сценарием из AUR.
Какое ядро выбрать?
Конечно же, лучше всего будет попробовать все варианты модификаций и выбрать тот, который понравится больше всего. Рекомендую сначала собрать Xanmod если хочется попробовать максимально тюнингованное ядро. Если же просто нужно UKSM — можно поступить как я и остановиться на ядре CK с патчем UKSM. Любое ядро будет работать скорее всего не хуже стокового, по крайней мере я деградаций не замечал, хотя перебрал все модификации, представленные в данном материале. Пробуйте, экспериментируйте!
Ядро Linux — ядро операционной системы, соответствующее стандартам POSIX, составляющее основу операционных систем семейства Linux.
Дистрибутив Arch Linux основан на ядре Linux. Помимо основной стабильной (stable) версии в Arch Linux можно использовать некоторые альтернативные ядра. В статье описываются доступные в официальных репозиториях версии ядер, возможные патчи, а также способы, которыми пользователи могут скомпилировать собственное ядро.
Пакет ядра устанавливается в файловую систему в каталоге /boot/ . Для загрузки нужного ядра при запуске системы необходимо соответствующим образом настроить загрузчик.
Contents
Официальные ядра
Помощь при работе с официальными ядрами можно найти на форуме и в баг-трекере.
Компиляция
Скомпилировать собственное ядро можно двумя способами:
/Arch Build System Преимущества — наличие готового PKGBUILD для пакета linux и удобство системы управления пакетами. /Традиционная компиляция Ручная загрузка архива файлов с исходными кодами ядра и их компиляция.
- Лучший способ повысить производительность — адаптировать ядро под свою систему, в первую очередь под архитектуру и тип процессора.
- Если оставить в ядре только действительно нужные вам функции, то удастся уменьшить его размер и, следовательно, время сборки. Например, удалите из него Bluetooth, Video4Linux, 1000Mbit Ethernet и прочие вещи, которые на вашей машине точно не понадобятся.
Файлы конфигурации пакетов с ядрами Arch можно найти в исходниках (например, файл [1] из linux ). Если включена опция ядра CONFIG_IKCONFIG_PROC , то файл /proc/config.gz содержит настройки ядра, которое работает на вашей машине в данный момент.
Некоторые из перечисленных пакетов могут быть также доступны в двоичном виде в неофициальных репозиториях.
Неофициальные ядра
Отладка регрессий
Прежде всего проверьте ядро linux-mainline AUR на предмет того, не была ли проблема уже решена. В прикреплённом комментарии указан репозиторий с уже собранными ядрами, так что собирать ядро вручную не придётся.
Если проблема проявляется не слишком часто, то имеет смысл попробовать LTS-ядро ( linux-lts ). Старые версии LTS-ядер можно найти в архиве Arch Linux.
Если избавиться от проблемы не удалось, попробуйте локализовать баг в linux-git AUR , после чего сообщите о нём в баг-трекер ядра. Важно проверять ванильное непропатченное ядро, чтобы убедиться, что причиной ошибки является не патч. Если проблемы вызывает патч, то сообщите об этом его автору.
Что такое ядро ОС? Типы ядер
Как правило, большинство ядер ОС делятся на три типа:
Микроядро
Микроядро — это ядро, состоящее из нескольких подгружаемых в память по мере надобности независимых модулей, выполняющихся в отдельных адресных пространствах. По сути, в таком варианте исполнения оно не сильно отличается от обычных прикладных программ. К достоинствам данного ядра можно отнести теоретически большую надежность в сравнении с другими архитектурами (в действительности же не всё так радужно и гладко) и его модульность (легкость в подключении дополнительных частей ядра). К минусам микроядерной архитектуры относится то, что ядро, построенное по такой схеме, получается очень медленным (ведь ему нужно постоянно переключаться между отдельными частями).
небольшие требования к используемой памяти;
аппаратное обеспечение сильнее абстрагировано от системы;
аппаратное обеспечение может медленнее реагировать, поскольку драйверы находятся в пользовательском пространстве;
процессы не могут получить доступ к другим процессам без ожидания.
Монолитное ядро
Монолитное ядро — это полная противоположность микроядра, т.к. в памяти компьютера всегда находится весь (или почти весь) код ядра, вследствие чего скорость его работы выше в сравнении с микроядром. Монолитные ядра, как правило, лучше справляются с операциями доступа к оборудованию и многозадачностью, потому что, если программе нужно получить информацию из памяти или другого запущенного процесса, у нее есть прямая линия для доступа к ней, и программе не нужно ждать в очереди, чтобы сделать что-то. Однако такой подход может вызвать серьезные проблемы, потому что, чем больше процессов выполняется на уровне ядра, тем больше вероятность, что в случае непредвиденного поведения они создадут общий сбой вашей системы.
практически прямой доступ программ к оборудованию;
процессам проще взаимодействовать друг с другом;
если ваше устройство поддерживается ядром, никаких дополнительных установок ПО не потребуется;
процессы реагируют быстрее, потому что не требуется ожидания в очереди за процессорным временем.
большой размер ядра;
больший размер занимаемой памяти;
проблемы с безопасностью, т.к. все части работают в пространстве ядра.
Гибридное ядро
Гибридное ядро — это ядро, сочетающее в себе элементы как монолитной, так и микроядерной архитектур. У таких ядер есть возможность выбирать, какие части будут работать в пользовательском пространстве (например, драйверы устройств и система ввода-вывода файловой системы), а какие — в пространстве ядра (вызовы межпроцессного (IPC) и серверного взаимодействий). Но этот подход имеет и некоторые проблемы, унаследованные от микроядерной архитектуры (особенно, по части быстродействия).
разработчик может выбрать, какие программы будут работать в пользовательском пространстве, а какие — в пространстве ядра;
меньший размер в сравнении с монолитным ядром;
гибче в отличие от других ядер.
может страдать от пониженной производительности (как и микроядро);
работа драйверов устройств, как правило, сильнее зависит от производителей оборудования.
Ядро Linux хоть и относится к монолитным ядрам, но оно также заимствует и некоторые идеи из микроядерной архитектуры, что означает, что вся операционная система работает в пространстве ядра, а драйверы устройств (в виде модулей) могут быть легко загружены (или выгружены) прямо во время работы операционной системы.
Где находится ядро Linux?
Каждый раз во время запуска (или перезапуска) системы первым компонентом, который загружается в память компьютера, является ядро Linux.
В системах Debian/Ubuntu файлы присутствующих в системе ядер расположены в каталоге /boot и именуются в виде vmlinuz-[версия_ядра] (выполнив в терминале команду uname-r , мы получим информацию о текущей версии установленного ядра):
В папке /boot вы также найдете и другие очень важные файлы:
img-[версия_ядра] — используется в качестве RAM-диска, в который распаковывается и с которого загружается ядро;
map-[версия_ядра] — используется для управления памятью до полной загрузки ядра;
config-[версия_ядра] — сообщает ядру, какие параметры и модули следует загрузить в образ ядра при его компиляции.
Примечание: Также для сжатия ядра часто применяются алгоритмы LZMA или bzip2, а сами ядра именуются zImage.
Модули ядра Linux
Модули обычно расширяют базовые возможности ядра, связанные с различной работой устройств, файловых систем и системных вызовов. Они, как правило, имеют расширение .ko и обычно хранятся в каталоге /lib/modules:
Версии ядра дистрибутивов Linux
Stable
Stable — это последняя доступная стабильная версия ядра Linux, предназначенная для широкого круга использования. По умолчанию, в большинстве дистрибутивов Linux применяется именно stable-версия ядра. Она регулярно обновляется, и к ней довольно часто выпускаются новые патчи.
Несмотря на то, что исправления безопасности внедряются в LTS-версию так же часто, как и в обычную, она, тем не менее, не дает 100% гарантии отсутствия каких-либо ошибок. Правда, шанс того, что с LTS-версией ядра Linux возникнут какие-то проблемы, немного меньше по сравнению с обычной версией ядра Linux, и поэтому многие предприятия отдают предпочтение именно LTS-релизам.
Примечание: По данным компании Canonical, примерно 95% всех установок Ubuntu являются LTS-релизами.
Hardened
Hardened — это усиленная различными обновлениями безопасности stable-версия ядра Linux. Она умеет блокировать потенциально опасные операции, обеспечивая тем самым эффективную защиту от эксплойтов, нацеленных на использование уязвимостей ядра. Данная версия ядра не так популярна, как другие, из-за того, что несколько медленнее их. Hardened-ядро убивает любой процесс, который покажется ему потенциально опасным. Кроме этого, он не отображает PID процессов, и, следовательно, вы не сможете напрямую обратиться к запущенному исполняемому файлу. Также некоторые программы и функции могут не работать с hardened-ядром.
Zen — версия ядра Linux, ориентированная на повышение производительности и отзывчивости системы. Также говорят, что это лучшее ядро Linux для игр. Zen имеет низкую задержку и высокочастотный планировщик.
Установка/Обновление ядра Linux
Соответственно, из этого можно сделать следующие выводы:
Если вам нужно ядро Linux с правками под какой-то конкретный дистрибутив (например, Debian или Manjaro), то вам нужно скачать ядро из репозитория конкретного дистрибутива с помощью менеджера пакетов.
Есть 2 способа установки/обновления ядра Linux:
Обновление ядра Linux через менеджер пакетов.
На этом уроке мы рассмотрим обновление ядра Linux через менеджер пакетов, а на следующем — самостоятельную установку и конфигурирование ядра Linux.
Обновление ядра Linux через менеджер пакетов
Обычно, вместе с обновлением системы происходит и обновление ядра. Но если вы по каким-либо причинам хотите произвести установку/обновление непосредственно только ядра Linux, то ниже мы рассмотрим данный процесс для нескольких дистрибутивов Linux.
Linux Mint (Debian/Ubuntu)
Для начала сверим текущую установленную версию ядра:
Далее выполним поиск доступных для установки ядер (сгенерированный список может быть очень длинным, поэтому, чтобы хоть как-то ограничить вывод и сделать его постраничным, применим фильтр | more ):
$ sudo apt-cache search linux-image | more
Мой выбор пал на ядро linux-image-4.15.0-1004-oem. Чтобы его установить, нужно выполнить команду:
$ sudo apt-get install linux-image-4.15.0-1004-oem
Останется только перезагрузить систему и убедиться, что новое ядро успешно установилось:
Manjaro (Arch Linux)
В Manjaro используется свой менеджер пакетов — pacman, поэтому его команды будут немного отличаться от команд в других дистрибутивах. Чтобы вывести список доступных для установки ядер, необходимо выполнить:
$ sudo pacman –S linux
В рамке обведен список ядер, которые мы можем установить. Я выбрал пункт №5 (linux510), нажав соответствующую кнопку на цифровой клавиатуре. После этого запустился процесс скачивания необходимых пакетов. Когда всё будет готово, перезагружаем систему и радуемся новому ядру:
Установка ядра Zen (Liquorix)
Liquorix — это отдельный проект ядра, собранный из исходников zen-ядра, но с использованием лучшей конфигурации для повышения производительности системы.
Debian
Скачиваем скрипт, который добавит в систему нужные репозитории:
После чего выполняем всего одну команду, устанавливающую пакеты с новым ядром:
$ sudo apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64
Ubuntu
Установка в Ubuntu происходит практически аналогичным образом. Сначала добавляем репозитории zen-ядра (liquorix):
sudo add-apt-repository ppa:damentz/liquorix && sudo apt-get update
После чего выполняем уже знакомую по прошлому разу команду:
sudo apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64
И теперь перезагружаем систему. Готово!
Manjaro
Далее установим необходимые утилиты:
$ sudo pacman –S base-devel
Заходим в каталог yay и производим сборку пакета:
$ cd yay
$ makepkg -si
После этого переходим непосредственно к установке zen-ядра:
$ yay -S linux-zen-git
Стоит отметить, что этот процесс может занять довольно большой отрезок времени. По его окончанию, перезагружаем систему и радуемся новому ядру.
Есть много причин, по которым хорошую перспективную технологию могут не принимать в официальную ветку Linux — Линус славится своими жесткими требованиями к новому коду. Но от этого факта менее интересными такие технологии не становятся. И иногда ради них стоит пересобрать ядро с наложением стороннего патча.
Какими бывают линуксы
linux-rt
Пожалуй, самый известный сторонний патч. Позволяет превратить обычный Linux в ОС реального времени. И хотя главное применение такой операционки – промышленные и встроенные системы, на обычном десктопе она тоже может быть интересна. Например, тем, кто часто занимается обработкой звука или видео или постоянно грузит систему какими-нибудь ресурсоемкими вычислениями. Встречаются также свидетельства о положительном эффекте от применения этого ядра на highload-серверах. Я же ничего, кроме слегка упавшей общей производительности системы, не заметил.
$ sudo apt-get install linux-rt
В других же дистрибутивах ядро с этим патчем можно легко собрать. Для этого надо наложить патч на ванильное ядро и при конфигурировании указать опцию Processor type and features –> Preemption Mode (Complete Preemption (Real-Time)). И еще рекомендуется отключить опцию Kernel hacking –> Check for stack overflows, так как она повышает латентность. Чтобы можно было собирать некоторую статистику по времени отклика, при конфигурировании нужно также включить: Kernel hacking –> Tracers –> Kernel Function Tracer, Interrupts-off Latency Tracer, Interrupts-off Latency Histogram, Preemption-off Latency Traver, Preemption-off Latency Histogram, Scheduling Latency Tracer, Scheduling Latency Histogram, Missed timer offsets histogram.
После сборки ядро должно содержать в имени PREEMPT и RT, например:
Чтобы потешить собственное самолюбие, можно включить сбор статистики:
Саму статистику смотрим тут:
$ grep -v " 0$" /sys/kernel/debug/tracing/latency_hist/wakeup/CPU0
Самое интересное там: значения минимального, среднего и максимального времени отклика.
Широко известный в узких кругах анестезиолог-линуксоид Кон Коливас с переменным успехом поддерживает собственную ветку (точнее, набор патчей) Linux. Главным нововведением в его патчсете является новый планировщик BFS (Brain Fuck Scheduler), являющийся альтернативой стандартному CFS и показывающий, по результатам тестов, улучшенную отзывчивость ядра на десктопе (другими словами, при использовании BFS жадные до графических ресурсов приложения получают ощутимый прирост производительности, а раздражающие паузы, возникающие, например, при переключении между ресурсоемкими программами, которые требуют доступ к диску, становятся менее заметными, либо исчезают совсем).
ReiserFS
Но поддержка ядром ФС – это еще не все. Чтобы можно было оперировать с разделами reiser4, надо поставить reiser4progs. Во многих дистрибутивах этот комплект утилит есть в репозитории:
$ sudo apt-get install reiser4progs
Соответственно, основные операции с ФС:
- mkfs.reiser4 – создать раздел с reiser4;
- fsck.reiser4 – проверить раздел с reiser4;
- measurefs.reiser4 – посмотреть параметры раздела с reiser4.
Grsecurity
Патч, содержащий потрясающее количество механизмов для повышения защищенности Linux-системы. Опции компиляции grsecurity расположены в Security options –> Grsecurity. Есть три уровня безопасности на выбор: низкий, средний и высокий. Низкий уровень рекомендован, когда более высокие уровни не подходят из-за использования нестандартного набора ПО. Он содержит:
В среднем уровне защиты дополнительно добавятся технологии:
- дополнительные ограничения для приложений, запускаемых в chroot: запрет монтирования и mknod (создание именованных каналов, специальных символьных и блочных файлов), запрет на двойной chroot, запрет на запись в sysctl и другое;
- ограничение прав на чтение /proc для пользователей, не входящих в заранее заданную группу (по умолчанию wheel);
- ограничение записи в /dev/kmem, /dev/mem и /dev/port;
- рандомизация адресного пространства;
- серьезное логирование подозрительных событий (неудавшихся вызовов fork(), попыток изменения системного времени, сигналов вроде SIGSEGV и подобных);
Высокий уровень еще больше затягивает узлы, так как дополнительно:
- ограничивает права на чтение /proc – теперь пользователи смогут читать из /proc информацию только о своих процессах. Можно также указать GID специальной группы, которая сможет читать любую информацию из /proc.
- накладывает ограничения на работу процессов в chroot-окружении: отключение возможности устанавливать suid-бит, отключение возможности посылать некоторые сигналы внешним процессам, ограничение на выполнение таких системных задач, как изменение системного времени или перезагрузка компа;
- добавляет дополнительное логирование (в том числе всех mount/umount);
- включает рандомизацию стека ядра;
- добавляет ограничение на чтение информации о ядре через системные вызовы для обычных пользователей (для root эта возможность остается).
Необязательно в качестве Security Level выбирать один из имеющихся уровней. Есть вариант Custom, позволяющий отдельно выбрать все необходимые опции. Еще одна интересная опция Grsecurity –> Sysctl support позволит включать/отключать параметры безопасности через sysctl без необходимости пересобирать ядро. Так как эта директива отрицательно влияет на общую безопасность системы, ее рекомендуется использовать лишь в тестовых целях.
Помимо уровней безопасности, при конфигурации можно включить/отключить RBAC (Role Based Access Control) – управление доступом на основе ролей. Управление пользователями и их ролями осуществляется с помощью специальной утилиты gradm2, присутствующей в большинстве дистрибутивов:
$ sudo apt-get install gradm2
Zen-kernel
Zen-kernel – наверное, самая большая пачка заплаток ядра в одном месте. Позиционируется как быстрое ядро для десктопов. Получить zen-kernel можно тремя способами:
- скачать архив с последним релизом (за номером 2.6.34-zen1);
- забрать версию с уже наложенными патчами из git'а;
- скачать патч для нужной версии и наложить самому.
У них есть два репозитория: zen-stable.git (с патчами, наложенными на стабильное ядро) и zen.git (синхронизация с git-хранилищем Линуса и наложение тестовых патчей).
Набор сторонних патчей меняется от релиза к релизу и на данный момент включает в себя:
- патчи от Кона Коливаса (в том числе BFS);
- Reiser4;
- Linux-PHC – проект, позволяющий снижать напряжение CPU для уменьшения энергопотребления и температуры;
- обновленные и добавленные дрова (для Lenovo ThinkPad SL, Gamecube/Wii, Macbook, WiFi-чипов и другого);
- Tuxonice – патч, реализующий продвинутый hibernate («спящий режим» – при выключении содержимое ОЗУ скидывается на винт, при включении – восстанавливается);
- поддержка FatELF – формата бинарников, содержащего в одном файле варианты для нескольких архитектур (аналог Universal Binary в Mac OS X);
- DazukoFS – виртуальная ФС, предоставляющая on access доступ к файлам. Широко используется различными антивирусами.
Универсальная сборка
Итак, ядро и патчи выбраны, можно приступать к сборке. Опишу сборку своего ядра на примере Ubuntu, хотя в других дистрибутивах последовательность действий будет аналогичной. Если нужно просто пересобрать имеющееся ядро (изменив опции конфигурации), то проще скачать исходники ядра с помощью стандартного менеджера пакетов твоего дистрибутива и собирать уже их:
$ sudo apt-get install linux-source
Но мне zen-kernel нравится больше, чем стандартное generic-ядро ubuntu, поэтому его и буду мучить. Поставим все, что может пригодиться для сборки:
$ sudo apt-get install build-essential libncurses5-dev \
libgtk2.0-dev libglade2-dev libqt3-mt-dev git-core
Добавим своего юзера в группу src, чтобы можно было без проблем собирать в /usr/src:
$ sudo usermod -a -G src adept
Клонируем git-репозиторий (приготовься скачать около 500 метров):
Смотрим, какие ветки есть в репозитории:
Выбираем последнюю патченную версию:
$ git checkout v2.6.34-zen1
Сорцы не обязательно вытягивать из git. Если ты ограничен по трафику или скорости инета, то быстрее и дешевле будет скачать патч и официальное ядро. Заплатка накладывается следующим образом:
$ cd /usr/src/linux-2.6.34
$ zcat ../patch-2.6.35.bz2 | patch -p1
Утилита patch также имеет замечательную опцию '--dry-run', позволяющую протестировать, как наложится патч, прежде чем его накладывать.
Далее выбираем способ конфигурирования ядра:
- make config – для тех, у кого уйма свободного времени. Система задаст несколько тысяч вопросов (по одному на каждую опцию конфигурации);
- make allnoconfig/allyesconfig – генерируется конфиг, в котором на все вопросы отвечено no/yes;
- make defconfig – конфиг с настройками по умолчанию;
- make randconfig – самый веселый способ – использует великий рандом для ответа на вопросы;
- make oldconfig – при использовании старого конфига. Задаст вопросы только про те пункты, которых не было в старом конфиге;
- make menuconfig – псевдографический, использующий ncurses, интерфейс;
- make nconfig – одно из нововведений ядра 2.6.35. Тоже псевдографический, использующий ncurses, интерфейс, но выглядит несколько более свежо, чем menuconfig;
- make xconfig – графический интерфейс на базе QT;
- make gconfig – графический интерфейс на базе GTK.
Мне больше привычен интерфейс menuconfig.
Какие-то конкретные советы по конфигурированию ядра давать сложно – все очень сильно зависит от имеющегося окружения и желаемых результатов. Но я всегда придерживаюсь нескольких простых правил:
- Все, что мне точно понадобится (в том числе поддержка ФС, на которой у меня /) и будет нужно часто, я включаю в ядро. Все, что может пригодиться или будет нужно редко – компилирую модулем. Все, что точно не пригодится, соответственно, выкидываем.
- Опции с пометкой EXPERIMENTAL лучше не включать без крайней на то необходимости. Также не рекомендуется включать Device Drivers –> Staging Drivers. Ядро может просто не собраться или работать не стабильно.
- Чтобы не путаться в ядрах, добавляю суффикс версии ядра в General Setup –> Local Version.
Также неплохой отправной точкой может стать конфиг дистрибутивного ядра.
После того, как конфиг готов (и сохранен в файл .config), можно приступать к сборке:
С помощью опции «-j» можно указать количество потоков, что немного ускорит компиляцию на многоядерном процессоре. В зависимости от мощности компа и опций конфигурации, ядро может собираться по часу и даже больше. После компиляции начинается установка:
$ sudo make modules_install
$ sudo make install
На самом деле модули просто скопируются в /lib/modules/, а ядро с конфигом – в /boot.
Создаем initrd для нашего нового ядра:
$ sudo update-initramfs -k v2.6.34-zen1 -c
Обновляем конфигурацию grub, чтобы он нашел новое ядро:
Все, можно идти в ребут, скрестив пальцы и затаив дыхание, загрузиться с новым ядром.
Компиляция. Debian-way
Выше я описал способ, которым можно собрать ядро в любом дистрибутиве. Но практически во всех дистрах есть свой путь, дающий те или иные плюшки, самая большая из которых — получение на выходе пакета с ядром, который можно легко поставить или удалить штатным пакетным менеджером.
В Debian/Ubuntu за сборку ядра отвечает make-kpkg. Для того, чтобы воспользоваться make-kpkg, установим один пакет:
$ sudo apt-get install kernel-package
Генерация конфига происходит точно так же, как и в способе выше, а сборка несколько иначе:
$ fakeroot make-kpkg --initrd --revision=mykernel \
kernel_image kernel_headers modules_image
Эта команда сначала соберет ядро, а потом создаст два пакета: linux-image-version-revision.deb (бинарник и модули ядра) и linux-headers-version-revision.deb (заголовочные файлы ядра), которые будут лежать в /usr/src.
Ставим то, что получилось, и идем на перезагрузку:
$ sudo dpkg -i /usr/src/*.deb
$ sudo reboot
make complete
К сожалению, журнал не резиновый, и рассказать получилось далеко не про все заслуживающие внимания патчи. За бортом остались OpenVZ и Xen, Openwall, а также целый класс патчсетов – дистрибутивные (ведь очень небольшое количество дистрибутивов использует ванильное ядро).
Скажи «нет!» ребуту
И все обновления установлены! Правда, «uname -a» все еще показывает старую версию. Зато
расскажет всю правду об установленных апдейтах.
В дополнение система еще имеет веб-интерфейс, где можно посмотреть статус всех своих подключенных серверов, умеет присылать на email уведомления о выходе новых патчей. И такое rebootless счастье стоит, в принципе, не так уж и дорого – $3,95 в месяц за один физический сервер (если серверов больше 20, то $2,95). Есть триальный доступ на 30 дней. А поддержка десктопной убунты вообще бесплатна.
В общем, сказка, если б не одно «но» – все это работает только со стандартным ядром твоего дистра – никаких тебе патчей и обновлений версий ядра.
Турбо-компиляция
Далеко не всегда получается с первого раза собрать идеально работающее ядро – обязательно забудешь включить какой-нибудь модуль или наложить какой-нибудь патч. А новая сборка, особенно на маломощном компе, может быть раздражающе долгой. В таком случае на помощь придет ccache, умеющий кэшировать результаты компиляции. В результате повторная пересборка проходит значительно быстрее. Для использования ccache при сборке ядра набирай
Весь кэш будет храниться в каталоге
/.ccache, а статистику по его использованию можно посмотреть с помощью команды
Мир Linux обширен и иногда требуется приложить немало усилий для его изучения. Но время идёт и платформа становится всё популярней среди обычных пользователей, которые не хотят тратить время на изучение скучных мануалов и проведения ненужных тестов. Сегодня речь пойдёт о Kernel (Ядрах) Linux, мы протестируем основные кастомные ядра Linux и сведём их в битве за звание лучшего игрового фундамента нашей системы.
Битва вошедшая в легенду
Введение
Существует большое количество пользовательских ядер, которые мало чем отличаются от стандартного, но как говорится «Дьявол кроется в деталях». Даже небольшое изменение переменных и использование альтернативных модулей, позволяет добиться сногсшибательных результатов и полностью переориентировать ядро на выполнение ранее недоступных задач. В основном ядра делятся на:
- Бинарное ядро — обычное ядро, что вы стягиваете с архива вашего дистрибутива, может обновляться автоматически и не требует сборки, ибо изначально собрано для множество машин.
Типичные представители таких ядер: Linux, Linux-zen. - Нативное ядро — обычно представляет собой кастомное ядро, что собирается из исходников под вашу систему с заданными флагами. Не может быть обновлено без пересборки. Максимальная производительность.
Типичные представители таких ядер: Linux-lqx, Linux-xanmod, Linux-rt.
Тестирование производилось в
Все тесты производятся по три раза во избежание погрешности.
Симуляция обыденной работы
Geekbench 5
Из теста симуляции ежедневных задач отчётливо видно, что Linux-zen не зря считается лучшим для повседневной работы. Все остальные бинарные ядра показали почти не от отличимый результат, разве что можно отметить LQX, в улучшенной работе с многопоточностью.
Работа с OpenGL
Superposition Benchmark
На удивление, несмотря на упор теста в гпу при средних настройках, мы опять наблюдаем преимущество zen ядра. А также можно отметить, что из-за особенностей теста в обсчёте физики, Linux-rt набирает дополнительные балы, ибо особенность RT ядра это выполнение сверхточного обсчёта без задержек.
Goverlay — призван показать чистую выжимку производительности из железа с шагом 5 секунд .
Ядра | Шаг 1 (FPS) | Шаг 2 (FPS) | Шаг 3 (FPS) | Шаг 4 (FPS) | Шаг 5 (FPS) | Шаг 6 (FPS) |
Standart | 5967.176 | 6001.959 | 6062.946 | 6017.443 | 6012.398 | 5887.241 |
Zen | 6045.472 | 6084.305 | 6026.536 | 6091.624 | 6025.048 | 6079.093 |
LQX | 6118.435 | 6126.331 | 6126.735 | 6104.262 | 6125.439 | 6130.997 |
RT | 5632.043 | 5658.149 | 5651.133 | 5661.931 | 5652.855 | 5660.478 |
Ещё один тест лишь подтверждает уверенное лидирование LQX и Zen ядра.
Deus Ex: Mankind Divided
Бинарные | Минимальный FPS | Средний FPS | Максимальный FPS |
Standart | 32 | 42 | 57 |
Zen | 33 | 44 | 59 |
LQX | 36 | 47 | 64 |
RT | 30 | 41 | 56.6 |
Если перейти на графики (тыкнуть название ядра), то отчётливо видно, что наибольший результат за игровым ядром LQX, ибо он обеспечивает максимальную производительность. Следом идёт Zen, что обеспечивает плавность без проседаний. Все остальные ядра показали плачевный результат.
Counter-Strike: Global Offensive
Тестирование на минимальных настройках графики, без упора в гпу, показывает преимущество LQX и Zen ядра.
Выводы
Несмотря на заявление отечественных «Гуру» Linux, замена ядра может существенно повысить вашу производительность и добавить из воздуха до 10-20% чистой производительности, что может стать спасением для геймеров, которые совсем недавно перешли с Windows и ещё не разобрались, как можно выжимать максимум.
Читайте также: