Рейтинг  

Яндекс.Метрика
Яндекс цитирования
 

   

Статистика  

Пользователи
7
Материалы
326
Кол-во просмотров материалов
2437079
   
 

В своем письме в рассылку busybox, Роб Лендли рассказывает о том, откуда взялся каталог /usr и его содержимое, а также о том, почему эта иерархия стала считаться стандартом. Далее, собственно, начинается перевод письма.

Вы уже знаете, что Кен Томпсон и Деннис Ритчи создали Unix на PDP-7 в 1969? Так вот, где-то в 1971 они проапгрейдились до PDP-11 с парой дисков RK05 (по полтора мегабайта каждый).

Когда операционная система выросла до того, что перестала помещаться на первый диск RK05 (где находилась корневая файловая система), они решили перенести ее части на второй диск, где находилась файловая система с домашними каталогами пользователей (вот почему эта точка монтирования называется /usr). Они создали в /usr иерархию, аналогичную корневой (/bin, /sbin, /lib, /tmp, …), и начали записывать новые файлы в эти каталоги, потому что на исходном диске закончилось место. Когда у них появился третий диск, они смонтировали его как /home, и перенесли все пользовательские каталоги туда, так что ОС могла теперь занимать все место на обоих дисках и вырасти аж до ЦЕЛЫХ ТРЕХ МЕГАБАЙТ!

Конечно, они создали правила типа «когда система загружается, у нее должны быть все необходимые утилиты, чтобы смонтировать второй диск в /usr, поэтому не надо класть утилиты вроде mount в /usr/bin, или мы столкнемся с проблемой курицы и яйца в момент загрузки системы». Достаточно просто. И достаточно специфично для шестой версии unix 35-летней давности.

Разделение на /bin и /usr/bin (и прочие) — это пережиток того, что особенности реализации 1970-х годов тянулись сквозь десятилетия бюрократами, которые даже никогда не задавались вопросом, почему эти вещи сделаны именно так. Эти особенности потеряли смысл даже еще до появления Linux по многим причинам:

  1. Первичная загрузка системы — это вотчина initrd или initrams, которые занимаются решением проблем вида «этот файл нужен до вот этого». У нас уже есть временная система, которая обеспечивает загрузку основной системы.

  2. Разделяемые библиотеки (shared libraries), придуманные парнями из Беркли, мешают отдельному обновлению содержимого каталогов /lib и /usr/bin. Библиотеки и использующие их исполнимые файлы должны обновляться одновременно, иначе они не будут работать. Но это не было причиной в 1974 — тогда у них был определенный уровень независимости, поскольку все было слинковано статически.

  3. Дешевые жесктие диски преодолели отметку в 100Mb около 1990. Примерно тогда же появились программы для изменения размеров разделов (partition magic 3.0 появился в 1997).

Разумеется, как только разделение появилось, люди придумали правила для его оправдания. Например, корень — это для того, что поставляется с ОС, а /usr — это для ваших файлов. Потом, корень — это для того, что было получено от AT&T, /usr — для того, что ваш дистрибутив, вроде IBM AIX, Dec Ultrix или SGI Irix, туда добавил, а /usr/local — это для ваших файлов. Потом кто-то решил, что /usr/local — недостаточно хорошее место для установки новых пакетов, поэтому надо добавить /opt. Я жду, когда появится /opt/local...

Конечно, за 30 лет терзаний, появлялись и пропадали некоторые интересные дистрибутиво-зависимые правила, как, например, «/tmp очищается при перезагрузке, но /usr/tmp — нет». При этом в Ubuntu /usr/tmp не существует, а в Gentoo /usr/tmp — это символическая ссылка на /var/tmp, который подчиняется своему правилу «не очищается при пререзагрузке». Да, это все предвосхитило tmpfs. Это было связано с тем, что в случае, когда корневая файловая система была доступна только для чтения, то и /usr была также доступна только для чтения, а /var была единственным местом, куда запись была разрешена. Корневая файловая система была вся защищена от записи, за исключением кусков /etc, которые иногда пытались перенести в /var, но чаще всего /etc просто делали символической ссылкой на /var/etc.

Бюрократии стандартов, вроде Linux Foundation и поглощенной ей Free Standards Group, радостно задокументировали все это, даже не пытаясь понять, почему это так сложилось. Ситуация «ОС Кена и Денниса перетекла в пользовательский раздел потому, что диски RK05 на PDP-11 были слишком малы» пронеслась со свистом над их головами.

Оригинал: http://lists.busybox.net/pipermail/busybox/2010-December/074114.html

Перевод: Jay

 

   
   

Login Form