Skip to content

Linux

Linux — это ядро операционной системы, на базе которого создано множество дистрибутивов.

Из чего состоит Linux

Операционная система Linux — это в первую очередь ядро ОС. Оно управляет памятью, устройствами, процессором, сетью и т. д. Фактически, для работы операционной системы достаточно ядра и единственной программы init. Обычно она стартует демоны (сервисные процессы), занимается конфигурацией системы и запускает интерфейс, с помощью которого пользователь может взаимодействовать с операционной системой.

В современных дистрибутивах в качестве системы инициализации используется systemd. Это системный менеджер, который предоставляет набор инструментов и сервисов для управления процессами, запуска и остановки служб, управления журналами, управления сетью и других системных задач. Он обеспечивает более эффективное управление ресурсами, улучшенную отказоустойчивость и возможность динамического изменения конфигурации системы без перезагрузки по сравнению со старой системой инициализации SysV init.

Ядро

Программная прослойка, через которую происходит обрашение к "железным" ресурсам компьютера: процессор, память, диски, сеть. По сути, это первая программа которая загружается в оперативную память и "живет" в ней пока сервер работает и выполняет свои функции. Это своего рода - первый слой виртуализации аппаратного обеспечения. Любое другое ПО, которое будет в дальнейшем запушено получит доступ к ресурсам ПК через Ядро.

Таким образом, ядро ОС занимается распределением вычислительных ресурсов между нуждающимися программами. Оно организует как бы параллельную работу множества программ, играет роль менеджера.

В коде ядра особо выделяют драйверы устройств. Драйвер – это программный код, функция которого заключается в предоставлении возможности использовать определенное железо. Причем конкретный драйвер не всегда загружается в память вместе с остальной частью ядра.

Выделяют операционные системы на монолитном ядре и микроядре. Монолитное ядро проще и быстрее работает, так как в памяти всегда находится почти весь код. Микроядро меньше, сложнее, работает медленнее, однако нередко считается более передовым из-за легкости подключения новых частей кода и устойчивости к сбоям оборудования. Микроядро, находясь в памяти, организует взаимодействие между другими частями кода операционной системы, которые являются самостоятельными программами

Unix имеет простое монолитное ядро, в котором почти все представляется в виде файлов. Настройки хранятся в текстовых файлах, оборудование также имеет файловый интерфейс. У Linux монолитное ядро. Однако некоторые идеи микроядерной архитектуры тут также используются. Так драйверы устройств могут быть представлены в виде модулей и загружаться по требованию, а не при загрузке всего ядра.

Командный интерпретатор

Командный интерпретатор — программа, которая обеспечивает текстовый интерфейс для взаимодействия с операционной системой. Он принимает команды от пользователя, интерпретирует их и выполняет соответствующие операции. В Linux самым распространенным командным интерпретатором является bash (Bourne Again SHell). Кроме bash, в Linux существуют и другие командные интерпретаторы, такие как zsh, csh, ksh, sh и другие, каждый из которых имеет свои особенности и возможности.

Пакетный менеджер

Пакетный менеджер в Linux — это инструмент, который упрощает установку, обновление, удаление и скачивание программных пакетов в операционной системе. Он предоставляет пользователю централизованный способ легко устанавливать и обновлять пакеты из официальных и других репозиториев (хранилищ).

Пакетный менеджер обычно содержит базу данных со списком доступных пакетов, и пользователь может использовать его для поиска, установки, обновления и удаления программ. Он также может автоматически управлять зависимостями, то есть устанавливать или обновлять другие пакеты, необходимые для работы выбранного пакета.

В Linux существует несколько популярных пакетных менеджеров, таких как apt (Advanced Package Tool) в Debian и Ubuntu, yum (Yellowdog Updater, Modified) в Fedora и CentOS, pacman в Arch Linux и другие. Каждый из них имеет свои особенности, но общая идея остается прежней — предоставить удобный способ управления программным обеспечением в Linux.

Загрузчик

Загрузчик (bootloader) в Linux — это программное обеспечение, которое управляет инициализацией операционной системы при запуске компьютера. Он загружает ядро операционной системы и другие необходимые компоненты, а затем передает управление операционной системе.

Наиболее популярным загрузчиком является GRUB. Он широко используется в большинстве лучших дистрибутивов Linux. Этот загрузчик предоставляет гибкую конфигурацию, поддержку различных файловых систем и возможность выбора операционной системы при загрузке.

Каталоги Linux

Структура каталогов файловой системы Linux проста и логична. На верхнем уровне находится корневой каталог, обозначаемый слешем /. Каждый последующий вложенный каталог отделяется от родительского также слэшем. Путь заканчивается либо каталогом, либо файлом. /tmp/my/primer.txt

Файловая структура (перечень системных директорий) Linux стандартизирована. Стандартом является FHS, Filesystem Hierarchy Standard – стандарт иерархии файловой системы.

  • В /home находятся каталоги пользователей. У каждого зарегистрированного пользователя будет свой отдельный каталог: /home/user1, /home/user2
  • Директории /media и /mnt, сюда монтируются дополнительные диски, файловые системы и съемные устройства.
  • Каталог /boot содержит файл ядра Linux, загрузчик операционной системы и ряд конфигурационных файлов.
  • В каталоге /etc содержатся конфигурационные файлы системных программ.
  • Директоия /dev хранит файлы, представляющие различные устройства. Причем здесь находятся файлы как реальных и виртуальных устройств, так и не существующих, но которые могли бы быть.
  • В папке /bin содержатся различные бинарники (исполняемый файлы) системных утилит-программы, многие из которых выполняются через командную оболочку Bash. Некоторые запускаются при старте системы. Программы в /bin доступны всем пользователям.
  • В /sbin находятся системные программы, предназначенные для настройки и администрирования операционной системы. Эти программы может запускать только администратор системы.
  • Директория /lib содержит библиотеки, совместно используемые программами из /bin и /sbin. Также здесь находятся драйверы устройств (модули, подключаемые к ядру Linux).
  • Структура /usr во многом повторяет структуру корневого каталога. Сюда устанавливаются пользовательские (user) программы дистрибутива. Так в /usr/bin содержится большинство программ, в /usr/include – заголовочные файлы, в /usr/lib – библиотеки для программ, размещенных в /usr
  • Директория /opt предназначена для программ, которые устанавливает сам пользователь, то есть для приложений, не входящих в состав конкретного дистрибутива.
  • В /tmp хранятся временные файлы, которые могут появляться в процессе выполнения разных программ. При выключении компьютера файлы отсюда обычно автоматически удаляются.
  • Каталог /var содержит файлы с изменяемыми данными. Здесь сохраняются конфигурационные параметры ряда программ, также временные файлы, кэши, логи и др.
  • Каталоги /sys, /proc, /run можно назвать системными.

Типы файлов Linux

Основная концепция Линукса звучит следующим образом: "В Linux ВСЁ является файлом". Однако, не стоит принимать это утверждение буквально, все немного сложнее, поскольку файлы бывают разные и делятся они на несколько разных типов:

  • Обычные файлы (regular file) -: Содержат данные — текст, код, изображения, медиафайлы и так далее.
  • Каталоги (directory) d: Представляют собой папки, которые содержат ссылки на другие файлы и каталоги, организуя файловую систему. Данными каталога являются: список имен других файлов и каталогов. Редактирование (создание, удаление, изменение файлов и пр.) файла-директории осуществляется через ядро ОС.

    В файле каталога осуществляется связь между именами файлов (словесного обозначения для людей) и их индексными дескрипторами (истинным именем-числом, которым оперирует ОС).

    В Unix-подобных системах один и тот же файл может существовать под разными именами и/или в разных каталогах: все имена будут связаны с одним и тем же индексным дескриптором (механизм жестких ссылок)

  • Символьные ссылки (symbolic link) l: Подобны ярлыкам, указывают на другой файл или каталог. Символьная ссылка – это файл, в данных которого содержится адрес другого файла по его имени (а не индексному дескриптору).

    Символьные ссылки не содержат атрибутов файлов, на которые они указывают. У них есть собственные атрибуты (свое время создания, размер, права доступа).

    ln -s
    # Создание символических ссылок
    ln -s target linkname
    # Аргумент linkname является именем символической ссылки, 
    # аргумент target задает путь к файлу или каталогу, к которому ведет ссылка,
    # а флаг -s определяет символическую ссылку
    
  • Файлы устройств (device file): Представляют собой аппаратные устройства. Бывают двух видов:

    • Символьные устройства (character device) c: Для устройств, обрабатывающих данные последовательно (по-символьно), как, например, терминалы.
    • Блочные устройства (block device) b: Для устройств, обрабатывающих данные блоками, например, жёсткие диски.
  • Именованные каналы (named pipe) p: Позволяют одному процессу обмениваться данными с другим через файл, выступая в роли канала для передачи информации.
  • Сокеты (socket) s: Используются для обмена данными между процессами, в том числе между разными компьютерами в сети.

В линуксе есть специальная утилита, которая помогает определить содержимое файлов - file. Для этого она анализирует начало содержимого файла и находит в нем специальные "сигналы", характерные для определенного типа – бинарного файла, текстового, изображения и др.

file
file primer.txt
# покажет тип файла