
Можно ли изменить структуру каталогов Unix/Linux по умолчанию? Я имею в виду конфигурацию и без необходимости менять ядро. Или если ядро нужно редактировать, насколько это сложная задача? Является ли структура каталогов по умолчанию (все эти /usr
, /bin
, /etc
каталоги) жестко закодированной в ядре?
Мне нужно иметь один корневой ( /
) каталог, где каждый пользователь сможет свободно создавать свои собственные файлы/каталоги, и один /Linux
каталог, где будут находиться все файлы ОС (вероятно, в исходной структуре), включая все файлы конфигурации. Каталога "Home" не должно быть вообще, а все файлы конфигурации должны быть одинаковыми для всех пользователей, и их может редактировать только системный администратор.
решение1
Да, это возможно. Но для достижения желаемого требуется приложить немало усилий.
Подробности можно узнать здесьГобо Линукспроект.
GoboLinux — это бесплатная операционная система с открытым исходным кодом, наиболее выдающейся особенностью которой является реорганизация традиционной файловой системы Linux. Вместо того, чтобы следовать стандарту иерархии файловой системы, как в большинстве Unix-подобных систем, каждая программа в системе GoboLinux имеет свое собственное дерево подкаталогов, где можно найти все ее файлы (включая настройки, специфичные для этой программы). Таким образом, программа «Foo» имеет все свои специфические файлы и библиотеки в /Programs/Foo. По словам разработчиков GoboLinux, это приводит к более чистой системе.
решение2
Запрограммирована ли структура каталогов по умолчанию (все эти каталоги /usr, /bin, /etc) жестко в ядре?
Нет, большая часть этого не имеет особого значения для ядра. Однако оно заполняет файловые системы, смонтированные в стандартизированных местах, таких как /proc
и /dev
.
Можно ли изменить структуру каталогов Unix/Linux по умолчанию?
Абсолютно нет. Причина естьстандарт для корневой файловой системыпотому что эти каталоги имеют определенную цель, и они идентифицируются по пути. На самом деле не имеет особого смысла говорить: "Ну ладно, я бы предпочел, чтобы мой /etc
каталог назывался /masterconf
". Если вы хотите получить доступ к тому, что все и вся считают /etc
, /masterconf
вы можете добавить символическую ссылку ln -s /etc /masterconf
, но оставьте /etc
, поскольку практически все и вся будут искать ее.
По аналогии, кто-то может сказать: «Я хотел бы переименовать все стандартные утилиты — mkdir
, ls
, cd
, и т. д. — так, чтобы они существовали только под теми именами, которые я им дал». Опять же, вы можете создать на них символические ссылки, но для создания стандарта, который позволяет системе настраивать имена для стандартных утилит вместо обычных, будет:
- Гораздо сложнее.
- Почти наверняка это добавит накладных расходов, поскольку установленным утилитам придется постоянно выполнять какой-то поиск, чтобы разобраться в вашей новой схеме именования.
- Совершенно бессмысленно для 99,9999%+ пользователей.
Пункты 1 и 2 являются существенными недостатками, которые не могут быть оправданы в свете 3, поэтому такой системы нет. Аналогично WRT переименовывает части стандартной файловой системы.
Мне нужно иметь...
Опять же, вы можете делать все, что захотите, с символическими или жесткими ссылками (см. man ln
), и тогда вы можете использовать их, если вам они больше нравятся. Но не нарушайте стандарт файловой системы,это не является необязательным.
решение3
В целом структура каталогов не навязывается ядром Linux, она навязывается стандартами файловой системы, такими как этот:Стандарт иерархии файловой системы.Статья в Википедии с тем же названиемтакже неплохо объясняет это.
На ваш вопрос о перемещении/изменении. Я бы сказал, что это крайне не рекомендуется, хотя и возможно, так же, как в системе Windows у них есть стандартные расположения, такие как:
- C:\Windows
- C:\Пользователи и настройки
- C:\Программные файлы
- и т. д.
Сделать системы похожими с точки зрения упаковки имеет смысл как для разработчиков программного обеспечения, так и для пользователей этих систем.
решение4
Многие дистрибутивы в зависимости от обстоятельств изменили структуру каталогов и даже свои названия. Microtic — это устройство, работающее на базе GNU/Linux, но его ядро — просто Linux.
Если вы хотите это сделать, вам следует выполнить следующие шаги:
- изменить код ядра
- измените код вашего процесса загрузки или напишите его самостоятельно. например
upstart
- измените или реализуйте каталог уровней запуска или, если вы используете UNIX в соответствии с файлами rc, измените их.
- Оставьте управление пакетами или каталог использования каждого программного обеспечения. Это очень важно. Не забудьте об этом.
- наконец, измените структуру каталогов.