LTOOLS – Pristupite Linux datotekama iz sustava Windows 9x/ME i Windows NT/2000/XP

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

Werner Zimmermann

Linux Journal  koji sadrži LTOOLS.

Linux Korisnik dućan.

Linux zajednice.


LTOOLS pruža Windowsu sličnu funkcionalnost kao i MTOOLS u Linux: oni vam omogućuju pristup datotekama na “neprijateljskom” datotecnom sustavu.


Koristeći LTOOLS iz naredbene linije

U srcu LTOOLS je skup alata naredbenog retka programa, koji može biti pozvan od DOS-a ili iz DOS-Prozor u sustavu Windows 9x/ME ili Windows NT/2000/XP. Oni pružaju istu funkcionalnost kao dobro poznatog Linux naredbe „ls”, „cp”, „rm”, „chmod”, „chown” i „ln”. Dakle, pod DOS/Windows možete

  • popis Linux datoteke i direktorije (naredba: ldir),
  • kopiranje datoteka s Linux na Windows i obratno (naredbe: lread, lwrite),
  • brisati ili preimenovati Linux datoteke (naredbe: ldel, lren),
  • stvoriti simboličke veze (naredba: lln),
  • stvaranje novih Linux direktorije (naredba: lmkdir),
  • mijenjati Linux datoteku s pravima pristupa i vlasnik (Naredba: lchange),
  • promijeniti Linux zadani direktorij (naredba: lcd),
  • postaviti Linux zadani pogon (naredba: ldrive) i
  • pokazati svoj harddisk particiju postava (naredba: ldir -part).

Kao i kod mnogih UNIX alatima, ove funkcije su uključene u jednu izvršnu, koji se zove s hrpom parametara naredbenog retka. Kako bi vaš život lakšim, set naredbene datoteke (shell skripti) su osigurana, tako da ne morate se sjetiti i tip u sve te parametre.

Osim toga tu je i Unix/Linux verzija LTOOLS, tako da ih možete koristiti u Solarisu, pa čak i pod Linuxom, kada želite pristupiti datoteku na drugu particiju na hard bez montaže tu particiju.

LTOOLgui – Java GUI za LTOOLS

Programi naredbene linije starinski su! Gdje je LTOOLS grafičko korisničko sučelje? Pa, nema problema: Koristite LTOOLgui. LTOOLgui, napisan u Javi pomoću JDK 2 ljuljati knjižnice, pruža Windows Explorer kao korisničko sučelje (slika 1). U dva podizna prozora LTOOLgui prikazuje vaše DOS/Windows i vaše Linux mape. Kretanje se može obaviti uobičajenim akcijama point-and-click. Kopiranje datoteka iz sustava Windows na Linux ili obrnuto može se izvršiti kopiranjem i lijepljenjem ili povlačenjem i ispuštanjem. Klikom desne tipke miša otvorit će se dijaloški okvir za pregled i izmjenu atributa datoteka kao što su pristupna prava, GID ili UID. Dvostruki klik na datoteku će ga pokrenuti, ako je izvršna verzija sustava Windows, ili ga otvoriti s njim povezanom aplikacijom. To čak i radi s Linux datotekama, ako imaju registriranu Windows aplikaciju.

BTW: Također možete koristiti LTOOLgui kao upravitelja datoteka pod Linuxom. Budući da programi LTOOLS naredbenog retka također dolaze u Linux verziji, na taj način možete pristupiti datotekama na diskovima, bez montiranja.

Autor je odabrao Java za LTOOLgui jer je Java posebno pogodna za pristup tvrdom disku niske razine… samo se šali! Ne, naravno, to uopće nije moguće u Javi. Ako želite izravno pristupiti hardveru, morate koristiti C++ i JNI (Java na Native Interface). Međutim, budući da JNI radi samo za 32-bitni kod, u sustavu Windows 9x/ME to bi značilo da koristite ’32bit na 16-bitnu analizu’ (vidi dolje). Budući da autor nije volio ideju da kombinira Sunovu Java s Microsoftovim MASM kodom, on je uzeo još jedan pristup. Jednostavno koristi LTOOLS program naredbenog retka, koji se poziva iz Java putem poznatog stdin/stdout-sučelja. Dakle, za Javu, hardverski pristup znači jednostavnu I/O datoteku temeljenu na streamu.

Slika 1: Java-based LTOOLgui grafičko korisničko sučelje

Pristup datotekama preko Interneta?

