LTOOLS – pääsete oma Windowsi failidesse Windows 9x/ME ja Windows NT/2000/XP

Original:  http://www.it.fht-esslingen.de/~zimmerma/software/ltools/ltools.html

Werner Zimmermann

Linux Journal näidates LTOOLS.

Linux Kasutaja ajakiri.

Linux Ühendus.


LTOOLS pakuvad Windowsile sarnast funktsionaalsust, nagu MTOOLS Linux puhul: need võimaldavad teil failidele juurdepääsu vaenulikus failisüsteemis.


LTOOLS kasutamine käsurealt

LTOOLSi keskmes on käsurea programmide komplekt, mida saab kutsuda DOS-ist või DOS-Window sisse Windows 9x/ME või Windows NT/2000/XP. Need pakuvad sama funktsionaalsust kui tuntud LINUX käsklused ‘ls’, ‘cp’, ‘rm’, ‘chmod’, ‘chown’ ja ‘ln’. Nii saate DOS/Windows all

  • loend Linux faile ja katalooge (käsu: ldir),
  • failide kopeerimine Linux Windows ja vastupidi (käske: lread, lwrite),
  • kustutada või ümber nimetada Linux faile (käske: ldel, lren),
  • luua sümboolsed lingid (käsk: lln),
  • luua uusi Linuxi katalooge (käsk: lmkdir),
  • muuta Linuxi faili kasutusõigusi ja omanikut (käsk: lchange),
  • muuta vaikimisi kataloogi Linux (käsk: lcd),
  • seadke vaikimisi vaikimisi ketas (käsk: ldrive) and
  • näita oma kõvaketta partitsiooni seadistust (käsk: ldir -part).

Nagu paljude UNIX tööriistade puhul, kuuluvad need funktsioonid ühte käivitatavasse faili, mida kutsutakse koos käsurea parameetrite komplektiga. Et muuta oma elu lihtsamaks, pakutakse partitsioone (shell skripte), nii et teil pole vaja neid kõiki parameetreid meeles pidada ja sisestada.

Lisaks on LTOOLS Unix/Linux versioon, nii et saate neid kasutada Solaris või isegi Linux all, kui soovite seda partitsiooni paigaldamata mõne teise kõvakettarutilõiguga faili juurde pääseda.

LTOOLgui – LTOOLS Java GUI

Käsurea programmid on vanamoodsad! Kus on LTOOLS graafiline kasutajaliides? Noh, pole probleemi: kasuta LTOOLgui. LTOOLgui, mis on kirjutatud Java-s, kasutades JDK 2 Swingi raamatukogu, pakub Windows Exploreri nagu kasutajaliidest (joonis 1). Kaks alamakna LTOOLgui näitab teie DOS/Windows ja teie Linux kataloogi puid. Navigeerimist saab teha tavaliste punkti-klikkide toimingutega. Failide kopeerimine Windows Linux ja vastupidi saab kopeerida ja kleepida või lohistades. Parema hiirenupuga klõpsates avab dialoogi faili atribuutide vaatamiseks ja muutmiseks nagu juurdepääsuõigused, GID või UID. Faili topeltklõpsamine käivitub, kui see on Windows käivitatav fail, või avab selle sellega seotud rakenduse kaudu. See töötab Linux failidega isegi siis, kui neil on registreeritud Windows rakendus.

Muideks: saate kasutada ka LTOOLgui failihaldurina Linux all. Kuna LTOOLS käsureaprogrammid tulevad ka Linux versiooni, siis võite päästa faile kettale ilma nende paigaldamiseta.

Autor valis LTOOLgui jaoks Java, sest Java sobib eriti madala kõvakettale juurdepääsu jaoks… ainult nalja! Ei, muidugi, see pole Java-s üldse võimalik. Kui soovite otse riistvara juurde pääseda, peate kasutama C++ koodi ja JNI (Java Native Interface). Kuid kuna JNI töötab ainult 32-bitise koodi puhul, tähendab see Windows 9x/ME puhul “32-bitine 16-bitise toonimise” kasutamist (vt allpool). Kuna autor ei meeldinud ideele ühendada Sun Java koos Microsofti MASM-koodiga, võttis ta teise lähenemise. Ta kasutab lihtsalt LTOOLS käsureaprogrammi, mis saadetakse Java kaudu tuntud stdin/stdout-liidese kaudu. Nii Java-poolel tähendab riistvaraline juurdepääs lihtsalt voogesitusfaili sisend väljund.

Joonis 1: Java-põhise LTOOLgui graafiline kasutajaliides

