LTOOLS – dostęp do plików Linux z Windows 9x/Me i Windows NT/2000/XP

This is the translation. The original web-page (oryginalna strona): http://www.it.fht-esslingen.de/~zimmerma/software/ltools/ltools.html

Werner Zimmermann

W LTOOLS dostarczyć pod Windows podobną funkcjonalność jak Mtools zrobić pod Linuksem: Pozwalają one na dostęp do plików na „wrogie” plików.


Korzystanie LTOOLS z wiersza poleceń

W samym sercu LTOOLS jest zestawem programów wiersza poleceń, które mogą być wywoływane z DOS lub z DOS-Window w systemie Windows 9x/Me lub Windows NT/2000/XP. Zapewniają one tę samą funkcję, jak dobrze wszystkich poleceń LInux „ls”, „CP”, „rm” chmod “,„zmienić właściciela”i„ln”. Tak więc, pod DOS/Windows można

  • Lista plików i katalogów (Linux komenda: ldir)
  • Kopiowanie plików z Linuksa do Windows i odwrotnie (komendy: lread, lwrite)
  • Usuwać lub zmieniać nazwy plików Linux (komendy: ldel, lren),
  • Utworzyć dowiązania symboliczne (komenda: LLN)
  • Tworzyć nowe katalogi Linux (komenda: lmkdir)
  • Zmodyfikować plik Linuxa praw dostępu i właściciel (Polecenie: lchange)
  • Zmienić domyślny katalog Linux (komenda: LCD),
  • Ustawić domyślny napęd Linux (polecenie: ldrive) i
  • Pokazać swoją konfigurację partycji twardym dysku (komenda: ldir -part).

Podobnie jak w przypadku wielu narzędzi UNIX, funkcje te są zawarte w jednym pliku wykonywalnym, który jest nazywany z wiązką parametrów wiersza poleceń. Aby ułatwić Ci życie, zestaw plików wsadowych (skrypty powłoki) są przewidziane, tak że nie trzeba zapamiętać i wpisać wszystkie te parametry.

Dodatkowo istnieje wersja Unix/Linux z LTOOLS, dzięki czemu można z nich korzystać pod Solaris lub nawet pod Linuksem, gdy chcesz uzyskać dostęp do plików na innej partycji na twardym dysku bez mocowania tej partycji.

LTOOLgui – Java GUI dla LTOOLS

Programy wiersza poleceń są staroświeckie! Gdzie jest LTOOLS graficzny interfejs użytkownika? Cóż, nie ma problemu: Użyj LTOOLgui. LTOOLgui, napisany w języku Java z wykorzystaniem biblioteki Swing JDK 2’S, zapewnia Eksploratora Windows, jak interfejs użytkownika (rys. 1). W dwóch sub-okien LTOOLgui pokazuje swoją DOS/Windows i Linuksa drzewa katalogów. Nawigacja może być wykonana przez zwykłych point-and-click działań. Kopiowanie plików z Windows na Linux lub odwrotnie może być wykonana przez kopiowania i wklejania lub przez drag-and-drop. Kliknięcie prawym przyciskiem myszy spowoduje otwarcie okna dialogowego, aby wyświetlić i modyfikować atrybuty pliku jak praw dostępu, GID lub UID. Podwójne kliknięcie na plik będzie go uruchomić, jeśli jest to plik wykonywalny Windows lub otwórz go w aplikacji jest to związane. To działa nawet z plikami Linux, jeśli mają zarejestrowaną aplikację Windows.

BTW: Można również użyć LTOOLgui jako menedżer plików pod Linuksem. Ponieważ programy wiersza poleceń LTOOLS się również w wersji dla systemu Linux, dzięki czemu można uzyskać dostęp do plików na dysku, bez konieczności ich montażu.

