Linux … în Windows

coLinuxUltima temă de laborator destinată studenţilor mei de anul I a fost realizarea unui simplu mp3 player în Linux. Scopul era acomodarea cu programarea sub acest sistem de operare, fapt destul de util studenţilor în anii viitori. Cum instalarea unui sistem Linux complet este relativ dificilă (pentru anul I, problema partiţionării hard disk-ului fără urmări prea grave se pare că nu e aşa simplă …, deşi ultima versiune de Ubuntu se pare că rezolvă problema) , m-am hotărât să le pun la dispoziţie o maşină virtuală gata configurată.

Uşor de zis, greu de făcut. Am tot testat diverse soluţii, de la celebrul VMWare [3] până la noul şi micuţul Virtual Box [4] (ce mai nou se pare că este propietatea Sun Microsystems). Toate merg foarte bine, însă folosirea lor are două dezavantaje:

  • nu sunt foarte uşor de instalat (şi mai ales de configurat dacă au nevoie şi de o modalitate de partajare de fişiere cu sistemul gazdă)
  • consumă o cantitate semnificativă de resurse (sub 1 GB de memorie nu discutăm)

Cum virtualizarea nu a fost un succes, am ajuns la Cygwin [2]. Acesta din urmă reprezintă setul de biblioteci pe care se bazează Linux, însă compilate pentru Windows. Astfel, prin recompilare şi linkeditare cu Cygwin, programe de genu gcc, make, mc, bash etc. funcţionează sub Windows. Singura problemă este la cât de bine rulează acestea. Merg lent şi sunt, de multe ori, relativ complicat de folosit. Mai mult, nu simulează prea bine un mediu Linux (nu sunt console, nu merg toate comenzile, nu există kernel etc.).

coLinux

Tot căutând pe Internet variante de virtualizare pentru Linux, am găsit o distribuţie de Linux care … merge sub Windows. Cooperative Linux [1], sau pe scurt coLinux, este un proiect care şi-a propus portarea kernel-ului de Linux astfel încât acesta să ruleze cot la cot cu Windows. Practic ei au obţinut un sistem Linux ce rulează în paralel cu Windows.

Kernel

Sună foarte ciudat … un sistem Linux ce rulează în paralel cu Windows. Deci practic … avem doua sisteme de operare ce rulează pe un singur calculator? Ei bine, cam aşa ceva. CoLinux aduce nişte schimbări majore în kernel, modificând modul în care sunt accesate perifericele, cum sunt tratate întreruperile etc. În loc să folosească direct hardware-ul calculatorului gazdă, coLinux instalează în sistem un driver numit linux.sys şi un program numit colinux-daemon.exe.

Linux.sys se ocupă de toată procesarea ce trebuie făcută de către kernel cu drepturi suplimentare faţă de modul utilizator (alocări de memorie, accesul la periferice, schimbări de context etc.). Pentru a nu avea probleme de acces concurent, acest driver foloseşte sistemele de intrare şi ieşire puse la dispoziţie de către Windows. Practic, toate intrările şi ieşirile programelor din Linux sunt retrimise către kernel-ul de Windows. Pe lângă driver, coLinux mai vine cu un program numit colinux-daemon.exe. Toate programele ce rulează sub Linux vor fi văzute de către Windows ca fiind procesul colinux-daemon.exe.

Astfel, din punctul de vedere al Windows, Linux-ul este văzut ca un driver suplimentar şi un proces în plus.

Hard Disk

Hard disk-ul folosit de către coLinux este în esenţă un fişier ce conţine o partiţie. Autorii coLinux ne pun la dispoziţie mai multe distribuţii ce au fost deja instalate. Astfel, tot ceea ce a trebuie utilizatorul să facă este să descarce de pe pagina lor de Internet fişierul cu Debian (sau altă distribuţie), şi au deja un coLinux perfect funcţional.

Fişierele din Windows

Folosirea fişierelor din Windows în coLinux este mult mai uşoară decât m-am aşteptat. CoLinux suportă un sistem de fişiere numit CoFS. Acesta face legătura dintre un director din Windows şi un dispozitiv virtual din coLinux. Scrierea şi citirea acestui sistem de fişiere se face prin utilizarea funcţiilor Windows de bibliotecă (adică CreateFile, WriteFile, ReadFile etc.). Astfel nu se pune problema scrierii concurente pe aceeaşi partiţie. Windows se ocupă de scrierea şi citirea lor, din punctul lui de vedere fiind cereri trimise de către programul colinux-daemon.exe.

Ideea mi se pare foarte bună, deoarece nu există riscul pierderii de date de pe partiţie. Nu se pune problema unor greşeli (bug-uri) în sistemul CoFS astfel încât structure sistemului de fişiere să fie afectată (cum se întâmpla în cazul driver-ului experimental de NTFS … cei care au folosit Linux acum câţiva ani ştiu foarte bine).

Reţea

Cum conectarea la Internet este esenţială, coLinux nu putea să nu suporte aşa ceva. Există mai multe variante prin care coLinux poate fi conectat la reţea.