Bez sumnje, svako stanje umjetničkog programa mora biti svjesno Interneta! Pa, ako pokrenete LREADjav na udaljenom računalu i povezujete ga putem gumba za povezivanje na LTOOLgui, možete pristupiti Linux datotekama na tom udaljenom poslužitelju kao da su lokalni. LREADjav je jednostavan poslužiteljski demon koji prevodi zahtjev za LTOOLgui preko TCP/IP u LTOOLS programske pozive naredbenog retka i šalje izlaz programa iz naredbenog retka natrag putem TCP/IP-a na LTOOLgui (Sl. 2). Naravno, ne samo da možete pogledati unose u imeniku, već možete učiniti sve na daljinu, što možete učiniti lokalno, uključujući prijenos i preuzimanje datoteka. Daljinski stroj može pokrenuti Unix/Linux ili Windows. Danas je to više igračka nego ozbiljna aplikacija, jer LREADjav može predstavljati sigurnosne probleme. U zadanoj konfiguraciji može se koristiti samo iz ‘localhost’, ali može se konfigurirati tako da omogući veze s 3 različita udaljena klijenta. Ali oni su identificirani samo putem njihove IP adrese, nema zaštite lozinkom ili slično. Međutim, ako korisnik ima ozbiljan zahtjev za to, on može lako implementirati shemu za prijavu/lozinku… Sve je to Open Source!

Slika 2: LTOOLgui za daljinski pristup

Nema Java? Upotrijebite svoj web preglednik!

Možda nemate Java 2 instaliran. Pa, nema problema, sve dok imate web preglednik. Započnite ‘LREADsrv’ i svoj web preglednik i kao URL tipa ‘http://localhost’ (Sl. 3). Sada bi vaš popis za Linux katalog trebao biti grafički prikazan u vašem web pregledniku. LREADsrv je mali lokalni web poslužitelj koji putem jednostavnog sučelja poput CGI čini LTOOLS dostupnim putem HTTP zahtjeva i dinamički pretvara njihove rezultate u HTML stranice (Slika 4). Naravno, to ne samo da omogućuje lokalni pristup, već omogućava daljinski pristup putem Interneta. Međutim, za korisnike na daljinu LREADsrv ima istu nisku razinu sigurnosti kao i LREADjav.

Budući da se LREADsrv temelji na HTML obrascima, npr. ne podržavaju povlačenje i ispuštanje ili izravno kopiranje i lijepljenje, rad s web-preglednikom je manje prikladan nego rad s GUI-om na temelju Java. Ipak, ona pruža iste mogućnosti.

Slika 3: Istraživanje Linux datoteka s Microsoft Internet Explorer

Slika 4: LREADsrv – pristup temeljen na HTTP-u Linux datotekama

LTOOLS Internals – Pristupanje tvrdom disku pod Windows

Kao DOS/Windows sama ne podržava sučelja stranim datotečnih sustava je LTOOLS mora pristupiti „sirovi” podaci bajtova izravno na disk. Da bismo razumjeli unutarnji od LTOOLS, morate imati osnovno razumijevanje sljedećih područja:

  • Kako harddisks se organiziraju u pregrade i sektorima i kako se može pristupiti, odnosno kako je „sirovo” bajta može čitati ili s diska. Ova informacija se može naći na primjer u /2,3/.
  • Kako je organiziran Linux je Prošireni 2 datotečni sustav. Dobar pregled o svim inodes, grupa, blokovi, bitmape i direktorije stvari se mogu naći npr u /4/.

To automatski dovodi do slojevite arhitekture LTOOLS jezgre (Sl. 5), koji se sastoji od nekoliko C datoteka:

  • Najniži sloj 1 (u datoteci Readdisk.c) fizički pristupa tvrdom disku. Ovaj sloj se bavi (skoro sve) razlike između DOS, Windows 9x/ME, Windows NT/2000/XP i Linux/Unix vezi izravan pristup harddisk i pokušava ih sakriti od viših slojeva. Više o tome uskoro.
  • Sloj 2 bavi UNIX tipično inode, blok i strukture grupe, u kojoj se organizira Extended 2 datotečni sustav.
  • Sloj 3 upravlja strukturu direktorija datotečnog sustava.
  • Najviši sloj 4 (Main.c) pruža korisničko sučelje i skenira parametre naredbenog retka.

Skeniranjem tvrdom disku je pregradni stol, a LTOOLS pokušati automatski pronaći svoj prvi Linux particiju na prvom disku.Ako želite pristupiti drugom particiju ili disk, morate ga odrediti pomoću parametra naredbenog retka „-s”, npr „s/dev/hdb2”. Alternativno možete postaviti drugu zadanu pogon i particiju preko naredbu „ldrive”. Da biste saznali koje particije ste, call ‘ldir -part’.

