Для случайных пользователей и менее хардкорных поклонников Linux - это операционная система. Однако для пуристов название «Linux» зарезервировано для ядра, которое управляет операционной системой. Если вам интересно, что такое ядро Linux, давайте ответим на этот вопрос с учетом нового пользователя.
Режимы
Прежде чем мы объясним, что такое ядро, важно понимать термины «пользовательский режим» и «режим ядра». Пользовательский режим - это когда исполняемый код не имеет возможности напрямую обращаться к аппаратной или справочной памяти. Для доступа к аппаратным средствам и памяти код, запущенный в пользовательском режиме, должен делегировать инструкции системным интерфейсам прикладного программирования (API). Режим ядра - это когда исполняемый код имеет неограниченный доступ ко всему оборудованию и зарезервирован для наиболее надежных функций операционной системы.
Что такое ядро?
Каждая операционная система имеет ядро. В ОС Windows, MacOS, iOS, Android, Chrome OS и Linux есть низкоуровневая система, которая отвечает за взаимодействие всех приложений с физическим оборудованием компьютера. Без ядра ни одно из ваших приложений не сможет использовать физический компьютер; такие приложения, как Firefox, Chrome, LibreOffice, MS Office или Outlook, не будут работать. Ядро также отвечает за то, чтобы позволить процессам обмениваться информацией с использованием так называемой Inter-Process Communication (IPC).
Существуют (вообще говоря) три типа ядер:
- Монолитные ядра: эти ядра включают в себя процессор, память, IPC, драйверы устройств, управление файловой системой и вызовы системного сервера. Он также отвечает за передачу бесплатной системной памяти приложениям. Эти типы ядер обычно лучше подходят для аппаратного обеспечения и многозадачности.
- Микроядра: Микроядра берут минималистский подход и управляют только процессором, памятью и IPC.
- Гибридные ядра: Гибридные ядра имеют возможность решать, что они хотят запускать в режиме пользователя или ядра. Хотя это обеспечивает лучшее из обоих миров, для создания драйверов, которые служат для взаимодействия между исполняемым кодом и оборудованием, требуется гораздо больше от производителей оборудования.
Linux использует ядро с открытым исходным кодом, монолитное ядро, тогда как macOS и Windows используют гибридные ядра. Ядро Linux было задумано в 1991 году Линусом Торвальдсом. По сей день, г-н Торвальдс продолжает быть ведущим разработчиком ядра Linux, а разработчики со всего мира вносят свой вклад в ядро Linux. На самом деле, по оценкам, около 10 000 разработчиков из более чем 1000 компаний внесли свой вклад в ядро Linux (поскольку отслеживание началось в 2005 году).
Где Ядро?
Если вы откроете окно терминала и выполните команду ls / boot, вы увидите файл с именем vmlinuz-версия (Где VERSION - это название или номер выпуска). Файл vmlinuz является фактическим загрузочным ядром Linux, а «z» означает, что ядро сжато; поэтому вместо vmlinux мы имеем vmlinuz.

Внутри этого каталога / boot находятся другие важные файлы ядра, такие как initrd.img-VERSION, system.map-VERSION и config-VERSION (где VERSION - это имя или номер выпуска). Эти другие файлы служат для следующих целей:
- Initrd: используется как небольшой RAMdisk, который извлекает и исполняет фактический файл ядра.
- system.map: используется для управления памятью, до загрузки ядра.
- конфиг: инструктирует ядро о том, какие параметры и модули загружать.
Модули
Без модулей ядро было бы не очень полезно. Модули эффективно включают драйверы, необходимые для связи с оборудованием, не потребляя всю вашу системную память. Модули также добавляют функциональность в ядро, такие как связь с периферийными устройствами, управление файловыми системами, безопасность и т. Д. В ядро можно перечислять, добавлять и удалять модули со следующими командами:
- lsmod будут перечислены все загруженные модули ядра.
- insmod загрузит модуль ядра в запущенное ядро.
- rmmod выгрузит модуль из работающего ядра.
Таким образом, вы видите, с помощью некоторых простых команд ядро Linux может быть довольно гибким.
Текущее ядро
На момент написания статьи стабильное ядро Linux было 4.18.5, но не все дистрибутивы Linux будут включать в себя новейшее ядро. Фактически, обновленная версия рабочего стола Elementary OS запускает ядро 4.15.0-30. Что означает это число? В случае последнего ядра на элементарной ОС это означает:
- 4 является основной версией
- 15 - Малая версия
- 0-30 - это пересмотр
Также возможно загрузить различные версии ядра Linux из kernel.org и скомпилировать его самостоятельно. Компиляция ядра Linux - задача, которую лучше всего оставить тем, кто действительно знает, что они делают. Неправильно скомпилированное ядро может сделать систему не загружаемой. Итак, если вы не готовы погрузиться в сложную задачу компиляции кода на этом уровне, используйте ядро по умолчанию, которое отправляет и обновляет ваш выбор.




