LTOOLS – Prístup k vašim Linux súbory z Windows 9x/ME, Windows NT/2000/XP

link: http://www2.hs-esslingen.de/~zimmerma/software/ltools/ltools.html

 Werner Zimmermann

Na LTOOLS poskytujú pod Windows podobné funkcie ako MTOOLS robiť pod Linuxom: tieto nástroje umožňujú prístup k súborom na “nepriateľské” filesystem.


Pomocou LTOOLS z Príkazového Riadku

V centre LTOOLS je sada programy príkazového riadka, ktoré môžu byť volané z DOS alebo z DOS-Window vo Windows 9x/ME alebo Windows NT/2000/XP. Poskytujú rovnakú funkcionalitu ako je dobre známe, LINUX príkazy ‘ls’, ‘cp’, ‘rm’, ‘chmod’, ‘chown” a “ln’. Teda, pod DOS/Windows, môžete

  • zoznam Linux súborov a adresárov (príkaz: ldir),
  • kopírovať súbory z Linux a Windows a naopak (príkazy: lread, lwrite),
  • vymazať alebo premenovať súbory Linux (príkazy: ldel, lren),
  • vytvoriť symbolické odkazy (príkaz: lln),
  • vytvoriť nový balík Linux adresárov (príkaz: lmkdir),
  • upraviť Linux súboru prístupové práva a vlastníka (príkaz: lchange),
  • zmeniť Linux predvolený adresár (príkaz: lcd),
  • nastaviť Linux predvolenom nastavení disku (príkaz: ldrive) a
  • zobraziť váš harddisk oblasť setup (príkaz: ldir -časť).

Ako s mnohými UNIX nástroje, tieto funkcie sú zahrnuté v jeden spustiteľný súbor, ktorý sa nazýva s zväzok parametre príkazového riadku. Ak chcete, aby váš život jednoduchší, sada dávkové súbory (shell skriptov) sú vybavené tak, že si nemusíte pamätať a zadajte všetky tieto parametre.

Okrem toho tam je Unix/Linux verzia LTOOLS, tak, že môžete ich použiť podľa Solaris alebo aj pod Linuxom, ak chcete získať prístup k súboru na iný harddisk oblasť bez montáže túto oblasť.

LTOOLgui – Java grafické ROZHRANIE pre LTOOLS

Programy príkazového riadka sú staromódnou! Kde je LTOOLS grafické používateľské rozhranie? Dobre, nie je problém: Použitie LTOOLgui. LTOOLgui, napísaný v jazyku Java s použitím JDK 2 Swing knižnica, ktorá poskytuje systému Windows Explorer, ako používateľské rozhranie (Obr. 1). V dvoch sub-windows LTOOLgui zobrazí vaše DOS/Windows a Linux directory stromov. Navigácia môže byť vykonané obvyklé point-and-kliknite na položku akcie. Kopírovanie súborov z Windows na Linux, alebo naopak môže byť vykonané tým, kopírovať a prilepiť, alebo pomocou drag-and – drop. Kliknutím pravým tlačidlom myši sa otvorí dialógové okno, ak si chcete zobraziť a upraviť atribúty súborov ako prístupové práva, GID alebo UID. Dvojitým kliknutím na súbor sa začať, ak ide o systém Windows spustiteľný, alebo ho otvorte a s ním súvisiace aplikácie. Toto funguje aj s Linux súborov, ak majú registrované aplikácie pre Windows.

BTW: môžete tiež použiť LTOOLgui ako správca súborov v Linuxe. Ako LTOOLS programy príkazového riadka tiež prísť aj verzia pre Linux, tak môžete získať prístup k súborom na diskoch, bez ich montáž.

Autor si vybral Java pre LTOOLgui, pretože Java je vhodný predovšetkým pre nízku úroveň harddisk prístup … len srandu! Nie, samozrejme, že to nie je možné v jazyku Java. Ak chcete prístup k hardvéru priamo, budete musieť použiť C++ kód a JNI (Java Native Interface). Avšak, ako JNI funguje len pre 32bit kód, pod Windows 9x/ME to by znamenalo, že použitie “32bit na 16bit thunking” (pozri nižšie). Ako autor nemal rád myšlienku spojiť spoločnosti Sun Java Microsoftu MASM kód, vzal iný prístup. On jednoducho používa LTOOLS program pre príkazový riadok, ktorý si to tzv z Java cez známy stdin/stdout – rozhranie. Takže pre Java strane, prístup k hardvéru znamená jednoduché stream na základe súboru I/O.