Slika 5: LTOOLS slojevita arhitektura

Život je bio jednostavan u dobrim starim vremenima DOS-a. Postoji samo jedan način za pristup niskoj razini čitanja ili pisanja vašeg tvrdog diska: BIOS prekida 13h /3/. BIOS podaci ograničavaju hard diskove na 1024 cilindara, 63 glave i 255 sektora od 512 bajta, tj. 8 GB. Većina C prevoditelja imala je funkciju pod nazivom biosdisk(), kako bi se ta funkcija mogla koristiti izravno bez potrebe za kodiranjem na montažnom jeziku. Za rješavanje većih hard diskova, prije nekoliko godina uvedene su “proširene” int 13h funkcije. Kako bi se prevladale ograničenja BIOS-a, ove funkcije koriste shemu linearnog adresiranja, logičke blok adrese (LBA), a ne stari adresiranje stanja na glavi motora (CHS).

To još uvijek funkcionira u prozoru DOS sustava Windows 9x/ME (Tablica 1), barem za pristup čitanju i dok se program sastavlja s 16-bitnim prevodilom. (LTOOLS koristi Borland C, verzija sustava Windows NT/2000/XP također se kompilira s Microsoft Visual C, Unix/Linux verzija koristi GNU C). Ako želite pristup pisati na niskoj razini, trebate ‘glasnoću za glasnoću’ /3/. Taj mehanizam obavještava operativni sustav, da program izvodi izravni disk, a zaobilazi upravljačke programe operacijskog sustava, tako da Windows može spriječiti druge programe da pristupaju disku dok ne završite. Opet se to može učiniti bez programiranja montaže pomoću funkcije ioctl() C prevoditelja.

U 16-bitnom Windows programu funkcije BIOS-a mogu se nazvati samo preko DPMI-a. Budući da većina C prevodilaca ne pružaju funkcije omota, to bi zahtijevalo (inline) monter. Međutim, Win16 uopće ne dopušta programe naredbenog retka pa se ne brinite…

U okviru DOS u sustavu Windows NT/2000/XP, korištenje BIOS int 13h dovodi do GPF (General Protection Fault). Zbog sigurnosnih razloga Windows NT/2000/XP ne dopušta izravni hard disk pristup zaobilazeći operativni sustav. Međutim, Microsoft nudi rješenje koje je gotovo jednako jednostavno kao ono što biste napisali pod Unix/Linux:

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

To će otvoriti vaš hard disk particiju /dev/hda1, da biste pročitali da biste nazvali read(), za pisanje koje biste nazvali write(). Jednostavna i izravna, zar ne? U sustavu Windows NT/2000/XP, ako koristite WIN32 API /5/, funkcija CreateFile() ne dopušta samo stvaranje i otvaranje datoteka, već i particija diska:

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

Čitanje i pisanje sektora diska sada se može obaviti putem ReadFile() i WriteFile().

Na trenutak mislite da biste mogli koristiti istu Win32 funkciju pod Windows 9x/ME. Međutim, ako pročitate u dokumentaciji za CreateFile(), naći ćete:

	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.

Pod Windows 9x/ME Microsoftova Win32 dokumentacija preporučuje da nazovete BIOS Int 13h putem VWIN32, jednog od VxD sustava (kernel vozača). Međutim, ako to pokušate učiniti, nećete uspjeti. Izvješće o problemu Q137176 u Microsoftovoj bazi znanja navodi da – unatoč službenoj dokumentaciji Win32 – to radi samo za diskete, a ne za hard diskove. Kao što izvješće o problemu kaže, za hard diskove jedini je način nazvati BIOS Int 16h u 16-bitnom kodu. Da biste nazvali 16bitni kod iz 32-bitnog programa, trebate Microsoft “32bit do 16bit transformacija”… Ovo nije samo još jedan API (s ostalim nedokumentiranim značajkama ili dokumentiranim greškama?), transformacija također zahtijeva i Microsoftov alat za prevođenje, koji iz skripte za definiciju generira skupni kod. Od toga 16bit i 32bit objektna datoteka moraju biti generirani pomoću Microsoftovog montažera MASM. One će biti povezane s nekim dozvolama linija C-koda, koje morate pisati, što rezultira 16-bitnim i 32-bitnim DLL-om (bibliotekom dinamičkih veza). Usput, ne trebate samo 32bit Visual C++ za to, ali morate imati i staru 16-bitnu verziju Microsoftovog C prevoditelja… Je li to? Korištenje hrpa vlasničkih, a ne široko korištenih alata, ne bi bilo dobro rješenje za softverski alat Open Source kao što je LTOOLS!

