Ликбез по Linux

О структуре файловой системы

Люди, пришедшие с Windows, частенько "впадают в ступор" при виде структуры папок на жёстком диске, настолько непривычно она выглядит. Сейчас попробуем разобраться, настолько ли всё сложно.

Давайте посмотрим корневой каталог.

$ ls -l /

Итак, в выводе мы видим список тех каталогов, которые есть в корне. Начнем разбор в алфавитном порядке.

 

Первым на очереди идёт каталог /bin. Немного подумав, можно догадаться, что это сокращение от binaries. Тут у нас лежат исполняемые файлы, которые могут вызываться как от имени администратора, так и от имени простого пользователя. Тут находятся важные файлы, для корректной работы которых нет необходимости монтировать остальные файловые системы. Говоря человеческим языком, тут лежат важные команды (например, cp, mv), для которых ничего больше и не надо и при помощи которых можно привести систему в рабочее состояние, случись что-нибудь нехорошее.

Поехали дальше. Что там у нас? Дальше у нас находится /boot. Собственно, здесь лежат файлы, необходимые для корректной загрузки системы. Тут лежит сжатый образ ядра, имеющий вид вроде vmlinuz-2.6.22-3-k7. Также можно увидеть папочку /boot/grub/, где лежат файлы настройки загрузчика.

Дальше - веселее. Теперь заглянем в директорию /dev. В ней находятся все устройства. В linux они представляют собой файлы. То есть, мы можем направить вывод любой информации прямо на устройство с помощью обычной команды перенаправления в файл (но лучше с этим не шутить, таким образом можно нанести системе непоправимый ущерб).

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

/home - тут лежат данные пользователей системы (например, пользователь oni имеет каталог /home/oni). Обычно домашний каталог обозначается как ~. Собственно, пользователи имеет права на запись только в своём каталоге. Остальное он либо может лишь просматривать, либо вообще не имеет доступа. Также в домашнем каталоге пользователя лежат его настройки программ. Обычно они находятся в папке ~/.имя_программы. Как правило, если вы что-то напортили в опциях, достаточно просто удалить папку с настройками из ~, и приложение будет считать, что вы запускаете её в первый раз.

Далее /lib (libraries). Тут всё логично - это вместилище различных библиотек (что-то вроде динамических библиотек Windows). Также здесь расположены модули ядра, которые можно подгружать дополнительно.

/lost+found - создаётся в корне каждого логического раздела жёсткого диска. Туда помещаются все найденные при проверке файловой системы файлы.

/mnt - каталог для временно монтируемых файловых систем.

/media - используется для монтирования съёмных носителей. Сюда же обычно монтируют разделы Windows, если они есть.

Дальше идёт довольно редко используемая папка /opt. Она предназначена для установки данных дополнительных приложений. Например, у меня там разместился OpenOffice.org pro. При использовании репозитариев ничего туда ставиться не будет.

Помните, как я ранее говорил о том, что всё в Линуксе - файлы? Так вот, перед вами живое доказательство. В /proc находится информация о процессах, выполняемых в данное время. Причём при выключенном компьютере вы этой папки не найдёте - она виртуальная и всё содержимое находится в оперативной памяти. В принципе, тут можно изменить любые данные любого процесса, запущенного в системе. Так что лучше тут ничего не трогать.

/root - тут всё просто. Это домашняя папка суперпользователя (root). Она находится в корне для того, чтобы можно было работать без монтирования раздела /home (например, если он на другом разделе или вообще на сетевом источнике).

/sbin - здесь находятся утилиты для администрирования, причём выполнять их может только root (главное отличие от /bin. Всё остальное - аналогично ему).

/srv - тут расположены данные различных системных сервисов, используемые ими при работе.

Ещё одна виртуальная директория /sys. Все файлы в ней - также информация о запущенных процессах, и многие программы (например, ps) для своей работы используют эти данные.

/tmp - тут тоже все логично. В этом каталоге временно хранятся данные, необходимые для работы приложений. Обычно /tmp очищается при каждой загрузке системы.

И ещё один временный каталог /var. Если какие-нибудь данные нужны после завершения программ, то они помещаются сюда. Так, например, кэш apt (все выкачанные из Интернета пакеты) лежит в /var/cache/apt/.

Теперь перейдём к самому большому из системных каталогов /usr. Выполнив $ ls /usr, мы получим что-то вроде

bin/ include/ lib64/ lost+found/ sbin/ src/ lib/ local/ share/ X11R6/

Как можно заметить, практически все каталоги дублируют аналогичные папки из корня, да и функции выполняют аналогичные. Но главное отличие состоит вот в чём: обычно /usr расположен на отдельном разделе, который монтируется в самом конце загрузки. Поэтому критичные программы располагаются в корневых папках, а все остальные - в /usr. Также здесь есть новые каталоги: /usr/local, который предназначен для данных приложений, устанавливаемых локально и которые не должны изменяться при обновлении; /usr/share, где находятся данные приложений; /usr/X11R6, которая создана для совместимости X-сервера на других системах.

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

Ну вот, собственно, и все. Если кто-нибудь захочет более подробно ознакомиться со стандартом иерархии файловой системы, то добро пожаловать на proton.pathname.com/fhs/ . Тут находится небольшой документ, где всё очень подробно расписано с объяснением, для чего так сделано. Правда, всё на английском, но читается не особенно трудно.

Жду ваших вопросов. До следующих встреч.

Антон ЛИПАРИН,
oni@mail.by
oni-ddr.livejournal.com

Версия для печатиВерсия для печати

Номер: 

29 за 2008 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!