Obr. 1: Java-based LTOOLgui grafické používateľské rozhranie

Súbor prístup cez Internet?

Niet pochýb o tom, všetky najmodernejšie program musí byť Internete si vedomí! Dobre, ak spustíte LREADjav na vzdialený počítač a môžete k nemu pripojiť cez LTOOLgui je pripojiť tlačidlo, môžete prístup Linux súbory na tento vzdialený server, ako keby boli miestne. LREADjav je jednoduchý server démona, ktorý sa prekladá žiadosť, vydané LTOOLgui cez TCP/IP, do LTOOLS program pre príkazový riadok hovory a pošle na výstup programy príkazového riadka späť cez TCP/IP na LTOOLgui (Obr. 2). Samozrejme, môžete nielen prezrieť záznamy adresárov, ale všetko môžete robiť na diaľku, čo môžete urobiť na miestnej úrovni, vrátane file upload a download. Vzdialený stroj môže pracovať Unix/Linux alebo Windows. Dnes to je viac ako hračka ako vážne aplikáciu, pretože LREADjav môže predstavovať bezpečnostné problémy. V predvolenej konfigurácii je možné použiť len z ‘localhost’, ale to môže byť nakonfigurovaný tak, aby povoliť pripojenia z 3 rôznych vzdialených klientov. Ale sú identifikované cez svoju IP adresa len, nie je tam žiadna ochrana heslom alebo podobne. Avšak, ak užívateľ má vážne aplikácie pre to, že sa mu môže ľahko implementovať prihlasovacie meno/heslo systému … je To Open Source!

Obr. 2: LTOOLgui pre vzdialený prístup

Žiadny Java? Pomocou Webového Prehliadača!

Možno nemáte nainštalovaný Java 2. Dobre, žiaden problém, tak dlho, ako budete robiť webový prehliadač. Štart “LREADsrv” a váš webový prehliadač a ako adresu URL typu “http://localhost’ (Obr. 3). Teraz je váš Linux directory listing by sa malo ukázať aj graficky vo vašom webovom prehliadači. LREADsrv je malý lokálny webový server, ktorý cez jednoduchý CGI-ako rozhranie robí LTOOLS prístupné cez HTTP-žiadosti a konvertuje ich výstup dynamicky sa do HTML stránky (Obr. 4). Samozrejme, že to nie je len poskytovať lokálny prístup, ale umožňuje aj vzdialený prístup cez Internet. Avšak, pre vzdialených používateľov LREADsrv má rovnaké nízka úroveň zabezpečenia ako LREADjav.

Pretože LREADsrv je založené na HTML formulárov, ktoré napríklad nie podpora drag-and-drop alebo priame kopírovanie a prilepenie, práca s webového prehliadača je trochu menej výhodné ako práca s Java based GUI. Napriek tomu poskytuje rovnaké funkcie.

Obr. 3: Skúmanie Linux súborov pomocou Microsoft Internet Explorer

Obr. 4: LREADsrv – HTTP založené prístup na Linux súbory

LTOOLS Internals – Accessings Harddisk pod Windows

Ako DOS/Windows sám nepodporuje rozhrania na zahraničných súborové systémy, LTOOLS potrebné pristupovať k “surové” údaje bajtov priamo na disku. Pochopiť vnútornej časti LTOOLS, musíte mať základné znalosti z nasledujúcich oblastí:

  • Ako harddisks sú organizované v oblasti a sektory, a ako môžu byť prístupné, t. j. ako “surový” bytes môže byť zápis alebo čítanie z disku. Tieto informácie možno nájsť napr. v /2,3/.
  • Ako Linux je Rozšírená 2 súborový systém je organizovaný. Dobrý prehľad o všetkých inodes, skupiny, bloky, rastrov a adresáre veci možno nájsť napr. v /4/.

To automaticky vedie k vrstvový architektúry LTOOLS jadra (Obr. 5), ktorý sa skladá z niekoľkých C súbory:

  • Najnižšia vrstva 1 (v súbore Readdisk.c) fyzicky prístupom na harddisk. Táto vrstva sa zaoberá (takmer všetky) rozdiely medzi DOS, Windows 9x/ME, Windows NT/2000/XP a Linux/Unix týkajúce sa priameho harddisk prístup a snaží skryť ich z vyššej vrstvy. Viac o tom čoskoro.
  • Layer 2 zaoberá UNIX typické inode, blok a skupinových štruktúr, do ktorých sa Rozšíril 2 súborový systém je organizovaný.
  • Layer 3 riadi štruktúru adresárov súborového systému.
  • Najvyššia vrstva 4 (v Hlavnej.c) poskytuje používateľské rozhranie a kontroluje parametre príkazového riadku.

