mtools(1)

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

Pod adresem info-mtools @ gnu.org jest lista dyskusyjna. Proszę przesyłać wszystkie zgłoszenia błędów na tę listę. Można zapisać się na listę https://lists.gnu.org/mailman/listinfo/info-mtools. (Uwaga: proszę usunąć odstępy przed i po znaku "@". Pozostawiono je dla oszukania spambotów). Zawiadomienia o nowych wersjach mtools, oprócz przesyłania na ogłoszeniowe grupy Linuksa, będą również wysyłane na tę listę. Archiwum listy prowadzone jest na 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 może przyjmować opcje instruujące je jak radzić sobie z kolizjami nazw. Więcej informacji w rozdziale pt. Kolizje nazw.

Wszystkie polecenia akceptują opcję -i, która pozwala podać plik obrazu (zob. rozdział pt. Litery napędów).

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.

  Rozmiary i przesunięcia

Pewne polecenia, takie jak mformat, pozwalają na podanie rozmiaru dysku twardego.

Rozmiar jest liczbą, po której następuje opcjonalny przyrostek oznaczający jednostkę.

Liczba jest interpretowana jako szesnastkowa, gdy zaczyna się od 0x, jako ósemkowa, gdy zaczyna się od cyfry 0 lub jako dziesiętna, gdy zaczyna się jakąkolwiek inną cyfrą.

Obsługiwane są następujące jednostki:

*   S sektory (512-bajtowe)

*   K Kilobajty

*   M Megabajty

*   G Gigabajty

*   T Terabajty

Jeśli nie poda się jednostki, domyślna zależy od kontekstu. Opcja T programu mformat oraz opcja l mpartition zakłada domyślnie sektory, natomiast we wszystkich pozostałych miejscach (opcja omshowfat, opcja konfiguracyjna napędu offset i opcja konfiguracyjna napędu data_map) przyjmowane są bajty.

  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. Co więcej, jeśli ustawi się napęd ::/, mtools nie zapamięta powiązanego pliku obrazu, a tylko fakt, że działa się na pliku obrazu.

  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 obsługują wiele sposobów formatowania, pozwalających na przechowywanie na dyskietce większej niż zwykle ilości danych. W związku z różnymi możliwościami systemów operacyjnych, formaty te nie są obsługiwane we wszystkich systemach. Mtools rozpoznają te formaty tam, gdzie są one obsługiwane.

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

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

  Autorstwo

Pierwotny kod (wersje do 2.0.7?) mtools był napisany przez Emmeta P. Graya (Texas, USA).

David C. Niemi dodał obsługę VFAT i pomógł w utrzymywaniu mtools.

Proces pakietowania mtools korzysta ze zmodyfikowanej wersji narzędzia texi2roff Beverly'ego A. Erlebachera, w celu konwersji dokumentacji texi do stron podręcznika systemowego man.

Zobacz także
floppyd_installtest mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdoctorfat mdu mformat minfo mkmanifest mlabel mmd mmount mmove mrd mren mshortname mshowfat mtoolstest mtype

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

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 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.