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: Подобны ярлыкам, указывают на другой файл или каталог. Символьная ссылка – это файл, в данных которого содержится адрес другого файла по его имени (а не индексному дескриптору).Символьные ссылки не содержат атрибутов файлов, на которые они указывают. У них есть собственные атрибуты (свое время создания, размер, права доступа).
-
Файлы устройств (device file): Представляют собой аппаратные устройства. Бывают двух видов:
- Символьные устройства (character device)
c: Для устройств, обрабатывающих данные последовательно (по-символьно), как, например, терминалы. - Блочные устройства (block device)
b: Для устройств, обрабатывающих данные блоками, например, жёсткие диски.
- Символьные устройства (character device)
- Именованные каналы (named pipe)
p: Позволяют одному процессу обмениваться данными с другим через файл, выступая в роли канала для передачи информации. - Сокеты (socket)
s: Используются для обмена данными между процессами, в том числе между разными компьютерами в сети.
В линуксе есть специальная утилита, которая помогает определить содержимое файлов - file. Для этого она анализирует начало содержимого файла и находит в нем специальные "сигналы", характерные для определенного типа – бинарного файла, текстового, изображения и др.