Autor wybrał Java dla LTOOLgui, ponieważ Java jest szczególnie nadaje się do niskiego poziomu dostępu na twardym dysku … tylko żartowałem! Nie, oczywiście, nie jest to możliwe w Javie w ogóle. Jeśli chcesz uzyskać dostęp do sprzętu bezpośrednio, trzeba użyć kodu C++ i JNI (Java Native Interface). Jednakże, jak JNI działa tylko w przypadku kodu 32-bitowego, pod Windows 9x/ME będzie to oznaczać użycie ’32bit na 16bit thunking’ (patrz niżej). Jako autor nie podoba mi się pomysł, aby połączyć Java firmy Sun z kodem MASM Microsoft wziął innego podejścia. On po prostu wykorzystuje LTOOLS programu wiersza poleceń, co się nazywa z Java za pośrednictwem znanego stdin/stdout- interfejsu. Tak na boku Java, dostęp do sprzętu oznacza prosty strumień plik oparciu I/O.

FIG. 1: JAVA GRAFICZNY INTERFEJS UŻYTKOWNIKA LTOOLGUI

Dostęp przez Internet File?

Bez wątpienia, każdy stan programu sztuka musi być świadomy Internet! Cóż, jeśli uruchomić LREADjav na zdalnym komputerze i połączyć się z nim za pomocą przycisku Połącz LTOOLgui użytkownika, można uzyskać dostęp do plików Linux na tym serwerze zdalnym, tak jakby były one lokalne. LREADjav jest prosty demon serwera, co przekłada się wniosek, wydane przez LTOOLgui over TCP/IP, do LTOOLS połączeń linii poleceń programowych i wysyła dane wyjściowe z programów wiersza poleceń z powrotem za pośrednictwem protokołu TCP/IP do LTOOLgui (rys. 2). Oczywiście, można nie tylko ofert widok katalogu, ale można zrobić wszystko zdalnie, co można zrobić na miejscu, w tym przesyłanie plików i pobrania. Zdalny komputer może uruchomić Unix/Linux lub Windows. Dziś jest to bardziej jak zabawkę niż poważnego zastosowania, ponieważ LREADjav może stwarzać problemy z bezpieczeństwem. W domyślnej konfiguracji, może być używany z „localhost” tylko, ale może być skonfigurowany w celu umożliwienia połączenia z 3 różnych klientów zdalnych. Ale oni są identyfikowane za pomocą tylko ich adres IP, nie ma ochrony hasłem lub tym podobne. Jednakże, jeśli użytkownik ma poważny wniosek o tym, że można łatwo wdrożyć program login/hasło … To wszystko Open Source!

FIG. 2: LTOOLGUI ZDALNY DOSTĘP

Nie Java? Użyj swojej przeglądarki internetowej!

Może nie masz zainstalowanego Java 2. Cóż, nie ma problemu, tak długo, jak masz przeglądarkę internetową. Start ‘LREADsrv’ i przeglądarkę internetową i jako adres URL typu ‘http: // localhost’ (Rys. 3). Teraz twój katalog aukcji Linux powinien pokazać się graficznie w swojej przeglądarce internetowej. LREADsrv to mały lokalny serwer WWW, który za pomocą prostego interfejsu CGI-jak sprawia, że ​​LTOOLS dostępne za pośrednictwem HTTP żądań i zamienia ich wyjście dynamicznie do stron HTML (rys. 4). Oczywiście, to nie tylko dostarcza dostęp lokalny, ale pozwala również na zdalny dostęp przez Internet. Jednak dla użytkowników zdalnych LREADsrv ma ten sam niski poziom bezpieczeństwa jako LREADjav.

Ponieważ LREADsrv opiera się na formularzach HTML, które nie obsługują np drag-and-drop lub bezpośredniego kopiowania i wklejania, pracy z przeglądarką internetową jest trochę mniej wygodne niż praca z GUI oparte na Java. Mimo to daje takie same możliwości.

RYS. 3: EXPLORING PLIKÓW LINUX Z MICROSOFT INTERNET EXPLORER

 

RYS. 4: LREADSRV – HTTP OPARTY DOSTĘPU DO PLIKÓW LINUX

LTOOLS Wewnętrzne – Accessings dysk twardy pod Windows

