Nazwa

mtools - narzędzia dostępu do dysków DOS w Uniksie
 
 

Wstęp

Mtools jest zbiorem narzędzi pozwalających systemom uniksowym na operowanie plikami systemu MS-DOS: odczyt, zapis i przemieszczanie plików położonych na systemie plików MS-DOS (zwykle dyskietce). Gdy jest to uzasadnione, każdy z programów usiłuje emulować odpowiednie polecenie MS-DOS. Nie są jednak emulowane zbędne ograniczenia i osobliwości DOS-u. Na przykład, możliwe jest przesuwanie podkatalogów z jednego podkatalogu do innego.
Mtools wystarczają do zapewnienia dostępu do systemów plikowych MS-DOS. Na przykład, polecenia takie jak mdir a: działają na napędzie a: bez uprzedniego montowania (dołączania) czy inicjacji (zakładając, że na maszynie działa domyślny plik `/etc/mtools.conf'. Przy pomocy mtools można zmieniać dyskietki bez potrzeby ich dołączania i odłączania.

Skąd wziąć mtools

Mtools można znaleźć w następujących miejscach (i ich mirrorach):
 

http://ftp.gnu.org/gnu/mtools/mtools-4.0.32.tar.gz

Łaty mają nazwy mtools- wersja-ddmm.taz, gdzie wersja oznacza wersję podstawową, dd - dzień, a mm - miesiąc. Z powodu braku miejsca zwykle pozostawiam jedynie najnowszą łatę.
There is an mtools mailing list at info-mtools @ gnu.org . Please send all bug reports to this list. You may subscribe to the list at https://lists.gnu.org/mailman/listinfo/info-mtools. (N.B. Please remove the spaces around the "@". I left them there in order to fool spambots.) Announcements of new mtools versions will also be sent to the list, in addition to the Linux announce newsgroups. The mailing list is archived at http://lists.gnu.org/pipermail/info-mtools/

Wspólne cechy wszystkich poleceń mtools

Opcje i nazwy plików

Nazwy plików MS-DOS składają się z litery napędu, po której następuje dwukropek, podkatalog i nazwa pliku. Tylko nazwa pliku jest obowiązkowa, litera napędu i podkatalog są opcjonalne. Nazwy plików bez litery napędu odnoszą się do plików unixowych. Nazwy podkatalogów mogą używać zarówno separatora \ jak i \. Użycie separatora \ lub znaków uogólniających wymaga otoczenia nazw znakami cytowania (apostrofami, cudzysłowami) dla ochrony przed ich interpretacją przez powłokę. Jednakże znaki uogólniające w nazwach plików unixowych nie powinny być cytowane, gdyż chcemy by powłoka je rozwinęła.
Procedury "wyszukiwania wzorców" wyrażeń regularnych stosują się do reguł uniksowych. Na przykład, * oznacza wszystkie pliki DOSowe (zamiast *.*). Bity określające atrybuty pliku (archiwalny, ukryty, tylko-do-odczytu, systemowy) podczas wyszukiwania wzorca są ignorowane.
Wszystkie opcje używają znaku - (minus) jako pierwszego znaku, nie zaś / (ukośnika), jak mógłbyś się spodziewać w DOSie.
Większość poleceń mtools pozwala na użycie wielu nazw plików jako parametrów, co nie jest zgodne z konwencjami DOSu, ale jest przyjaźniejsze dla użytkownika.
Większość poleceń mtools posiada opcje informujące je, jak obsługiwać kolizje nazw plików. Więcej szczegółów znajdziesz w sekcji Kolizje nazw. Wszystkie polecenia akceptują opcję -V wyświetlającą wersję, a większość również opcję -v przełączającą tryb wyświetlania szczegółów (verbose). Patrz sekcja Polecenia, gdzie umieszczono szczegółowy opis opcji charakterystycznych dla poszczególnych poleceń.

Litery napędów

Znaczenie liter napędów zależy od konfiguracji sprzętowej. Przy większości konfiguracji jednak, napęd A jest pierwszym napędem dyskietek, napęd B drugim napędem dyskietek (jeśli jest dostępny), napęd J jest napędem Jaz (jeśli dostępny), zaś napęd Z - napędem typu Zip (jeśli dostępny). W systemach, gdzie nazwa urządzenia pochodzi od identyfikatora SCSI, napęd Jaz przyjmowany jest za 4 obiekt SCSI, a Zip za SCSI 5 (domyślne ustawienia fabryczne). W Linuksie, w przypadku obu tych napędów, przyjmuje się, że jest to drugi napęd szyny SCSI (/dev/sdb). Ustawienia domyślne mogą być zmienione przez zmianę pliku konfiguracyjnego (patrz opis konfiguracji w mtools(5)).
Litera dysku : (dwukropek) ma specjalne znaczenia. Jest używana do uzyskania dostępu do plików, które są wprost podane w linii poleceń za pomocą opcji -i.
Przykład:
 

mcopy -i my-image-file.bin ::file1 ::file2 .

Kopiuje to file1 i file2 z pliku obrazu (my-image-file.bin) do katalogu /tmp.
Można także podać offset w pliku obrazu przez dodanie do nazwy pliku @@ offset.
Przykład:
 

mcopy -i my-image-file.bin@@1M ::file1 ::file2 .

Powyższe zaczyna szukać obrazu w pliku od offsetu 1M zamiast od początku pliku.

Bieżący katalog roboczy

Polecenie mcd jest używane do ustawienia urządzenia i bieżącego katalogu (odnoszącego się do systemu plikowego MS-DOS). Jeśli nie zostanie użyte to domyślnym katalogiem jest A:/. Jednak w przeciwieństwie do MS-DOS-u, istnieje tylko jeden katalog roboczy dla wszystkich napędów, nie zaś po jednym na napęd.

Długie nazwy plików VFAT

Niniejsza wersja mtools obsługuje długie nazwy plików stosowane w VFAT. Jeśli unixowa nazwa pliku jest zbyt długa, by zmieścić się w krótkiej nazwie DOSu, zachowywana jest jako długa nazwa VFAT i tworzona jest towarzysząca jej krótka nazwa. Tę krótką nazwę widzisz sprawdzając dysk DOSem w wersji wcześniejszej niż 7.0. Poniższe zestawienie pokazuje kilka przykładów krótkich nazw:

Długa nazwa Nazwa MS_DOS Powód zmiany nazwy ----------- ------------ ----------------------- ToJestTest TOJEST~1 zbyt długa nazwa pliku alain.knaff ALAIN~1.KNA za długie rozszerzenie prn.txt PRN~1.TXT PRN jest nazwą urządzenia .abc ABC~1 pusta nazwa pliku hot+cold HOT_CO~1 niedozwolony znak

Jak widać, w celu uzyskania krótkiej nazwy zastosowano następujące przekształcenia:
*   
Niedozwolone znaki są zastąpione podkreśleniem. Znakami zabronionymi są: ;+=[]',\"*\<>/?:|.
*   
Usunięte są dodatkowe kropki, które nie mogą być zinterpretowane jako główny separator nazwy/rozszerzenia.
*   
Tworzony jest licznik dla przyrostka ~n,
*   
Nazwa skracana jest tak, by spełnić ograniczenie 8+3.
Początkowa, uniksowa nazwa pliku (długa lub krótka) zwana jest również nazwą pierwotną lub główną (primary), zaś pochodząca od niej nazwa krótka zwana jest wtórną lub dodatkową (secondary).
Przykład:
 

mcopy /etc/motd a:Reallylongname

Mtools utworzą wpis w VFAT dla `DlugaNazwa' i użyją `DLUGANAZ' jako nazwy krótkiej. `DlugaNazwa' jest tutaj nazwą główną, zaś `DLUGANAZ' nazwą dodatkową.
 

mcopy /etc/motd a:motd

`motd' spełnia ograniczenia stawiane nazwom pliku DOS. Mtools nie musi tworzyć z niej innej nazwy. Nazwą pierwotną jest `motd', a nie ma nazwy wtórnej.
W skrócie: nazwą główną jest długa nazwa, jeśli taka istnieje, lub krótka nazwa, jeśli nie ma długiej nazwy.
Mimo, iż VFAT jest dużo elastyczniejszy niż FAT, nawet w nim nadal istnieją niedopuszczalne nazwy plików. Pozostały jeszcze niektóre niedozwolone znaki (\"*\<>/?:|), zaś nazwy urządzeń w dalszym ciągu są zarezerwowane.

Nazwa uniksowa Długa nazwa Powód zmiany ------------- ----------- ------------------------- prn prn-1 PRN jest nazwą urządzenia ab:c ab_c-1 niedozwolony znak

Jak widać, w przypadku niedozwolonej długiej nazwy, wykonywane są następujące przekształcenia:
*   
Niedozwolone znaki zastępowane są podkreśleniami,
*   
Tworzony jest licznik dla przyrostka ~n,

Kolizje nazw

Podczas zapisu pliku na dysk, jego długa lub krótka nazwa może kolidować z nazwą istniejącego pliku lub katalogu. Może się to zdarzyć dla każdego z poleceń tworzących nowy katalog lub wpis w katalogu, takiemu jak mcopy, mmd, mren, mmove. W przypadku kolizji nazw polecenia mtools pytają o sposób postępowania. Oferują kilka możliwości:
overwrite 
Nadpisuje istniejący plik. Nie jest możliwe nadpisanie katalogu plikiem.
rename 
Zmienia nazwę nowo tworzonego pliku. Mtools pytają o nową nazwę pliku.
autorename 
Zmienia nazwę nowo tworzonego pliku. Mtools wybierają same nazwę, bez pytania.
skip 
Pomiń ten plik, zajmij się następnym (jeśli jest).
By wybrać jedną z powyższych akcji, po zachęcie ze strony polecenia, wpisz jej pierwszą literę. Jeśli użyjesz małej litery, to akcja będzie się odnosić wyłącznie do tego pliku; użycie dużej litery spowoduje zastosowanie danej akcji do wszystkich plików bez dalszych pytań.
Można również wybrać akcje (dla wszystkich plików) w linii poleceń, przy wywołaniu mtools:
-D o 
Domyślnie nadpisuje nazwy pierwotne.
-D O 
Domyślnie nadpisuje nazwy wtórne.
-D r 
Domyślnie zmienia nazwę pierwotną.
-D R 
Domyślnie zmienia nazwę wtórną.
-D a 
Domyślnie automatycznie zmienia nazwę pierwotną.
-D A 
Domyślnie automatycznie zmienia nazwę wtórną.
-D s 
Domyślnie przeskocz nazwę pierwotną.
-D S 
Domyślnie przeskocz nazwę wtórną.
-D m 
Pytaj użytkownika, co zrobić z nazwą pierwotną.
-D M 
Pytaj użytkownika, co zrobić z nazwą wtórną.
Zauważ, że w linii poleceń przełączniki małe/duże odróżniają polecenia dla nazwy pierwotnej/wtórnej, podczas gdy przy wyborze interakcyjnym małe/duże różnicują zakres: tym-razem/zawsze.
Nazwa pierwotna jest nazwą wyświetlaną w Windows 95 lub Windows NT, tj. nazwą długą, jeśli takowa istnieje, w przeciwnym razie krótką. Nazwa wtórna jest nazwą "ukrytą", tj. nazwą krótką jeśli istnieje długa.
Przy domyślnym sposobie działania mtools użytkownik jest proszony o reakcję w przypadku kolizji nazw pierwotnych, zaś nazwy wtórne zmieniane są automatycznie.
Jeśli kolizja nazw zdarzy się w katalogu Unixa, mtools pytają tylko czy nadpisać plik, czy go pominąć.

Rozróżnianie dużych i małych liter w systemie VFAT

System plików VFAT potrafi zapamiętać wielkość znaków (małe/duże litery) w nazwach plików. W tym samym katalogu nie mogą jednak istnieć pliki o nazwach różniących się jedynie wielkością liter. Jeśli na przykład zapisano plik o nazwie DlugaNazwaPliku w systemie plikowym VFAT, mdir pokaże go jako DlugaNazwaPliku, a nie jako DlugaNazwapliku. Jednak polecenie odmówi dodania pliku DlugaNazwapliku do tego samego katalogu, gdyż wielkość liter jest ignorowana przy sprawdzaniu kolizji.
System VFAT umożliwia przechowywanie wielkości liter nazwy pliku w bajcie atrybutu, jeśli wszystkie litery tej nazwy są duże (bądź małe) oraz wszystkie litery rozszerzenia też są duże (lub odpowiednio, małe). Mtools używają tej informacji do wyświetlania nazw plików oraz tworzenia nazw uniksowych przy kopiowaniu (mcopy) do katalogu Unixa. Może to dawać nieoczekiwane efekty w odniesieniu do plików zapisanych przy użyciu DOS w wersji wcześniejszej niż 7.0: nazwy takich plików będą w całości zamienione na duże litery. Zachowanie to różni się od poprzedniej wersji mtools, która tworzyła nazwy plików uniksowych złożone z małych liter.

Formatowanie o dużej gęstości

Mtools supports a number of formats which allow storage of more data on disk than usual. Due to different operating system abilities, these formats are not supported on all operating systems. Mtools recognizes these formats transparently where supported.
W celu sformatowania takich dyskietek powinieneś użyć narzędzia odpowiedniego do systemu operacyjnego. Dla Linuksa, odpowiednie narzędzia obsługi dyskietek można znaleźć w pakiecie fdutils w następujących miejscach:
 

http://www.fdutils.linux.lu/.

Dalszych szczegółów szukaj w dokumentacji dołączonej do tego pakietu. Należy użyć superformat, by sformatować dyskietkę w dowolnym z formatów oprócz XDF, oraz xdfcopy do formatowania XDF.

Więcej sektorów

Najstarszą metodą umieszczenia większej ilości danych na dyskietce jest użycie większej liczy sektorów i cylindrów. Mimo, że standardowy format używa 80 cylindrów i 18 sektorów (na 3,5" dyskietkach dużej gęstości), to możliwe jest użycie do 83 cylindrów (na większości napędów) i do 21 sektorów. Metoda ta pozwala na zapisanie do 1743K na dyskietce 3,5"HD. Dyskietki o 21 sektorach są jednak dwukrotnie wolniejsze od standardowych dyskietek o 18 sektorach, gdyż sektory są upakowane tak blisko siebie, że zachodzi potrzeba ich przeplotu. Problem ten nie istnieje przy formatach o 20 sektorach.
Formaty te są obsługiwane przez liczne shareware'owe DOSowe programy narzędziowe takie jak fdformat i vgacopy. W swej nieskończonej arogancji Bill Gate$ wierzył, że to on to wynalazł i nazwał je "dyskami DMF" lub "Windows formatted disks". W rzeczywistości, rozwiązanie to istniało już od lat! Mtools obsługują te formaty w Linuksie, SunOS oraz DELL Unix PC.

Większe sektory

Użycie większych sektorów umożliwia przekroczenie pojemności możliwej do uzyskania przy standardowych sektorach 512-bajtowych. Powodem jest nagłówek sektora. Nagłówek sektora ma taki sam rozmiar, niezależnie od liczby bajtów danych w sektorze. Możemy zatem zaoszczędzić nieco miejsca używając mniejszej liczby większych sektorów. Na przykład, 1 sektor 4-kilobajtowy zabiera tylko jedno miejsce na nagłówek, podczas gdy 8 sektorów po 512 bajtów ma 8 nagłówków, przy tej samej ilości danych użytkowych.
Metoda ta umożliwia przechowanie do 1992K na dyskietkach 3,5HD.
Mtools obsługują te formaty tylko w Linuksie.

  2m

Format 2m został pierwotnie wynaleziony przez Ciriaco Garcia de Celis. On również używa większych niż zwykle sektorów, by pomieścić więcej danych na dyskietce. Posługuje się jednak standardowym formatem (18 sektorów po 512 bajtów każdy) na pierwszym cylindrze, by ułatwić obsługę tych dyskietek w DOS-ie. Faktycznie, metoda ta pozwala na użycie sektora startowego (bootsector) o standardowym rozmiarze, zawierającego opis, jak powinna być odczytana reszta dyskietki.
Wadą tego rozwiązania jest to, że pierwszy cylinder może pomieścić mniej danych niż pozostałe. Niestety, DOS potrafi obsługiwać wyłącznie dyskietki o tej samej ilości danych na każdej ścieżce. A zatem 2m ukrywa fakt, iż pierwsza ścieżka zawiera mniej danych przez użycie shadow FAT. (Zwykle DOS przechowuje FAT w dwu identycznych kopiach, dla dodatkowego bezpieczeństwa. XDF przechowuje tylko jedną kopię, ale mówi DOS-owi, że przechowuje dwie. W ten sposób oszczędzane jest miejsce, jakie byłoby zajęte przez drugą kopię FAT). Oznacza to również, że nie powinno się nigdy używać dyskietek 2m do zapisywania czegokolwiek innego niż system plików DOS.
Mtools obsługują te formaty tylko w Linuksie.

  XDF

XDF jest formatem dużej gęstości używanym przez OS/2. Umożliwia przechowywanie na dyskietce do 1840K. Jest to mniej niż najlepsze formaty 2m, ale jego główną zaletą jest szybkość: 600 milisekund na ścieżkę. Jest to szybciej niż dla formatu 21-sektorowego i prawie tak szybko jak dla standardowego formatu o 18 sektorach. Chcąc zapewnić dostęp do tych dyskietek, należy sprawdzić, że mtools zostały skompilowane z obsługą XDF i ustawić zmienną use_xdf dla napędu w pliku konfiguracyjnym. Szczegóły można znaleźć w rozdziałach Kompilowanie mtools i Różne zmienne. Szybki dostęp XDF osiągalny jest przy jądrze Linuksa nowszym niż 1.1.34.
Mtools obsługuje ten format tylko w Linuksie.
Ostrzeżenie / Uwaga dystrybutorzy: mtools skompilowane pod jądrem Linuksa nowszym niż 1.3.34 nie będzie działać przy starszym jądrze. Skompilowane jednak na starszym jądrze działa nadal na nowszym, z wyjątkiem tego, że dostęp XDF jest wolniejszy. Zaleca się, by autorzy dystrybucji dołączali binaria mtools skompilowane wyłącznie pod jądrze starszym niż 1.3.34, aż do ukazania się 2.0. Po ukazaniu się 2.0 mogą (i powinny) być rozpowszechniane binaria mtools kompilowane pod nowszymi jądrami. Binaria mtools kompilowane pod jądrami starszymi niż 1.3.24 nie będą działać przy żadnym z jąder 2.1 lub późniejszym.

Kody zakończenia

Wszystkie polecenia mtools zwracają 0 w przypadku powodzenia, 1 przy kompletnym niepowodzeniu lub 2 przy częściowym. Wszystkie polecenia mtools przed pracą dokonują pewnych sprawdzeń poprawności, by upewnić się, że dysk jest rzeczywiście dyskiem MS-DOS (a nie, powiedzmy, dyskiem systemu ext2 czy MINIX). Kontrole te mogą odrzucić dyski częściowo uszkodzone, które mimo to mogą być czytelne. Można uniknąć tych kontroli przez ustawienie zmiennej środowiska MTOOLS_SKIP_CHECK lub odpowiedniej zmiennej pliku konfiguracyjnego (patrz rozdział Zmienne globalne w mtools(5)).

BŁĘDY

Niefortunnym efektem ubocznym odgadywania poprawnego urządzenia (przy obsługiwaniu wielu pojemności dyskietek) jest sporadyczny komunikat o błędzie ze sterownika urządzenia. Może być on spokojnie zignorowany.
Kod sprawdzający formatowanie zatyka się na dyskietkach 1.72M formatowanych przy użyciu mformat z mtools wersji wcześniejszych niż 2.0.7. Należy ustawić zmienną środowiska MTOOLS_FAT_COMPATIBILITY (lub odpowiednią zmienną pliku konfiguracyjnego, patrz Zmienne globalne w mtools(5)), by pominąć sprawdzanie fat.

Zobacz także

floppyd_installtest mattrib mbadblocks mcd mclasserase mcopy mdel mdeltree mdir mdu mformat minfo mkmanifest mlabel mmd mmount mmove mrd mren mshortname mshowfat mtoolstest mtype

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Robert Luberda <[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej [email protected]

Recommended readings

Pages related to mtools you should read also: