Linux

Материал из llmdocs — справочник разработчика
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.

См. также

Источники

  1. Linus Torvalds — анонс в comp.os.minix (25 августа 1991)
  2. The Linux Kernel Archives
  3. Linux kernel documentation — How the development process works
  4. Linux kernel documentation — Rust
  5. GNU — Linux and the GNU System
  6. TOP500 — List Statistics (Operating System Family)