Faili juurdepääs internetile?

Kahtlemata peab ükskõik milline kaasaegne programm olema internetist teadlik! Noh, kui käivitate LREADjav kaugarvutis ja ühendate selle kaudu LTOOLgui ühendusnupu kaudu, siis võite selle serveri Linux failide juurde pääseda nii, nagu oleksid nad kohalikud. LREADjav on lihtne serverideemon, mis tõlgib LTOOLgui poolt TCP/IP poolt väljastatud taotlust LTOOLS käsurea programmi kõnedesse ja saadab TCP/IP-le TCL/IP kaudu väljundi LTOOLgui (joonis 2). Loomulikult ei saa te mitte ainult vaadata kataloogide nimekirju, vaid seda teha ka kõikvõimalikult kaugelt, mida saate teha kohapeal, sealhulgas failide üleslaadimist ja allalaadimist. Kaugmasin võib käivitada Unix/Linux või Windows. Täna on see pigem mänguasja kui tõsine rakendus, sest LREADjav võib tekitada turb probleeme. Vaikekonfiguratsioonis saab seda kasutada ainult kohalikust hotsest, kuid seda saab konfigureerida, et võimaldada ühendusi 3 erinevast kaugkliendist. Kuid neid tuvastatakse ainult nende IP-aadressi kaudu, pole paroolikaitset jms. Kuid kui kasutajal on selle jaoks tõsine taotlus, saab ta hõlpsasti rakendada sisselogimis/salasõnade skeemi… See on kõik avatud lähtekoodiga!

Joonis 2. LTOOLgui kaugjuurdepääsuks

Java pole? Kasutage oma veebibrauserit!

Võibolla pole sul Java 2 installitud. Noh, pole probleemi, kui teil on veebibrauser. Käivitage ‘LREADsrv’ ja teie veebibrauser ning URL-i tüüp “http: // localhost” (joonis 3). Nüüd peaks teie Linuxi kataloogide loend ilmuma graafiliselt veebibrauseris. LREADsrv on väike kohalik veebiserver, mis lihtsa CGI-sarnase liidese kaudu muudab LTOOLS-i HTTP-päringute kaudu kättesaadavaks ja muudab nende väljund dünaamiliselt HTML-lehekülgedeks (joonis 4). Loomulikult ei paku see mitte ainult kohalikku juurdepääsu, vaid võimaldab ka kaugjuurdepääsu Interneti kaudu. Siiski on kaugkasutajatel LREADsrvil sama turvaline turvalisus kui LREADjav.

Kuna LREADsrv põhineb HTML-vormidel, mis näiteks ei toeta drag-and-drop-tüüpi või otse kopeerimise ja kopeerimisega, on veebibrauseri kasutamine natuke vähem mugav kui Java-põhise GUI-ga töötamine. Sellest hoolimata pakub see samu funktsioone.

Joonis 3: Linux failide uurimine Microsoft Internet Explorer abil

Joonis 4: LREADsrv – HTTP-põhine juurdepääs Linux failidele

LTOOLS Sisemised – Juurdepääs Windows kõvakettale

Kuna DOS/Windows ise ei toeta väliste failisüsteemide liideseid, peab LTOOLS pääsema “toorestele” baididele otse kettale. LTOOLS sisemiste osade mõistmiseks peate mõistma järgmisi valdkondi:

  • Kuidas kõvakettad korraldatakse vaheseinates ja sektorites ning kuidas neid saab juurde pääseda, st kuidas tooresid baite saab kettalt lugeda või kirjutada. Seda teavet võib leida näiteks sisse /2,3/.
  • Kuidas Linuxi laiendatud 2 failisüsteemi on korraldatud. Hea ülevaade kõigi inodete, rühmituste, plokkide, bitmappide ja kataloogide kohta võib leida nt. sisse /4/.

See viib automaatselt LTOOLS-i kerneli kihilisse arhitektuuri (joonis 5), mis koosneb mitmest C-failist:

  • Madalaim kiht 1 (failis Readdisk.c) füüsiliselt pääseda kõvakettale. See kiht tegeleb (peaaegu kõigi) erinevustega DOS, Windows 9x/ME, Windows NT/2000/XP ja Linux/Unix otsese kõvakettale juurdepääsu kohta ja üritab neid kõrgematel kihtidel varjata. Veel selle kohta varsti.
  • Layer 2 käsitleb UNIX tüüpilisi inode, plokkide ja grupi struktuure, millesse Extended 2 failisüsteem on organiseeritud.
  • Layer 3 haldab failisüsteemi kataloogistruktuuri.
  • Kõrgeim kiht 4 (sisse Main.c) pakub kasutajaliidese ja otsib käsureali parameetreid.

