Montowanie urządzeń (dysk, dyskietka, CD-ROM, pendrive)
Obsługa dysków. Montowanie systemów plików
Obsługa systemu plików Uniksów nie koncentruje się wokół napędów, tak jak w systemie Windows. W Uniksach główny system plików montowany jest w korzeniu - katalogu głównym, a kolejne systemy plików - partycje, dyski wymienne, dyski sieciowe - montowane są w podkatalogach.
Nazewnictwo plików urządzeń dyskowych
Nazewnictwo stacji dyskietek
W komputerze klasy PC można mieć tylko dwie stacje dyskietek, stąd tylko dwa pliki-urządzenia dla nich: /dev/fd0 i /dev/fd1, odpowiadające odpowiednio dyskowi A: i B:. Dodano jednak możliwość wyboru rozmiaru dyskietki, którą odczytujemy bądź zapisujemy. Nazwa urządzenia brzmi wtedy /dev/fd(numer)u(rozmiar), gdzie rozmiar wyrażony jest w kilobajtach i wynosi:
Dla dyskietek DD: 360, 720, 800, 820, 830, 1040, 1040, 1120
Dla dyskietek HD: 1440, 1600, 1680, 1722, 1743, 1760, 1840, 1920
Dla dyskietek ED: 2880, 3200, 3520, 3840
Nazwy napędów IDE - w tym czytniki CD-ROM zgodne z ATAPI - tworzy się według schematu: /dev/hd(pozycja)(partycja). Pozycja napędu IDE to pojedyncza mała litera z zakresu a-t. Dla każdego kontrolera nadawane są dwie litery, jedna dla napędu master, druga dla slave. Schemat wygląda więc następująco:
/dev/hda - 1 kontroler, master
/dev/hdb - 1 kontroler, slave
/dev/hdc - 2 kontroler, master
/dev/hdd - 2 kontroler, slave
...
Numery partycji na komputerach klasy PC ustala się następująco. Partycje podstawowe mają numery 1-4, zależnie od ich położenia w tablicy partycji. Natomiast numery od 5 w górę przydzielane są dyskom logicznym w kolejności występowania.
Dyski SCSI nazywane są podobnie, jak dyski IDE, poza tym tylko, że litery nadawane są w kolejności odnalezienia.
Napędy CD SCSI nie występują razem z dyskami w jednej przestrzeni nazw. Nazwy czytników SCSI przyjmują formę /dev/scd(numer) lub /dev/sr(numer) - oba są równoważne.
Zarządzanie partycjami i innymi zasobami (/etc/fstab)
W pliku konfiguracyjnym fstab zdefiniowane są zasoby, jakie nasz komputer jest w stanie
zamontować. Zasoby mogą być montowane podczas startu systemu, lub ręcznie.
Wszystkie urządzenia w systemie muszą być zamontowane przed użyciem i wymontowane przed odłączeniem. W takim przypadku, musimy ręcznie wydać polecenie mount wraz z nazwą katalogu montowania zasobu (zdefiniowanego w /etc/fstab), np.
mount /media/cdrom
zamontuje nam (w naszej przykładowej konfiguracji) CDROM-a. Podobnie
umount /media/cdrom
odmontuje zasób - od tego momentu będziemy mogli wyjąć płytkę CD z napędu.
Jak zamontować partycje Windows?
Aby zamontować partycję Windows musimy najpierw wiedzieć w jaki sposób system Linux ją widzi. Możemy do tego użyć programu fdisk, który służy do zarządzania dyskami i partycjami. Przykładowy output komendy:
# fdisk -l /dev/hda
Disk /dev/hda: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 1211 9727326 7 \
HPFS/NTFS
/dev/hda2 1216 7296 48845632+ 5 \
Extended
/dev/hda5 * 1216 3040 14648224+ 83 \
Linux
/dev/hda6 3041 3679 5132736 b \
W95 FAT32
/dev/hda7 3680 4049 2971993+ 83 \
Linux
/dev/hda8 4050 4319 2168743+ 82 \
Linux swap / Solaris
/dev/hda9 4320 7296 23908216+ 83 \
Linux
W tym przypadku, mamy dostępne 2 partycje Windows, pierwsza widoczna jako hda1 (NTFS), a druga to hda6 (FAT32). Aby je zamontować wystarczy wydać polecenia:
# mount -t ntfs /dev/hda1 /mnt/C
# mount -t vfat /dev/hda6 /mnt/D
Od tej pory będziemy mieli dostępne partycje Windows w katalogach /mnt/C i /mnt/D. Przedtem należy oczywiście utworzyć te katalogi w katalogu /mnt.
Takie montowane partycji Windows ma zasadniczo dwie wady: trzeba je za każdym razem montować ręcznie oraz dostęp do nich ma tylko użytkownik root. Możemy więc pójść o krok dalej i dopisać obie partycje do pliku /etc/fstab, tak aby ich montowaniem zajmował się system. Odpowiednie wpisy w /etc/fstab będą wyglądały mniej więcej tak:
/dev/hda1 /mnt/hda1 ntfs uid=1000,gid=1000 \
0 2
/dev/hda6 /mnt/hda6 vfat \
codepage=852,uid=1000,gid=1000,iocharset=iso8859-2 \
0 2
Opcje uid i gid oznaczają ID użytkownika i grupy, dla których partycje będą dostępne. Dla partycji FAT32 musimy podać dodatkowo domyślne kodowanie, tak aby polskie znaki diakrytyczne wyświetlały się bez problemów.
Jak zamontować pendrive'a?
Zasoby USB dostępne są zazwyczaj jako wirtualne urządzenia /dev/sda1 lub /dev/sdb1. Wystarczy więc w konsoli wpisać jako root:
mount -t vfat /dev/sda1 /mnt/pendrive
Pendrive zamontuje nam się w katalogu /mnt/pendrive (o ile taki katalog wcześniej stworzyliśmy). Proces możemy zautomatyzować przez dodanie odpowiedniej linijki do pliku /etc/fstab. Będzie to wyglądać mniej więcej tak:
/dev/sda1 /mnt/pendrive vfat uid=1000,gid=1000,\
exec,rw,codepage=852,iocharset=iso8859-2 0 0
Teraz aby zamontować dysk przenośny wystarczy wpisać mount /mnt/pendrive lub kliknąć na dysk w menadżerze plików Gnome lub KDE.
/etc/fstab - kluczowy plik naszego systemu
Aby pokazać naszemu systemowi gdzie ma montować poszczególne systemy plików wraz z odpowiednimi dla nich opcjami, należy wprowadzić odpowiednie wpisy do pliku /etc/fstab/. Plik tworzony jest przez administratora i żaden program nie posiada praw do jego edycji. Przykładowy plik znajduje się poniżej:
#(fs_spec) (fs_file) (fs_vfstype) (fs_mntops) (fs_freq) (fs_passno)
/dev/hda2 / ext3 defaults 0 0
/dev/hda3 swap swap defaults 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy vfat noauto 0 0
/dev/hdc /cdrom iso9660 noauto,ro,user 0 0
Jak widzimy plik ma budowę sekwencyjną, poszczególne pola oddzielone są od siebie spacją lub tabulatorem, a ich kolejność nie jest przypadkowa.
Pole fs_spec - określa urządzenie blokowe lub zdalny system plików przeznaczony do zamontowania, na przykład partycję dysku, cdrom czy aparat.
Pole fs_file- wskazuje na miejsce, w którym ma być zamontowany dany system plików
Pole fs_vfstype - określa typ systemu plików jaki znajduje się na danym urządzeniu.
Pole fs_mntops udostępnia szereg znaczników systemowych, które mogą mieć kluczowe znaczenie dla bezpieczeństwa naszego systemu. Przykładowo następujące znaczniki oznaczają:
nodev - zapobiega rozpoznawaniu przez jądro dowolnych plików urządzeń, znajdujących się w systemie plików
noexec - zapobiega wykonywaniu plików wykonywalnych w danym systemie plików
nosuid - zapobiega uwzględnianiu bitów set-UID oraz set-GID w przypadku dowolnego pliku wykonywalnego
ro - powoduje zamontowanie systemu plików w trybie tylko do odczytu, powstrzymując wszelkie modyfikacje informacji dotyczących plików, włączając w to na przykład czas dostępu do pliku
Pole fs_freq jest używane przez komendę dump do wykrywania, który system plików musi być odłączony. Jeżeli nie ma informacji o tym polu, zwracana jest wartość 0 i dump przyjmuje, że dany system plików nie musi być odłączany.
Pole fs_passno jest używane przez program fsck, wartość 0 1 lub 2 decydują o kolejności sprawdzania systemów plików podczas ładowania systemu. Zaleca się aby główny system plików miał wartość równą 1, zaś inne systemy plików powinny mieć wartość 2. Jeżeli to pole nie posiada żadnej wartości lub jest ona równa 0 to wtedy dany system plików nie jest sprawdzany przez fsck.