Почему в иерархии файловых систем Linux нет README?

8

Иерархия файловой системы Linux ( FHS ) содержит много важных каталогов. Например, я только что обнаружил /sys/class/inputво время игры с настройками клавиатуры PS / 2.

Но все эти важные каталоги документированы в другом месте, поэтому man /sys/class/inputне работает, чтобы объяснить, что происходит в определенный момент.

Почему бы не разместить READMEфайлы в иерархии, чтобы людям было легче узнавать, что происходит на определенных уровнях, и играть с содержимым? Было бы действительно здорово, если бы устройства могли даже монтировать свои собственные README.

анатолий техтоник
источник
2
Возможно, потому что большинство людей не хотят изучать, что происходит на этих разных уровнях? Они просто хотят, чтобы они работали, чтобы они могли выполнять любые задачи, которые им нужны / которые они хотят делать. Кто-то должен будет написать все эти файлы README, и они добавят больше раздувания в файловую систему, уже перегруженную вещами (такими как большая часть / usr / share), которые большинство людей никогда не будут использовать.
jamesqf
14
@jamesqf, потому что большинство людей не хотят узнавать, что происходит на этих разных уровнях? Они просто хотят, чтобы они работали, чтобы они могли выполнять любые задачи, которые им нужны / которые они хотят делать. А что, если моя задача связана с файловой системой, как, кажется, ОП? Кроме того, вы встречали пользователя Linux? Мы же хотим узнать. Это ужасный аргумент.
Какако
1
Фундаментальное различие между Linux и Windows / Mac, если вы не заметили, состоит в том, что Linux знает, что вы покинули утробу, уже зная все. Следовательно, README будет излишним.
user541686
1
@kaqqao: Ну, я пользователь Linux, и я был одним из них с тех пор, как там был Linux. А до этого пользователь Unix, поскольку он работал на PDP-11 моей школы. Меня не особо волнует, как работают файловые системы, я просто (на данный момент) хочу, чтобы мой код сейсмической томографии работал. Я также не забочусь о / sys / class / input, пока моя клавиатура и трекбол работают. Для небольшого меньшинства, интересующегося этими вещами, есть удобный инструмент под названием Google, доступный из большинства веб-браузеров :-)
jamesqf
2
Там же man hier.
el.pescado

Ответы:

30

Если использовать ваш пример: /sys/не содержит «настоящих» файлов, но полностью предоставляется ядром. Вы хотите, чтобы все README стали частью ядра? Вы, вероятно, нет.

Документация находится в /usr/share/doc. Который содержит нормальные файлы на вашем жестком диске. Некоторая документация о /sysи /procнаходится в исходном коде ядра, то есть в /usr/src/linux/Documentation(если вы установили исходный код ядра и создали символическую ссылку для вашего текущего ядра).

dirkt
источник
10
sysfs и procfs - это полностью виртуальные файловые системы, не имеющие резервного хранилища. Все там синтезируется ядром на лету. Если README не хранятся в памяти, откуда еще они могут прийти?
Йорг Миттаг
13
@ JörgWMittag: Очевидно, ядро ​​может синтезировать символические ссылки на /use/share/doc.
MSalters
11
Ядро уже является большим и сложным программным обеспечением, и «облегчить процесс обучения» не входит в число основных целей их разработчиков. Это не что трудно пойти /usr/share/docвместо.
Федерико Полони
9
@MSalters: это означало бы, что ядро ​​должно либо: а) сканировать всю файловую систему, чтобы найти эти файлы и создать символические ссылки на них, б) иметь множество параметров конфигурации, чтобы сообщить ядру, где находятся эти файлы, чтобы оно могло создать символические ссылки на них, или c) должен прописать расположение этих файлов для сопровождающих дистрибутивов (что нарушило бы принцип № 1 Линуса о том, что политика принадлежит пользовательскому пространству, только механизм принадлежит ядру). Кроме того, как вы убедитесь, что файлы соответствуют текущей версии ядра? Как насчет дистрибутивов, которые имеют свои…
Йорг Миттаг
7
@FedericoPoloni: FHS обязателен только для дистрибутивов Linux, соответствующих LSB. Большинство не делают. В частности, существует ряд дистрибутивов, которые были специально созданы для того, чтобы очистить (что они воспринимают) исторический раскол, который во многих случаях явно включает FHS.
Йорг Миттаг
14

Потому что Unix и Linux имеют многолетнюю традицию документирования manстраницами (а в системах GNU - infoфайлами ...). Смотрите man (1) , man (7) , man-страницы (7) . Кстати, manкоманда и страницы не являются обязательными (и вы не будете устанавливать их в каждой системе Unix).

Иерархия файловой системы описана в hier (7) .

Он определяется стандартом иерархии файловой системы, доступным по адресу https://wiki.linuxfoundation.org/lsb/fhs.

Некоторые файловые системы, в частности /proc/(см. Proc (5) ) и /sys/(см. Sysfs (5) ), являются псевдофильными системами, предоставляемыми кодом ядра. Вы не хотите раздувать ядро ​​дополнительным кодом, создающим такие README-s (который бесполезен для подавляющего большинства пользователей). Даже файл конфигурации ядра доступен только по желанию,/proc/config.gz который часто отключается в большинстве конфигураций ядра. И многие системы Linux являются встроенными системами (например, ваш смартфон, ваше интеллектуальное устройство или IoT-устройство, ваш RaspberryPI), где ресурсы достаточно напуганы, чтобы не тратить их впустую.

В частности /sys/, в основном полезна для сисадминов и разработчиков , пишущих утилиты низкого уровня, и оба должны быть в состоянии найти документацию надлежащим образом .

Почему бы не поместить READMEфайлы в иерархию, чтобы людям было легче узнать, что происходит

Если вы действительно хотите такие READMEs, напишите свой собственный загружаемый модуль ядра, предоставив их, или настройте некоторые unionfs для их предоставления. Я не думаю, что это стоит затраченных усилий (и использование unionfs /sysможет замедлить всю вашу систему).

Помните, что код ядра потребляет оперативную память (он никогда не выгружается и находится в физической памяти, а не в виртуальной памяти), даже если он не используется. Так что имеет смысл избегать вздутия.

Василий Старынкевич
источник
Так что я могу написать пакет, который документирует все эти пути, не затрагивая ядро ​​или не раздувая его?
анатолий техтоник
1
Можно, но используя UnionFS на /sysзамедлит вашу систему. Я не думаю, что стоит так терять время. Жизнь коротка ... И вы потратите на это больше времени, чем на чтение документации
Василий Старинкевич