Skaneerides oma kõvakettaruumi partitsioonitabelit, proovib LTOOLS oma esimest Linux partitsiooni teie esimesel kõvakettalt automaatselt leida. Kui soovite juurdepääsu teisele partitsioonile või kettale, peate selle määrama käsurea parameetriga ‘-s’, e.g. ‘-s/dev/hdb2’. Teise võimalusena võite käsu abil määrata teise vaikeraua ja partitsiooni ‘ldrive’. Selleks, et teada saada, millistesse partitesse teil on, helista ‘ldir -part’.

Joonis 5: LTOOLS kihiline arhitektuur

DOS-i vanade päevade ajal oli elu lihtne. Kettaks on ainult üks võimalus madalal tasemel lugeda või kirjutada oma kõvakettale: BIOS katkestab 13h /3/. BIOS-i andmestruktuurid on piiratud kõvakettad 1024 silindriga, 63 peaga ja 255 sektoriga 512 baiti ehk 8 GB. Enamik C-kompileerijat andis funktsiooni nimega biosdisk(), nii et seda funktsiooni saab otse kasutada, ilma et oleks vaja kodeerida assamblee keelt. Suuremad kõvakettad, mõned aastad tagasi ‘extended’ int 13h funktsioonid kehtestati. BIOS-i piirangute ületamiseks kasutavad need funktsioonid lineaarse aadressikava, loogilise ploki aadressi (LBA) asemel vana silindri-peasektori (CHS) aadressi.

See töötab ikka veel Windows 9x/ME DOS aken (tabel 1), vähemalt lugemisele ja nii kaua, kui programm on koostatud 16-bitise kompilaatoriga. (LTOOLS kasutamine Borland C, Windows NT/2000/XP versioon ka kompileerib koos Microsoft Visual C, kasutab Unix/Linux versioon GNU C). Kui soovite madalal tasemel kirjutamisõigust, vajate seda ‘volume locks’ /3/. See mehhanism teavitab operatsioonisüsteemi, et teie programm töötab otse kettalt, kirjutades operatsioonisüsteemi draivereid mööda, nii et Windows võib takistada teiste programmide juurdepääsu kettale, kuni olete lõpetanud. Seda saab teha ka C-kompilaatori abil koostamise programmeerimisel ioctl() funktsioon.

16-bitises Windowsi programmis saab BIOS-i funktsioone kutsuda ainult DPMI kaudu. Kuna enamik C-kompileerijaid ei paku pakkimisfunktsioone, nõuab see (sisseehitatud) assemblerit. Kuid Win16 ei luba käsureaprogramme üldse, seega ärge muretsege…

Sisse Windows NT/2000/XP DOS kasti, kasutades BIOS int 13h toob kaasa GPF (Üldise kaitse viga). Ohutuse tagamiseks, Windows NT/2000/XP ei luba otsest kõvaketta juurdepääsu operatsioonisüsteemi mööda minnes. Kuid, Microsoft pakub lahendust, mis on peaaegu sama lihtne kui see, mida kirjutad Unix/Linux:

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

See avab kõvaketta partitsiooni /dev/hda1, lugeda sa helistad read(), kirjutan, et helistaksite write(). Lihtne ja arusaadav, kas pole? Alla Windows NT/2000/XP, kui te kasutate WIN32 API /5/, funktsioon CreateFile() ei võimalda mitte ainult faile luua ja avada, vaid ka kettaparteisid:

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

Ketaste sektorite lugemine ja kirjutamine saab nüüd teha läbi ReadFile() ja WriteFile().

Mõne hetke pärast võite arvata, et võite kasutada sama Win32-funktsiooni Windows 9x/ME. Kuid kui te seda dokumendis lugesite CreateFile(), leiad:

	Windows 95: This technique does not work for opening a logical drive. In
	Windows 95, specifying a string in this form causes CreateFile to return
	an error.