Sledujú váš harddisk je oblasť tabuľky, LTOOLS pokúste sa nájsť svoj prvý oddiel pre Linux na svojom prvom pevnom disku automaticky. Ak chcete mať prístup k inému oblasť alebo disk, budete musieť zadať ho parameter príkazového riadka ‘-s’, napr. ‘-s/dev/hdb2’. Prípadne môžete nastaviť iný predvolený jednotku a oblasť cez príkaz ‘ldrive’. Ak chcete zistiť, ktoré oddiely máte, hovor “ldir -časť’.

Obr. 5: LTOOLS vrstvený architektúry

Život bol jednoduchý v staré dobré časy DOS. Tam bol len jeden spôsob, ako pre low-level čítať alebo písať prístup na pevnom disku: BIOS prerušiť 13h /3/. BIOS štruktúry dát obmedzený harddisks 1024 cylindrov, 63 hlavy a 255 odvetviach 512 bajtov, t. j. 8GB. Väčšina kompilátory C poskytuje funkciu s názvom biosdisk(), tak, že táto funkcia by mohla byť priamo použité bez nutnosti kód v zhromaždenia jazyk. Vysporiadať sa s väčšími harddisks, pred niekoľkými rokmi ‘rozšírený’ int 13h funkcie boli zavedené. Na prekonanie BIOS obmedzenia, tieto funkcie používajú lineárne riešenie schémy, logický blok adresy (LBA), skôr než starý valec-vedúci sektora (CHS) riešenie.

To stále funguje v systéme Windows 9x/ME DOS okno (Tabuľka 1), aspoň pre prístup na čítanie a tak dlho, ako program je zostavený s 16bit kompilátor. (LTOOLS použiť Borland C, Windows NT/2000/XP verzia tiež zostavuje s Microsoft Visual C, Unix/Linux verzia používa GNU C). Ak chcete, nízka úroveň write access, musíte “volume zámky’ /3/. Tento mechanizmus informuje operačný systém, že váš program vykonáva priamy disku píše obchádzať operačný systém, ovládače, tak, aby systém Windows môžete zabrániť, aby iné programy od prístup k disku, až budete hotoví. Opäť to môže byť vykonané bez montáž programovanie pomocou C kompilátor je ioctl() funkcia.

V 16bit Windows program BIOS funkcie môžu byť iba tzv cez DPMI. Ako väčšina Kompilátory C neposkytujú wrapper funkcie, to by si vyžadovalo (inline) assembler. Avšak, Win16 neumožňuje programy príkazového riadka na všetkých, takže sa nemusíte obávať …

V systéme Windows NT/2000/XP je DOS okno, pomocou BIOS int 13h bude viesť k GPF (General Protection Fault). Z bezpečnostných dôvodov, Windows NT/2000/XP neumožňuje priamu harddisk prístup obchádzať operačný systém. Avšak, spoločnosť Microsoft poskytuje riešenie, ktoré je takmer rovnako jednoduché, ako to, čo by ste písať pod Unix/Linux:

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

To by otvoriť svoj harddisk je partícia /dev/hda1, čítať by ste zavolať read(), ak chcete písať by ste zavolať write(). Jednoduché a priamočiare, nie? Pod Windows NT/2000/XP, ak ste použiť rozhranie API systému WIN32 /5/, funkcia CreateFile() nielenže umožňujú vytvárať a otvárať súbory, ale aj disku:

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

Čítanie a písanie disku odvetviach teraz môže byť vykonané cez ReadFile() a WriteFile().

Na chvíľu si možno myslíte, že by ste mohli použiť rovnaké Win32 fungovať pod Windows 9x/ME. Avšak, ak budete čítať o v dokumentácii pre CreateFile(), môžete nájsť:

	Windows 95:Táto technika nie je práca pre otvorenie logickú jednotku. V
	Windows 95, zadanie reťazca v tejto forme spôsobuje CreateFile vrátiť
chybu.

