mount cdrom

Post Reply
Message
Author
Ghost

mount cdrom

#1 Post by Ghost »

Bug oder Eigenschaft ?


Aufgabe ist eine CDROM zu mounten!

xterm starten


[ghost@h123 mnt]$ cd /mnt/cdrom2
[ghost@h123 cdrom2]$ ls
[ghost@h123 cdrom2]$ mount /mnt/cdrom2
[ghost@h123 cdrom2]$ ls -l
insgesamt 0
[ghost@h123 cdrom2]$

Wiso ist die CD leer ?

[ghost@h123 cdrom2]$ mount
...
/dev/scsi/host0/bus0/target1/lun0/cd on /mnt/cdrom2 type iso9660 (ro,noexec,nosuid,nodev,iocharset=iso8859-15,user=ghost)

Ist doch alles ok oder ?

Start ein neues Terminal !

>xterm

ls -l /mnt/cdrom2
Namenlos 1
insgesamt 229
-r--r--r-- 1 root root 18387 Jan 10 2000 COPYING
-r--r--r-- 1 root root 64591 Jan 10 2000 indexfiles.txt
-r--r--r-- 1 root root 36412 Jan 10 2000 indexsum.txt
-r--r--r-- 1 root root 1408 Jan 10 2000 RPM-PGP-KEYS
dr-xr-xr-x 2 root root 112640 Jan 10 2000 SRPMS/
[ghost@h123 ghost]$

Wie ist doch da ?

Ist das ein Bug oder was ??

Gruß ghost

Jochen

Re: mount cdrom

#2 Post by Jochen »

Nope, Feature. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Wenn Du mit "cd" ins das Verzeichnis gehst, hat dein Prozess dieses Verzeichnis sozusagen "offen". Wenn Du jetzt dort, wo Du stehst, etwas anderes hinmountest, hat Dein Prozess aber immer noch das "alte" Verzeichnis offen - das mit dem Inhalt von vor dem Mounten.

Jeder Prozess, der nach dem Mounten in das Verzeichnis geht (oder auch wenn Du ein "cd ..; cd -" eintippst und wieder frisch in das Verzeichnis wechselst), bekommt statt des eigentlichen Verzeichnisinhaltes den Inhalt des Root-Verzeichnisses des dort gemouteten Dateisystems zu sehen.

OK?

Jochen

ghost

Re: mount cdrom

#3 Post by ghost »

He genauer verstehe ich nicht was du damit meinst!

Gruß ghost

Jochen

Re: mount cdrom

#4 Post by Jochen »

Ok, dann etwas tiefer ansetzen...

Unter UNIX wird eine Datei durch eine I-Node bestimmt. Diese speichert den Typ der Datei, deren Rechte, Eigentümerschaft, Zeiststempel und nicht zuletzt die Folge der Datenblöcke, die den Inhalt der Datei ausmachen. I-Nodes werden durchnummeriert und hane innerhalb eines Dateisystems immer eindeutige Nummern. In der Kombination mit dem Dateisystem ist eine Datei so eindeutog identifiziert. Aber eines findet man in einer I-Node <b>nicht</b>: Den Namen der Datei! Dateinamen werden in Verzeichnissen verwaltet, die unter UNIX nur eine spezielle Art von Datei sind. Man kann sie sich als eine Tabelle vorstellen:<pre><b>Name : I-Node-Nummer</b>
foo : 836
bar : 9521
baz : 15021</pre>
Ein "ls" in diesem Verzeichnis listet Dir einfach die linke Spalte auf; bei "ls -l" muss ls auch in die I-Nodes mit den in der rechten Spalte angegebenen Nummern schauen und deren Eigenschaften mit ausgeben. Klar soweit?

Jetzt zu Deinem Problem.

Jeder Prozess hat als eine seiner Eigenschaften das "current directory" oder "working directory". Das setzt Du mit dem cd-Befehl in der Shell. Da ein Verzeichnis auch nur eine Datei (speziellen Typs) ist, wird als Arbeitsverzeichnis auch nur die I-Node-Nummer dieses Verzeichnisses vermerkt. Also in Deinem konkreten Beispiel: Das Verzeichnis /mnt/cdrom2 hat die I-Node-Nummer 123; deine Shell erhält diese I-Node-Nummer als Arbeitsverzeichnis.

Jetzt wird gemountet. Ein Mounten weist das System an, dass, wenn jemand in das Verzeichnis, dass als Mountpunkt dient, wechselt, <b>nicht</b> die "eigentliche" I-Node-Nummer des Verzeichnisses als Arbeitsverzeichnis zu setzen ist, sondern die I-Node des Root-Verzeichnisses des dort gemouteten Dateisystems! In Deinem konkreten Beispiel: Wenn jemand nach /mnt/cdrom2 wechselt, kriegt er nicht mehr die I-Node-Nummer 123 als Arbeitsverzeichnis, sondern die I-Node-Nummer 10 des Dateisystems auf der CD-ROM.

Dein erster Prozess hat aber "damals" (vor dem Mounten) die I-Node-Nummer 123 des ursprünglichen Dateisystems als Arbeitsverzeichnis bekommen. Das ändert sich durch das Mounten nicht! Ein "ls" zeigt Dir also immer noch den alten Inhalt!

Der zweite Prozess (oder auch der erste, wenn Du ein "cd / ; cd /mnt/cdrom2" machst) bekommt aber wie oben beschrieben (da es nach dem mount-Kommando passiert) die I-Node-Nummer 10 auf der CD als Arbeitsverzeichnis und zeigt damit den Inhalt auf der CD bei einem "ls" an.

Jetzt klarer? (Für Profis: Ja, das ist etwas vereinfacht, aber im Prinzip korrekt.)

Jochen

Post Reply