Jak sam DOS / Windows nie obsługuje interfejsy do obcych systemów plików, LTOOLS musi uzyskać dostęp do bajtów „surowe” dane bezpośrednio na dysku. Aby zrozumieć wnętrzności LTOOLS, trzeba mieć podstawową wiedzę z następujących dziedzin:

  • Jak Dyski twarde są organizowane w partycjach i sektorów oraz w jaki sposób mogą one być dostępne, czyli jak „surowe” bajty mogą być odczytywane lub zapisywane z dysku. Te informacje można znaleźć na przykład w / 2,3 /.
  • Jak zorganizowana jest powiększonym 2 system plików Linuksa. Dobry przegląd o wszystkich i-węzłów, grup bloków, bitmap i katalogów rzeczy można znaleźć na przykład w / 4 /.

To automatycznie prowadzi do warstwowej architektury jądra LTOOLS (rys. 5), który składa się z kilku plików C:

  • Najniższa warstwa 1 (w pliku Readdisk.c) fizycznie dostęp do dysku. Warstwa ta zajmuje się (prawie wszystkie) różnice między DOS, Windows 9x / ME, Windows NT / 2000 / XP i Linux / Unix dotyczące bezpośredniego dostępu twardym dysku i stara się ukryć je z wyższych warstw. Więcej na ten temat wkrótce.
  • Warstwa 2 zajmuje się UNIX typowy-węzeł, blok i zbiorowych struktur, w których Rozszerzony 2 plików jest zorganizowane.
  • Warstwa 3 zarządza strukturę katalogów w systemie plików.
  • Najwyższa warstwa 4 (w main.c) zapewnia interfejs użytkownika i skanuje parametry linii poleceń.

Poprzez skanowanie tabeli partycji dysku twardym, The LTOOLS spróbować znaleźć swoją pierwszą partycję Linuxa na pierwszym dysku twardym automatycznie. Jeśli chcesz uzyskać dostęp do innej partycji lub dysku, trzeba określić go przez parametr wiersza polecenia „-s”, np „-s / dev / hdb2”. Alternatywnie można ustawić inną domyślną dysk i partycję poleceniem „ldrive”. Aby dowiedzieć się, która dzieli masz, nazywamy „ldir -part”.

RYS. 5: LTOOLS WARSTWOWĄ ARCHITEKTURĘ

Życie było proste w dawnych dobrych czasach DOS. Był tylko jeden sposób na niskim poziomie odczytu lub zapisu dostępu do dysku twardym: BIOS przerwanie 13h / 3 /. Struktury danych BIOS ograniczone twardych dysków do 1024 cylindrów, 63 głów i 255 sektorów po 512 bajtów, czyli 8GB. Większość kompilatorów C realizowaną funkcję o nazwie biosdisk (), tak, że funkcja ta może być bezpośrednio stosowany bez konieczności kodu w asemblerze. Aby poradzić sobie z większych dysków twardych, kilka lat temu „” rozszerzone funkcje 13H int zostały wprowadzone. Aby przezwyciężyć ograniczenia BIOS, funkcje te stosować liniowy schemat adresowania bloków logicznych adresów (LBA), a nie starą CHS (CHS) zajęcie.

To nadal działa w oknie DOS Windows 9x / Me za (tabela 1), przynajmniej na dostęp do odczytu i tak długo, jak program jest skompilowany z kompilatora 16bit. (The LTOOLS użyciu Borland C, Windows NT / 2000 wersja / XP również kompiluje z Microsoft Visual C, wersja Unix / Linux używa GNU C). Jeśli chcesz niski poziom dostępu do zapisu, trzeba „zamki objętości” / 3 /. Mechanizm ten informuje system operacyjny, że program wykonuje bezpośredni dysk pisze pominięciem sterowników systemu operacyjnego, dzięki czemu Windows może uniemożliwić innym programom na dostęp do dysku, aż skończysz. Ponownie, można to zrobić bez programowania montażowej za pomocą ioctl funkcję kompilator (C).

W 16bit funkcje programu BIOS Okna mogą być wywoływane tylko przez DPMI. Ponieważ większość C kompilatory nie zapewniają funkcje osłony, wymagałoby (inline), asembler. Jednak Win16 nie pozwala programów wiersza poleceń w ogóle, więc nie martw się …

