Jak zarządza się dyskami i partycjami systemu LinuxSystem plików, partycje i dyski

Organizacja systemu plików pod Linuksem nieco różni się od tego co znamy z systemów MS Windows. W tym artykule postaramy się uwypuklić co najważniejsze różnice, tak aby hierarhia linuksowego systemu plików jak i sposób zarządzania partycjami i dyskami nie sprawiał Wam kłopotu.

Podstawy systemu plików – czyli gdzie jest ten Program Files??

Po pierwsze nie mamy w drzewie katalogów wirtualnych zasobów, jak np. w systemie Windows dyski C, D, dyskietka, cdrom, etc. Wszystkie zasoby w drzewie katalogów Linuksa zaczynają się od magicznego /, co nazywamy katalogiem root, czyli katalogiem korzeniem (nie mylić z użytkownikiem root – to zupełnie inne sprawy).

Tak więc, jeśli mamy w systemie kilka partycji, możemy zamontować je jako dowolny katalog w drzewie. Np. jeśli całą partycję chcemy przeznaczyć na katalog domowy, to montujemy ją w punkcie /home. I tak dalej. Podobnie z urządzeniami zewnętrznymi, jak dyski CD, dyskietki czy pamięci USB. Według standardu FHS, powinny być one zamontowane w katalogu /media. Np. /media/cdrom0, /media/fd0, etc. W starszych dystrybucjach, często urządzenia te montowane są bezpośrednio w root, np. /cdrom, /floppy. Często też tworzone są linki symboliczne (skróty) w obu miejscach.

Inna jest również filozofia jeśli chodzi o lokalizacje instalowanych w systemie programów. Ze względu na modułowość systemu (aplikacje korzystają zazwyczaj z wielu innych aplikacji – pakietów), programy nie instalują się w odseparowanych katalogach (a’la windowsowe Program Files). Zamiast tego, odpowiednie pliki umiejszane są w odpowiednich miejscach w systemie, tak aby mogły być użyte przez inne aplikacje (głównie chodzi tu o użyte w pakiecie biblioteki, ale również o pliki binarne). Zamiast Program Files mamy więc katalogibin na pliki wykonywalne, lib na biblioteki, doc na dokumentację, i wiele innych, odpowiednio do zastosowania.
Dokładny opis systemu plików sprecyzowany jest w spceyfikacji FHS, czyli Filesystem Hierarchy Standard.

Tyle teorii. W poniższej tabelce natomiast lista linuksowych odpowiedników najpopularniejszych katalogów systemowych systemu Windows.

Lokalizacja katalogów systemowych
  MS Windows GNU/Linux
Root C:\ /
Katalog domowy C:\Documents and settings\USER\Moje dokumenty /home/USER (np. /home/zdzisiek)
Pliki konfiguracyjne Rejestry, dostępne przez polecenie regedit /etc
Pliki systemowe C:\Windows Pliki wykonywalne: /bin, /sbin
Biblioteki systemowe: /lib
Zainstalowane aplikacje C:\Program Files Pliki wykonywalne: /usr/bin, /usr/local/bin, etc
Biblioteki: /usr/lib, /usr/local/lib, /usr/share/lib, etc
Dokumentacja: /usr/share/doc/, /usr/doc, etc
CDROM D:\ (lub kolejny wirtualny dysk) /media/cdrom (alternatywnie /mnt/cdrom lub /cdrom)
Dyskietka A:\ /media/fd0 (alternatywnie /mnt/fd0 lub /floppy)

 

Zarządzanie partycjami i innymi zasobami (/etc/fstab)

W artykule /etc/fstab – kluczowy plik naszego systemu opisano ogólną filozofię zarządzania zasobami w systemie Linux.
Tutaj podam więc tylko kilka konkretów.

W pliku konfiguracyjnym FSTAB zdefiniowane są zasoby, jakie nasz komputer jest w stanie
zamontować. Zasoby mogą być montowane podczas startu systemu, lub ręcznie. Możemy sprecyzować
uprawnienia do zasobów – kto może je montować i kto ma do nich dostęp (szczególnie ważne przy montowaniu zasobów z systemem plików VFAT, w którym praktycznie nie ma uprawnień na poziomie
systemu plików).
Jako że najłatwiej jest uczyć się na przykładach, polecam obejrzeć przykładowy plik/etc/fstab z opisem poszczególnych linijek. Przydatny w poznawaniu tajników pliku może być manual dostępny przez polecenie man fstab w większości systemów linuksowych.

Montowanie dysków. Dlaczego muszę to robić?

Nie musisz tego robić. Chcesz :)
Wszystkie urządzenia w systemie muszą być zamontowane przed użyciem i wymontowane przed odłączeniem. System Windows robi to zazwyczaj automatycznie. Linux też może. Domyślnie jednak takie zasoby jak CDROM-y, dyskietki czy napędy USB nie są (z wyjątkiem kilku dystrybucji) montowane automatycznie (nawet po włożeniu do zasobu do napędu). 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?

Windows wspiera dwa systemy plików. FAT – starszy i bardziej prymitywny – wspierany jest pod Linuksem (możemy odczytywać i zapisywać dane na partycjach Windows z tym systemem plików bez większego zachodu). Z NTFS długo było nieco gorzej, ale w 2007 roku poprawiło się to znacznie. Mimo to, w większości dystrybucji domyślnie wspierany jest tylko odczyt z takiej partycji. Do zapisu będziemy potrzebować oddzielnego programu — ntfs-3g. Jego instalacja w Ubuntu jest opisana w naszym FAQ: Instalacja obsługi zapisu na partycjach NTFS

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?

Bardzo prosto. W niektórych dystrybucjach (jak np. Ubuntu) obsługa pendrive i innych pamięci przenośnych (FLASH) skonfigurowana jest w ten sposób, że urządzenie automatycznie pojawia się jako ikonka na pulpicie tuż po włożeniu go do portu USB. Jesli w naszej dystrybucji nic się nie dzieje, nie załamujmy się :)

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. Ustawienie kodowania jest potrzebne, jeśli mamy na penie pliki z polskimi znakami. Oczywiście jeśli używamy na pendrive innego systemu plików niż FAT, trzeba to również wziąć pod uwagę przy montowaniu dysku.