1. Einführung
Das -vermutlich- Allererste, was einem Umsteiger von Windows auf Linux auffällt,
ist das Fehlen der Laufwerksbuchstaben. Unter Linux gibt es keine
Festplatte C oder D mehr, sondern Festplatten werden als sogenannte
"Devices" angesprochen. Diese befinden sich als sogenannte
Block-Devices im /dev Verzeichnis und tragen Bezeichnungen
wie hda1, sdb2, etc. Dabei löst sich die Bezeichnung
wie folgt auf:
hd = Harddisk am IDE-Kanal. Ist veraltet, da heutzutage SATA verwendet.
sd = wird für SCSI- oder SATA-Festplatten verwendet.
a = Die erste gefundene Festplatte. Weitere Festplatten bekommen weitere Buchstaben des Alphabets, also b, c, d, usw.
1 = die erste, primäre Partition.
Folglich ist hda1 die erste, primäre Partition der als Master
gejumperten Platte am 1. IDE Port. hda2 die zweite primäre
Partition und hdb1 die erste primäre Partition der als Slave
gejumperten Platte am 1. IDE Port.
Während man zu IDE Zeiten die jeweilige angeschlossene Festplatte noch Anhand des Buchstabens identifizieren konnte, sieht das bei aktuellen Linux-Distributionen und SATA-Festplatten anders aus, da z.B. Debian die Festplatten dynamisch erkennt und diese Erkennung in der Reihenfolge schon mal variieren kann, da diese nicht fest vorgegeben ist. Sie hängt von mehreren Faktoren ab wie z.B. die Geschwindigkeit der Initialisierung, Firmware oder BIOS-Einstellungen oder auch die Anzahl der angeschlossenen Geräte. Das bedeutet, hat man mehrere Festplatten kann es gut sein, daß die erste angeschlossene Festplatte (an SATA-0) sda1 bekommt, aber nach dem nächsten Neustart sdb1 oder einen anderen Buchstaben bekommt. Daher werden die Festplatten heutzutage auch nicht mehr über das Device gemountet (dazu später mehr), sondern über die UUID (Universally Unique Identifier, also auf Deutsch universell eindeutiger Bezeichner). Natürlich ist so eine lange UUID Nummer etwas schwer zu merken, daher empfiehlt sich zur Identifizierung ein Label zu vergeben, also einen Partitionsbezeichner. Wählte man den eindeutig, kann man darüber die entsprechende Partition identifizieren und eindeutig zuordnen.
Leider kann man die Festplatten
über das /dev Verzeichnis nicht direkt ansprechen, sondern
man muß sie in den Verzeichnisbaum "einhängen", d.h. man legt entweder mittels des mount-Kommandos temporär oder in der Datei /etc/fstab dauerhaft fest, in welchem Verzeichnis die jeweilige Festplatte erscheinen soll. Womit wir wieder bei den absoluten Freiheiten von Linux sind, mit der Möglichkeit das System vollkommen frei zu konfigurieren und an die enstprechenden Wünsche anzupassen. Während bei Windows die Laufwerksbuchstaben vom System vorgegeben werden kann man unter Linux vollkommen selbst bestimmen über welches Verzeichnis man auf die jeweilige Festplatte zugreift.
Doch bevor wir zum mount-Befehl und der Datei /etc/fstab kommen erst noch ein paar Grundlagen zur Verwaltung und Partitionierung von Festplatten:
2. Partitionierung mit fdisk und cfdisk
Etwas vorweg: Für die Partitionierung kann man heutzutage das grafische Tool gparted nutzen, welches die Verwaltung von Festplatten sehr einfach gestaltet und sogar die Größe von Festplatten-Partitionen verändern kann, ohne die darauf befindlichen Dateien zu löschen. Trotzdem empfiehlt sich bei so heiklen Transaktionen ein Backup der entsprechenden Partition. Grundvorraussetzung ist natürlich, daß die entsprechende Partition ausgehängt werden kann, was damit System-Partitionen ausschließt (es sei denn man würde ein Live-Linux von einem USB-Stick starten und so auf die im Computer verbauten Festplatten zugreifen). Hat man aber keine grafische Oberfläche weil diese z.B. für einen File-Server nicht nötig ist oder gerade nicht funktioniert, kann man auf die Konsolen-Programme zurück greifen, welche ich hier vorstelle.
Um festzustellen, wieviele Festplatten es im System gibt und welche Partitionen sich auf ihnen
befinden, gibt es einmal den Befehl fdisk, der auch für
das Partitionieren zuständig ist und mittels des Befehls
cat kann man sich das Verzeichnis /proc/partitions ansehen,
in denen die Partitionen gelistet sind:
# cat /proc/partitions
# fdisk -l (kleines L)
Wie man sieht, ist der fdisk-Befehl etwas ausführlicher, da
er auch gleich die Dateisystem-Kennung mit anzeigt.
Möchte man eine Festplatte partitionieren genügt der Aufruf
von
# fdisk /dev/hda (ohne Partitionsangabe!)
Nun befindet man sich im Programm fdisk und kann mittels Tastaturkürzeln
die entsprechenden Schritte vornehmen. Als da wären:
m liefert eine
Liste der möglichen Kommandos.
p zeigt die existierenden Partitionen an.
l liste der Kennungen der Partitionen, z.B. 82=swap, 83=Linux.
n legt eine neue Partition an.
t ändert die Standard-Kennung 83 (Linux).
a markiert die Partition als bootfähig.
d löscht eine Partition.
w schreibt die neue Partitionstabelle auf die Platte und
beendet fdisk.
q fdisk verlassen ohne die Änderungen zu speichern.
fdisk schreibt erst mit
w die neue Partitionstabelle auf die Platte, daher kann man jederzeit
bei einem Fehler fdisk mit q beenden und so sämtliche Änderungen
verwerfen.
Mehr Komfort gegenüber
fdisk bietet cfdisk, da man einen ständigen Blick auf
die zu bearbeitende Festplatte hat und man die entsprechenden Funktionen
mittels den Cursor-Tasten auswählt. Somit erklärt sich
die Handhabung von cfdisk auch von selbst. Der Aufruf bleibt der
Gleiche:
# cfdisk /dev/hda
3. Partitionierung mit gdisk
fdisk kann man lediglich für Festplatten mit MBR verwenden. Möchte man eine Festplatte mit GPT-Partitionen (GUID Partition Table) formatieren, gibt es die fdisk-Variante gdisk.
Beim Aufruf des Programms, scannt es die angegebene Festplatte und gibt Informationen aus:
GPT fdisk (gdisk) version 0.8.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help):
Wie man sieht, kann man sich die Liste der Kommandos mittels eines Fragezeichens ausgeben lassen. Damit ist das Programm wie cfdisk selbst erklärend. Mittels gdisk ist es auch möglich eine GPT partitionierte Festplatte in eine mit MBR zurück zu verwandeln.
4. Filesystem erstellen (formatieren) mit mkfs
Hat man die Partitionen erstellt, kann man mittels mkfs (make file-system) die Partitionen formatieren. Man nennt das unter Linux Dateisysteme anlegen.
Wichtig!
Eine Formatierung nur bei ausgehängten (nicht gemounteten) Dateisystemen anwenden!
Hier eine kleine Auflistung der wichtigsten Befehle:
# mkfs -t ext3 /dev/hda3
legt (formatiert) ein ext3-Dateisystem auf der Partition /dev/hda3
an.
# mkfs.vfat -F 32 /dev/sde
formatiert eine Partition mit FAT32.
# mkfs.vfat -FI 32 /dev/sde
großes i= "Superfloppy"-Format, z.B. für USB-Sticks.
# mkswap -c /dev/hda7
formatiert die Partition hda7 als Auslagerungsspeicher.
Die Option -c prüft vorher die Blöcke. Danach mittels
# swapon /dev/hda7
den Swap-Speicher noch initialisieren. Zum entfernen:
# swapoff /dev/hda7
5. Informationen über Dateisysteme
Möchte man Informationen
über die Dateisysteme einholen, hilft der Befehl blkid.
Er zeigt das Label (den Namen) der Partition, die UUID und das verwendete Filesystem.
# blkid
/dev/sda1: UUID="E63..." LABEL="WIN2000" TYPE="ntfs"
/dev/sda5: TYPE="swap"
/dev/sda6: UUID="e7..." TYPE="ext3"
...
blkid speichert seine Informationen in einem Cache-File. Nach einem
kleinem Umbau der Festplattenkonfiguration kann es sein, daß
die Übersicht nicht mehr aktuell ist. In dem Fall hilft die
Option -g um die Konfiguration erneut einzulesen:
# blkid -g
Daher meine Empfehlung: Bei jedem verwenden von blkid vorher blkid mit -g ausführen, also
# blkid -g; blkid
Für eine Übersicht in Tabellenform sorgt diese Angabe:
# blkid -o list (war früher mal die Option -L)
Möchte man das Label, also die Bezeichnung einer Partition ändern, hilft für
ext2/ext3/ext4 Dateisysteme der Befehl e2label. Für MS-DOS
Dateisysteme gibt es mlabel aus den mtools und für ntfs Dateisysteme ntfslabel.
e2label
Ohne Angabe eines neuen Names wird der vorhandene Angezeigt, z.B.
# e2label /dev/sda1
Mein_Plattenname
Zum umbenennen
# e2label /dev/sda1 Neuer_Name
ntfslabel
ntfslabel funktioniert genau wie e2label. Ohne Angabe des Labels wird der vorhandene angezeigt.
# ntfslabel /dev/sde1
Mein_Plattenname
Zum umbenennen
# ntfslabel /dev/sde1 Neuer_Name
mlabel
Vor der Verwendung von
mlabel muß man noch die Konfigurations-Datei erstellen mit
der Angabe einer Option. Ansonsten erhält man folgende Fehlermeldung:
Total number of sectors (15679396) not a multiple of sectors
per track (63)!
Add mtools_skip_check=1 to your .mtoolsrc file to skip this test
Der Text verrät uns schon, was wir tun müssen:
# echo "mtools_skip_check=1" > ~/.mtoolsrc
Mit dieser Zeile wird die versteckte Datei .mtoolsrc im
Home-Verzeichnis des Benutzers erstellt und die Option mtools_skip_check=1
eingetragen.
Anschließend kann man mit
# mlabel -i /dev/sde1 -s ::
das Label (hier eines USB-Sticks - /dev/sde1) erfragen und mit
# mlabel -i /dev/sde1 ::Neues_Label
ein neues Label eingeben.
Hinweis: Sämtliche
labels der Partitionen stehen auch unter
# ls -al /dev/disk/by-label/
6. Freien Speicherplatz anzeigen lassen
df [option] [file]
= (disc free) gibt an wieviel Platz auf den Dateisystemen
vorhanden ist.
Die Option -h bereitet die Ausgabe etwas "menschenfreundlicher"
auf, d.h. daß die Größenangaben in MB, bzw. GB
angegeben werden.
Die Option -i gibt bei ext2, ext3 oder ext4 Dateisystemen die Anzahl
der Inodes aus. Wenn die Inodes ausgehen können keine weiteren
Dateien geschrieben werden, selbst wenn noch Speicher auf dem Datenträger
verfügbar wäre. Der Inode (information node = Informations
Knoten) ist die zentrale Instanz im Linux-Filesystem. Im inode werden
alle relevanten Informationen über eine Datei außer dem
Namen und den Daten selbst gespeichert. Also die Rechte, die verschiedenen
Zugriffs- und Änderungszeiten, Besitzer und Gruppe der Datei,
usw. Ferner enthält jeder inode noch die Liste der Zeiger
auf die Datenblöcke, in denen die eigentlichen Daten gespeichert
sind. Die Anzahl der inodes wird bei der Formatierung festgelegt
und kann nachträglich nicht mehr verändert werden! Glücklicherweise berechnen die Formatierungsprogramme beim formatieren der Festplattenpartitionen Anhand der Größe der Partition eine geeignete Inode-Zahl, so daß man sich darum eigentlich nicht kümmern muß. Bisher sind mir die Inodes auch noch nie ausgegangen.
Ohne eine File Angabe werden mittels df sämtliche Partitionen ausgegeben, mit
Angabe eines Verzeichnisses oder Files, nur diese Partition. Ein Beispiel für die Ausgabe aller Partitionen:
# df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sdd1 29G 2,7G 25G 10% /
du [option] [file]
= (disc usage) gibt den von Dateien belegten Platz
wieder.
Optionen: -s = zeigt nur die Gesamtsumme pro Verzeichnis.
-a = liefert nicht nur den Platzbedarf aller Dateien, sondern
auch den
jeder einzelnen Datei.
-c = gibt die Gesamtsumme.
-h = wie bei df => menschenfreundlich (human)
Beispiel:
# du -sch /usr/home
2.6 G /usr
5.8 G /home
8.4 G total
7. Festplatten auf Fehler überprüfen mit fsck
fsck = prüft
Datenträger auf Konsistenz.
(ACHTUNG! NUR BEI AUSGEHÄNGTEN DATEISYSTEMEN VERWENDEN!)
Bei früheren Linux-Systemen (mit ext2 Formatierung) wurde die System-Partition von Zeit zu Zeit automatisch überprüft, nach so und so vielen mounts, was heutzutage eher unüblich ist für einen schnelleren Start des Systems und wegen des Journalings auch nicht mehr benötigt wird.
Hat man Bedenken, ob die Daten auf der Platte beschädigt sind, kann man eine Prüfung mittels fsck ausführen. Ohne Angabe eines Laufwerks, wie z.B.
# fsck /dev/sda3
prüft fsck sämtliche Laufwerke. Sonst nur das Benannte.
fsck greift auf die folgenden Unterprogramme zu: e2fsck,
reiserfsck.
Die Option -f prüft Journaling Dateisysteme, auch wenn diese
"sauber" aussehen. Ein Journaling-Dateisystem ist ein Dateisystem, das eine Art "Tagebuch" (Journal) führt, um sicherzustellen, dass Daten bei einem Systemabsturz oder Stromausfall nicht verloren gehen. Wenn man eine Datei auf einem solchen System speichert, wird zuerst ein Eintrag im Journal gemacht, bevor die Daten tatsächlich auf die Festplatte geschrieben werden. Falls während des Schreibvorgangs etwas schiefgeht (z.B. der Computer stürzt ab), kann das Dateisystem beim Neustart anhand des Journals erkennen, was zuletzt passiert ist, und unvollständige Änderungen rückgängig machen oder fertigstellen. Das Journaling hilft also, die Datenintegrität zu bewahren. ext2 hatte noch kein Journaling, das wurde erst mit ext3 eingeführt und mit ext4 sogar noch verbessert.
8. DMA Modi und Benchmark mit hdparm
Welche UDMA-Modi von
der Festplatte unterstützt werden liefert der Befehl:
# hdparm -i /dev/hda
im Normalfall schaltet Linux den schnellsten Betriebsmodus und den
DMA-Modus automatisch ein. Sollte das ausnahmsweise nicht passieren,
kann man mit
# hdparm -X Modus /dev/hda
den Betriebsmodus manuell verändern.
Die Tabelle weiter unten listet die möglichen Modi auf. Selbstverständlich
muß der DMA-Modus aktiviert sein, bevor der Betriebsmodus
aktiv werden kann.
Der Status kann mit
# hdparm -d /dev/hda
abgefragt werden und auch eingestellt werden:
# hdparm -d 1 /dev/hda (0=aus, 1=an)
Es geht auch in einem Schritt:
# hdparm -d 1 -X 66 /dev/hda
schaltet den DMA Modus ein und in den Betriebsmodus
Ultra-DMA-Modus 2.
Weitere Funktionen mit
hdparm:
# hdparm -Tt /dev/hda
führt einen kleinen Benchmark durch und zeigt die Ergebnisse.
# hdparm -C /dev/hda
zeigt den aktuellen Stromsparmodus. "active/idle" ist
der Normalzustand.
# hdparm -l /dev/hda
zeigt ausführliche Informationen über das Gerät an,
z.B. Laufwerksgeometrie, verfügbare Betriebsmodi, Seriennummer
oder Modellbezeichnung.
# hdparm -r /dev/hda
fragt ab, ob das Laufwerk nur lesbar ist.
Modus |
Beschreibung |
0
1 |
Standard-PIO-Modus
Standard-PIO-Modus, IORDY abgeschaltet |
8
9
10
11
12
13
14
15
|
PIO-Modus
0
PIO-Modus 1
PIO-Modus 2
PIO-Modus 3
PIO-Modus 4
PIO-Modus 5
PIO-Modus 6
PIO-Modus 7 |
16
17
18
19
20
21
22
23 |
DMA-Modus
0
DMA-Modus 1
DMA-Modus 2
DMA-Modus 3
DMA-Modus 4
DMA-Modus 5
DMA-Modus 6
DMA-Modus 7 |
32
33
34
35
36
37
38
39 |
Multiword-DMA-Modus
0
Multiword-DMA-Modus 1
Multiword-DMA-Modus 2
Multiword-DMA-Modus 3
Multiword-DMA-Modus 4
Multiword-DMA-Modus 5
Multiword-DMA-Modus 6
Multiword-DMA-Modus 7 |
64
65
66
67
68
69
70
71 |
Ultra-DMA-Modus
0 (UATA)
Ultra-DMA-Modus 1
Ultra-DMA-Modus 2 (UATA-33)
Ultra-DMA-Modus 3
Ultra-DMA-Modus 4 (UATA-66)
Ultra-DMA-Modus 5 (UATA-100)
Ultra-DMA-Modus 6 (UATA-133)
Ultra-DMA-Modus 7 |
9. Geschwindigkeitstests
Für einen einfachen Benchmark reicht hdparm aus, z.B.
# hdparm -Tt /dev/hda
welches einen Durchschnittswert der Übertragung zum Speichermedium
anzeigt. Für eine detailiertere Auflistung in Lesen und Schreiben
eignet sich der Befehl dd:
# dd if=/dev/zero of=/Verzeichnis/Testdatei bs=1M count=1024
1024+0 Datensätze ein
1024+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 30,8418 s, 34,8 MB/s
dd schreibt eine 1GByte große Testdatei bestehend aus lauter
Nullen (/dev/zero) in das angegebene Verzeichnis und gibt anschließend
die durchschnittliche Schreib-Rate aus.
# dd if=/Verzeichnis/Testdatei
of=/dev/zero
1024+0 Datensätze ein
1024+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 27,1496 s, 39,5 MB/s
liest die 1GByte große Testdatei vom Speichermedium wieder
und gibt die durchnittliche Lese-Rate aus.
10. Partitionen mounten
mount = hängt
Dateisysteme (Partitionen) in den Verzeichnisbaum ein.
umount = hängt sie wieder aus.
Bei einem Eintrag in der Datei /etc/fstab reicht es
# mount /dev/sda2
einzugeben. Ohne einen Eintrag muß man das "ordinäre"
Mount-Kommando verwenden:
# mount -t vfat /dev/hda2 /mnt/windows-D
hängt die Partition /dev/hda2 unter /mnt/windows-D
ein.
Dabei spielt es keine Rolle, ob das Verzeichnis leer ist. Befinden
sich Dateien in dem Verzeichnis, werden diese durch den mount-Vorgang
"verdeckt", d.h. es werden nur die Dateien der gemounteten
Partition angezeigt. Hängt man mit umount die Partition wieder
aus, sind die verdeckten Dateien wieder da. Um Verwirrung zu vermeiden sollte man daher eigene, leere Verzeichnisse zum mounten von Partitionen anlegen.
Die Option -t (type) steht für das Dateisystem, hier
FAT. Beispiele für t können sein: ntfs für
lesenden Zugriff auf Windows-NTFS Partitionen
ntfs-3g für schreibenden Zugriff auf Windows-NTFS Partitionen
vfat für Windows-FAT Partitionen
iso9660 für CD-ROM/DVD
ext4 für Linux
Um Optionen beim ordinären Mount-Kommando anzugeben, benutzt
man den Schalter -o, z.B.
# mount -t ntfs /dev/hda2 /media/windows-D -o ro,users
die Option ro bedeutet read-only und users sagt,
daß auch Benutzer die Partition einhängen dürfen.
# mount
mount alleine zeigt alle eingehängten Partitionen mit den Optionen
an, die auch noch in der Datei /etc/mtab protokolliert werden.
# umount /dev/hda2
hängt die Partition wieder aus. Wird die Partition jedoch noch verwendet, z.B. wenn man sich auf der Konsole innerhalb eines Verzeichnisses der Partition befindet oder weil ein Programm abgestürzt ist welches auf die Partition zugreift, verweigert umount das Aushängen. In dem Fall kann man mittels des Befehls
# fuser -m -u /mnt/usb
/mnt/usb: 1347c(root) 1348c(guido) 1349c(guido)
feststellen wer die Partition belegt. Der fuser Befehl zeigt eine Liste von Prozessen, die noch ein Dateisystem benutzen. Nun kann man mit
# ps auxw
checken, was das für Prozesse sind und sie mit kill beenden. Danach wird umount funktionieren.
Wie schon angesprochen,
ist der mount-Befehl nur temporärer Natur und nach einem Neustart
sind die Partitionen wieder ausgehängt. Um Dauerhaft Partitionen
unter Linux einzubinden, muß ein Eintrag in der Datei /etc/fstab
getätigt werden.
11. ISO-Images mounten
Man kann auch ein ISO-Image
unter Linux mounten und so auf die Dateien des Images zugreifen,
ohne es zu brennen. Dies geschieht mit Hilfe eines sogenannten Loop-Devices:
# mount -t iso9660 -o ro,loop=/dev/loop0 image.iso /mnt/iso
oder auch einfacher
# mount -t iso9660 -o loop image.iso /mnt/iso
bei der einfachen Schreibweise wird das Image allerdings rw
eingehängt und als Loop-Device Standardmäßig
/dev/loop0 genommen. Anstatt ISO kann man auch NRG-Images (Nero)
mounten. Dafür gibt es zwei Möglichkeiten: entweder läßt
man vorher mit dem Tool nrg2iso ein paar Bytes am Anfang
der Datei abschneiden und macht so aus der nrg-Datei eine iso-Datei
(Nero Images unterscheiden sich von ISO Images nur durch ein paar
Bytes am Anfang), oder man mountet das Image direkt gibt aber den
korrekten Startpunkt als Option an:
# mount -o loop,offset=307200 Image.nrg /mnt/nero
12. fstab-Einträge
Beispiel für eine FAT32 Partition:
/dev/hda1 /mnt/Windows-C
vfat users,exec,umask=0000,utf8 0 0
/dev/hda1 = Partition
die eingehängt wird
/mnt/Windows-C = Position im Verzeichnisbaum (Mountpoint)
vfat = Dateisystem
users = auch Benutzer dürfen das Dateisystem einhängen
exec = Man darf Dateien auch ausführen (default=noexec)
umask = die Zahl 0000 zwingt dem Dateisystem die vollen Rechte
auf
utf8 = der verwendete Zeichensatz
0 = Dump: Falls das Backup-Programm dump dieses Dateisystem
sichern soll, steht hier ein Wert ungleich 0.
0 = Pass (Durchgang Nr.): Das Wurzeldateisystem ("root")
hat hier eine 1, im Regelfall alle sonstigen auf Festplatten befindlichen
Dateisysteme eine 2, alles andere (Pseudodateisysteme, Netzdateisysteme,
nicht automatisch gemountete Dateisysteme) eine 0.
Beispiel für eine nur lesend eingehängte NTFS Partition:
/dev/sda1 /mnt/C ntfs ro,users,uid=1000,gid=1000,umask=0002,nls=utf8 0 0
ro = read only,
auf NTFS kann ohne den fuse-Treiber nur lesend zugegriffen werden.
uid = Sämtliche Dateien auf der Partition bekommen die
User-ID 1000.
gid = Sämtliche Daten auf der Partition bekommen die
Gruppen-ID 1000.
Die eigene ID bekommt man mit dem Befehl # id heraus, ansonsten
kann man auch in die Datei /etc/passwd sehen. In der Regel hat nach einer Linux-Installation mit nur einem Benutzer dieser die UID und GID 1000.
umask = hier mit eingeschränkten Rechten.
nls = utf8, der Zeichensatz für die korrekten Umlaute.
Beispiel für
ein CD-ROM Laufwerk:
/dev/cdrom /mnt/cdrom
auto ro,noauto,user,exec 0 0
auto = Dateisystem
automatisch erkennen, sonst geht auch iso9660.
ro = read only (klar bei CD-ROM)
noauto = wird nicht automatisch beim Start eingehängt.
Übersicht der
wichtigsten Mount-Optionen:
defaults Voreinstellung:
rw, suid, dev, exec, auto, nouser und async
exec Erlaubt die Ausführung von Binaries und Skripten
noexec Verbietet die Ausführung von Binaries und Skripten
user Gestattet jedem User das Mounten des Dateisystems
noauto Wird erst durch den Befehl mount eingehängt und
nicht automatisch beim starten
ro Mount des Dateisystems als read-only
rw Mount des Dateisystems als read-write
umask Inverse Bitmaske der Zugriffsrechte (z. B. für
FAT-Dateisystem)
uid User-Zugehörigkeit der Daten
gid Gruppenzugehörigkeit der Daten
sync Synchrone In/Out-Operationen, d.h. Dateien die auf die
Partition kopiert werden, werden nicht gepuffert, sondern sofort
geschrieben.
Zu beachten:
mounted man Windows Verzeichnisse und gibt diese mit Samba über
das Netzwerk frei, ist es besser die Optionen uid und gid anzugeben,
damit sämtliche Dateien dem angemeldeten Benutzer gehören.
Beispiel für eine fstab-Datei:
<filesystem>
/dev/hda8
/dev/hda1
/dev/hda5
/dev/hda7
proc
/dev/cdrom
/dev/dvd
/dev/fd0 |
<mountpoint>
/
/windows/C
/windows/D
none
/proc
/media/cdrom
/media/dvd
/media/floppy |
<type>
ext3
ntfs
vfat
swap
proc
auto
auto
auto |
<options>
errors=remount-ro
ro,uid=1000,gid=1000,umask=0002,nls=utf8
users,exec,umask=0000,utf8
sw
defaults
user, noauto
user, noauto
user, noauto |
d
0
0
0
0
0
0
0
0 |
p
0
1
0
0
0
0
0
0 |
13. NTFS-Festplatten schreibend einbinden mit ntfs-3g
Früher konnte man ntfs-Festplatten nur lesend einbinden, da der ntfs-Treiber
nicht in der Lage war, auf selbige zu schreiben. Das gehört nun mit ntfs-3g der Vergangenheit an.
Damit ntfs-3g funktioniert, benötigt man das Kernelmodul fuse. Fuse ist für
jeden neueren Kernel seit Debian Etch (Debian 4.0) verfügbar. Debian Etch wurde am 8. April 2007 herausgebracht.
Man installiert lediglich das Paket ntfs-3g (ist heutzutage standardmäßig nach einer Linux-Installation installiert) und trägt in die fstab die entsprechende Zeile ein:
/dev/sda1 /win/C ntfs-3g uid=1000,gid=1000,umask=0027,locale=de_DE.utf8 0 0
Wenn man anschließend die Partition mounted, wird das Kernelmodul fuse automatisch geladen (kann man überprüfen mit # lsmod | grep fuse). Falls nicht, muß man das Modul von
Hand nachladen:
# modprobe fuse
Hinweis:
Die Mount-Option users funktioniert bei ntfs-3g nicht, bzw.
muß unter ntfs-3g erst definiert werden, ist aber sowieso
nicht von Nöten, da man die Partition als root einhängt
und für die Zukunft beim Starten automatisch eingehängt
wird.
14. Korrekte Partitionierung von Festplatten mit 4k Blöcken
Western Digital hat 2010 die Blockgröße von Festplatten von 512 Bytes auf 4 KByte geändert. Mit dem Aktualisierungs-Datum dieses Beitrags vom 17.10.2024 können alle relevanten Partitionierungsprogramme, ob fdisk oder gparted mit dieser Blockgröße umgehen, daher ist dieser Abschnitt etwas veraltet und eher als Erinnerung an vergangene Zeiten zu sehen. Als die neue Blockgröße herauskam, konnten die Partitionierungsprogramme noch nicht damit umgehen und haben die Partitionen falsch angelegt, was zu massiven Performance einbußen geführt hat. Bei neueren fdisk Versionen ab 2.25.2 tauchte dann folgende Fehlermeldung auf:

Die daraus resultierenden Performance Einbußen machten sich wie gesagt massiv bemerkbar. Anstelle von einem möglichen Wert von ca. 160 MB/sec konnte eine Festplatte gerade mal 40 MB/sec liefern oder in manchen Fällen sogar nur 5 MB/sec! Erkennen kann man eine 4k Festplatte ab einer neueren Version von fdisk Anhand der Angaben unter der Partitionstabellen-Anzeige (fdisk -l):
Sector Size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Für eine 4k Festplatte ist es zwingend erforderlich die Partitionierung korrekt an den 4k Blöcken auszurichten! Dies erreicht man in dem man fdisk mit folgenden Optionen startet:
# fdisk -H 224 -S 56 /dev/sdb
Mit diesen Optionen richtet fdisk die Partitionierung automatisch an den 4k Blöcken aus. Nach erfolgreicher Partitionierung kann man die Festplatte wie gewohnt mit mkfs formatieren. Sollte man die Festplatte bereits fehlerhaft formatiert haben, kann fdisk einen Hinweis anzeigen, doch bitte vorher wipefs zu benutzen um eventuell vorhandene alte Partitionierungsdaten die stören könnten zu löschen. Der korrekte Befehl zum löschen ist:
# wipefs --all /dev/sdb
Wer sich tiefer mit diesem Thema beschäftigen will, kann darüber etwas ausführlicher hier nachlesen. Aber wie gesagt, heutzutage ist das kein Thema mehr.
15. Probleme mit Umlauten von externen NTFS-Festplatten mit ntfs-3g
Hinweis: Auch dieser Abschnitt ist wie die 4k Blockgröße etwas veraltet und beschreibt ein Problem aus früheren Zeiten, welches heutzutage nicht mehr aufgetaucht ist. Wer dennoch auf ein Problem mit den Umlauten ä, ö und ü bei externen NTFS-Festplatten oder auch USB-Sticks stößt, kann hier eventuell die Lösung nachlesen:
Steckt man eine USB-Festplatte oder einen USB-Stick ein, legt udev nach vordefinierten Device-Regeln in /etc/udev/rules.d/ einen Device-Knotenpunkt unter /dev an. Anschließend schickt es eine Nachricht an hal (Hardware Abstration Layer), welcher das Device in den Verzeichnisbaum einhängt. In der Regel mit dem Labelnamen unter
/media/username.
So eine Regel sieht beispielsweise so aus:
SUBSYSTEMS=="usb", KERNEL=="sd?1", ATTRS{serial}=="57583231453534454B383038", ATTRS{product}=="My Passport 0820", RUN+="/bin/mount -t ntfs-3g -o uid=1000,gid=1000,umask=0027,locale=de_DE.utf8 /dev/$k /media/My_Passport"
Hier in diesem Fall wird eine USB-Festplatte mit der Gerätekennung sd*1, der Seriennummer 57583... und dem Produkt Namen My Passport 0820 ein externer mount-Befehl zugewiesen, was die Platte zwar korrekt einhängt, aber außerhalb von hal und somit muß sie von Hand wieder ausgehängt werden.
Dummerweise kann es einen Fehler im Zusammenspiel mit Kernel -> udev -> hal -> mount geben, so daß bei einer NTFS-Festplatte die mittels des ntfs-3g Treibers eingebunden wird, der falsche Zeichensatz verwendet wird. Was dazu führt, daß Dateinamen mit Umlauten ä,ö oder ü GAR NICHT angezeigt werden und sich in Luft auflösen, obwohl sie da sind! Leider sind die Entwickler von hal so von ihrem Zeichensatz überzeugt, daß sie es nicht für nötig halten eine Möglichkeit einzubauen, udev oder hal oder wem auch immer, andere Mount-Optionen mitgeben zu können, was es unmöglich macht mit normalen konfigurationstechnischen Mitteln eine vernünftige automatische NTFS-USB-Festplatten-Einbindung zu ermöglichen. Leider hilft dort nur ein kleiner "Hack" oder "Workaround":
Zuerst löscht man den Symlink /sbin/mount.ntfs-3g, welcher auf den Befehl /usr/bin/ntfs-3g zeigt. Anschließend erstellt man ein Shell-Skript mit gleichen Namen /sbin/mount.ntfs-3g mit folgendem Inhalt:
#!/bin/bash
/usr/bin/ntfs-3g $1 "$2" -o locale=de_DE.UTF-8,$4
Nachdem man das Skript ausführbar gemacht hat, werden NTFS-Festplatten immer mit dem Zeichensatz de_DE.UTF-8 eingehängt und man hat keinerlei Probleme mehr mit den Umlauten.
|