Структура файловой системы.
В последнее же время набирет ход процесс разработки стандартов для Линукс. В рамках организации LinuxStandardBase, ставящей своей целью наладить взаимодействие между разными дистрибутивами и разработать общие стандарты на те или иные компоненты системы (а точнее, даже чуть раньше возникновения этой организации), был разработан стандарт на структуру каталогов файловой системы (FilesystemHierarchyStandard - FHS). Следование требованиям стандарта существенно упрощает жизнь создателям программных приложений, потому что обеспечивает нахождение необходимых для приложения компонент программного обеспечения (в частности, библиотек) в известных и строго определенных местах. Поэтому структура каталогов приняла примерно одинаковый вид во всех основных дистрибутивах. Дистрибутив SuSE, например, когда-то упрекали за неполное соответствие стандарту FHS, но в версии 9.2 он уже полностью соответствует версии 2.3 этого стандарта. Даже если фактическая структура каталогов отличается от стандартной, добиться соответствия можно путем использования символических ссылок. Так что выделить по признаку различия структуры файловой системы какие-то четко очерченные группы дистрибутивов не представляется возможным.
Используемая графическая оболочка
Внешний вид экранов компьютеров, на котором запущены различные оконные менеджеры и графические оболочки может различаться очень существенно. Тем не менее, вряд ли стоит используемый менеджер дисплея или графическую среду (KDEvsGNOME) брать за основу какой-то классификации дистрибутивов. Чаще всего дистрибутив изначально предусматривает возможность выбора между несколькими графическими оболочками. А, кроме того, такие оболочки есть не что иное как один из пакетов программного обеспечения и пользователь всегда имеет возможность скачать и установить такой пакет, даже если он первоначально и не входил в выбранный дистрибутив.
Родословная дистрибутива
Большая часть современных дистрибутивов ведет свою родословную либо от RedHat, либо от Debian. Но происхождение дистрибутива, то есть выяснение того, от какого из ранее существовавших дистрибутивов он отпочковался, представляет, на мой взгляд, чисто исторический интерес. Любой новый дистибутив со временем отдаляется от своего прародителя и может мигрировать как в сторону другого дистрибутива, так и стать основателем какой-то совершенно новой ветви в "дистрибутивостроении". Такие дистрибутивы, например, как Mandrake, Conectiva или PLD, произошли, как известно, от RedHat, но сейчас уже представляют собой вполне самостоятельные разработки. Более того, существуют уже другие дистрибутивы, являющиеся производными от названных. Так что, хотя происхождение и может в какой-то степени характеризовать дистрибутив для опытных пользователей, все же служить критерием классификации оно не может. Если вас интересует какие дистрибутивы от каких произошли, то на DistroWatch имеется страничка, на которой эти данные приведены.
Процедура определения аппаратуры
Судя по отзывам в разных источниках, средства определения аппаратного обеспечения компьютера в разных дистрибутивах различаются довольно существенно. Широко известно, что дистрибутив Knoppix отличается в этом смысле в лучшую сторону. Однако, я полагаю, что преимущество это временное. В силу открытости всего программного обеспечения Линукс достижения и наработки одного из разработчиков быстро становятся достоянием всех, а поэтому идеи, найденные Клаусом Кноппером, вскорости будут реализованы и в других дистрибутивах. Именно этот свободный обмен идеями и позволяет быстро развиваться свободному софту вообще.
Инструменты управления системой
Набор тех программных средств, которые служат для конфигурирования, настройки и оптимизации системы, в каждом дистрибутиве разный. И мнения о том, какие средства для этого лучше всего, сильно разнятся. Одни авторы считают, что кроме редактирования конфигурационных скриптов "ручками", никакие средства и не нужны, другие полагают, что для пользователя необходимы конфигураторы, работающие в графическом режиме. Причем набор графических инструментов для настройки системы практически в каждом дистрибутиве разный (очень красивый инструмент YaST я почему-то не встречал ни в одном другом дистрибутиве). Более того, насколько я помню, даже в последовательных версиях RedHat этот набор сильно менялся от версии к версии. Если бы существовало небольшое количество стандартных инструментов настройки, из которого создатели дистрибутивов выбирали бы себе наиболее подходящий по их мнению вариант, можно было бы строить критерий классификации по этому признаку. А поскольку многообразие этих средств сравнимо с количеством дистрибутивов, то разумного критерия классификации на этом признаке построить невозможно.
Носитель, с которого запускается система
Среди тех сотен дистрибутивов, которые существуют в настоящее время, имеются как дистрибутивы, устанавливающиеся на жесткий диск и запускающиеся с него, так и дистрибутивы, которые не требуют установки на жесткий диск. В качестве носителя системы может выступать CD-ROM, USBpendrive, дискета или несколько дискет и даже виртуальный диск, созданный в оперативной памяти компьютера. Однако классифицировать дистрибутивы по этому признаку вряд ли целесообразно. В конце концов, мы пытаемся построить классификацию для того, чтобы облегчить выбор дистрибутива для того или иного применения. И не важно, откуда мы систему запустим, важно то, какую задачу система будет выполнять. Ведь ни один дистрибутив не создается с целью просто запустить систему. Даже дистрибутивы на дискетах создаются для запуска системы в качестве маршрутизатора, файервола, для использования компьютера, на котором такая система, в качестве удаленного терминала или станции для выхода в Интернет.
Требования к аппаратуре
Что касается требований к аппаратному обеспечению компьютера, на котором будет запускаться система, то этот признак, на мой взгляд, сливается с признаком назначения дистрибутива. Просто среди сфер применения дистрибутива нужно завести отдельную категорию - дистрибутивы для "слабых" компьютеров. В эту категорию частично войдут и те дистрибутивы, которые запускаются с дискет, если у них нет другого предназначения.
Итак, из первоначально приведеного списка признаков для рассмотрения остаются только организация процедуры начальной загрузки системы, используемая система управления пакетами и сфера применения (ориентация или назначение) дистрибутива. Эти три признака классификации дистрибутивов надо рассмотреть подробнее
Средства управления пакетами ПО
Как было сказано в приведенном выше определении, дистрибутивы состоят из отдельных пакетов, каждый из которых содержит какое-то приложение, утилиту или сервис. Отдельный пакет может содержать, например, веб-браузер, библиотеку для работы с графическими файлами в формате PNG, набор шрифтов и так далее.
Программное обеспечение, содержащееся в пакете, поставляется в одном из двух основных видов:
в виде бинарных файлов, которые предназначены для непосредственой установки в вашу систему, без какой-либо дополнительной обработки (например, компиляции).
в виде исходных текстов, которые обычно содержат текст на каком-то языке программирования, заархивированный в формате tar и упакованный программой gzip, а также вспомогательные файлы, необходимые для компиляции приложения из файлов пакета.
Существуют также пакеты, которые можно при желании отнести как к первому, так и ко второму виду. Это пакеты, которые содержат скрипты и конфигурационные файлы, страницы руководств в формате man/info, информацию о копирайтах и другую документацию. С одной стороны, они представляют собой такие же "исходные тексты", с другой - устанавливаются в систему без всякой дополнительной обработки, как и исполняемые файлы. Но этот тип пакетов играет вспомогательную роль и для нас какого-либо интереса не представляет. А вот количество и состав пакетов первых двух типов играет в классификации дистрибутивов самую существенную роль.
Вспомним, во-первых, что все программное обеспечение в Linux является открытым, то есть поставляется вместе с исходными кодами. И поэтому для каждого бинарного пакета на дистрибутивных дисках найдется соответствующий ему пакет с исходными кодами. А вот обратное утверждение уже не имеет места, так как существуют дистрибутивы, в которых число бинарных пакетов сильно ограничено. Это так называемые "Source-based" дистрибутивы, то есть дистрибутивы, основанные на исходных кодах. Их создатели предполагают, что пользователь такого дистрибутива может самостоятельно скомпилировать и установить в систему любое нужное ему приложение. Но ведь для того, чтобы запустить процесс компиляции, система в какой-то минимальной конфигурации уже должна работать. Должны быть установлены загрузчик, ядро, архиваторы tar и gzip (чтобы развернуть пакет с исходниками), компилятор со всем сопутствующим инструментарием (линкером, ассемблером и т.д.), библиотеки функций языка Си, утилиты для работы с файлами и текстами (find, grep, awk, sed), без которых сборка и установка программ просто невозможна. Эта проблема решается двумя способами: либо компиляция проходит на какой-то другой системе, либо необходимый минимум прекомпилированных пакетов устанавливается из дистрибутива, а остальные компилируются уже в полученной таким образом среде. Самый яркий пример реализации подхода, основанного на компиляции всей системы из исходных кодов - проект LinuxFromScratch, который не является дистрибутивом в прямом смысле этого слова, а представляет собой набор инструкций по созданию системы из набора пакетов с исходными кодами.
Что же касается пакетов с прекомпилированным программным обеспечением, то для установки как в поцессе инсталляции, так и в уже установленой системе требуются специальные средства управления пакетами. Дело в том, что установка программного обеспечения из пакетов обычно связана с разрешением так называемых "зависимостей". Например, пакет, содержащий компилятор GNUC (gcc) "зависит" от пакета binutils, который включает в себя компоновщик и транслятор. Если пользователь попытается установить gcc без предварительной установки binutils, процесс установки пакета с GCC скорее всего завершится сообщением об ошибке. Поэтому в состав пакета обычно включается не только бинарный код исполняемой программы, но еще и некая служебная или мета-информация: название программы, данные о разработчике, информация о других пакетах, которые необходимы для того, чтобы данное ПО корректно работало (чаще всего это необходимые данному приложению библиотеки), контрольные суммы, информация о том, как правильно сконфигурировать пакет, и как его корректно удалить, если необходимость в его использовании отпала.
Пакет обычно представляет собой один архивный файл, в котором содержится как само устанавливаемое программное обеспечение, так и необходимая служебная информация (мета-информация). Иногда эта мета-информация содержится не в самом пакете, а во внешней базе данных. Но для того, чтобы этой информацией воспользоваться, необходима еще какая-то программа установки, которая инсталлирует приложение из пакета в систему, используя по мере необходимости мета-информацию пакета. Очевидно, что эта программа сильно зависит от того, какая именно мета-информация содержится в пакете и как она организована. Таким образом и получилось, что создатели некоторых дистрибутивов разработали каждый свою структуру пакетов и свои специализированные средства управления пакетами, которые позволяли бы установить программу из пакета, используя содержащуюся в нем мета-информацию.
Система управления пакетами - это набор инструментов, предназначенных для автоматизации процессов установки, обновления, конфигурирования и удаления пакетов программного обеспечения определенного формата.
Наиболее известными (или распространенными) системами управления пакетами являются:
RPM/YUM — менеджер пакетов RedHat. Сейчас аббревиатура RPM расшифровывается обычно рекурсивно (RPM = RPMPackage Manager), но первоначально ее расшифровывали как менеджер пакетов RedHat (RedHat Package Manager), поскольку разработана она была для дистрибутива RedHat. В настоящее время она используется и во многих других дистрибутивах.
dpkg/APT — система управления пакетами *.deb дистрибутива Debian, тоже портированная в настоящее время в другие дистрибутивы. Пакеты .deb представляют собой просто два tar-архива, сжатых с помощью gzip: в одном архиве содержится управляющая информация, в другом - данные. Стандартным средством управления такими пакетами является консольная программа dpkg, дополненная оболочкой APT (AdvancedPackagingTool).
tgz или tar.gz — стандартный набор из двух программ tar + gzip, иногда дополненный некоторыми дополнительными управляющими файлами. Используется в дистрибутиве Slackware и некоторых других, не обеспечивает разрешения зависимостей. От Source-based дистрибутивов эта система отличается тем, что внутри tar.gz-архивов находятся заранее скомпилированные программы.
система портежей дистрибутива Gentoo, которая представляет собой набор файлов ebuild, содержащих информацию о том, как получить (из любых доуступных источников - сети, локального диска и т.д.), скомпилировать и установить пакет в системе Gentoo, используя консольную команду emerge. Обычно пакет ПОв этом случае содержит исходные коды программ, и приложение компилируется прямо в процессе инсталляции, за счет чего оптимизируется для конкретной машины. Хотя этим способом могут устанавливаться и заранее откомпилированные программы, но такой вариант используется только в исключительных случаях, например, при инсталляции системы на очень медленные машины.
YaST - утилита, разработанная Novell и используемая в дистрибутиве SuSE.
Компиляцию пакетов из исходных кодов тоже можно рассматривать как один из вариантов системы управления пакетами. От перечисленных выше систем он отличается только тем, что пакеты ПО в source-basedдистрибутивах почти не содержат в своем составе заранее скомпилированных программ (кроме тех, которые абсолютно необходимы, типа ядра и компилятора), так что единственный способ установки нового пакета заключается в непосредственой компиляции его из исходных кодов.
Наиболее распространенным средством управления пакетами программного обеспечения остается программа RPM. Правда, она обладает тем недостатком, что задача разрешения зависимостей ложится в основном на плечи пользователя. Программа RPM только сообщает, что таких-то пакетов в системе не достает, а их поиск и установку пользователь должен выполнить самостоятельно. Поэтому многие основанные на RPM дистрибутивы сейчас используют также заимствованный из Debian инструмент APT, который появляется иногда и под другими именами. ДебиановскийDEB и TGZ из Slackware (и его производные) тоже распространены достаточно широко. Кроме названных были изобретены еще несколько средств управления пакетами. Примерами могут служить SLP из дистрибутива Stampede, который имеет несколько интересных особенностей, и система управления пакетами дистрибутива JBLinux.
Сценарии начальной загрузки
Способ организации и размещения стартовых сценариев (или скриптов) - это второй существенный признак, по которому дистрибутивы Linux отличаются друг от друга.
Для начала давайте вспомним, что существует два разных стиля начальной загрузки операционной системы типа UNIX, происхождение которых уходит корями в историю развития UNIX-систем: так называемый стиль BSD (используемый также в таких системах как FreeBSD, NetBSD и OpenBSD), и стиль SystemV (или стиль ATT). Различие между ними проявляется в организации и размещении стартовых сценариев (скриптов), обеспечивающих управление процессами загрузки системы. В классических BSD-системах эти файлы хранятся в каталоге /etc и их имена начинаются с префикса "rc". В системах семейства SystemV файлы сценариев располагаются в каталоге /etc/init.d, а ссылки на них созданы в каталогах /etc/rc0.d, /etc/rc1.d и т.д. Второй вариант организации является более четким и позволяет аккуратнее выполнять останов системы. Большая часть дистрибутивов Linux использует стиль SystemV. К этому классу относятся Debian, все клоны RedHat, включая Mandrake и российские дистрибутивы ASPlinux и ALTLinux. В стиле BSD организована загрузка в дистрибутиве Slackware и его производных.
Ориентация дистрибутива на область применения
Сфера применения - понятие довольно широкое.
Таблица 2.
Ориентация
|
Основные представители
|
Дистрибутивы общего назначения
|
FedoraCore - дистрибутив общего назначения, для рабочих станций, персональных компьютеров и серверов. Разрабатывается собществом независимых разработчиков при поддержке фирмы RedHat.
Debian GNU/Linux - дистрибутив, отличающийся тем, что содержит самую большую коллекцию пакетов программного обеспечения (свыше 15000). В его разработке участвует огромное количество независимых разработчиков со всего мира. Debian поддерживает самое большое число аппаратных платформ и славится лекгостью обновления программного обеспечения. С другой стороны считается, что установка этого дистрибутива более трудна, чем других. И в дистрибутив включается только строго некоммерческое ПО.
SuSE - один из самых популярных в Европе дистрибутивов, приобретенный в конце 2003 года фирмой Novell. В его состав входит уникальная утилита конфигурирования YaST, которая служит для установки и обновления пакетов, настройки сети и файервола, выполнения разнообразных административных задач.
Mandrakelinux. Самый легкий дистрибутив для начального освоения. Первоначально это был просто вариант RedHat, оптимизированный для процессора Pentium, но со временем он отошел от своего предка довольно далеко, сохраняя тем не менее полную соместимость с RedHat.
Slackware. Старейший дистрибутив из числа активно поддерживаемых. Консольная система управления пакетами. Ориентирован на применения, в которых требуются повышенная безопасность и стабильность.
ALT Linux. Российский дистрибутив (первоначально - просто русифицированный Mandrake), поддерживающий собственный репозиторий пакетов Sisyphus, и использующий систему управления пакетами APT от Debian.
ASP Linux. Российский дистрибутив, основанный на RedHat.
Gentoo. Дистрибутив для разработчиков и сетевых профессионалов. Все программное обеспечение поставляется в исходных кодах. Этот уникальный подход применяется с двумя намерениями: обеспечить возможность запуска на любой аппаратной платформе и оптимизировать производительность путем компиляции исполняемого кода непосредственно на том компьютере, где будет работать система. Инструкции по инсталляции прилагаются и достаточно полны, но требуется изрядное количество "ручной работы". Фактически Gentooпредсталяет собой автоматизированныйLinuxFromScratch.
LinuxFromScratch. Это не дистрибутив, а документ, описывающий как собрать свою собственную операционную систему, основанную на ядре Linux. Некоторые пользователи выбирают LinuxfromScratch из-за той гибкости, котоорую он предоставляет. Gentoo предоставляет тот же самый уровень гибкости, но автоматизирует значительную часть работы.
Linspire. Дистрибутив, который вначале назывался Lindows и позиционировался как замена Windows на десктопах. Основан на коде Xandros и Debian. Дополнительное ПО может устанавливаться с помощью менеджера пакетов APT от Debian, но полная совместимость с Debian не гарантируется. В состав этого дистрибутива включается значительное количество проприетарного софта.
PLD LinuxDistribution. Этот дистрибутив разработан в Польше. Использует RPM-пакеты, ориентируется на опытных пользователей, хотя и более удобен, чем Slackware или Gentoo.
RedFlagLinux. Дистрибутив, ориентированный на китайский рынок.
Sorcerer GNU/Linux. Дистрибутив, комрилируемый из исходных кодов (sourcebased).
SourceMage. Source-based дистрибутив, возникший как одна из веток проекта Sorcerer GNU/Linux, но выпускаемая под лицензией GPL.
Turbolinux. Популярный в Азии дистрибутив, основанный на RedHat.
UbuntuLinux. Дистрибутив, основанный на Debian. Спонсируется фирмой CanonicalLtd.
Xandros. Дистрибутив, ориентированный на применение на персональных компьютерах. Является наследником "почившего в бозе" дистрибутива CorelLinux. В отличие от многих других дистрибутивов, Xandros не может копироваться и распространяться свободно, поскольку он содержит проприетарное (т.е. коммерческое) программное обеспечение. Xandrosоснован на Debian и поэтому совместим с системой управления пакетами dpkg от Debian.
|
Дистрибутивы для мэйнфреймов
|
LinuxonzSeries
|
|
|
Серверные дистрибутивы
|
Red Hat Enterprise Linux,
SuSE Linux Enterprise Server
ALT LinuxMaster – универсальный дистрибутив GNU/Linux, включающий в себя множество подготовленных к эксплуатации программных решений для серверов и рабочих станций.
ASP LinuxServer включает все необходимые средства для создания корпоративных серверов различных классов и поддерживает различные серверные архитектуры, включая многопроцессорные, и системы с большими объемами памяти. Централизованная настройка большинства сервисов и программ существенно облегчает их установку, использование и администрирование.
LTSP - Linux Terminal Server Project. Проект по созданию терминальных серверов, позволяющих использовать "слабые" компьютеры в качестве удаленных терминалов.
|
Защищенные дистрибутивы
|
Trustix. Дистрибутив, обеспечивающий повышенную безопасность. В отличие от SELinux, который является набором модификаций ядра, а не дистрибутивом, позволяет установить полноценную систему.
SELinux. Улучшенная в части безопасности версия ядра Linux, созданная американским Агентством Национальной Безопасности (NationalSecurityAgency - NSA).
TinfoilHatLinux. Дистрибутив для людей, параноидально заботящихся о безопасности.
Trinux. Дистрибутив, оснащенный набором средств для обеспечения безопасности.
"Утес-К". Защищённая интегрированная система обработки конфиденциальной информации «Утёс-К» является универсальным дистрибутивом Linux, содержащим более 2500 пакетов программ и подробную документацию. Система сертифицирована Гостехкомиссией по 5 классу СВТ защиты конфиденциальной информации, 4 уровню контроля отсутствия недекларированных возможностей — сертификат N685.
|
Дистрибутивы для мультимедиа
|
MoviX. Предназначен исключительно для воспроизведения мультимедийных файлов (просмотр видео, прослушивание аудио). Но зато уж делающий это очень хорошо.
Agnula.
Dynebolic.
|
Дистрибутивы для маршрутизаторов и файерволов
|
CoyoteLinux. Дистрибутив Linux на дискете. Позволяет связать локальную и Интернет сети. Может быть использован в качестве межсетевого экрана.
LinuxRouterProject. Проект по созданию полноценногоLinuxрутера на одной дискете.
Gibraltar.
IPCop Firewall.
Sentry Firewall.
SmoothWall.
|
Дистрибутивы для встроенных систем
|
Embedded Debian.
ELKS Linux = Embeddable Linux Kernel subset (ELKS).
LinuxMicrocontrollerProject - создание ОС на основе Linux для встроенных систем.
|
Дистрибутивы для "слабых" компьютеров
|
VectorLinux - дистрибутив, основанный на Slackware. Задумывался как небольшой, быстрый дистрибутив, предназначенный как для старых, так и для современных моделей компьютеров.
SmallKernelProject - маленький Linux для i386, требующий всего 2Mb ОЗУ и 40Mb на жестком диске.
ttylinux запускается даже на 386-х компьютерах, требует всего 4 МБ на жестком диске и 6 МБ ОЗУ. Основное назначение - дозвониться до провайдера и выйти в Интернет.
|
Дистрибутивы, запускаемые с CD и bootablebusinesscard, т.е. CD объемом не более 50 MB.
|
Knoppix. Дистрибутив, запускающийся с CD и славящийся тем, что прекрасно определяет аппаратную конфигурацию компьютера, а потому успешно работающий с самым разным "железом". Основоположник огромного ряда дистрибутивов, запускающихся с CD.
PCLinuxOS. Легкий в использовании дистрибутив, основанный на Mandrake 9.2. Но затем он начал развиваться независимо, ориентрируясь на использование на десктопах.
FeatherLinux - урезанная версия Knoppix, запускающаяся с businesscard CD или USB pendrive. . Требует 115 МБ дискового пространства и включает в себя все ПО, необходимое большинству пользователей каждодневно.
DamnSmallLinux - великолепный дистрибутив, объемом 50 МБ.
|
Дистрибутивы для USB
|
Flonix - дистрибутив, запускаемый с USB flash-drive.
FlashPuppy - очень маленький, но полнофункциональный дистрибутив, полностью загружающийся на виртуальный диск, то есть работающий полностью в оперативной памяти.
SPBLinux - разработанный в Санкт-Петербурге дистрибутив, запускаемый с USB flash-drive и дискет.
|
Мини-дистрибутивы, запускаемые с дискет
|
BasicLinux - дистрибутив, размещающийся на 2 дискетах и работающий на самых минимальных конфигурациях компьютеров.
muLinux - Расширяемый мини-дистрибутив (Linux на одной дискете, X-windows на другой), который может очень много: может быть ftp, http, samba, file, printer, fax, dial-on-demand, dial-in сервером, имеет плагины: Perl, TEX, GCC, TCL, EMU (DOS andWine) и так далее. Удобная установка, настройка, возможна конфигурация через http.
tomsrtbt - дистрибутив, размещающийся на нескольких дискетах, но тем не менее, включающий в себя даже графическую оболочку.
BrutalWareLinux - Linux на трех дискетах.
Linuxonedisk - Linux на одной дискете. Предназначен для восстановления "рухнувших" систем. Один из лучших однодисковых дистрибутивов.
Linuxrouter на одной дискетке - Router/firewall для маленьких сетей.
Linux Svncviewer one floppy - Linux+VNCviewerнаоднойдискете.
LOAF - Linux On A Floppy - проект "Linux наоднойдискете".
Monkey - MiniLinux - дистрибутив на 5-ти дискетах. Есть Иксы, поддержка Ethernet карт и многое другое.
PocketLinux - Linux на одной дискете, SSH + BOOTP + Modemsupporting.
|
Дистрибутивы, запускаемые из-под Windows
|
CooperativeLinux - дистрибутив, запускаемый из-под MicrosoftWindows без применения коммерческого ПО, предназначенного для создания виртуальных компьютеров.
|
Четвертый учебный вопрос-Файловая система Linux
Сегодня попробуем разобраться в устройстве файловой системы Линукса. Пользователи, взращенные на Windows попадают в неловкую ситуацию пытаясь найти логические диски в Linux, или вообще диски как таковые, можете не пытатся в Linuxе не существует понятия диск, но есть файл.
Файлы, являющиеся элементами файловой системы, это не только обычные файлы, но и процессы, порты и каналы межпрограммного взаимодействия. Такая абстракция была введена программистами для того, чтобы при появлении, допустим, нового порта или типа устройства не изобретать методы доступа к ним, а также стандартизировать методы доступа к ресурсам системы.
Итак файловая система это единая структура, которая начинается с „/“ (Корневой каталог или root). Линукс поддерживает огромное количество файловых систем, в него также входят и Windows-системы FAT и NTFS, на FAT доступ будет полный (чтение/запись), NTFS режим чтения, а вот режим записи поддерживает только последние версии ядра и то в тестовом режиме, лучше не испытывать судьбу. Таким образом в Linux вы будите иметь доступ к вашим разделам Windows (чего нельзя сказать о Windows — для нее Linux-разделы не существуют. Проблему можно решить с помощью Samb’ы, об этом попозже, или заведите себе небольшой раздел под FAT, куда вы сможете скидывать необходимые файлы из Linux и читать их из Windows
Ext2. SecondExtendedFilesystem (сокращенно звучит как ext2) нежурналируемая, много лет была файловой системой GNU/Linux по умолчанию. Она заменила ExtendedFileSystem (вот откуда в названии появилось «Second»). ext2 устраняет определенные проблемы и ограничения своей предшественницы. ext2 соблюдает обычные стандарты для файловых систем UNIX®-типа. С самого начала она была предназначена для дальнейшего развития, сохраняя при этом высокую отказоустойчивость и хорошую производительность.
Ext3. ThirdExtendedFileSystem является наследником ext2, совместима с последней, но была улучшена засчет добавления журналирования. Одним из недостатков файловой системы типа ext2 является ее низкая устойчивость к внезапным падениям системы. При перезагрузке системы такие виды событий приводят к очень долгой проверке структуры файловой системы и попыткам исправить ошибки, что иногда вызывает более обширные разрушения. Журналирование отвечает за решение этой проблемы.
ReiserFSReiserfs была написана с нуля. Это журналируемая файловая система типа ext3, но ее внутренняя структура отличается от ext3 способом хранения данных, в ней используются идеи двоичного дерева, что значительно ускоряет поиск данных.
JFS.JFS - журналируемая файловая система, разработанная и используемая в IBM. Ее внутренняя структура близка к структуре reiserfs.
XFS.XFS - это журналируемая файловая система используемая в операционной системе Irix. Ее внутренняя структура имеет много разнообразных возможностей, таких как поддержка пропускной способности реального времени, экстенты (непрерывные области с прямым доступом, резервируемые для определенного набора данных) и кластерные файловые системы.
Известно, что журналируемые файловые системы(ext3) более устойчивы при работе. Отличие такой системы от нежурналирумой в том, что в ней все операции записываются сначала в специальный файл — журнал — и только после претворяются в жизнь. И если во время работы происходит сбой (выключение питания, например), данные не будут потеряны (вернее, вероятность такого неблагоприятного исхода уменьшается).
Файловое дерево может иметь произвольную глубину, но каждый компонент в имени файла (здесь — полный путь к файлу) должен составлять не более 255 символов, а в отдельном имени должно быть не более 4095 символов. Следует оговориться, что сама файловая система не накладывает ограничений на имена.
Файловая система состоит из множества частей. Для подключения отдельных разделов файловой системы используется команда mount. Список параметров и соответствующих девейсов находится в файле /etc/fstab. Команда mount имеет множество параметров. Если при ручном вводе не указываеть какие-либо из них, система пытается получить их из данного файла. Так, при загрузке системы происходит автоматическое монтирование разделов mount -a.
Внимание! cd-rom и floppy также необходимо монтировать. Список смонтированных (подключенных разделов) находится в файле /etc/mtab. Демонтирование производится командой umount. Если файловая система “занята”, т.е. какой-либо процесс пишет или читает из файла (в файл), отмонтировать ее невозможно. Узнать о процессах, открывших файлы, можно так:
>fuser -mv /home
Эта команда выведет список номеров (PID) процессов, которые открыли файлы:
>fuser -mv /home
USERPIDACCESSCOMMAND
/homeroot 1 .rce. Init
В колонке ACCESS указывается тип обращения к файлам:
f — файл открыт на чтение или запись;
с — к каталогу — текущий каталог процесса;
e — процесс в данный момент выполняет программу;
r — в файловой системе находится корневой каталог процесса;
m — процесс отображает в памяти файл или совместно используемую библиотеку.
Информацию о процессе по номеру (PID) можно узнать следующим образом:
>ps -fp 7243
UIDPIDPPIDCSTIMETTYTIMECMD
Zavr 7243 4417 0 18:19 pts/3 00:00:00 /bin/bash
Разные дистрибутивы организуют файловую систему по-разному, стандартов наименования файлов как таковых нет, но в целом структура у всех похожая.Итак, перечислим основные каталоги системы и их назначение:
/boot — здесь хранится файл ядра — обычно имеет имя vmlinuz;
/bin — программы минимальной работоспособности системы;
/lib — библиотеки C;
/opt — вспомогательные программы;
/proc — образы выполняющихся процессов;
/root — начальный каталог root'а;
/mnt или /media — сюда монтируются сменные носители (floppy, cd-rom, flash и др.);
/dev — каталог устройств (помните, о чем говорилось в начале статьи?);
/etc — каталог конфигурационных файлов (вы ведь знаете, что в LINUX НЕТ реестра?);
/tmp — каталог временных файлов;
/usr — каталог большинства стандартных программ и компонентов;
/var — каталог хранения логов, буферные каталоги;
/var/log — логи;
/home — каталог домашних директорий пользователей.
При установке рекомендуется создавать несколько разделов на диске (естественно, дополнительно, кроме раздела подкачки swap и корневого раздела). Соответственно для /usr, /var, /home так проще контролировать использование жесткого диска. В Linux есть несколько типов файлов (а вернее, их семь):просто файлы (создается прикладными программами, удаление >rm);
каталоги (создание >mkdir, удаление >rmdir (rm –r удаление вместе с содержимым каталога));
файлы символьных устройств (создание >mknod, удаление >rm);
файлы блочных устройств (создание >mknod, удаление >rm);
локальные сокеты (создание >socket, удаление >rm);
именованные каналы (создание >mknod, удаление >rm);
символически ссылки (создание >ln (-s — для символической ссылки), удаление >rm).
Теперь немного о ссылках
Ссылки бывают жесткие и мягкие. Жесткую ссылку невозможно отличить от файла, на который она указывает — для системы они идентичны. При удалении файла, на который есть несколько жестких ссылок, система не освобождает блоки до тех пор, пока существует хоть одна ссылка. Жесткие ссылки создаются >ln, удаляются >rm. Жесткие ссылки не могут указывать на файлы в других файловых системах. Символическая (или мягкая) ссылка позволяет указывать вместо имени файла его псевдоним. Разница между мягкими и жесткими ссылками в том, что жесткая ссылка указывает прямо на индексный дескриптор файла, а символическая указывает на файл по имени (ссылка и объект в данном случае являются разными объектами файловой системы). Ссылки похожи на ярлыки в Windows, соответственно и использование.
Каждый файл имеет свои атрибуты из девяти битов. Эти биты определяют права доступа к файлу. Просмотреть атрибуты файла можно с помощью команды >ls -l (для файлов) >ls -d (для каталогов). Например:
>ls -l /tmp/test.sh
-rw-r--r-- 1 rootroot 6001 Апр 01 18:50 /tmp/test.sh
Разсмотрим вывод последней команды слева на право:
1.Тип файла и режим доступа к нему, минус значит, что это обыкновенный файл, d каталог, l ссылка .
2.rwxr-xr-x — три набора битов режима. Порядок следующий: владелец, группа, другие пользователи. Соответственно r — чтение, w — запись, x — выполнение. Значит, на данный файл владелец имеет полные права, все остальные — право на чтение и выполнение.
3.Счетчик ссылок на файл. Любой каталог имеет минимум две жесткие ссылки: одну из специального файла “.”, а вторую — из корневого каталога. Символические ссылки не учитываются.
4.Поля с владельцем и группой.
5.Размер файла в байтах.
6.Дата последней модификации.
Изменение прав доступа к файлам/каталогам. Команды chmod, chown, umask:
chmod — право изменять права доступа, есть лишь только у владельца файла и суперпользователя (root). Режим доступа можно указывать как в виде восьмеричного числа, так и виде мнемообозначения.
Например меняем права на файл из предидущего примера, разрешаем запись для группы и запретим чтение для «других, other»
chmodg+w, a-r /tmp/test.sh или по аналогии chmod 660 /tmp/test.sh
chown — смена владельца и группы.
Меняем владельца
сhownlux /tmp/test.sh
а теперь сразу владельца и группу
сhownlux.users /tmp/test.sh
umask — служит для задания стандартных прав доступа.
Ну вот вроде бы для начала и все что я хотел рассказать о файловой системе Линукса. Если что то пропустил или есть вопросы, всегда пожалуйста.
Каталог /etc
В общих чертах мы файловую систему рассмотрели, теперь немного глубже окунемся в католог /etc.
И так сдесь лежат все настройки которые необходимы для работы как самой системы так и отдельных приложений. В большинстве случаев каждое приложение имеет свою папку внутри каталога /etc, название папки соответствует названию приложения, таким образом довольно таки просто найти нужный конфигурационный файл. К настройкам отдельных программ мы еще вернемся, сейчас же я хотел бы обратить ваше внимание на папку init.d (/etc/init.d).в этой папке собраны все или почти все стартовые скрипты.
Кроме того сдесь же находятся катологи начиная с rc0.d и оканчивая rc6.d (есть еще rcS.d). Это стартовые каталоги соответствующих режимов (init) запуска. Например все что находится в каталоге rc5.d, будет автоматически запущено при старте системы в графическом режиме (init 5). Если заглянуть в каталог rc5.d можно увидеть кучу символьныхлинков которые начинаются с больших K или S. K соответствует kill,тоесть перед тем как запустить какое то приложение надо убедится что оно не запущено. S соответствует start. Надо заметить что выполнение всех стартовых скриптов происходит именно в определенной последовательности, начиная 01 и до 99 и так далее.
Существует отределенный стандарт для старт скриптов, в каждом указывается какие просессы должны уже быть запущены что бы он мог запустится. Но в большинстве случаев можно просто добавить в соответствующий каталог символическую ссылку в самый конец, т.е с соответствующим номером чтобы скрипт выполнился последним.
Ну например у меня имеется скрипт с правилами для фаервола, и я хочу что бы при каждом старте системы он стартовал автоматически. Скрипт у меня лежит в /etc/firewall и называется firewall.sh (внимание необходимо наличие прав на выполнение rwxr--r--), полный путь к нему соответственно /etc/firewall/firewall.sh Моя система стартует в графическом режиме (init 5) значит мне нужен каталог /etc/init.d/rc5.d , перехожу в этот каталог
>cd /etc/init.d/rc5.d
И выполняю следующую команду
>ln –s /etc/firewall/firewall.shS99firewall
После этого можно проверить наличие нового линка командой
>llS99firewall
То что выдаст команда должно выглядеть примерно так
lrwxrwxrwx 1 rootroot 18 Okt 11:27 S99firewall -> /etc/firewall/firewall.sh
Теперь после нового старта системы фаерволл загрузится автоматически.
Вопросы для самопроверки:
-
Основные характеристики ОС Linux
Дистрибутивы Linux
Критерииклассификациидистрибутивов
Файловая система Linux
Список литературы:
-
Сетевые операционные системы/ В.Г. Олифер, Н.А. Олифер. – СПб.: Питер, 2009. - 672 с.: ил.
Операционные системы: Учебник для вузов. 2-е изд. /А.В. Гордеев. – СПб.: Питер, 2006. - 416 с.: ил.
Лекцию разработал
Доцент кафедры «Информационных систем»
к.т.н., Д. Резеньков
«___»__________________2014 г.
|