Alla Windows 9x/ME Microsoft Win32 dokumentatsioon soovitab helistada BIOS Int 13h kaudu VWIN32, üks süsteemist VxDs (kerneli draiverid). Kui proovite seda teha, siis ei õnnestu. Probleemide aruanne Q137176 sisse Microsoft Teadmisbaasi olekutel – hoolimata sellest, mida ametlik Win32-i dokumentatsioon ütleb – see toimib ainult disketidena, mitte kõvakettadena. Probleemiaruandes on öeldud, et kõvakettale on ainus võimalus helistada BIOS Int 16h sisse 16bit kood. Helistama 16bit koodi 32bit programm, mida vajate Microsoft “32bit kuni 16bit towking”… See ei ole mitte ainult teine API (koos muude dokumentidega, mis ei ole dokumenteeritud või dokumenteeritud vead?), Nõuab thunking ka Microsofti thunking-kompilaatorit, mis määratluse skriptist genereerib monteerija koodi. Sellest lähtuvalt tuleb Microsoft koostajalt luua 16-bit ja 32-bit objektifaili MASM. Need on seotud mõne C-koodi dozendi joonega, mille peate kirjutama, mille tulemuseks on a 16bit ja 32bit DLL (dünaamiline link raamatukogu). Muide, te vajate mitte ainult seda 32bit Visual C++ selle eest, aga teil peab olema ka vana 16bit versioon Microsoft C kompilaator… Sain aru? Patenditud, mitte laialdaselt kasutatavate tööriistade kogumi kasutamine ei oleks hea lahendus Open Source tarkvara tööriist nagu LTOOLS!

Kokkuvõtteks: selleks peavad olema eraldi versioonid DOS/Windows 9x/ME, Windows NT/2000/XP ja Linux/Unix. Selle peitmiseks kasutajalt nii palju kui võimalik LTOOLS püüab teada saada, millise operatsioonisüsteemi kaudu see töötab, ja kutsub automaatselt vastava käivitatava faili.

Tabel 1: madala taseme kõvakettale ligipääs

Alla DOS Alla Windows 9x/ME Alla Windows NT/2000/XP Alla LINUX/Unix
  • BIOS Int 13h
    (vajab BIOS-i laiendusi kettale üle 8GB)
  • DOS-programmid:
    nagu DOS, kuid peab kirjutuspääsuks kasutama helitugevuse lukustamist/avamist
  • Win16 programmid:
    peab helistama BIOS Int 13h kaudu DPMI
  • Win32 programmid:
    32bit kuni 16bit toonimine a Win16 DLL
  • DOS-programmid:
    ei ole lubatud
  • Win16
  • programmid:
    ei ole lubatud
  • Win32 programmid:
    CreateFile(), ReadFile(), WriteFile()
  • open(), read(), write()

Ohutusprobleemid?

Jah, LTOOLS kasutamine teataval määral võib tekitada turvaprobleeme. Iga kasutaja, kes neid saab käivitada, võib LINUX failisüsteemi juurde pääseda ja seda muuta, nt muuda faili kasutusõigusi või failiomanikke, vahetada paroolifaile jne. Kuid see on võimalik ka lihtsa ketta redaktoriga. Võib-olla LTOOLS kasutamisel on see vaid natuke mugavam. Siiski on piiramatu juurdepääs võimalik ainult siis, kui töötab DOS või Windows 9x/ME. Alla Windows NT/2000/XP LTOOLS Kasutaja peab otse kõvakettale juurdepääsu saama administraatori õigusi. Alla Unix/Linux enamikes standardseadmetes on toorikuvaraseadmete jaoks ka juurdepääs ainult süsteem adminil /dev/hda, /dev/hda1, jne.

Kas on olemas alternatiive?

LTOOLS ei ole ainus lahendus Linux failidele juurdepääsu saamiseks DOS/Windows. Tõenäoliselt on Claus Tondering Ext2tool /6/, 1996. aastal välja töötatud käsurea tööriistade komplekt oli selle probleemi esimene lahendus. Kuid, Ext2tool on piiratud juurdepääsuga lugemiseks ja ei tööta Windows NT. Põhinedes Ext2tool, Peter Joot kirjutas 1997. aastal Windows NT versioon, mis on endiselt piiratud ainult lugemiseks /7/. Mõlemad programmid on kirjutatud C, lähtekoodid on saadaval.

John Newbigin pakub meile Explore2fs /8/, mis sisaldab väga kena GUI ja kestab alla Windows 9x ja Windows NT. Selle lugemis- ja kirjutamisvõimalusega pakub see samu funktsioone nagu LTOOLgui. Muideks: John on teinud head tööd, sest ta suutis neid rakendada Microsoft 32bit kuni 16-bit toonimisega (vt eespool) isegi alla Borland Delphi! Nagu kõik Delphi programmid Explore2fs integreerib “õmblusteta” Windows, kuid üleminek mitte-Windows operatsioonisüsteemidele võib olla keeruline.

Ajalugu ja tulevik

