Основы Linux и операционных систем
Что такое ОС, как устроен Linux, зачем нужны дистрибутивы — объясняем с нуля.
- Что делает ОС и зачем она вообще нужна
- Чем настольная, серверная и мобильная ОС отличаются друг от друга
- Кто, когда и зачем создал Linux
- Как устроено ядро Linux и что такое модули
- Что такое дистрибутив и какой выбрать новичку
🖥️ Что такое операционная система?
Компьютер — это железо: процессор, память, диск. Программы хотят этим железом управлять, но не знают как. Операционная система — посредник между программами и железом.
Программа не обращается к диску напрямую — она говорит ОС: «Сохрани этот файл», а ОС уже разбирается с железом сама. Это называется системный вызов (syscall).
ОС выполняет две главных задачи ядра:
Предоставляет программам доступ к устройствам через удобный API
Решает, какая программа использует процессор, память и устройства
📊 Типы операционных систем
ОС создаются под разные задачи — поэтому смартфон, ноутбук и серверный шкаф работают на разных системах.
Настольные
Для личных компьютеров. Удобный интерфейс, широкий выбор программ.
Мобильные
Для смартфонов и планшетов. Оптимизированы под сенсорный экран и батарею.
Серверные
Часто без графики вообще. Главное — стабильность и производительность под нагрузкой.
Встраиваемые
Для умных устройств: часы, роутеры, холодильники. Работают на минимуме ресурсов.
🐧 Что такое Linux?
Linux (GNU/Linux) — это семейство Unix-подобных операционных систем на базе ядра Linux. В отличие от Windows и macOS, Linux — это свободное программное обеспечение: его исходный код открыт, изучай и изменяй как хочешь.
Linux — не одна программа, а ядро. Поверх ядра собираются дистрибутивы: ядро + утилиты GNU + пакетный менеджер + (опционально) графический интерфейс.
Любой может посмотреть, как работает система, и улучшить её
Большинство дистрибутивов можно скачать и использовать без ограничений
Работает от смартфона до суперкомпьютера и умной лампочки
Открытость кода означает: уязвимости быстрее находят и закрывают
📜 История Linux
В 1991 году финский студент Линус Торвальдс написал ядро ОС для своего ПК с процессором Intel 80386. За основу взял учебную ОС MINIX. Ядро он выложил в открытый доступ.
Параллельно с 1983 года программист Ричард Столлман развивал проект GNU — набор свободных утилит для Unix-систем. Когда ядро Торвальдса соединили с утилитами GNU, получили полноценную ОС — отсюда полное название GNU/Linux.
🧩 Архитектура: как устроена ОС
ОС делится на две части:
Главная программа. Запускается при старте компьютера, работает всегда. Управляет памятью, процессами, устройствами.
Всё остальное: командная оболочка, файловые менеджеры, браузеры. Запускаются ядром.
Типы ядер
| Тип | Как устроено | Плюс | Минус | Примеры |
|---|---|---|---|---|
| Монолитное | Всё в одном: файловая система, драйверы, сеть — в одном пространстве памяти | Быстро | Ошибка в одном модуле может уронить всю систему | Linux, FreeBSD, Cisco IOS |
| Микроядро | Ядро минимально. Остальное — отдельные сервисы | Изоляция: сбой одного сервиса не роняет систему | Медленнее из-за взаимодействия между сервисами | Minix, GNU Mach, QNX |
| Гибридное | Компромисс: часть функций в ядре, часть снаружи | Баланс скорости и безопасности | Сложнее в разработке | Windows NT, macOS (XNU) |
| Встраиваемое | Специально для устройств с малым объёмом памяти | Работает на слабом железе | Очень ограниченный функционал | FreeRTOS, Zephyr |
🔧 Модули ядра Linux
Модули — это отдельные кусочки кода ядра, которые можно загрузить или выгрузить без перезагрузки системы. Например, драйвер новой видеокарты — это модуль.
Конфигурация модулей хранится в:
/sys/module— информация о загруженных модулях/etc/modprobe.d— правила загрузки модулей/etc/modules-load.d— список модулей, загружаемых при старте системы
Команды для работы с модулями
⚡ Многозадачность
Многозадачность — способность ОС запускать несколько программ одновременно (или создавать иллюзию одновременности). Существует два вида:
Программа сама решает, когда «уступить» процессор другим. Если программа зависла — зависает вся система.
Устаревший подходОС сама прерывает программу по таймеру и переключает процессор на следующую задачу. Одна зависшая программа не роняет систему.
Linux использует этот подход🌿 Дистрибутивы Linux
Дистрибутив — это готовая ОС на базе ядра Linux. Он включает:
- 🐧 Ядро Linux
- 📁 Файловую систему
- 💬 Командную оболочку (bash, zsh и др.)
- 🔧 Служебные утилиты
- 📦 Пакетный менеджер — для установки программ
Дистрибутивы делятся на семейства по пакетному менеджеру и философии.
Самые популярные для новичков. Огромное сообщество, море документации на русском.
sudo apt install nginx
— пример установки программы
Корпоративный стандарт. Упор на стабильность и безопасность. Популярен в бизнесе.
sudo dnf install nginx
— пример установки программы
Для опытных пользователей. Максимальный контроль — ставишь только то, что выбрал сам.
sudo pacman -S nginx
— пример установки программы
| Семейство | Пакетный менеджер | Формат пакетов | Для кого |
|---|---|---|---|
| Debian / Ubuntu | apt, dpkg |
.deb | Новички, серверы, разработка |
| Red Hat / CentOS | yum, dnf, rpm |
.rpm | Корпорации, enterprise-серверы |
| Arch / Manjaro | pacman |
.pkg.tar.zst | Опытные пользователи |
🏋️ Практические упражнения
Задания проверяются в реальной Linux-системе (VM, VPS, WSL). Прежде чем смотреть решение — попробуй сам.
Базовая настройка системы
Задача:
- Установить Linux (Ubuntu Desktop/Server, WSL или VM)
- Настроить сеть, проверить подключение к интернету
- Обновить систему
- Сгенерировать SSH-ключ и подключиться по SSH
- Изменить hostname системы
- Изменить часовой пояс (timezone)
- Установить баннер при логине (MOTD)
Результат: скриншоты подключения по SSH с видимым MOTD.
Показать решение по шагам
Проверить и настроить сеть
Обновить систему
Сгенерировать SSH-ключ
Изменить hostname
Изменить часовой пояс
Настроить MOTD (баннер при входе)
Изучение характеристик системы
Задача: Определить и записать с помощью команд:
- Версию ядра Linux
- Количество доступной и используемой памяти (RAM)
- Список предустановленных пакетов
- Тип загрузчика и его конфигурацию (GRUB/EFI)
- Лог последних загрузок системы
Показать решение по шагам
Версия ядра
Память и процессор
Загрузчик и модули ядра
Логи загрузки
Работа с процессами
Задача: Используя утилиту script залогировать:
- Вывод всех процессов в системе
- Вывод всех процессов текущего пользователя
- Запуск процесса
topв фоновом режиме (background) - Остановку фонового процесса
top
Результат: файл ps-log.txt со всем выводом.
Показать решение по шагам
Начинаем запись в лог
Установка пакетов и сервисов
Часть A — Java:
- Установить Java (JDK) из пакетного репозитория
apt - Установить вторую версию Java из скачанного архива (tar.gz)
- Настроить
update-alternativesдля переключения между версиями - Залогировать в
java-log.txt
Часть B — Nginx:
- Установить Nginx
- Создать собственный systemd unit-файл для Nginx
- Добавить в автозапуск
- Залогировать в
nginx-log.txt
Показать решение по шагам
Установка Java из репозитория
Установка Java из архива (OpenJDK 21)
Переключение между версиями
Установка Nginx и создание unit-файла
🔗 Полезные ссылки
4 задания: от базовой настройки системы до установки Java и Nginx с кастомным systemd unit-файлом