Konvention: Laufwerkskennzeichnung, Dateipfade



  • Da PrettyOS nun mit mehreren Speichermedien umgehen kann (nagut, 2 Diskettenlaufwerke konnte es schon vorher, wenn auch nur eines genutzt werden konnte. Das können wir jetzt aber auch ändern), ist es nötig, eine Konvention für Pfade festzulegen. Dabei sind wir im IRC zu dem Schluss gekommen, das es 3 Varianten gibt:

    • "Buchstaben-Methode": A:/, B:/...
    • "Zahlen-Methode": 0:/ 1:/ ...
    • Unix-Methode

    Die Buchstaben-Methode ist, insbesondere bei Windows wegen der Freilassung von Buchstaben (A, 😎 für bestimmte Geräte, die heute ohnehin nur noch selten verwendet werden, und wegen der Beschränkung auf 24 Laufwerke obsolet.
    Vorteile bietet hierbei die Zahlen-Methode, weil sie mehr als 24 verschiedene Laufwerke ermöglicht. (Verschieden je Integer-Typ, aber mindestens 256). Geschickt angewendet (s.u.) hat sie keinen der Nachteile der Windows-Methode.
    Die Unix-Methode wird von einigen als vorteilhaft gesehen, wo Laufwerke an "beliebige" Stellen gemountet werden können. Nachteilig ist jedoch, das die Struktur verkompliziert wird. Zudem wird nach meiner Meinung die Struktur auch unlogisch, wenn es möglich ist, in einen Ordner ein ganzes Laufwerk zu mounten. Es verwischt die durch Partitionierung und physische Trennung oft gewünschte Trennung, wenn sich alles wie ein Laufwerk anfühlt.

    Ich bevorzuge die Zahlen-Methode, darum werde ich diese näher erläutern, vor allem, da mir kein OS bekannt ist, das sie umsetzt und somit das praktische Beispiel fehlt.

    Jedes Gerät, bzw. jede Partition ist eindeutig identifizierbar.
    Geräte haben Merkmale, wie eine Seriennummer, anhand derer man sie Unterscheiden kann. In zweiter Instanz lassen sich alle Partitionen unterscheiden. Manche Dateisysteme wie Ext bieten hierzu IDs an, andere müssen wir anhand ihrer Reihenfolge, in der sie auf der Platte liegen, identifizieren.

    Um alle Geräte wiederzuerkennen, müssen wir die Informationen (Baumstruktur) in Dateien speichern, die das OS in seinem Stammverzeichnis bereithält. Das kann so aussehen (Kommentare hier sind mit # begonnen, in PrettyOS werden die nicht enthalten sein, weil PrettyOS die Datei verwaltet). Diese ist anfangs leer:

    Wenn nun an PrettyOS ein Gerät angeschlossen wird, sucht es, ob dieses bekannt ist. Wenn nicht, wird es hinzugefügt. Z.B. ein USB-Massenspeichergerät:

    USB_MSD|Erkennungs-ID
    

    Dann werden die Partitionen gesucht und eingefügt:

    USB_MSD|Erkennungs-ID
        1: Order|0 # Null ist reserviert. Nummern werden fortlaufend vergeben. Erkennung erfolgt nach Reihenfolge, 1: liegt auf Pos. 0
        2: Order|1 # Alternativ könnte dort statt Order auch eine andere Methode (ID o.ä.) stehen
    

    Wenn PrettyOS bei einem späteren Boot-Vorgang auf eine bekannte Partition stößt, dann wird die ID als Laufwerksnummer vergeben, die in dieser Textdatei festgelegt ist.

    Letzlich erinnert diese Datei an die Aufgaben der Windows-Registry, wie ehenkes bemerkte, als wir das gestern im IRC besprochen haben.

    Diese ganze Hexerei dient dazu, um zu verhindern, das der Zufall entscheidet, welchen Pfad ein Laufwerk bekommt, weil sonst sämtliche Pfade nach jedem Boot hinfällig werden könnten. Um ein Gerät zu löschen, d.h. die ID wieder freizugeben, kann man es einfach aus der Liste entfernen.

    Eine Sonderrolle nimmt Laufwerk 0: ein. Es ist das Systemlaufwerk, unter Windows C:. Es gibt aber einen Unterschied. Das Laufwerk, auf dem PrettyOS liegt, wird wie alle anderen in obiger Liste gespeichert, bekommt auch eine normale ID (also größer 0) zugewiesen. Es ist also sowohl unter dieser normalen ID, als auch unter 0: ansprechbar. Der Vorteil liegt auf der Hand: Man kann PrettyOS problemlos auf eine andere Partition schieben, aber alle Links bleiben lebendig. Sowohl die, die sich auf PrettyOS-Systemdateien beziehen, die verschoben sind und via 0: adressiert werden, als auch die Dateien, die nicht zum OS gehören und zurückgeblieben sind. Also wird die 0: nur für Links auf Systemdateien genutzt.

    Ein anderes Schlachtfeld ist der Pfadseparator. Ich plädiere aufgrund der größeren Verbreitung für '/'. Zudem kommt Windows ja selbst mit Einschränkungen auch mit '/' klar.

    Seid ihr Einverstanden mit der Methode? Seht ihr Denkfehler? Sonstige Anmerkungen/Vorschläge?

    mfg
    Mr. X



  • Mr X schrieb:

    ... Unix-Methode ...

    Ich würde es nicht als Methode bezeichnen. Das ist eher ein Teil der Abstraktion unter Unix, dass alles eine Datei ist. Man kann ja nicht nur Festplattenpartitionen einbinden, sondern auch Dateien, weil eben alles eine Datei ist. D.h. man nimmt eine Datei und bindet sie im System ein. Man kann sie mit einem beliebigen Dateisystem formatieren und ins Dateisystem einbinden.
    Genauso kann man auf Partitionen wie auf Dateien zugreifen. Oder auf USB-Sticks. Man kann ein USB Stick 1:1 auslesen, sozusagen ein Image erstellen (und dieses Image dann später im Dateisystem einbinden). Dazu liest man "einfach" die Gerätedatei des USB-Sticks. Und wenn ein USB Stick mehrere Partitionen hat, kann man auch, wenn man möchte, nur von der einen Partition ein 1:1 Image auslesen.
    Die root Partition hat eine besondere Bedeutung, weil sie der Beginn des "Übels" ist. Sie muss beim Booten dem Kernel mitgeteilt werden... und das kann im Prinzip eine dafür vorbereitete Partition auf der SD-Karte, USB-Stick oder Festplatte sein. Auf Grund der Abstraktion ist es dem Kernel egal, wo sich die Root-Partition befindet, der entsprechende Treiber muss halt eine Gerätedatei zur Verfügung stellen...

    PS: Dennis Ritchie soll einmal gesagt haben:

    UNIX is simple and coherent, but it takes a genius (or at any rate a programmer) to understand and appreciate the simplicity.



  • Ich würde es nicht als Methode bezeichnen.

    Es ist eine Methode, wie man Partitionen einbindet und benennt.

    Man kann ja nicht nur Festplattenpartitionen einbinden, sondern auch Dateien, weil eben alles eine Datei ist. D.h. man nimmt eine Datei und bindet sie im System ein. Man kann sie mit einem beliebigen Dateisystem formatieren und ins Dateisystem einbinden.

    Das wäre mit der Zahlen-Methode auch möglich, sogar mit Wiederfindung des Images. Man muss lediglich den Funktionsumfang der o.g. Liste erweitern um eine Sektion, in der Pfade zu Images aufgeführt werden, die PrettyOS dann automatisch einbindet. Die "Ersteinbindung" kann dann ja mit einer Eingabe in der Shell erfolgen (z.B. "mount 1:/FloppyImage.bin").

    Die root Partition hat eine besondere Bedeutung, weil sie der Beginn des "Übels" ist. Sie muss beim Booten dem Kernel mitgeteilt werden... und das kann im Prinzip eine dafür vorbereitete Partition auf der SD-Karte, USB-Stick oder Festplatte sein. Auf Grund der Abstraktion ist es dem Kernel egal, wo sich die Root-Partition befindet

    Die 0:/ schafft die gleiche Abstraktion. Dem OS ists egal, auf welcher Partition es liegt, Hauptsache seine Systemdateien sind beieinander. Alle Pfade bleiben gültig.


  • Mod

    Wir haben ein Virtuelles Filesystem (VFS) bereits eingebunden in PrettyOS, das bis jetzt nur die RAM-Disk als 'dev' einbindet:

    fs.h:

    #define FS_FILE        0x01
    #define FS_DIRECTORY   0x02
    #define FS_CHARDEVICE  0x03
    #define FS_BLOCKDEVICE 0x04
    #define FS_PIPE        0x05
    #define FS_SYMLINK     0x06
    #define FS_MOUNTPOINT  0x08
    

    Das ist die klassische Methode "Alles ist ein File, und wenn es kein File ist, dann ist es ein Prozess" (UNIX), cf. http://www.tu-chemnitz.de/urz/kurse/unterlagen/linuxdevices.html



  • Um die Menschenverständlichkeit zu erhöhen, haben wir grad den Vorschlag diskutiert, die Namen der Partitionen als Alternativnamen nutzbar zu machen.

    D.h. wenn die Partion "Spiele001" die ID 8 hat, ist folgendes Äquivalent:

    8:/
    Spiele001:/



  • Vielleicht besteht noch die Möglichkeit mit symbolischen Links, bzw. Verknüpfungen zu arbeiten? Ich meine damit eine "Komfortfunktion" um Laufwerke einen beliebigen Namen zu verpassen?!



  • anubis2k5 schrieb:

    Vielleicht besteht noch die Möglichkeit mit symbolischen Links, bzw. Verknüpfungen zu arbeiten? Ich meine damit eine "Komfortfunktion" um Laufwerke einen beliebigen Namen zu verpassen?!

    Dem stimme ich zu. Symbolische Links zu nutzen ist eines der Dinge, die mir an der Linux/ Unix Struktur gefällt. Erst seit neuesem, bzw. seit NTFS Datei Systemen, nutzt Windows das auch...



  • anubis2k5 schrieb:

    Vielleicht besteht noch die Möglichkeit mit symbolischen Links, bzw. Verknüpfungen zu arbeiten? Ich meine damit eine "Komfortfunktion" um Laufwerke einen beliebigen Namen zu verpassen?!

    Verknüpfungen sind natürlich möglich. Eine Partition in einer anderen einzubinden halte ich allerdings nicht für sinnvoll. Stattdessen sind aber schlichte Verknüpfungen nach z.B. 1:/ mit beliebigem Namen nicht ausgeschlossen. Das hat ja eine ähnliche Wirkung, wenn das OS richtig mit Verknüpfungen umgeht, d.h. sie bei der Benutzung in Pfaden durch das Element ersetzt, das dahinter steht. Ich gehe davon aus, das PrettyOS so schlau werden wird 🙂



  • Du kannst auch die Buchstabenmehtode verweden: Nach Z kommt halt AA...



  • Das ist aber weniger logisch in meinen Augen. Und einen Buchstaben wie 0 gibts nicht. Würde man A als 0 nehmen, dann würde das Windows-Nutzer verwirren, weil dort A für Floppys gedacht ist.

    Aber grundsätzlich hast Du natürlich recht, auch mit Buchstaben kann man numerieren.



  • Ich sehe bei einer reinen Nummerierung einfach das Problem das es irgendwann sehr unübersichtlich werden kann. Ich weiß jetzt nicht wie ihr das mit den Partiotionen machen wollt aber wie wärs denn dann mit sowas:

    Festplatte 1 Partition 1 ist 0A;
    Festplatte 1 Partition 5 ist 0E;
    Festplatte 15 Partition 2 ist 14B;

    Das erhöht meiner Meinung nach die übersichtlichkeit enorm...

    Grüße
    Nils



  • Das könnte man durchaus überlegen. Gute Idee.

    Ich würde sie aber etwas modifizieren:

    0:/ = Systempartition. Einstellig. Immer 0.

    1:5:/ = Medium 1, Partition 5.
    14:1:/ = Medium 14, Partition 1.
    3:/ = Medium 3, Partition 1. Als Verkürzung für Medien mit nur einer Partition. Wenn also keine Partition angegeben ist, nimmt das OS die erste.

    Jetzt gibts ja noch die verschiedenen Slots. Also z.B. die verschiedenen USB-Ports.
    Die könnte man vlt so ansprechen:
    A:1:/ = Slot A, Partition 1. (Unterscheidung des Mediums entfällt, ein Slot kann ja nur ein Medium enthalten und dieses variiert)

    Die Doppelpunkte signalisieren den Wechsel der "Ebene" (Speichermedium - Partition - Filestruktur). Trennt besser als Zahl-Buchstabe.

    mfg
    Mr X



  • Ja wobei man dazu dann mal sagen muss das bei QWERTY (und auch bei QWERTZ) der Doppelpunkt erst auf der zweiten Ebene der Tastur ist (shift erforderlich).
    Wieso musst du die Slots einzeln betrachtet? Ist es wichtig ob ein Speichermedium per USB, IDE oder Sata mit dem Computer verbunden ist? Wenn das unterschieden werden muss würde ich da aber auch Zahlen nehmen; damit es einheitlich ist.

    Eine andere Sache die mich stört wieso willst du festlegen dass, das System immer 0 hat? Es wäre doch viel flexibler wenn man dem Bootloader einfach eine Nummer mitgeben könnte. Evtl. möchte ich das OS ja nicht auf der ersten Partition oder der ersten Platte haben? Evtl. möchte ich das System ja (aus backup gründen oder so) auf eine andere Platte kopiern und dann mal von dort starten...

    Grüße
    Nils



  • Kann nicht der Systemdatenträger dann mit 1 anfangen, obwohl er "besonders" ist? Partitionen fangen ja auch nach deinem System mit 1 an, obwohl die erste "besonders" ist... 😃

    Cuervo



  • Die Slots kann man einzeln betrachten. Sozusagen als zweite Wahlmöglichkeit. Kann hilfreich sein für ein Programm, das Diskette A nach Diskette B kopieren soll.
    Es ist eine Alternative und erweitert die Möglichkeiten.

    Wenn das unterschieden werden muss würde ich da aber auch Zahlen nehmen; damit es einheitlich ist

    Eben das geht nicht, wenn man die Syntax kurz halten will:
    ist 1:1:/ nun Slot 1 oder Medium 1 Partition 1?

    Kann nicht der Systemdatenträger dann mit 1 anfangen

    Die Null ist wesentlich markanter. Normale Menschen zählen von 1 an. Eben deshalb bietet sich die 0 an, denn sie wird nicht normal mitgezählt, sondern erhält eine besondere Stellung. Sonst müsste man meinen, Partition 1 sei irgendwas x-beliebiges. Sie wird aber anders "berechnet". Nicht danach, welches Gerät es ist, sonder danach, was drauf ist.

    Ja wobei man dazu dann mal sagen muss das bei QWERTY (und auch bei QWERTZ) der Doppelpunkt erst auf der zweiten Ebene der Tastur ist (shift erforderlich).

    Einfache Punkte vlt als Alternative? Doppelpunkte haben sich aber unter Windows etabliert. Oder man sagt: Egal was für ein Trenner, hauptsache kein Buchstabe, keine Zahl und kein / (Weil das der Pfadseparator ist).



  • Eine andere Sache die mich stört wieso willst du festlegen dass, das System immer 0 hat?

    Gerade das macht es doch so flexibel...
    Die Partition, auf der PrettyOS liegt, bekommt eine normale Nummer und die 0. Wenn man auf Systemdateien zugreifen will: Pfad mit 0, sonst Pfad mit normaler ID. Dadurch kann man PrettyOS einfach auf ein anderes Medium kopieren und es bleibt funktionsfähig.



  • @Slots: Ich weiß nicht so recht ob das jetzt wirklich nötigt ist aber ok.

    @Trennzeichen: Ja und ich mag es bei Windows auch nicht. Ich schlage mal den \ als Seperator vor der liegt auf QWERTY sehr schön. Aber leider auf QWERTZ ziemlich blöd, zumindest böder als der :

    Beim Rest gebe ich mich geschlagen.



  • 1\1\/ttt.elf sieht ziemlich sch**** aus und kommt für mich wegen der Verwechslungsgefahr mit "/" nicht in Frage. Vor allem, da er unter Windows standardmäßig Pfade separiert.

    Zeichen auf der 2. Ebene sind auch eigentlich leicht zu erreichen. Man schreibt doch ständig Großbuchstaben.

    Lösung wäre, wie schon gesagt, auch andere Zeichen zu erlauben.
    vlt "-" und ":" als Ebenenseparator
    und "/" und "\" und "|" als Pfadseparator?

    Der beste Pfadseparator wäre m.E. der senkrechte Strich |, nur der ist richtig schlecht erreichbar, zumindest auf meiner Tastatur.

    mfg
    Mr X



  • Man sollte bei diesen Möglichkeiten die Psychologischen Aspekte des Menschen beachten. Der Mensch ist von Natur aus faul und wird sich so nur schwer an neue Konventionen gewöhnen können. Statt dessen erwartet er ein möglichst einfaches und - hier kommt der Knackpunkt - ein bekanntes Procedere zum Umgang mit Partitionen, etc. Ich schlage daher einfach mal vor "altbekanntes" unter die Lupe zu nehmen und evtl. Verbesserungspotential auszunutzen.

    Weiter sehe ich eine Möglichkeit in einer festgelegten Struktur die Partitionen anzusprechen und den Benutzer mittels eines Konfigurationsprogramms die Partitionen frei zu benennen. PrettyOS kreift jedoch weiter auf die festgelegten Strukturen zu und der Anwender sieht die "Verknüpfungsbezeichnungen".

    Einer Weitere möglichkeit: Ich würde es einfacher finden, wenn man anhand der Partitionsbezeichnung auch den Typ erkennen kann. Also Beispielsweise hd1,hd2,hd3,.. für Harddisks, usb1, usb2,... für USB Laufwerke und so weiter. Diese möglichen Abstraktionen zu den dazugehörigen Laufwerken erleichtert vielleicht auch das erlernen der neuen Bezeichnungen.

    MfG



  • Einer Weitere möglichkeit: Ich würde es einfacher finden, wenn man anhand der Partitionsbezeichnung auch den Typ erkennen kann. Also Beispielsweise hd1,hd2,hd3,.. für Harddisks, usb1, usb2,... für USB Laufwerke und so weiter. Diese möglichen Abstraktionen zu den dazugehörigen Laufwerken erleichtert vielleicht auch das erlernen der neuen Bezeichnungen.

    Die Führung eigener Nummerierungen pro Datenträgertyp halte ich für unpraktikabel, weil man sich für x-tausend verschiedene Typen Kürzel ausdenken muss und dies immer wieder tun muss, wenn es neue Typen gibt. Zudem bergen solche Kürzel Verwechselungsgefahr. Und der Kernel sollte nicht Kürzel parsen. Sowas könnte man in die Userlib einbauen.
    Zudem würde sich die Tipparbeit erhöhen, weil die Namen länger würden.
    Abgesehen davon, die Bezeichnung wäre unflexibler. Die Trennung in Medium und Slot fehlt. Bei meinem Vorschlag würde deutlich werden, das A: ein Slot, während 1: ein Speichermedium ist. In deinem System würde das ja vlt so aussehen: USBS1:/ oder USBM1:/ Dann müsste man erst überlegen, ists ein Gerät oder ein Slot?

    Man sollte bei diesen Möglichkeiten die Psychologischen Aspekte des Menschen beachten. Der Mensch ist von Natur aus faul und wird sich so nur schwer an neue Konventionen gewöhnen können. Statt dessen erwartet er ein möglichst einfaches und - hier kommt der Knackpunkt - ein bekanntes Procedere zum Umgang mit Partitionen, etc. Ich schlage daher einfach mal vor "altbekanntes" unter die Lupe zu nehmen und evtl. Verbesserungspotential auszunutzen.

    Wer Unix nutzen möchte, sollte Unix nehmen, und nicht irgendein POSIX-konformes System (Was PrettyOS ja auch nicht ist). Wer Windows nutzen möchte, möge Windows nehmen und nicht irgendeinen Verschnitt davon.
    Wenn man beharrlich an alten Systemen festhält und sich nicht auf neues einlässt, dann kann man zumindest sicher sein, das das alte System lange Bestand hat. Aber es wird auch keinen Fortschritt geben.
    Keine Frage, ein System künstlich zu erschweren, ist Quatsch. Darum sollten wir ja auch als Pfadseparatoren und Ebenenseparatoren bekannte Zeichen erlauben (d.h. "/", "\" sowie ":").
    Aber wenn Neuerungen einen Umbruch mit sich bringen, dann wird man sich umstellen müssen. Die Neuerungen deswegen zu "unterdrücken" halte ich für falsch.

    ein bekanntes Procedere zum Umgang mit Partitionen,

    Nunja, es gibt ja auch eine gewisse Ähnlichkeit zu Windows. Ist C:\ttt.elf so anders als 0:\ttt.elf? (hier kann ja z.B. die 0 verwendet werden, da C ja immer das Systemlaufwerk ist). Durch Verwendung von bekannten Separatoren wird die Ähnlichkeit zudem hervorgehoben. Wenn man aber die Syntax soweit verbiegt, das sie sich sehr ähnlich sehen, besteht verwechselungsgefahr, insbesondere wenn dann zwei gleich aussehende Pfade etwas unterschiedliches bewirken würden.


Log in to reply