Ukratko: Mora postojati zasebna verzija za DOS/Windows 9x/ME, Windows NT/2000/XP i Linux/Unix. Da biste je sakrili od korisnika što je više moguće, LTOOLS pokušava otkriti, pod kojim operativnim sustavom radi i automatski poziva odgovarajuću izvršnu datoteku.

Tablica 1: Pristup tvrdom disku niske razine

Pod DOS Pod Windows 9x/ME Pod Windows NT/2000/XP Pod LINUX/Unix
  • BIOS Int 13h
    (trebate BIOS proširenja za diskove gore 8GB)
  • DOS programi:
    poput DOS-a, ali mora upotrebljavati zaključavanje/otključavanje glasnoće za pristup za pisanje
  • Win16 programi:
    mora nazvati BIOS Int 13h preko DPMI
  • Win32 programi:
    32bit do 16bit transformacija na a Win16 DLL
  • DOS programi:
    nije dozvoljeno
  • Win16 programi:
    nije dozvoljeno
  • Win32 programi:
    CreateFile(), ReadFile(), WriteFile()
  • open(), read(), write()

Sigurnosni problemi?

Da, imaju li LTOOLS do određene mjere mogu predstavljati sigurnosne probleme. Svaki korisnik, koji ih može pokrenuti, može pristupiti i mijenjati datoteke na LINUX datotečnom sustavu, na pr. promijenite prava pristupa datotekama ili vlasnicima datoteka, zamijenite lozinke itd. Međutim, to je moguće i uz jednostavan uređivač diska. Možda je malo udobnije kad koristite LTOOLS. Ipak, neograničeni pristup moguć je samo ako se pokreće pod DOS ili Windows 9x/ME. U sustavu Windows NT/2000/XP LTOOLS korisnik mora imati administratorska prava za izravno pristupanje tvrdom disku. U Unix/Linuxu u većini standardnih instalacija, samo administrator sustava ima pristupna prava za ‘sirovi’ disk uređaji /dev/hda, /dev/hda1 itd.

Postoje li alternative?

LTOOLS nisu jedino rješenje za pristup Linux datotekama DOS/Windows. Vjerojatno Claus Tondering’s Ext2tool /6/, skup alata naredbene linije, razvijen 1996. godine, bio je prvo rješenje ovog problema. Međutim, Ext2tool je ograničen na pristup samo za čitanje i ne radi se u sustavu Windows NT. Na temelju Ext2tool, Peter Joot 1997 napisao verziju Windows NT, još uvijek ograničena samo na čitanje /7/. Oba su programa pisana u C, dostupni su izvorni kodovi.

John Newbigin pruža nam Explore2fs /8/, koji dolazi s vrlo lijepim GUI i radi pod Windows 9x i Windows NT. Pristupom čitanja i pisanja pruža iste značajke kao i LTOOLgui. BTW: John je izvrsno radio, jer je uspio implementirati Microsoftov 32bit na 16 bitni transformacija (vidi gore) čak i pod Borlandovim Delphima! Kao i svi Delphi programi Explore2fs integriraju ‘bešavne’ u Windows, ali prijenos na ne-Windows operacijske sustave može biti teško.

Povijest i budućnost

Prva verzija LTOOLS-a nastala je pod izvornim imenom ‘lread’ Jason Hunter i David Lutz na Sveučilištu Willamette, Salem/Oregon (SAD). Ova prva verzija pokrenuta je pod DOS-om, mogla bi prikazati popis Linux imenika i kopirati datoteke s Linuxa u DOS i ograničena je na male IDE hard diskove i LINUX na primarnim particionima.

Autor je 1996. godine preuzeo održavanje i daljnji razvoj. Od tada su LTOOLS naučili rješavati velike hard diskove, pristupiti SCSI diskovima, pokrenuti pod Windowsima 9x/ME i Windows NT/2000/XP, dodatni pristup za pisanje i vratili ih natrag na UNIX, kako bi ih pokrenuli pod Solaris i Linux sama. Dobili su web preglednik temeljen i JAVA temeljen grafičko korisničko sučelje i sl. Itd. Puno Linux korisnika, od kojih je većina imenovan u izvornom kodu, pomogao u testiranju i ispravljanje pogrešaka. Hvala vam.

