Несмотря на скромную долю на десктопах (около 3–4% по данным StatCounter на 2026 год), Linux фактически управляет остальной инфраструктурой мира:
Вывод: десктопный Linux — нишевая история, серверный и инфраструктурный Linux — то, с чем ежедневно работают разработчики (деплой, окружение разработки, CI/CD) и особенно инженеры DevOps (вся продакшн-инфраструктура).
Кому в первую очередь нужен Linux:
Совместимость Linux со стандартом POSIX означает, что базовые принципы работы (файлы, процессы, права доступа, командная строка) унифицированы с другими UNIX-подобными системами — то, что вы изучите здесь, переносится на macOS, BSD и подобные ОС.
Одна из ключевых идей UNIX-подобных систем: максимально возможное число сущностей представлено как файлы с единым интерфейсом чтения/записи.
/dev./proc./sys.Практическое следствие: одни и те же команды (cat, read, write, перенаправление >/<) работают с совершенно разными сущностями. Это отличается от подхода Windows, где для устройств, реестра и процессов используются разные API.
Ядро (kernel) — центральная часть ОС, которая:
Ядро Linux создано Линусом Торвальдсом в 1991 году и с тех пор развивается силами глобального открытого сообщества.
Только ядра недостаточно для работы — нужна экосистема системного и прикладного ПО: утилиты, компиляторы, командный интерпретатор и т. д. Большая часть базовых утилит в мире Linux происходит из проекта GNU (Free Software Foundation, GNU Coreutils, Bash, GCC и др.) — отсюда более точное название системы, «GNU/Linux».
Дистрибутив = ядро Linux + системное ПО + прикладное ПО + пакетный менеджер
Для практики важно ориентироваться не в десятках дистрибутивов, а в двух главных семействах, к которым принадлежит подавляющее большинство серверных систем.
.deb..rpm.pacman, максимальная гибкость и новизна ПО, но требует больше экспертизы.Для серверного/промышленного применения почти всегда выбирают дистрибутивы с фиксированными релизами — предсказуемость важнее новизны.
На практике редко ставят Linux “с нуля на голое железо” — есть несколько типовых сценариев, и в рамках курса вы столкнётесь с несколькими из них:
| Способ | Когда используется | Особенности |
|---|---|---|
| Bare-metal | Выделенные серверы, рабочие станции | Максимальная производительность, полный доступ к железу, но негибко (нельзя быстро “пересобрать” систему) |
| Виртуальная машина (VM) | Локальная разработка, тестовые стенды, часть облачных серверов | Изоляция от хост-ОС, снапшоты, легко воссоздать окружение; есть накладные расходы виртуализации |
| WSL (Windows Subsystem for Linux) | Разработка на Windows-машине | Позволяет запускать Linux-инструменты без полноценной VM; удобно для dev-окружения, не подходит как замена серверу |
| Облачный сервер (VPS/Cloud VM) | Продакшн-инфраструктура, учебные лабораторные стенды | Аренда вычислительных мощностей (AWS EC2, Google Cloud, Yandex Cloud и др.), доступ обычно только по SSH |
В рамках практических работ мы будем подключаться к учебным серверам по SSH — то есть работать с системой, у которой нет графического интерфейса, только командная строка. Это сознательный выбор: именно так выглядит 95% реальной работы с Linux-серверами.
Shell (командная оболочка) — программа, которая читает команды пользователя и передаёт их ядру ОС. Самая распространённая оболочка — Bash (Bourne Again Shell), используется по умолчанию в большинстве дистрибутивов. Есть и альтернативы (zsh, fish), но синтаксис Bash — стандарт, который стоит знать в первую очередь.
Tab. Двойное нажатие Tab Tab покажет все варианты.↑/↓ листают ранее введённые команды; команда history покажет весь список.Ctrl+R и начните вводить часть команды — shell найдёт последнюю подходящую.Ctrl+A/Ctrl+E — в начало/конец строки, Ctrl+U — очистить строку, Ctrl+C — прервать выполнение, Ctrl+D — конец ввода/выход.&& — команда1; команда2 выполнит обе последовательно; команда1 && команда2 выполнит вторую только если первая завершилась успешно.Эти навыки будут отрабатываться на первой же практической работе — без них дальнейшая работа с сервером превращается в мучение.
Прежде чем гуглить — почти всегда можно найти ответ прямо в системе:
man <команда> — полное руководство (man page). Разделено на секции (1 — команды пользователя, 5 — форматы файлов, 8 — команды администрирования и т. д.). Навигация: пробел/b — вперёд/назад, /слово — поиск, q — выход.<команда> --help — краткая справка по флагам, обычно быстрее, чем man.tldr <команда> — сообщество-ориентированная альтернатива man: только практические примеры без академического многословия. Нужно установить отдельно.apropos <ключевое слово> — поиск команд по описанию, если не помните точное название.whatis <команда> — одна строка с кратким описанием команды.Совет как для разработчиков, так и для DevOps: умение быстро найти нужный флаг в man/--help — куда более ценный навык, чем попытка запомнить все опции наизусть.
Пакетный менеджер — инструмент, который устанавливает, обновляет и удаляет ПО, разрешая зависимости автоматически. На уровне концепции (детали — в практике 5):
| Семейство | Пакетный менеджер | Формат пакетов |
|---|---|---|
| Debian/Ubuntu | apt (обёртка над dpkg) |
.deb |
| RHEL/Fedora/Alma | dnf (ранее yum) |
.rpm |
| Arch/Manjaro | pacman |
.pkg.tar.zst |
Общая идея одинакова для всех: есть локальный индекс доступных пакетов (обновляется из репозиториев), команда установки разрешает зависимости и скачивает всё необходимое. Разные дистрибутивы — разный синтаксис команд, но одна и та же логика.
Полезные команды, чтобы понять, с какой именно системой вы работаете (пригодится с первой же практики по SSH):
uname -a # версия ядра и архитектура
cat /etc/os-release # имя и версия дистрибутива (современный стандарт)
cat /etc/*-release # альтернативный способ на старых системах
lsb_release -a # описание дистрибутива (если установлен пакет lsb-release)
Курс построен так, чтобы каждая тема сразу закреплялась практикой. Условно темы можно разделить по тому, кому они особенно пригодятся:
Важно для всех (разработчикам и DevOps в равной мере):
Особенно важно для будущих DevOps-инженеров:
Особенно важно для будущих разработчиков:
Для тех, кто увлечётся администрированием — курс сознательно оставляет ряд тем на уровне введения (сетевая безопасность, ACL, механизмы виртуализации на уровне ядра). Это не пробел, а точка входа в углубленный курс по администрированию Linux, где эти темы разбираются глубоко.
Linux интересен не только как набор команд, которые нужно выучить для практических работ. За ним стоит история нескольких десятилетий развития операционных систем, необычная модель создания программного обеспечения и огромное разнообразие способов применения.
Linux не является прямым продолжением исходной UNIX-системы.
ОС UNIX, была разработана в Bell Labs (исследовательское подразделение AT&T) в конце 1960-х — начале 1970-х годов Кеном Томпсоном, Деннисом Ритчи и их коллегами. Уже в раннем UNIX появились идеи, которые сегодня легко узнать в Linux:
Особенно важно что ядро UNIX было написано на языке C. Это резко упростило перенос операционной системы на разные архитектуры и оказало огромное влияние на дальнейшее развитие системного программирования.
В дальнейшем возникло несколько крупных ветвей Unix-подобных систем:
Linux, созданный Линусом Торвальдсом в 1991 году, был новым Unix-подобным ядром и не содержал исходного кода UNIX. Поэтому корректнее говорить, что Linux вдохновлён архитектурой и традициями UNIX, а не является его версией.
Знания о процессах, файловой системе, приемах работы в оболочке (shell), правах доступа и системных вызовах полезны далеко за пределами конкретного дистрибутива Linux.
UNIX является коммерческим программным продуктом и распространяется с проприетарной лицензией. В 1983 году Ричард Столлман объявил о начале проекта GNU. Название GNU — рекурсивная аббревиатура от GNU’s Not Unix. Цель проекта заключалась в создании свободной Unix-совместимой операционной системы. В 1985 году Столлман основал Free Software Foundation (FSF) для поддержки движения за свободное программное обеспечение.
Здесь важно не смешивать три разных понятия:
К началу 1990-х годов в GNU уже существовали многие важные компоненты пользовательской среды, включая компилятор GCC, оболочку bash и большое количество системных утилит. Не хватало главного компонента — полноценного ядра. В 1991 году Линус Торвальдс начал разработку Linux; в результате объединения ядра Linux с большим количеством компонентов GNU появилась система, которую технически правильнее называть GNU/Linux.
Linux в широком, обиходном смысле означает семейство операционных систем.
Linux в узком, строгом смысле это название ядра ОС.
GNU/Hurd — это дистрибутив ОС с микроядерным ядром Hurd. Ядро Hurd продолжает разрабатываться энтузиастами GNU и является экспериментальным.
Open Source Software (Открытое ПО): Программное обеспечение, исходный код которого открыт и доступен для просмотра, изменения и легального распространения любыми пользователями. Главные цели — совместное развитие, прозрачность и улучшение качества софта силами мирового сообщества.
Лицензии типа «Copyleft»: «Если используете мой код, то ваш код тоже должен быть открытым».
Крупные компании (Google, Apple, Microsoft) не хотят использовать лицензии GPL. Они не могут использовать копилефтный код в своих коммерческих продуктах, так как это заставит их открыть коммерческие секреты. Permissive-лицензии (MIT, Apache) позволяют им спокойно брать код, дорабатывать его и продавать внутри закрытого ПО.
Разрешительные лицензии (Permissive):
Copyleft защищает свободу самого кода (гарантирует, что код навсегда останется открытым).
Permissive защищает свободу пользователя (дает право делать с кодом абсолютно всё что угодно, включая закрытие и коммерциализацию).
Распространённый стереотип представляет Linux как проект, который исключительно добровольцы пишут вечерами. Современная картина значительно сложнее.
В разработку ядра Linux десятилетиями вкладываются компании, которым оно необходимо для их продуктов и инфраструктуры. Среди крупных участников в разные периоды были и остаются Intel, IBM, Red Hat, Google, Samsung, AMD, SUSE, Microsoft, Oracle, NVIDIA и другие. Компании оплачивают работу разработчиков, создают драйверы и подсистемы, исправляют ошибки, улучшают производительность и поддерживают архитектуры, которые важны для их бизнеса.
Это не противоречит идее открытого исходного кода. Компания может конкурировать с другой компанией на рынке и одновременно совместно с ней улучшать Linux, потому что общая работа над ядром выгодна обеим сторонам.
Именно здесь появляется одна из важных идей современной разработки ПО:
Open source не означает «никому не принадлежит и никто не зарабатывает». Это модель совместной разработки, в которой компании, разработчики и сообщества могут иметь разные интересы, но работать с общей кодовой базой.
Исследования Linux Foundation (некоммерческая организация которая координирует развитие и финансирование Linux) показывают, что в разработке ядра Linux участвуют разработчики, работающие в сотнях компаний, а значительная часть работы выполняется профессиональными разработчиками, которым за эту деятельность платит работодатель.
Мы будем работать преимущественно с распространёнными серверными дистрибутивами, но слово «Linux» скрывает огромное разнообразие систем.
Несколько необычных примеров:
musl libc, BusyBox и пакетный менеджер apk; особенно интересен для контейнеров и небольших систем.Полезно воспринимать эти системы не как «лучшие» или «хуже» Ubuntu/Debian/RHEL, а как разные ответы на разные инженерные задачи.