Linux/Problemy z montowaniem urządzeń emulujących dysk USB
Wstęp
edytujObecnie standardem już stały się urządzenia podłączane do komputera przez USB, (...) Wiele z urządzeń, najczęściej aparaty fotograficzne ma opcję, że są widziane przez komputer jako dysk USB (popularne synonimy: flash-drive, pendrive, usb-key). Jednak przy montowaniiu ich w Linuksie, okazuje się że mamy problemy z ich zamontowaniem, mimo iż normalny dysk USB montowaliśmy bez problemów.
Przykład nieudanego montowania
edytujMam w /etc/fstab następujący wpis dla dysku USB:
/dev/sda1 /media/pendrive vfat noauto,user,exec 0 0
Dysk USB z jedną partycją FAT16 lub FAT32 (zazwyczaj jest to FAT16) montuje się bez problemów. Mam również aparat cyfrowy, który w opcjach można ustawić aby był widziany przez komputer jako:
- aparat fotograficzny (w systemie muszę mieć zainstalowany sterownik do tego modelu aparatu)
- lub dysk USB.
Po ustawieniu aparatu jako dysk USB (zakładam, że będzie widziany jako system plików FAT; tak jest w większości przypadków), montujemy go:
$ mount /media/pendrive
FAT: bogus logical sector size 65535 VFS: Can't find a valid FAT filesystem on dev 08:00. mount: wrong fs type, bad option, bad superblock on /dev/sda, or too many mounted file systems
Wyskoczył nam błąd. Zauważ, że tylko pierwsza linijka ("FAT: ...") opisuje błąd, następne to błędy spowodowane przez ten pierwszy. Co się dzieje? Przyczyna jest dość prosta: w /etc/fstab należy zmienić
/dev/sda1
na
/dev/sda
Dlaczego taka różnica?
edytujNa początku wyjaśnienie - przykładowy /dev/sda jest to plik urządzenia podłączonego do USB - za pośrednictwem tego pliku Linux (kernel) "widzi" nasz dysk czy aparat. Jeśli jest to typowy dysk USB, to może on być podzielony na kilka partycji - żeby móc go używać, trzeba każdą z tych partycji osobno zamontować, i będzie to odpowiednio /dev/sda1, /dev/sda2 itd. Natomiast aparat fotograficzny, który ma własne oprogramowanie i nie potrzebuje formatowania pamięci, ma tylko jedną "partycję", i nie może mieć więcej.
Jak to jest rozwiązane w praktyce?
- w dysku USB
- w pierwszym bloku danych (sektorze) jest zapisana informacja, ile jest partycji, i w którym miejscu każda z nich się zaczyna
- w pierwszym sektorze każdej partycji jest informacja o tym, jaki jest system plików
- w aparacie
- w pierwszym sektorze jest informacja o systemie plików (bez informacji o liczbie partycji)
Czyli zamontowanie /dev/sda spowoduje że mount sprawdza 1. sektor dysku (żeby otrzymać informacje o systemie plików), natomiast /dev/sda1 - pierwszy sektor pierwszej partycji (na temat której znalazł informacje w pierwszym sektorze całego dysku).
W powyższym tekście jest mowa o aparacie fotograficznym - lecz może to być dowolne inne urządzenie emulujące dysk USB. Jeżeli pamięć aparatu fotograficznego można sformatować za pośrednictwem komputera, to zapewne będzie się zachowywał tak jak typowy flash-disk.