U međuvremenu, LTOOLS je dostigao verziju V4.7 /1/, možda čak i više, kada će ovaj članak biti objavljen. Osim dodatnih značajki, mnogo bugova je popravljeno – i najvjerojatnije su uvedene nove. Uobičajeni problem ostao je tijekom godina: Nitko nije predvidio brzu brzinu u tehnologiji tvrdih diskova, gdje su eksplodirale veličine diska, koje su stalno pogodile ograničenja operativnog sustava. Sjećate li se DOS-ovih problema s 512MB diskovima, Windows 3.x problemima s 2GB particije, ograničenjem BIOS-a na 8GB i različitim problemima koje Windows NT ima na 2GB, 4GB i 8GB? To je samo trenutak prije! Usput, čak i Linux ima svoj problem: u jezgrama prije 2.3, niti jedna datoteka ne može prelaziti 2 GB jer Linux kao i većina 32-bitnih Unix sustava koristi potpisani 32bit offset pointer u read() ili write() (to će biti riješeno u kernelu 2.4 promjenom offsets na 64bit vrijednosti, ali održavanje kompatibilnosti prema gore svibanj pogon Linuxu u iste probleme kao što smo razgovarali za Windows gore). Softverska standardizacija za pristup disku uvijek je bila znatno sporija od razvojnih programera diskova pa su izumili vlasnička rješenja za prevladavanje granica operativnog sustava. I uvijek su se LTOOLS-i mnogi drugi programeri morali suočiti… Nemojte se ljutiti ako vam LTOOLS ne rade za vas na novom 64GB pogonu. To je Open Source, stoga jednostavno pokulaajte ponilatavati i dalje razvijati!

I ne zaboravite, ako koristite LTOOLS: učinite to na vlastiti rizik! Čitanje samo pristupa Linuxu je nekritično. Međutim, ako upotrebljavate pristup za pisanje za brisanje datoteka ili izmjenu atributa datoteka na vašem Linux disku, LTOOLS – i vi kao korisnik – možete napraviti puno gluposti. Stoga uvijek držite sigurnosnu kopiju!

Reference

  1. http://www.it.fht-esslingen.de/~zimmerma/software/ltools.html: Početna stranica 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 prekinuti popis za x86-PC
  4. http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/Ext2fs-overview-0.1.ps.gz: Gadi Oxman pregled o Extended 2 sustav datoteka.
  5. Microsoft Windows Win32 API – Dokumentacija dolazi sa većinom kompajlera sustava Windows C ili na MSDN CD
  6. http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/ext2tool_1_1.zip: Claus Tondering Ext2tool
  7. http://metalab.unc.edu/pub/micro/pc-stuff/Linux/utils/dos/ext2nt.lsm: Peeter Joot Ext2nt
  8. http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm: John Newbigin Explore2fs

O autoru

“U stvarnom životu” Werner Zimmermann poučava kontrolni inženjering, digitalne sustave i računalnu arhitekturu na FH Esslingenu – Sveučilištu primijenjenih znanosti, Esslingen, Njemačka. On ima hardversku i softversku pozadinu u automobilskim i industrijskim ugrađenim sustavima. Njegova “karijera” kao razvojni programer Linux sustava počela je 1994. godine, kada je kupio CD-ROM pogon, koji Linux nije podržao… Tako je razvio ‘aztcd.c’, Linux CD-ROM drajver koji je još uvijek uključen u sve standardnih Linux jezgri, čak i ako je pogon sada vrlo zastario.

Computer science
Kratka povijest interneta

Source: http://www.walthowe.com/navnet/history.html Anegdotalna povijest ljudi i zajednica koji su doveli do interneta i weba (Zadnji put ažuriran 23. kolovoza 2016.) A Brief History of the Internet by Walt Howe is licensed under a Creative Commons Attribution- Noncommercial-Share Alike 3.0 United States License. Based on a work at www.walthowe.com. Internet je bio rezultat nekog vizionarskog razmišljanja …

Computer science
Intervjui s ranim razvojnim programerima · Internet povijest

Source: http://internetbrothers.com/interviews.htm O čemu se radi: Prije gotovo desetak godina, Internet Brothers intervjuirao je brojne rane pioniri u nezavisnoj zajednici produkcije web stranica. Neki su stvarali umjetnost, drugi su razvili nove tehnologije, neki su čak i počeli pokretati internetsku trgovinu. Svi su bili dobro poznati u web krugovima zbog svoje genijalnosti …

Computer science
“Strijte” jezike, ili 28 godina programiranja

Source: https://blog.osteele.com/2006/02/stretch-languages Oliver Steele 5. veljače 2006 Nedavno sam pregledao programske jezike koje sam koristio tijekom 28 godina1 moje programske karijere. Rezultat je prikazan u donjoj tablici. (Kliknite na sliku da biste je vidjeli u punoj veličini.) Ovdje postoje neki očiti trendovi2. Jezici se uglavnom dobivaju na višoj razini. Postoji nekoliko …