W / 2000 / NT oknie DOS systemu Windows XP, wykorzystując BIOS int 13h doprowadzi do GPF (General Protection Fault). Ze względów bezpieczeństwa, Windows NT / 2000 / XP nie pozwala na bezpośredni dostęp twardym dysku z pominięciem systemu operacyjnego. Jednak Microsoft udostępnia rozwiązanie, które jest prawie tak proste, jak to, co piszesz pod Unix / Linux:

  int disk_fd = open("/dev/hda1", O_RDWR);

To otwarcie na dysku twardym partycji / dev / hda1, aby przeczytać można nazwać read (), aby napisać nazwałbyś write (). Proste i jednoznaczne, prawda? W systemie Windows NT / 2000 / XP, w przypadku korzystania z interfejsu API Win32 / 5 /, funkcja CreateFile () nie tylko pozwala na tworzenie i otwieranie plików, ale także partycji:

 HANDLE hPhysicalDrive = CreateFile("\\\\.\\PhysicalDrive0",
                                       GENERIC_READ | GENERIC_WRITE,
                                       FILE_SHARE_READ | FILE_SHARE_WRITE,
                                       0, OPEN_EXISTING, 0, 0 );

Czytanie i pisanie sektory dysku mogą być teraz wykonywane przez ReadFile () i WriteFile ().

Przez chwilę można by pomyśleć, że można użyć tej samej funkcji Win32 pod Windows 9x / Me. Jednakże, jeśli czytać w dokumentacji CreateFile (), znajdą Państwo:

	Windows 95: Ta technika nie działa na otwarcie dysk logiczny. W
	Windows 95, określający ciąg w tej formie powoduje CreateFile do zwrotu
	błąd.

Zgodnie z dokumentacją Win32 Windows 9x/Me Microsoft zaleca, aby wywołać przerwanie 13h BIOS poprzez VWIN32, jednego z VxD systemu (kernel) kierowców. Jeśli próbujesz zrobić, jednak nie będzie sukcesu. Zgłoś błąd Q137176 w Microsoft Knowledge Base stwierdza, że ​​- wbrew temu, co mówi offical dokumentacja Win32 – to działa tylko na dyskietkach, nie dla dysków twardych. Jak mówi raport problemem dla dysków twardych jedynym sposobem jest wywołanie BIOS Int 16h w kodzie 16bit. Aby wywołać kod 16bit z programu 32bit, trzeba „32bit na 16bit thunking” Microsoftu … To nie tylko kolejny API (z innymi nieudokumentowanych funkcji lub udokumentowanych błędów?), Thunking wymaga również thunking kompilator Microsoftu, który z definicji skrypt generujący assembler kod. Od że 16bit i 32bit plik obiekt musi być generowane przy użyciu asemblera MASM Microsoftu. Zostaną one połączone z niektórych liniach dozend od C-kod, który trzeba napisać, w wyniku 16bit i 32bit DLL (Dynamic Link Library). Nawiasem mówiąc, nie wystarczy tylko 32-bitowy Visual C ++ dla tego, ale trzeba również mieć starą wersję 16bit z kompilatora C Microsoftu … Rozumiesz? Korzystanie pakiet zastrzeżonych, nie są powszechnie używane narzędzia, nie byłoby dobrym rozwiązaniem dla open source narzędzia programowego niczym LTOOLS!

Podsumowując: Musi istnieć oddzielne wersje dla DOS/Windows 9x/Me, Windows NT/2000/XP i Linux/Unix. Aby ukryć to od użytkownika o ile to możliwe, LTOOLS próbuje dowiedzieć się, pod jaki system operacyjny jest uruchomiony i automatycznie wywołuje odpowiednią wykonywalny.

Tabela 1: niski poziom dostępu dysk twardy