LTOOLS esimene versioon loodi esialgse nime all ‘lread’ Jason Hunter ja David Lutz Willamette’i ülikoolis, Salem/Oregon (Stati Uniti d’America). See esimene versioon kestis DOS all, näitas Linux kataloogide nimekirju ja kopeeris faile Linux DOS-ile ja piirdus väikeste IDE-kõvakettadega ja LINUX peamistes vaheseinates.

Autor võttis üle hoolduse ja edasise arendamise 1996. Sellest ajast on LTOOLS õppinud tegelema suuremate kõvakettad, juurdepääs SCSI drives, kes töötavad all Windows 9x/ME ja Windows NT/2000/XP, täiendavad kirjutamisvõimalused ja need viidi UNIX-i tagasi, et need saaksid töötada Solaris ja Linux ise. Nad said veebibrauseripõhise ja JAVA-põhise graafilise kasutajaliidese jne jne. Paljud Linux kasutajad, kellest enamus on lähtekoodi nime all, aitas katsetamisel ja silumisel. Aitäh.

Vahepeal on LTOOLS jõudnud versioonile V4.7 /1/, võibolla isegi rohkem, kui see artikkel avaldatakse. Lisaks lisafunktsioonidele on leitud palju vigu – ja tõenäoliselt uued on juba sisse viidud. Aastate jooksul on jäänud ühine probleem: keegi ei näinud kõvakettaseadmete kiiret kiirust, kus ketaste suurused on plahvatanud, mis püsivalt tabanud operatsioonisüsteemi piirid. Kas te mäletate DOS-i probleeme 512 MB plaatidega, Windows 3.x probleemid 2GB partitsioonidega, BIOS piirata 8GB ja mitmesugused probleemid, mis Windows NT kas see on 2GB, 4GB ja 8GB? See on ainult hetk tagasi! Muide, isegi Linuxil on probleem: kernelides enne versiooni 2.3 ei tohi ükski fail ületada 2 GB, kuna Linux puhul on see enamik 32bit Unix süsteemid kasutavad allkirjastatud 32-bitise nihke kursorit read() või write() (see lahendatakse kernelis 2.4, muutes asetused 64-bitisetele väärtustele, kuid säilitades ülespoole ühilduvuse, võib Linuxi käivitada samades probleemides nagu me eespool Windows arutatud). Kettajuurdepääsu tarkvara standardimine oli alati palju väiksem kui kettaarendajatel, nii et nad leidsid operatsioonisüsteemi piirangute ületamiseks varaliste lahenduste. Ja alati pidid LTOOLS-i ja paljud teised programmeerijad seda tegema… Nii et ärge vihane, kui LTOOLS ei tööta teie uuel 64 GB draivil. See on Open Source, nii lihtsalt proovige aidata silumiseks ja edasi arendada!

Ja ärge unustage, kui kasutate LTOOLS: tehke seda omal vastutusel! Ainult Linux juurdepääs on kriitiline. Kuid kui kasutate Linux kettale failide kustutamiseks või faili atribuutide kirjutamisõigust, siis LTOOLS – ja teie kui kasutaja – suudab palju jama teha. Nii et hoidke alati varukoopiaid!

Viited

  1. http://www.it.fht-esslingen.de/~zimmerma/software/ltools.html: Homepage of the 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 Ralf Brown’s interrupt list for x86-PCs
  4. http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/Ext2fs-overview-0.1.ps.gz: Gadi Oxman’s overview about the Extended 2 filesystem.
  5. Microsoft Windows Win32 API – Documentation, comes with most Windows C compilers or on the MSDN CDs
  6. http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/ext2tool_1_1.zip: Claus Tondering’s Ext2tool
  7. http://metalab.unc.edu/pub/micro/pc-stuff/Linux/utils/dos/ext2nt.lsm: Peeter Joot’s Ext2nt
  8. http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm: John Newbigin’s Explore2fs

Teave autori kohta

“Reaalses elus” õpetab Werner Zimmermann FH Esslingenis – Esslingenis, Saksamaal rakenduslike ülikoolide juhtimistehnikat, digitaalsüsteeme ja arvutiarhitektuuri. Tal on riistvara ja tarkvara taust autotööstuses ja tööstuslikes sisseehitatud süsteemides. Tema “karjäär” Linuxi süsteemitarkvaraarendaja käivitati 1994. aastal, kui ta ostis CD-ROM-draivi, mida Linux ei toetanud … Nii arendas ta välja “Linux CDROMi draiveri ‘aztcd.c’, Linux CDROM mis on ikka veel kõikides standardsete Linux tuumad, isegi kui draiv on nüüd väga vananenud.