Warum gibt es in der Linux-Dateisystemhierarchie keine READMEs?

8

Die Linux-Dateisystemhierarchie ( FHS ) enthält viele wichtige Verzeichnisse. Zum Beispiel habe ich gerade /sys/class/inputbeim Spielen mit meinen PS / 2-Tastatureinstellungen entdeckt.

Aber all diese wichtigen Verzeichnisse sind an anderer Stelle dokumentiert, sodass man /sys/class/inputnicht erklärt werden kann, was an einem bestimmten Punkt passiert.

Warum nicht READMEDateien in die Hierarchie einfügen, damit die Benutzer leichter lernen können, was auf bestimmten Ebenen vor sich geht, und mit den Inhalten spielen können? Es wäre wirklich großartig, wenn Geräte sogar ihre eigenen READMEs montieren könnten .

anatoly techtonik
quelle
2
Vielleicht, weil die meisten Menschen nicht lernen wollen, was auf diesen verschiedenen Ebenen vor sich geht? Sie möchten nur, dass sie arbeiten, damit sie alle Aufgaben erledigen können, die sie benötigen / wollen. Jemand müsste all diese README-Dateien schreiben und einem Dateisystem, das bereits mit Dingen (wie viel von / usr / share) überladen ist, die die meisten Leute niemals verwenden werden, mehr Aufblähung hinzufügen.
Jamesqf
14
@jamesqf, weil die meisten Leute nicht lernen wollen, was auf diesen verschiedenen Ebenen los ist? Sie möchten nur, dass sie arbeiten, damit sie alle Aufgaben ausführen können, die sie benötigen / ausführen möchten. Und was ist, wenn meine Aufgabe mit dem Dateisystem zusammenhängt, wie es die OPs zu sein scheinen? Haben Sie auch einen Linux-Benutzer getroffen? Wir tun wollen lernen. Dies ist ein schreckliches Argument.
Kaqqao
1
Der grundlegende Unterschied zwischen Linux und Windows / Mac besteht darin, dass Linux weiß, dass Sie den Mutterleib verlassen haben und bereits alles wissen, falls Sie es nicht bemerkt haben. Daher wäre eine README überflüssig.
user541686
1
@kaqqao: Nun, ich bin ein Linux-Benutzer und war einer, seit es ein Linux gab. Und davor ein Benutzer von Unix, da es auf dem PDP-11 meiner Schule lief. Es ist mir egal, wie Dinge wie das Dateisystem funktionieren, ich möchte nur (im Moment) meinen seismischen Tomographie-Code zum Laufen bringen. Ich interessiere mich auch nicht für / sys / class / input, solange meine Tastatur und mein Trackball funktionieren. Für die kleine Minderheit, die sich für diese Dinge interessiert, gibt es ein praktisches Tool namens Google, auf das die meisten Webbrowser
zugreifen können
2
Es gibt man hier.
el.pescado

Antworten:

30

Um Ihr Beispiel zu verwenden: /sys/Enthält keine "echten" Dateien, sondern wird vollständig vom Kernel bereitgestellt. Möchten Sie, dass alle READMEs Teil des Kernels werden? Sie wahrscheinlich nicht.

Dokumentation ist in /usr/share/doc. Welches enthält normale Dateien auf Ihrer Festplatte. Einige Dokumentationen zu /sysund /procin der Kernelquelle, dh in /usr/src/linux/Documentation(wenn Sie die Kernelquelle installiert und den Symlink für Ihren aktuellen Kernel erstellt haben).

