Linux
| Тип | ядро операционной системы (монолитное, с загружаемыми модулями) |
|---|---|
| Автор | Линус Торвальдс |
| Первый выпуск | 0.01 — сентябрь 1991 |
| Языки | C, ассемблер; Rust (с версии 6.1, 2022) |
| Лицензия | GNU GPL v2 |
| Цикл выпусков | новая версия примерно раз в 9–10 недель |
| Семейство | Unix-подобные |
| Сайт | kernel.org |
Linux (произносится «линукс») — свободное ядро операционной системы, а также общее название операционных систем, построенных на этом ядре. Ядро управляет процессором, памятью, устройствами и файловыми системами, а поверх него работают системные утилиты, командная оболочка (Bash), службы и приложения. Готовый набор из ядра и программ называют дистрибутивом: Debian, Ubuntu, Fedora, Arch Linux, Alpine и сотни других.
Linux — основная операционная система серверов, облаков и контейнеров: на нём работают почти все веб-сайты, Docker и Kubernetes. Ядро Linux лежит в основе Android, большинства роутеров, телевизоров и встраиваемых устройств, а с ноября 2017 года на нём работают все 500 самых мощных суперкомпьютеров мира.[6]
История
25 августа 1991 года финский студент Линус Торвальдс написал в конференцию comp.os.minix, что делает «бесплатную операционную систему (просто хобби, ничего большого и профессионального, как GNU)» для компьютеров на процессоре 386.[1] Версия 0.01 вышла в сентябре того же года. С версии 0.12 (1992) ядро распространяется под лицензией GNU GPL v2 (см. лицензии ПО), которая требует открывать исходный код производных работ.
Ядро удачно совпало с проектом GNU Ричарда Столлмана, начатым в 1983 году: у GNU уже были компилятор, оболочка и утилиты, но не было готового ядра. Поэтому Фонд свободного ПО настаивает на названии GNU/Linux для полной системы.[5] В 1993 году появились первые долгоживущие дистрибутивы — Slackware и Debian, в 1994–1995 годах — Red Hat, в 2004 году — Ubuntu.
Устройство
Linux — монолитное ядро: планировщик процессов, управление памятью, драйверы, сетевой стек и файловые системы работают в одном адресном пространстве с полными привилегиями. При этом большая часть драйверов собирается как загружаемые модули, которые подключаются на ходу (modprobe).
Программы общаются с ядром через системные вызовы — open, read, write, fork, execve и около трёхсот других. Ядро следует философии Unix: «всё есть файл» — устройства, процессы (/proc) и параметры ядра (/sys) представлены как файлы (см. Файловая система Unix (FHS)). Механизмы изоляции — namespaces и cgroups — позволяют запускать процессы в отдельных окружениях; на них построены контейнеры (см. Namespaces и cgroups).
Загрузка системы идёт так: загрузчик (GRUB, systemd-boot) запускает ядро, ядро монтирует корневую файловую систему и запускает первый процесс (PID 1) — сегодня это почти всегда systemd, который поднимает остальные службы.
Разработка
Ядро — один из крупнейших проектов с открытым кодом: десятки миллионов строк и тысячи разработчиков из сотен компаний за каждый выпуск. Новая версия выходит примерно раз в 9–10 недель: две недели «окна слияния» новых возможностей, затем еженедельные кандидаты (rc) с исправлениями.[3] Изменения проходят через списки рассылки и иерархию сопровождающих подсистем, а окончательное слово остаётся за Торвальдсом. Для управления кодом ядра Торвальдс в 2005 году создал Git.
Часть версий объявляется долгосрочными (LTS) и получает исправления несколько лет — их используют дистрибутивы и производители устройств. Свежие версии публикуются на kernel.org.[2] С версии 6.1 (декабрь 2022) в ядре можно писать код на Rust — прежде всего драйверы, где безопасность памяти особенно важна.[4]
Работа в Linux
Основной интерфейс администратора — командная строка. Самые частые задачи:
uname -r # версия ядра
cat /etc/os-release # какой дистрибутив
ps aux | grep nginx # процессы
df -h; free -h # диск и память
sudo systemctl status ssh # состояние службы
journalctl -u ssh -n 50 # последние логи службы
ls -l /etc/passwd # права доступа к файлу
Ключевые понятия, с которыми сталкивается каждый: права доступа и пользователь root, процессы и сигналы, пакетные менеджеры, переменные окружения, конвейеры и утилиты вроде grep и curl. На удалённые серверы заходят по SSH.
Linux на рабочем столе
На настольных компьютерах доля Linux невелика, но растёт: популярны графические окружения GNOME и KDE Plasma, а игровая приставка Steam Deck работает на SteamOS — дистрибутиве на базе Arch Linux. Разработчики на Windows используют Linux через подсистему WSL 2, где работает настоящее ядро Linux, а на macOS — через виртуальные машины и Docker.