- Как работает ядро Linux?
- Ядро Linux.
- Что такое ядро и для чего оно
- Версии
- Какую версию Linux выбрать
- Является ли ядро операционной системой?
- Разнообразие ядер Linux: какое и для чего можно выбрать
- Ядро, но не операционная система
- Ядра бывают разные
- Официальные или бинарные ядра
- Кастомные или нативные ядра
- Получается, что официальные ядра урезаны в плане производительности?
Как работает ядро Linux?
Обычно, когда мы говорим о Linux, мы сразу вспоминаем про такие дистрибутивы, как Ubuntu, Debian, Mint и т. д. Однако эти дистрибутивы не являются операционными системами как таковыми, а скорее являются “адаптациями” операционной системы с открытым исходным кодом: Linux. И следовательно, несмотря на особенности каждого из них, все они имеют одну и ту же базу, которую мы знаем как ядро Linux .
Ядро Linux.
По этой причине обычно не говорят ” я собираюсь установить Linux ”, имея в виду конкретную операционную систему, а скорее то, что мы устанавливаем, — это версии или дистрибутивы этого ядра, созданные компаниями или сообществом, которые используют одну и ту же базу: ядро Minix (которая, в свою очередь, клонировала концепции Unix). Благодаря своим свойствам Linux является настоящей операционной системой, хотя никто не использует ее как таковую, а скорее использует дистрибутивы, поскольку с ними она становится намного полезнее и проще в использовании.
Что такое ядро и для чего оно
Ядро Linux является ядром операционной системы . Это самая важная часть программного обеспечения в любой операционной системе. У Windows есть свое собственное ядро, у MacOS есть свое (основанное на Unix, кстати), а Linux — это ядро , используемое всеми дистрибутивами. И его основная функция — отвечать за управление компьютерным оборудованием.
В частности, это ядро отвечает за управление системной памятью и временем обработки , управление всеми процессами , управление системными вызовами и соединениями между процессами и позволяет всему программному обеспечению иметь доступ к оборудованию , особенно к подключенным периферийным устройствам.
Ядро настолько важно при управлении оборудованием, что из его более чем 28 миллионов строк кода большая часть — это драйверы.
В обычных условиях пользователи никогда не взаимодействуют с ним . В то время как пользователи имеют ограниченный доступ к оборудованию, ядро имеет полный доступ и контроль над ним. Оно отвечает за то, чтобы все работало хорошо, чтобы это было сделано безопасно и чтобы не было ошибок. Если процесс завершается сбоем в пользовательском пространстве, Linux продолжает функционировать . Однако, если в пространстве ядра возникает ошибка, вся система перестает работать. Это то, что мы знаем как ” Kernel panic “, эквивалент синего экрана в Linux.
Версии
Это правда, что текущие версии ядра не имеют ничего общего с первыми версиями 1991 года. Тем не менее, ядро Linux находится в постоянном развитии. И каждые несколько недель мы обычно видим новые релизы. Но не все они одинаково важны.
Версии ядра Linux могут иметь 4 числа, указывающие версию: abcd
- a указывает версию. Это число меняется меньше всего, поскольку переход обычно выполняется только при очень больших изменениях в системе. За всю свою историю оно менялось всего 6 раз: в 2004 году для версии 1.0, в 2006 году для версии 2.0, в 2011 году для версии 3.0, в 2015 году для версии 4.0 и в 2019 году, чтобы привести к появлению текущей версии 5.0 и 2022 для удобства сменили версию на 6.0.
- b указывает на subversion. Когда выпускаются новые версии, но это действительно незначительные обновления (новые драйверы, оптимизации, исправления и т. д.), Тогда вместо изменения версии изменяется номер subversion.
- c указывает уровень ревизии. Это число часто меняется, например, при внесении незначительных изменений, таких как исправления безопасности, исправления ошибок и т. д.
- d — последний подуровень версии. Оно почти не используется, но оно зарезервировано, так что, если выпущена версия с очень серьезной ошибкой, новая версия будет выпущена с этим подуровнем, включая исключительно исправление указанной серьезной ошибки.
Все версии ядра Linux являются общедоступными и имеют открытый исходный код. Мы можем найти их по этой ссылке . Но они не не скомпилированные, их должны компилировать сами пользователи, чтобы иметь возможность использовать их в своем дистрибутиве. И это не совсем простая задача. К счастью, сообщества, ответственные за разработку различных дистрибутивов, обычно предоставляют нам скомпилированные и оптимизированные версии ядра, которые мы можем установить в свой дистрибутив.
Какую версию Linux выбрать
Когда мы говорим о программном обеспечении, мы всегда рекомендуем иметь последнюю версию всего. С ядром Linux то же самое, всегда рекомендуется иметь последнюю версию. Однако устанавливать ее необходимо осторожно.
Одна из причин, по которой ядро такое большое, заключается в том, что оно ничего не удаляет. Как бы старо оно ни было. Благодаря этому можно продолжать использовать последние версии Linux на первых компьютерах, где оно было впервые запущен в 1991 году. Каждое обновление обычно заключается в добавлении драйверов и изменении функций для оптимизации общей работы ПК.
Но может случиться так, что версия содержит ошибку, из-за которой наш компьютер не работает должным образом, или производительность падает. В этом случае простая переустановка предыдущей версии должна привести операционную систему в нормальное состояние. Хотя мы потеряем поддержку более новых аппаратных компонентов.
Лучшим и самым простым для большинства пользователей является обновление ядра по мере обновления дистрибутива из его репозиториев. Таким образом, мы избежим этих проблем, “всегда будучи в курсе последних событий”.
Является ли ядро операционной системой?
Ядро является одной из наиболее важных частей операционной системы. Но это не единственное, необходимое для того, чтобы иметь возможность называть Linux сегодня операционной системой как таковой. Как мы уже объясняли, в этом ядре есть все драйверы и все необходимое для управления программным обеспечением и предоставления пользователю доступа к нему. Но, чтобы быть действительно полезным, оно должно иметь другие компоненты поверх него, прежде чем попасть к пользователю.
- Подсистема инициализации. Будь то Init.d, Systemd или любое другое подобное программное обеспечение, необходимо иметь подсистему над ядром, которая отвечает за запуск всех процессов (демонов), необходимых для начала работы ядра. Без него у нас будет только много строк кода, которые не будут выполняться.
- Процессы . Демоны, или более известные как процессы, — это все компоненты, которые остаются загруженными в системную память (управляются ядром) и которые позволяют Linux функционировать. Графический сервер, например, является демоном, который будет управлять рабочим столом.
- Графический сервер . Известный как X, он отвечает за возможность видеть графику на экране. Если мы собираемся использовать Linux в текстовом режиме, из терминала, в этом нет необходимости. Но если мы собираемся использовать его с настольным компьютером, необходимо иметь работающий x-сервер.
- Графическая оболочка. Как следует из названия, графическая оболочка, это то програмное обеспечение в котором у нас будут все наши программы и где будут открываться окна. Существует множество графических оболочек для Linux, таких как GNOME, KDE или LXDE. У каждой есть свои особенности, преимущества и недостатки.
- Программы. Все, что мы запускаем с рабочего стола. Это уже самый высокий уровень и точка, через которую мы взаимодействуем с компьютером.
Разнообразие ядер Linux: какое и для чего можно выбрать
Мы уже знаем про разнообразие в мире Linux: существует большое количество дистрибутивов, большое количество сред рабочего стола и тайлинговых оконных менеджеров, можно даже найти достаточное количество версий какой-либо программы с открытым исходным кодом (так называемые форки). Но что если я скажу, что многообразие начинается с ядра Linux?
Ядро, но не операционная система
Для новичков среди подписчиков и читателей канала повторю мысль, изложенную в одной из самых первых заметок — Linux не является названием какой-либо конкретной операционной системы. В первую очередь это название ядра, а лишь потом семейство дистрибутивов, на этом ядре основанных. Чтобы разобраться лучше (ну или по крайней мере, иметь отправную точку для того, что начать путь к лучшему пониманию) прочитайте статью, про которую говорил ранее.
Ядра бывают разные
Тот факт, что ядро Linux обладает открытым исходным кодом позволяет участвовать в его разработке большому количеству людей, имеющих различные задачи и сценарии по использованию дистрибутива. Вполне логично, что рано или поздно сообществу оказалось мало той версии ядра, которую предложил Торвальдс. В результате, на данный момент, мы имеем две большие группы ядер Linux: официальные (бинарные) и кастомные (неофициальные или нативные). Главным отличием является то, как вы можете получить ядро из каждой группы — бинарные ядра не требуют сборки и доступны в дистрибутивах, так сказать, «из коробки», их обновление происходит автоматически. Нативные ядра собираются из исходного кода и чтобы обновить их, необходима повторная сборка.
Официальные или бинарные ядра
Это ядра, которые поддерживаются сообществом и которые им же разрабатываются (под пристальным контролем ядро-отца Линуса). Существует четыре вида официальных ядер:
- Stable — так называемое «ванильное» ядро, поставляемое со стандартными модулями и некоторыми патчами
- Hardened — ядро, ориентированное на безопасность и включающее в себя набор патчей, защищающих от уязвимостей (эксплоитов) как само ядро, так и дистрибутивы, на нем основанные
- Longterm — ядро с долгосрочной поддержкой или LTS-ядро, которое гарантированно будет поддерживаться на протяжении определенного периода времени (например, текущее LTS-ядро версии 5.15 имеет поддержку до конца 2023 года) и призвано дарить пользователям стабильность и отсутствие ошибок при каком-либо обновлении.
- Zen Kernel — ядро для систем общего пользования или говоря проще, для десктопа, куда интегрированы дополнительные возможности, не включенные в состав основного ядра (например, поддержка нового оборудования и ускоряющие работу изменения)
Кастомные или нативные ядра
Это ядра, которые изменены авторами для решения конкретных задач, «заточенное» под определенный сценарий использования. Кастомных ядер тоже немало, перечислю самые популярные из существующих:
- Linux LQX — также называется Liquorix, является, по сути, тем же Zen-ядром, но ориентировано на использование в Debian-подобных системах
- Linux Xanmod — включает в себя улучшение производительности для рабочих станций (иначе говоря офисных ПК), игровых компьютеров, медиацентров и других систем, а также набор патчей для ускорения работы даже на 32-битных дистрибутивах.
- Linux TKG — ядро, которое можно использовать для сборки дистрибутива с повышенной производительностью в играх, по сути он объединяет все вышеперечисленные кастомные ядра и дополняет их набором множества патчей и дополнительных инструкций, но при этом отличается нестабильностью в работе.
- Linux Cachyos — альтернатива предыдущим ядрам, также нацеленная на максимальную производительность, но имеющая большую стабильность в плане работы, кроме того в ядро встроено множество планировщиков, которые ускоряют обработку задач.
Получается, что официальные ядра урезаны в плане производительности?
Наличие кастомных ядер не говорит о том, что нельзя используя, например, LTS-ядро установить Steam и получать максимум удовольствия от игр или монтировать видео в 4К. Например, пользователи таких дистрибутивов, как Ubuntu или Linux Mint имеют на борту «из коробки» LTS-ядро, но при этом в плане производительности их устройства никоим образом не «ущемлены».
Ядро Linux любой версии можно рассматривать в качестве швейцарского ножа — при необходимости вы открываете нужный инструмент и решаете возникшую задачу. Например, устройствам, работающим в финансовой сфере не нужно быстродействие для запуска производительных игр или программ, также для них важна стабильность работы и устойчивость перед угрозами. Потому для них разумнее выбрать официальное ядро Hardened или кастомное ядро, в котором разработчики соединили защищенность Hardened и стабильность работы LTS ядер.
Что касается меня, то уже длительное время подсел на использование ядра Zen. Оно доступно для выбора при установке Archlinux при помощи скрипта, про которую рассказывал ранее на канале.