dirkt
quelle
10
sysfs und procfs sind vollständig virtuelle Dateisysteme ohne Sicherungsspeicher. Alles darin wird im laufenden Betrieb vom Kernel synthetisiert. Wenn die READMEs nicht im Speicher gespeichert sind, woher würden sie sonst kommen?
Jörg W Mittag
13
@ JörgWMittag: Offensichtlich könnte der Kernel Symlinks zu synthetisieren /use/share/doc.
MSalters
11
Der Kernel ist bereits eine große und komplizierte Software, und "das Lernen für die Menschen zu erleichtern" gehört nicht zu den Hauptzielen ihrer Entwickler. Es ist nicht so schwer, /usr/share/docstattdessen zu gehen .
Federico Poloni
9
@MSalters: Das würde bedeuten, dass der Kernel entweder a) das gesamte Dateisystem scannen muss, um diese Dateien zu finden und Symlinks zu ihnen zu erstellen, b) eine Vielzahl von Konfigurationsoptionen haben muss, um dem Kernel mitzuteilen, wo sich diese Dateien befinden, damit er dies kann Erstellen Sie Symlinks zu ihnen, oder c) muss den Verteilungsverwaltern die Speicherorte dieser Dateien vorschreiben (was gegen Linus 'Maxime Nr. 1 verstoßen würde, dass die Richtlinie in den Benutzerbereich gehört, nur der Mechanismus gehört in den Kernel). Wie stellen Sie außerdem sicher, dass die Dateien mit der aktuell ausgeführten Kernelversion übereinstimmen? Was ist mit Distributionen, die ihre…
Jörg W Mittag
7
@FedericoPoloni: Die FHS ist nur für Linux-Distributionen obligatorisch, die dem LSB entsprechen. Die meisten nicht. Insbesondere gibt es eine Reihe von Distributionen, die speziell gegründet wurden, um historische Kruft zu bereinigen (was sie als solche wahrnehmen), zu der in vielen Fällen ausdrücklich die FHS gehört.
Jörg W Mittag
14

Weil Unix und Linux eine jahrzehntelange Tradition in der Dokumentation mit manSeiten (und auf GNU-Systemen mit infoDateien ...) haben. Siehe Mann (1) , Mann (7) , Manpages (7) . Übrigens sind manBefehl und Seiten optional (und Sie werden sie nicht auf jedem Unix-System installieren).

Die Dateisystemhierarchie ist in hier (7) beschrieben .

Es wird durch den Dateisystem-Hierachiestandard definiert, der unter https://wiki.linuxfoundation.org/lsb/fhs verfügbar ist

Einige Dateisysteme, insbesondere /proc/(siehe proc (5) ) und /sys/(siehe sysfs (5) ), sind Pseudofile-Systeme, die vom Kernel-Code bereitgestellt werden. Sie möchten den Kernel nicht mit zusätzlichem Code aufblähen, der solche README-s erzeugt (was für die große Mehrheit der Benutzer nutzlos ist). Sogar die Konfigurationsdatei des Kernels ist nur optional verfügbar, da /proc/config.gzdiese in den meisten Kernelkonfigurationen häufig deaktiviert ist . Und viele Linux-Systeme sind eingebettete Systeme (z. B. Ihr Smartphone, Ihre Smart Appliance oder Ihr IoT-Gerät, Ihr RaspberryPI), bei denen die Ressourcen knapp genug sind, um eine Verschwendung zu vermeiden.

Dies /sys/ist vor allem für Systemadministratoren und Entwickler nützlich, die Dienstprogramme auf niedriger Ebene schreiben, und beide sollen in der Lage sein, die entsprechende Dokumentation zu finden.

Warum nicht READMEDateien in die Hierarchie einfügen, damit die Benutzer leichter lernen können, was los ist?

Wenn Sie solche READMEs wirklich wollen , schreiben Sie Ihr eigenes ladbares Kernelmodul, das sie bereitstellt, oder richten Sie einige unionfs ein , um sie bereitzustellen. Ich denke nicht, dass es die Mühe wert ist (und ein Gewerkschaftsmitglied /syswürde wahrscheinlich Ihr gesamtes System verlangsamen).

Denken Sie daran, dass der Kernel-Code RAM verbraucht (er wird nie ausgelagert und befindet sich im physischen Speicher, nicht im virtuellen Speicher), auch wenn er nicht verwendet wird. Es ist also sinnvoll, ein Aufblähen zu vermeiden.

Basile Starynkevitch
quelle
Also kann ich ein Paket schreiben, das alle diese Pfade dokumentiert, ohne den Kernel zu berühren oder ihn aufblähen zu lassen?
Anatoly Techtonik
1
Sie könnten, aber die Verwendung von unionfs on /syswürde Ihr System verlangsamen. Ich denke nicht, dass es sich lohnt, Ihre Zeit so zu verlieren. Das Leben ist kurz ... Und Sie werden mehr Zeit damit verbringen, als die Dokumentation zu lesen
Basile Starynkevitch