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.
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.