Pod Windows 9x/ME Microsoft Win32 dokumentácie odporúča hovor BIOS Int 13h cez VWIN32, jeden systému ovládače vxd (ovládače jadra). Ak sa pokúsite robiť tak, nebudete si však uspieť. Problém správa Q137176 v spoločnosti Microsoft Knowledge Base štáty, ktoré – napriek tomu, čo úradnej Win32 dokumentácie hovorí – a to nemusí fungovať len pre diskety, nie pre harddisks. Ako problém, hovorí správa, pre harddisks jediný spôsob je zavolať BIOS Int 16h v 16bit kód. Ak chcete zavolať 16bit kód z 32bit program, musíte Microsoft “32bit na 16bit thunking”… Nie je to len ďalší API (s inými nelegálne funkcie alebo zdokumentované chyby?), thunking tiež vyžaduje spoločnosti Microsoft thunking kompilátor, ktoré sa z definície skript vygeneruje assembler kód. Od, že 16bit a 32bit objekt súbor musí byť generované pomocou Microsoft assembler MASM. Tieto budú spojené s niektorými dozend riadky C-kód, ktorý budete musieť napísať, čo v 16bit a 32bit DLL (dynamic link library). Mimochodom, budete musieť nielen 32bit Visual C++ pre toto, ale musíte mať aj staré 16bit verzia Microsoft C ++ … to Mám? Pomocou zväzok vlastnícke, nie široko používané nástroje, by nebolo dobré riešenie pre Open Source softvérový nástroj, ako LTOOLS!

Zhrnutie: Tam musí byť samostatná verzia pre DOS/Windows 9x/ME, Windows NT/2000/XP a Linux/Unix. Ak chcete skryť tohto používateľov, pokiaľ je to možné, LTOOLS sa snaží zistiť, podľa aký operačný systém to je beh a automaticky zavolá príslušnú spustiteľný.

Tabuľka 1: Nízka úroveň harddisk prístup

 

Under DOS Under Windows 9x/ME Under Windows NT/2000/XP Under LINUX/Unix
  • BIOS Int 13h
    (je potrebné BIOS Rozšírenia pre disky nad 8GB)
  • DOS programy:
    ako DOS, ale musia použiť hlasitosti, zamknutie/odomknutie pre zápis
  • Win16 programy:
    musí volať BIOS Int 13h cez DPMI
  • Win32 programy:
    32bit na 16bit thunking na Win16 DLL
  • DOS programy:
    nie je dovolené
  • Win16 programy:
    nie je dovolené
  • Win32 programy:
    CreateFile(), ReadFile(), WriteFile()
  • open(), read(), write()

Otázky bezpečnosti?

Áno, s LTOOLS do určitej miery môže predstavovať bezpečnostné problémy. Každý užívateľ, ktorý môže spustiť, sa môžu otvoriť a upraviť súbory na LINUX súborového systému, napr. zmena súbor prístupových práv alebo súbor vlastníkov, výmenný heslo súbory atď.. toto je Však možné jednoduché disku editor, príliš. Možno je to len trochu viac pohodlné, keď sa používa LTOOLS. Napriek tomu, neobmedzený prístup je možné iba vtedy, ak beží pod DOS alebo Windows 9x/ME. Pod Windows NT/2000/XP LTOOLS používateľ musí mať administrátorské práva na prístup k svojmu priamo. Pod Unix/Linux vo väčšine štandardných inštalácií tiež len sys admin má prístupové práva pre ‘surové’ diskové zariadenia /dev/hda, /dev/hda1, atď..

Existujú alternatívy?

Na LTOOLS nie sú jediným riešením pre prístup Linux súbory z DOS/Windows. Pravdepodobne Claus Tondering je Ext2tool /6/, sadu nástrojov príkazového riadka, ktorý vznikol v roku 1996, bol prvý riešenie pre tento problém. Avšak, Ext2tool je obmedzené iba na čítanie prístup a nefunguje pod Windows NT. Na základe Ext2tool, Peter Joot v roku 1997 napísal windows NT verzia, ešte stále obmedzené iba na čítanie /7/. Oba programy boli napísané v C, zdrojové kódy sú k dispozícii.

Ján Newbigin nám poskytuje Explore2fs /8/, ktorý prichádza s veľmi príjemným GUI a beží pod Windows 9x a Windows NT. S jeho čítanie a zápis poskytuje rovnaké funkcie ako LTOOLgui. BTW: John urobil skvelú prácu, pretože sa mu podarilo zrealizovať spoločnosti Microsoft 32bit na 16bit thunking (pozri vyššie), aj v Borland to Delphi! Ako všetky Delphi programy Explore2fs integruje ‘bezšvíkové” do Okien, ale aj prenos do iných operačných systémoch než Windows, môže byť ťažké.

História a Budúcnosť

