piątek, 18 września 2009

Fstab i montowanie podkatalogów

Postanowiłem dzisiaj, że dysk z XPkiem będzie się montował przy każdym starcie systemu. Docelowo chcę ujednolicić katalogi ściągania, obrazów, kodu itd., tak abym nie musiał przeszukiwać raz dysku z XP, raz dysku z Ubuntu w poszukiwaniu tego czym się akurat zajmuję. Na przykład mogę pracować nad sprawozdaniem w OO.org w Windowsie i w Ubuntu, ale nie mam dostępu do partycji ext3 z Windowsa. Dlatego podlinkuję sobie Moje Dokumenty do /home/daniel, a w tym celu potrzebuję odpowiednich wpisów w fstab.

Było z tym trochę problemu, ale nic czego nie załatwiłoby użycie wyszukiwarki.
Po kolei:
Można wpisać "sudo fdisk -l" aby dostać listę wszystkich dysków. Jako że mój dysk jest wewnętrzny i nie ma szansy, aby zmieniła się jego nazwa, to mógłbym odwołać się właśnie po niej: /dev/sda1/. Jednak inne dyski w fstab odwołują się do UUID dysku, więc ja też tak zrobię. Taka mała dygresja: mam dwa dyski zewnętrzne i pendrive'a. Mogę kazać im montować się nie w katalogu /media/disk i /media/disk1, ale na przykład w katalogu /media/czarny i /media/srebrny w zależności od tego który z nich jest podłączony.
Aby uzyskać UUID dysku należy wpisać:
sudo vol_id /dev/sda1
W moim przypadku dostałem:
ID_FS_UUID=5E543A8F543A69C3
Teraz trzeba otworzyć fstab:
gksu gedit /etc/fstab
i na końcu dodać:
#dysk z XP
UUID=5E543A8F543A69C3 /media/XP ntfs-3g defaults 0 0
Ja oddzielam kolumny tabem, ale można też spacją. Po kolei są to: identyfikator dysku, punkt montowania, system plików, opcje i kolejne jakieś 2 parametry, które przeważnie są zerami. Coś związanego z częstotliwością jakiejś czynności, ale nie wiem jakiej bo nie zagłębiałem się w temat. ;) Alternatywnym wpisem może być:
/dev/sda1 /media/XP ntfs-3g defaults 0 0
Tutaj odwołuję się do dysku po jego nazwie. Więcej informacji po czym jeszcze można się odwoływać znajduje się w internecie.
Na koniec zapisujemy zmiany i wracamy do konsoli. Teraz trzeba dać znać systemowi, żeby przemontował wszystkie dyski zgodnie z nowym plikiem fstab:
sudo mount -a
No i błąd:
mount: mount point /media/XP does not exist
Zatem trzeba naprawić to niedopatrzenie:
sudo mkdir /media/XP
Tym razem sudo mount -a nie wyrzuca żadnych komunikatów i można cieszyć się zamontowanym dyskiem.

Teraz przykładowe dowiązanie katalogu z obrazami:
/media/XP/Documents\040and\040Settings/Yelonek/Moje\040dokumenty/Moje\040obrazy /home/daniel/Obrazy none bind 0 0
Co to za \040? Otóż jeśli w nazwie występuje spacja, to zamiast niej dajemy odpowiadający jej "escape sequence". Jest to wartość 32(kod ANSI dla spacji) w systemie ósemkowym. Gdyby wstawić tam zwykłą spację, to po wywołaniu sudo mount -a dostaniemy komunikat, że "fstab is bad", bo program uzna spację za przejście do następnej kolumny.

Ponowne wywołanie sudo mount -a spowoduje, że w katalogu ~/Obrazy zobaczymy plik z Moje obrazy z dysku XP. Ale moment! Przecież w Obrazy miałem kilka innych plików na dysku Ubuntu, a teraz ich nie widać. No tak, nie widać ich, bo teraz Obrazy są dowiązane do Moje obrazy. Nie wszystko jednak stracone. Co zatem zrobić? Można skasować linijkę odpowiadającą za to dowiązanie i zresetować komputer... Ale to bardzo niewygodne. :] Dlatego należy wpisać:
sudo umount ~/Obrazy
i znowu widzimy stare pliki. Można je przenieść do katalogu Moje obrazy i ponownie dowiązać katalogi. Teraz już wszystko jest tak jak być powinno.

* PS ~ (tylda) oznacza katalog domowy użytkownika, czyli w moim przypadku /home/daniel