pod DOS W systemie Windows 9x/Me W systemie Windows NT/2000/XP Pod Linux/Unix
  • BIOS Int 13h
    (potrzeba rozszerzenia BIOS dla dysków powyżej 8 GB)
  • Programy DOS:
    jak DOS, ale musi użyć blokady głośności/odblokować dostęp do zapisu
  • Programy Win16: 
    musi wywołać BIOS 13h przez DPMI
  • Programy Win32:
    32bit na 16bit thunking do DLL Win16
  • Programy DOS:
    niedozwolone
  • Programy Win16:
    niedozwolone
  • Programy Win32:
    CreateFile (), ReadFile (), WriteFile ()
  • open (), read (), write ()

Względy bezpieczeństwa?

Tak, posiadające LTOOLS do pewnego stopnia może stwarzać problemy związane z bezpieczeństwem. Każdy użytkownik, który można uruchomić je, mogą uzyskać dostęp i modyfikowanie plików w systemie plików Linux, np modyfikacji pliku lub właścicieli praw dostępu do pliku, pliki wymiany hasło itp .. Jest to jednak możliwe z prostego edytora dysku, zbyt. Być może, to tylko trochę bardziej komfortowo, gdy za pomocą LTOOLS. Niemniej jednak, nieograniczony dostęp jest możliwy tylko, jeśli działa pod DOS lub Windows 9x/Me. W systemie Windows NT/2000/XP użytkownik LTOOLS musi mieć uprawnienia administratora, aby uzyskać dostęp do dysku twardego bezpośrednio. Pod Unix / Linux w większości standardowych instalacjach również tylko admin sys ma praw dostępu dla „surowe” urządzeń dyskowych / dev / sda, / dev / hda1, etc ..

Czy są jakieś alternatywy?

W LTOOLS nie są jedynym rozwiązaniem dla dostępu do plików Linuksa z DOS/Windows. Prawdopodobnie Claus Tondering za Ext2tool / 6 /, zestaw narzędzi wiersza poleceń, opracowany w 1996 roku, był pierwszym rozwiązaniem tego problemu. Jednak Ext2tool jest ograniczony dostęp tylko do odczytu i nie działa pod Windows NT. W oparciu o Ext2tool Peter JOOT w 1997 roku napisał wersję Windows NT wciąż ograniczona tylko do odczytu / 7 /. Oba programy zostały napisane w języku C, kody źródłowe są dostępne.

John Newbigin dostarcza nam Explore2fs / 8 /, która pochodzi z bardzo ładnym GUI i działa pod Windows 9x i Windows NT. Dzięki odczytu i zapisu zapewnia te same funkcje co LTOOLgui. BTW: John wykonał wielką pracę, ponieważ udało mu się wdrożyć Microsoft 32bit na 16bit thunking (patrz wyżej), nawet w Borland Delphi! Jak wszystkie programy Delphi Explore2fs integruje „bezszwowe” w systemie Windows, ale przenoszenie do systemów operacyjnych innych niż Windows może być trudne.

Historia i przyszłość

Pierwsza wersja LTOOLS powstał pod pierwotną nazwą „lread” Jason Hunter i David Lutz Uniwersytetu Willamette, Salem/Oregon (USA). Ta pierwsza wersja prowadził pod DOS, Linux mógł pokazać listę katalogów i kopiowania plików z Linuksa do DOS i ograniczała się do małych dysków twardych IDE i Linux na partycji podstawowych.

Autor przejął utrzymania i dalszego rozwoju w roku 1996. Od tego czasu, LTOOLS nauczyli się radzić sobie z większych dysków twardych, napędów dostęp SCSI, prowadzonych pod Windows 9x/ME i Windows NT/2000/XP, dodatkowy dostęp do zapisu i zostały przeniesione z powrotem do UNIX, aby je uruchomić pod Solaris i sam Linux. Dostali przeglądarki internetowej opartej na Javie i graficzny interfejs użytkownika itd. Itp .. Wielu użytkowników Linuksa, większość z nich o nazwie w kodzie źródłowym, pomagał w testowaniu i debugowania. Dziękuję Ci.