Prima variantă este cea mai simplă. CoLinux are integrat un sistem de conectare în reţea cu sistemul gazdă. Astfel, sistemul coLinux va avea adresa de IP 10.0.2.15 iar sistemul gazdă este văzut cu adresa 10.0.2.2. Legătura de reţea este mascaradată (DNAT), deci sistemul coLinux este conectat la Internet dacă şi Windows este conectat. Un dezavantaj al acestui tip de legătură este viteza mică de transfer.

A doua variantă de conectare la reţea este folosind druiver-ul TunTAP. Din ce scrie pe pagina coLinux se pare că acest driver merge foarte bine în Windows 2000 şi XP, însă sub Vista mai dă ecrane albastre. N-am încercat decât sub XP, unde mi-a mers foarte bine.

Configurarea este foarte uşoară, driver-ul TunTAP instalându-se odată cu coLinux.

Sunet

Partea de sunet a fost un pic mai complicată. Din moment ce coLinux nu are acces direct la dispozitivele hardware (ci prin driver-ele Windows), placa de sunet nu poate fi accesata direct de catre kernel. Soluţia vine însă prin folosirea unui server audio. Poate că ştiţi, sistemul de sunet din Linux permite folosirea unei plăci de sunet … pe reţea. În loc să fie trimise direct plăcii de sunet, datele audio sunt trimise prin intermediul reţelei unui server audio aflat la distanţa, acesta la rândul său trimiţându-le plăcii de sunet de pe calculatorul pe care rulează. Cele mai cunoscute exemple sunt ESD (care în general e folosit local) sau plugin-uri de ALSA.

CoLinux foloseşte acestă posibilitate şi trimite prin intermediul legăturii de reţea sistemului Windows datele audio. Singura condiţie este ca în Windows utilizatorul să ruleze un server audio. Cele propuse de coLinux sunt ESD pentru Cygwin sau PulseAudio [5] (nici măcar nu trebuie instalat, se copiază pur şi simplu câteva executabile şi nişte biblioteci).

Interfaţa Grafică

X Window System (fie XFree86 sau Xorg) este efectiv conceput sub forma unui server (nu degeaba se numesc XFree86 sau Xorg servers). Astfel, fie că funcţionează pe calculatorul local sau la distanţă, ele primesc comenzi de la programele ce au nevoie de desenare (Window Manager, biblioteciile de interfaţă – GTK, Qt etc.) prin intermediul interfeţei de reţea.

Din fericire, există câteva implementări ale X Windows System pentru Windows (de exemplu Xming [6]). CoLinux foloseşte un server X instalat pe sistemul Windows gazdă şi trimite acestuia comenzile de desenare. Practic programele ce rulează sub coLinux procesează toate informaţiile (ce ferestre trebuie, unde trebuie etc.) şi trimit rezultatul (sub formă de comenzi de desenare) prin reţea sistemului Windows care îl afişează.

Să vedem ce ştie

După ce am descărcat coLinux, m-am pus imediat pe treabă. A trebuit să fac câteva configurări, am instalat serverul de sunet şi serverul grafic şi am pronit kernel-ul. Pentru teste, am folosit imaginea de hard disk pentru Debian.

În primul rând am testat consola. Într-un terminal de Windows am avut un Linux perfect funcţional. Puteam da ALT+F1 … ALT+F6 şi schimbam terminalele virtuale. După ce m-am jucat puţin cu el, m-am apucat de instalat şi rulat programe.

Consola CoLinux

În primul rând mi-am instalat Midnight Commander [9]. Merge perfect. După montarea unui director din Windows, practic îmi vedem fişiere din Windows în Linux … în timp ce le puteam vedea perfect şi în Windows Explorer.

mc sub coLinux

Următorul pas a fost testarea server-ului de sunet. Am instalat MPlayer [11] şi am rulat un fişier mp3. Am mers fără probleme. Ok … era timpul să vedem dacă merg şi filmele. Ei bine, pe conexiunea de reţea implicită nu prea merge, se pare că e prea lentă. Soluţia … configurarea driver-ului TunTAP. Interfaţa de reţea simulată de către acesta este mai rapidă, deci am putut vedea foarte bine filme (evident, prin folosirea ieşirii video x11 sau sdl, xvideo foloseşte memorie partajată între MPlayer şi Xorg, ceea ce folosind un server la distanţă evident nu merge).

MPlayer folosind coLinux

XMMS [10] merge foarte bine, însă mai sunt probleme la interfaţa grafică, se pare că Xming (serverul Xorg pentru Windows folosit de mine) mai are nişte probleme.

XMMS folosind coLinux

VLC [7] merge şi el binişor, însă mai sacadează din când în când.

VLC folosind coLinux

Ultimul program pe care l-am testat a fost GIMP [8].

GIMP folosind coLinux

Probleme

După cum precizează şi autorii coLinux, mai există încă probleme legate de funcţionarea corectă a coLinux. Sunt programe care nu merg perfect sub acest sistem (incă). Recomandarea lor este ca deocamdată să nu se folosească în producţie.

