Стандарт иерархии файловой системы ( FHS ) — это справочник, описывающий соглашения, используемые для компоновки Unix-подобных систем. Он стал популярным благодаря использованию в дистрибутивах Linux, но он также используется и в других Unix-подобных системах. [1] Он поддерживается Linux Foundation . Последняя версия — 3.0, выпущенная 3 июня 2015 г. [2]
Структура каталогов
В FHS все файлы и каталоги отображаются в корневом каталоге/ , даже если они хранятся на разных физических или виртуальных устройствах. Некоторые из этих каталогов существуют только в конкретной системе, если установлены определенные подсистемы, такие как X Window System .
Большинство этих каталогов существуют во всех Unix-подобных операционных системах и обычно используются одинаково; однако приведенные здесь описания используются специально для FHS и не считаются авторитетными для платформ, отличных от Linux.
Соответствие требованиям FHS
Большинство дистрибутивов Linux следуют стандарту иерархии файловой системы и объявляют его собственной политикой обеспечения соответствия FHS. [14] [15] [16] [17] GoboLinux [18] и NixOS [19] предоставляют примеры намеренно несовместимых реализаций файловой системы.
Некоторые дистрибутивы в целом соответствуют стандарту, но в некоторых областях отклоняются от него. FHS является «конечным стандартом» и поэтому документирует распространенные практики на определенный момент времени. Конечно, времена меняются, а цели и потребности распределения требуют экспериментов. Некоторые распространенные отклонения включают в себя:
Современные дистрибутивы Linux включают /sysкаталог в качестве виртуальной файловой системы ( sysfs , аналогичный /procprocfs ), который хранит и позволяет модифицировать устройства, подключенные к системе, [20] тогда как многие традиционные Unix-подобные операционные системы используют в качестве символического ссылка на дерево исходного кода ядра . [21]/sys
Многие современные Unix-подобные системы (например, FreeBSD через систему портов ) устанавливают сторонние пакеты в . /usr/local, сохраняя при этом код, считающийся частью операционной системы, в /usr.
В некоторых дистрибутивах Linux больше нет различий между /libи /usr/libи имеют /libсимволические ссылки на /usr/lib. [22]
Некоторые дистрибутивы Linux больше не делают различий между /binи /usr/binи между /sbinи /usr/sbin. Они могут содержать символические ссылки /binна /usr/binи /sbinна /usr/sbin. Другие дистрибутивы предпочитают объединять все четыре, связывая их с /usr/bin. [23]
Современные дистрибутивы Linux включают /runкаталог в качестве временной файловой системы ( tmpfs ), в котором хранятся изменчивые данные времени выполнения, в соответствии с FHS версии 3.0. Согласно версии FHS 2.3, такие данные хранились в /var/run, но в некоторых случаях это было проблемой, поскольку этот каталог не всегда доступен при ранней загрузке. В результате этим программам приходилось прибегать к ухищрениям, таким как использование /dev/.udev, или каталогов /dev/.mdadm, хотя каталог устройства не предназначен для таких данных. [24] Помимо других преимуществ, это упрощает обычное использование системы с корневой файловой системой, смонтированной только для чтения. Например, ниже приведены изменения , внесенные Debian в выпуск Wheezy 2013 года: [25]/dev/.systemd/dev/.mount
/dev/.*→/run/*
/dev/shm→/run/shm
/dev/shm/*→/run/*
/etc/*(файлы, доступные для записи) →/run/*
/lib/init/rw→/run
/var/lock→/run/lock
/var/run→/run
/tmp→/run/tmp
История
Имяusr
/usrпервоначально означало «пользователь». [26] Это был артефакт раннего программирования для Unix. В частности, когда Кен Томпсон и Деннис Ритчи переносили Unix на PDP-11, /bin, /libпапки ..., которые должны были быть первыми папками, которые должны были монтироваться при запуске и должны были содержать все необходимое для функционирования ОС, стали больше, чем привод RK05 . Вот и поставили некоторые из них в первый RK05, в том числе и те, которые необходимы для загрузки второго диска RK05. Остальные положили в /usrпапку. [27] Когда у них появился третий диск, файлы пользователей были перемещены в новую папку с именем /home. [28]
FHS был создан как FSSTND (сокращение от «Стандарт файловой системы» [29] ), во многом основанный на аналогичных стандартах для других Unix-подобных операционных систем. Яркими примерами являются: описание структуры файловой системы hier(7) , [30] которое существовало с момента выпуска версии 7 Unix (в 1979 году); [31] файловая система SunOS (7) [32] и ее преемница, файловая система Solaris (7) . [33] [34]
^ Исторически и строго в соответствии со стандартом /usr/localпредназначен для данных, которые должны храниться на локальном хосте (в отличие от /usrфайлов , которые можно монтировать по сети). Большую часть времени /usr/localиспользуется для установки программного обеспечения/данных, которые не являются частью стандартного дистрибутива операционной системы (в таком случае /usrони будут содержать только программное обеспечение/данные, которые являются частью стандартного дистрибутива операционной системы). Вполне возможно, что стандарт FHS в будущем будет изменен, чтобы отразить это фактическое соглашение.
Рекомендации
Ссылки _ Wiki Фонда Linux . Проверено 4 января 2022 г.
^ "lsb:fhs-30 [Вики]" . wiki.linuxfoundation.org . Проверено 22 февраля 2023 г.
^ «hier(7) — страница руководства Linux» . man7.org . Проверено 6 января 2021 г.
^ Дж. ДеФелик (17 марта 1972 г.). «Е.0». Предварительный выпуск документа о реализации UNIX (PDF) . п. 8. ИМО.1-1.
^ "/etc: Конфигурация системы для конкретного хоста". Стандарт иерархии файловой системы 2.3 . Проверено 18 февраля 2016 г.
↑ Define - /etc?, Автор: Клифф, 3 марта 2007 г. — Slashdot.
^ "/opt: Дополнительные пакеты прикладного программного обеспечения" . Стандарт иерархии файловой системы 2.3 . Проверено 18 февраля 2016 г.
^ «/sys: виртуальная файловая система ядра и системной информации». Стандарт иерархии файловой системы 3.0 . Проверено 4 июня 2017 г.
^ Хишам Мухаммад (9 мая 2003 г.). «Переосмысление дерева Unix: введение в GoboLinux» . Проверено 4 октября 2016 г.
^ Долстра, Э.; Лё, А. (сентябрь 2008 г.). NixOS: чисто функциональный дистрибутив Linux (PDF) . ICFP 2008: 13-я Международная конференция ACM SIGPLAN по функциональному программированию. Виктория, Британская Колумбия, Канада. стр. 367–378.
^ «5.3 О виртуальной файловой системе /sys» . docs.oracle.com . Оракул. Архивировано из оригинала 8 июля 2016 года . Проверено 8 июля 2016 г.
^ Лехи, Грег (май 2003 г.). Полная версия FreeBSD: Документация из источника (Четвертое изд.). О'Рейли Медиа, Инкорпорейтед. стр. 188, 609. ISBN.9780596005160.
^ Аллан Макрей. «Arch Linux – Новости: каталог /lib становится символической ссылкой». Archlinux.org . Архивировано из оригинала 9 сентября 2014 года . Проверено 14 декабря 2019 г.
^ Аллан Макрей. «Arch Linux – Новости: двоичные файлы перемещаются в /usr/bin, требуя обновления». Archlinux.org . Архивировано из оригинала 10 сентября 2014 года . Проверено 15 декабря 2019 г.
↑ Леннарт Пёттеринг (30 марта 2011 г.). «Что этот каталог /run делает в моей системе и откуда он?». [email protected] (список рассылки).
^ "ReleaseGoalsRunDirectory" . Дебиан Вики .
^ "/usr". tldp.org . Проверено 10 декабря 2023 г.
^ Доктор медицины Макилрой (1987). «Исследовательская программа для чтения Unix: аннотированные выдержки из Руководства программиста, 1971–1986» (PDF) . Лаборатории Белла. ЦСТР 139.
↑ Лэндли, Роб (9 декабря 2010 г.). «Понимание разделения bin, sbin, usr/bin, usr/sbin». busybox (список рассылки).
^ «Страница часто задаваемых вопросов FSSTND» . Проверено 10 мая 2016 г.
^ Страница руководства SunOS 4.1.3 для файловой системы (7), датированная 10 января 1988 г. (из библиотеки страниц руководства FreeBSD).
^filesystem(7) - Справочное руководство по стандартам, средам, макросам, наборам символов и прочему Solaris 11.4 .
^ "Страница руководства по файловой системе - Страницы руководства Solaris 10, 11/06" . Архивировано из оригинала 4 июля 2007 года . Проверено 15 октября 2011 г.
^ "Индекс /pub/Linux/docs/fsstnd/old/fsstnd-1.0/". Ибиблио.орг . Проверено 16 октября 2012 г.
^ "Индекс /pub/Linux/docs/fsstnd/old/fsstnd-1.1/". Ибиблио.орг . Проверено 16 октября 2012 г.
^ "Индекс /pub/Linux/docs/fsstnd/old/". Ибиблио.орг . Проверено 16 октября 2012 г.
^ «Объявление о FHS 2.0» . Имя пути.com . Проверено 16 октября 2012 г.
^ Куинлан, Дэниел (14 марта 2012 г.) [1997], «Объявление FHS 2.0», BSD, Linux, Unix и Интернет - исследование Кеннета Р. Саборио , Сан-Хосе, Коста-Рика: Кеннет Р. Саборио, заархивировано из оригинала 5 марта 2016 г. , дата обращения 18 февраля 2016 г..
^ "Индекс /pub/Linux/docs/fsstnd/". Ибиблио.орг . Проверено 16 октября 2012 г.
^ «Объявление FHS 2.1» . Имя пути.com . Проверено 16 октября 2012 г.
^ «Выпущена FHS 2.1» . Lists.debian.org. 13 апреля 2000 г. Проверено 16 октября 2012 г.
↑ Куинлан, Дэниел (12 апреля 2000 г.). «Стандарт иерархии файловой системы - версия 2.1, Группа стандартов иерархии файловой системы» (PDF) . Учебные пособия по Acadia Linux . Вольфвилл, Новая Шотландия, Канада: Школа компьютерных наук Джодри, Университет Акадии . Архивировано из оригинала (PDF) 27 марта 2012 года . Проверено 18 октября 2012 г.
^ Рассел, Расти ; Куинлан, Дэниел, ред. (23 мая 2001 г.). «Стандарт иерархии файловой системы - последняя версия группы стандартов иерархии файловой системы» (PDF) . Стандарт иерархии файловой системы . Проверено 18 февраля 2016 г.
^ Рассел, Расти ; Куинлан, Дэниел; Да, Кристофер, ред. (28 января 2004 г.). «Стандарт иерархии файловой системы — группа стандартов иерархии файловой системы» (PDF) . Проверено 29 ноября 2014 г.
^ Да, Кристофер; Рассел, Расти; Куинлан, Дэниел, ред. (19 марта 2015 г.). «Стандарт иерархии файловой системы» (PDF) . Фонд Linux . Проверено 20 мая 2015 г.
Внешние ссылки
Официальный сайт стандарта иерархии файловой системы (FHS) в Linux Foundation
Полные тексты спецификаций
objectroot — предложение новой иерархии файловой системы, основанной на принципах объектно-ориентированного проектирования.
Стандартная иерархия имен файлов с точками, еще одна совершенно другая иерархия (используется в cLIeNUX) (зеркало)
hier(7) – Руководство программиста Linux – Обзор, условные обозначения и прочее