Prvá verzia LTOOLS bol vytvorený pod pôvodným názvom “lread” Jason Hunter a David Lutz na jadrá willamette University, Salem/Oregone (USA). Prvá verzia vbehol pod DOS, mohli ukázať, Linux výpisu adresára a kopírovať súbory z Linuxu na DOS a bolo obmedzené na malé IDE harddisks a LINUX na primárne oblasti.
Autor prevzal údržbu a ďalší rozvoj v roku 1996. Od tej doby, LTOOLS sa naučili riešiť väčšie harddisks, prístup SCSI disky, spustiť pod Windows 9x/ME, Windows NT/2000/XP, dodatočný zápis a boli portované späť na UNIX, aby ich spustil pod Solaris a Linux sám. Dostali webový prehliadač založený a JAVA based grafické používateľské rozhranie atď. atď.. veľa užívateľov Linuxu, väčšina z nich s názvom v zdrojovom kóde, pomohol, testovanie a ladenie. Ďakujem.

Medzitým, LTOOLS dosiahol verzia V4.7 /1/, možno aj viac, ak tento článok bude uverejnený. Okrem ďalších funkcií, veľa chýb boli stanovené – a s najväčšou pravdepodobnosťou nové zaviedli. Spoločný problém zostal v priebehu rokov: Nikto si sa predpokladá rýchly rýchlosť v harddisk technológie, kde disk veľkosti vybuchli, ktoré trvalo hit operačný systém limitov. Pamätáte si DOS problémov s 512 mb disky, Windows 3.x problémy s 2GB oblasti, BIOS je limit na 8GB a na rôzne problémy, ktoré systém Windows NT má na 2GB, 4GB a 8GB? Je to len chvíľu pred rokmi! A mimochodom, aj Linux má problém: V jadier pred 2.3, č súboru prekročí 2 GB, ako Linux ako väčšina 32bit systémy Unix používa podpísané 32bit posun ukazovateľa v read() alebo napíšte() (toto sa bude riešiť v kernel 2.4 zmenou odsadí 64bit hodnoty, ale zachovaní nahor kompatibilita sa môže riadiť Linux do rovnaké problémy ako sme sa bavili na Windows vyššie). Softvér normalizácie pre disk access vždy bol oveľa pomalší, než disk vývojárom, tak oni vynašli proprietárne riešenia na prekonanie operačný systém limitov. A vždy LTOOLS -a mnoho ďalších programátorov – museli sa s tým vyrovnať … Takže nenechajte sa hnevať, ak LTOOLS nefungujú pre vás vo vašom zbrusu nový 64 GB disk. Je to Open Source, tak jednoducho skúste pomáha ladenie a ďalej ich rozvíjať!

A nezabudnite, že ak používate LTOOLS: to na vaše vlastné riziko! Len na čítanie prístup na Linux je uncritical. Avšak, ak používate pre prístup k zápisu ak chcete vymazať niektoré súbory alebo meniť atribúty súboru na váš Linux disk, LTOOLS – a vy, ako užívateľ – môže veľa nezmyslov. Takže vždy si zálohujte!

Odkazy

  1. http://www.it.fht-esslingen.de/~zimmerma/software/ltools.html: domovskú Stránku LTOOLS
  2. Michael Tischer: PC-Intern 4. Údaje-Becker-Verlag
  3. http://www.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/files.html Ralf Brown je prerušiť zoznam pre x86, Počítače
  4. http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/Ext2fs-overview-0.1.ps.gz: Gadi Oxman prehľad o Rozšírenej 2 súborového systému.
  5. Microsoft Windows Win32 API Dokumentácia, prichádza s najviac Windows kompilátory C, alebo na MSDN CDs
  6. http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/ext2tool_1_1.zip: Claus Tondering je Ext2tool
  7. http://metalab.unc.edu/pub/micro/pc-stuff/Linux/utils/dos/ext2nt.lsm: Peeter Joot je Ext2nt
  8. http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm: Ján Newbigin je Explore2fs

 

O Autorovi

“V reálnom živote” Werner Zimmermann sa učiť control engineering, digitálne systémy a počítačové architektúry na FHV Esslingen – Univerzita Aplikovaných Vied v Esslingene v Nemecku. Má hardvéru a softvéru pozadí v automobilových a priemyselných vnorené systémy. Svoj “kariéru” ako systému Linux software developer začal v roku 1994, keď si kúpil cd-rom disku disk, ktorý bol nepodporuje Linux … rozvinul ‘aztcd.c’, Linux CDROM vodiča, ktorý je stále súčasťou všetkých štandardné Linuxové jadrá, aj keď jednotke teraz je veľmi zastarané.