W międzyczasie LTOOLS osiągnęła wersja V4.7 / 1 /, a może nawet bardziej, gdy ten artykuł zostanie opublikowany. Oprócz dodatkowych funkcji, wiele błędów zostało poprawionych – i najprawdopodobniej nowe zostały wprowadzone. Częstym problemem pozostał na przestrzeni lat: Nikt nie przewidział szybkiego prędkości w technologii twardym dysku, gdzie rozmiary dysków eksplodowały, która na stałe trafiła granice systemu operacyjnego. Pamiętacie problemy DOS jest z dysków 512MB, problemy z partycjami Windows 3.x 2GB limitu BIOS pod adresem 8GB i różnych problemów, które Windows NT ma na 2GB, 4GB i 8GB? Dopiero przed chwilą! A swoją drogą, nawet Linux ma swoje problemy: W jądrach przed 2.3, plik nie może przekraczać 2 GB, jak Linux, jak większość 32-bitowych systemach Unix używa podpisał 32bit przesunięcie kursora w read () lub write () (ten zostanie rozwiązany w jądrze 2. 4 poprzez zmianę przesunięcia do wartości 64-bitowych, ale zachowując kompatybilność w górę może prowadzić Linux do tych samych problemów jak mówiliśmy wyżej dla Windows). Standaryzacja oprogramowania na dostęp do dysku zawsze był znacznie wolniejszy niż deweloperów dyskowych, więc wymyślono autorskie rozwiązania do przezwyciężenia ograniczeń systemu operacyjnego. I zawsze LTOOLS -I wiele innych programistów – miał do czynienia z nim … Więc nie gniewaj się, jeżeli LTOOLS nie działają na ciebie na nowym dysku 64GB. To Open Source, więc po prostu spróbować pomaga debugowania i dalej je rozwijać! I zawsze LTOOLS -I wiele innych programistów – miał do czynienia z nim … Więc nie gniewaj się, jeżeli LTOOLS nie działają na ciebie na nowym dysku 64GB. To Open Source, więc po prostu spróbować pomaga debugowania i dalej je rozwijać! I zawsze LTOOLS -I wiele innych programistów – miał do czynienia z nim … Więc nie gniewaj się, jeżeli LTOOLS nie działają na ciebie na nowym dysku 64GB. To Open Source, więc po prostu spróbować pomaga debugowania i dalej je rozwijać!

I nie zapomnij, jeśli używasz LTOOLS: Czy to na własne ryzyko! Czytaj tylko dostęp do systemu Linux jest bezkrytyczny. Jednakże, jeśli używasz możliwość wysyłania do usuwania plików lub zmodyfikować atrybuty plików na dysku Linux, LTOOLS – i jako użytkownik – może sprawić dużo nonsens. Więc zawsze zachować kopię zapasową!

Referencje

  1. http://www.it.fht-esslingen.de/~zimmerma/software/ltools.html: Strona z LTOOLS
  2. Michael Tischer: PC-Intern 4. Data-Becker-Verlag
  3. http://www.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/files.html lista przerwań Ralfa Browna dla x86-PC
  4. http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/Ext2fs-overview-0.1.ps.gz: przegląd Gadi Oxman chodzi o rozszerzonych 2 plików.
  5. Microsoft Windows Win32 API – Dokumentacja, pochodzi z większości kompilatorów C systemu Windows lub na płytach CD MSDN
  6. http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/ext2tool_1_1.zip: Claus Tondering za Ext2tool
  7. http://metalab.unc.edu/pub/micro/pc-stuff/Linux/utils/dos/ext2nt.lsm: Peeter JOOT za Ext2nt
  8. http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm: John Newbigin za Explore2fs

O Autorze

„W prawdziwym życiu” Werner Zimmermann uczy inżynierii sterowania, systemów cyfrowych i architektury komputerowej w FH Esslingen – University of Applied Sciences, Esslingen, Niemcy. Ma sprzętu i oprogramowania doświadczenie w systemach wbudowanych samochodowych i przemysłowych. Jego „kariera” jako deweloper oprogramowania systemu Linux rozpoczęła się w 1994 roku, kiedy kupił napęd CD-ROM, który nie był obsługiwany przez Linuksa … Więc on opracowany „aztcd.c”, kierowca Linux CD-ROM, który został zachowany we wszystkich standardowych Linux jądra, nawet jeśli napęd jest teraz bardzo przestarzały.