Deoarece rulează efectiv în paralel, orice problemă de kernel din Linux poate afecta serios şi Windows (şi invers).

Windows şi Linux

Recunosc că am fost uimit de ce am testat. Mi se pare foarte util să ai două sisteme de operare ce rulează în paralel. Cu un pic de îmbunătăţiri, mai ales la partea server-ului Xorg pentru Windows şi cu adăugarea facilităţii partajării memoriei între programele din Windows şi cele din coLinux, se pare că Windows şi Linux vor convieţui foarte bine. Nu va mai conta pentru ce sistem este scris un anumit program.

Folosind coLinux, utilizatorii vor putea beneficia de toate avantajele programelor indiferent dacă sunt scrise pentru Windows sau Linux.

Legături utile

  1. coLinux, www.colinux.org
  2. Gygwin, www.cygwin.com
  3. VMWare, www.vmware.com
  4. Virtual Box, www.virtualbox.org
  5. PulseAudio, www.pulseaudio.org
  6. Xming, http://sourceforge.net/projects/xming
  7. VLC media player, http://www.videolan.org/vlc/
  8. GIMP, www.gimp.org
  9. Midnight Commander, www.midnight-commander.org
  10. XMMS, www.xmms.org
  11. MPlayer, www.mplayerhq.hu
Anunțuri

9 răspunsuri to “Linux … în Windows”

  1. Xammer Says:

    Eu cred ca Wubi e mai potrivit pentru astfel de proiecte.

    • Alexandru Says:

      Din cate stiu eu, Wubi este un sistem care te lasa sa instalezi Ubuntu fara sa ii faci o partitie speciala. El creaza partitia pentru Linux intr-un fisier normal aflat partitia de Windows.
      Utilizatorul poate astfel sa booteze calculatorul in Linux fara sa aiba nevoie de o partitie separata. Problema este ca nu merge totdeauna, se oprestte la bootare si ramane o consola in mod text.
      coLinux pe de alta parte permite rularea simulatana a cvelor doua sisteme, spre deosebire de Wubi ce presupune rularea unuia.

  2. gogu sclipici Says:

    Parerea mea este ca pentru inceput un amarat de VMWare isi facea treaba cu brio. Ma refer aici strict la partea cu studentii tai de anul I. VMWare player se instaleaza foarte usor si se pot folosi masini virtuale gata configurate ca mediu de dezvoltare. In fond vrei sa vezi ca se descurca cu tema de casa nu sa ii faci administratori de sistem. E drept ca mai invata si ei cate ceva dar procedura de instalare e destul de complicata pentru coLinux si prin urmare ar putea fi destul de frustrant pentru unii. Eu lucrez de cativa ani cu VMWare care ce-i drept consuma ca un nemernic dar in ziua de azi resuresele RAM nu mai sunt atat de costisitoare. In plus ai avantajus ca poti descarca direct imagini pre configurate pentru diverse scopuri.. cum ar fi de exemplu un server de Asterix fara sa iti mai bati tu capul sa instalezi toate pechetele. Iar pentru conectarea la retea pana acum nu am avut absolut nici o problema folosind modul bridged (in orice conditii: ip static, dhcp, proxy …), ba chiar se comporta bine din punctul de vedere al performantei. Cu transferul de fisiere e mai delicat dar avand in vedere ca absolut toate distributiile au un amarat de sshd instalat (sau se instaleaza foarte usor) cu un WinSCP ai rezolvat si problema asta.

  3. Alexandru Says:

    Sunt de accord cu tine ca este relativ simplu sa instalezi un VMWare si sa incarci o imagine de masina virtuala. Totusi este mai dificil decat sa ai o simpla consola text (care semana cu cmd.exe).
    Mie mi se pare esential sa poti utiliza partajarea de fisiere directa. Trebuie sa te gandesti ca majoritatea studentilor din anul I nu stiu ce inseamna ssh, sa nu mai discutand e un bridge, nat sau adresa de ip. Tocmai ca nu vreau sa ii fac administratori de retea.
    Instalarea coLinux a presupus descarcarea si instalarea kit-ului si descarcarea unei arhive ce contine fisierul cu imaginea hard disk-ului de Debian, fisierul de configurare, PulseAudio (ce nu trebuie instalat) si un fisier bat pentru rulare. Cerinte hardware sunt de foarte mici iar rulearea este mult mai rapida decat in VMWare.

  4. ozy Says:

    Am si eu o antrebare cum pot vedea fisierele linuxului{kiwi linux} cand rulez windous?? 🙂

  5. Minea Adrian Says:

    Este o versiune mai veche de wm-ware care consuma resurse putine, mie mi-a mers atunci pe un p3 cu 256 de ram

  6. catalin Says:

    am o rugaminte

    ma poate ajuta cineva sa imi instalez si sa pornesc acest coLinux?
    mai multe detalii despre ce vreau sa fac pe e-mail sau la telefon (adresa de e-mail este in formular)

    Va multumesc anticipat!

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s


%d blogeri au apreciat asta: