Linux este inspirat din Unix, dar nu este o copie identică, deși prezintă asemănări notabile. Vom analiza în profunzime diferențele majore dintre aceste două sisteme de operare renumite.
Oare chiar sunt atât de diferite?
Linux este un sistem de operare disponibil gratuit, sub licență open-source. Unix, pe de altă parte, este un produs comercial, oferit de diverși furnizori, fiecare cu propria sa variantă, adaptată de obicei la hardware-ul specific. Unix este costisitor și are codul sursă închis. Dar, în esență, atât Linux, cât și Unix îndeplinesc aceleași funcții în mod similar, nu-i așa? Într-o anumită măsură, da.
Subtilitățile sunt ceva mai complexe. Există diferențe care depășesc aspectele tehnice și arhitecturale. Pentru a înțelege mai bine influențele care au conturat Unix și Linux, trebuie să ne familiarizăm cu istoricul lor.
Originile Unix
Unix are o istorie de peste 50 de ani. A fost dezvoltat inițial în Digital Equipment Corporation (DEC), folosind limbajul de asamblare pe un computer DEC PDP/7, ca proiect neoficial în cadrul Laboratoarelor Bell, pe atunci deținute de AT&T. Curând, a fost portat pe un computer DEC PDP/11/20, extinzându-se gradual și pe alte mașini din cadrul Bell. O rescriere în limbajul de programare C a dus la apariția versiunii 4 a Unix în 1973. Aceasta a fost o etapă crucială, deoarece caracteristicile limbajului C și ale compilatorului au facilitat portarea Unix pe noi arhitecturi de calculatoare.
În 1973, Ken Thompson și Dennis Ritchie au prezentat o lucrare despre Unix la o conferință. Ca urmare, Laboratoarele Bell au fost asaltate de cereri pentru copii ale sistemului Unix. Cum vânzarea de sisteme de operare nu era inclusă în sfera operațiunilor permise de AT&T, Unix nu putea fi tratat ca un produs. Astfel, Unix a fost distribuit sub forma de cod sursă, împreună cu o licență. Costurile nominale acopereau transportul, ambalarea și o “taxă de licență rezonabilă”. Unix era furnizat “așa cum este”, fără suport tehnic sau remedieri de erori. Dar, în schimb, utilizatorii primeau codul sursă și aveau dreptul de a-l modifica.
Unix a fost rapid adoptat de instituțiile academice. În 1975, Ken Thompson și-a petrecut un an sabatic de la Bell la Universitatea din California, Berkeley. Împreună cu câțiva studenți, a început să adauge și să îmbunătățească copia lor locală de Unix. Interesul extern pentru contribuțiile de la Berkeley a crescut, ducând la prima lansare a Berkeley Software Distribution (BSD). Aceasta era o colecție de programe și modificări de sistem ce puteau fi adăugate unui sistem Unix existent, dar nu era un sistem de operare de sine stătător. Ulterior, versiunile BSD au devenit sisteme Unix complete.
Astfel, au apărut două variante principale de Unix: linia AT&T și linia BSD. Toate celelalte variante de Unix, cum ar fi AIX, HP-UX și Oracle Solaris, sunt derivate ale acestora. În 1984, unele restricții impuse asupra AT&T au fost relaxate, permițând companiei să producă și să comercializeze Unix.
Unix a intrat astfel în era comercializării.
Nașterea Linux
Observând comercializarea Unix ca o limitare a libertăților utilizatorilor de computere, Richard Stallman și-a propus să creeze un sistem de operare bazat pe libertate. Prin aceasta, se înțelege libertatea de a modifica codul sursă, de a distribui versiuni modificate ale software-ului și de a utiliza software-ul în orice mod considerat potrivit de către utilizator.
Noul sistem de operare urma să reproducă funcționalitatea Unix, fără a include niciun cod sursă Unix. El a numit acest sistem de operare GNU și a fondat Proiectul GNU în 1983, cu scopul de a dezvolta sistemul de operare. În 1985, a înființat Free Software Foundation pentru a promova, finanța și susține proiectul GNU.
Toate părțile sistemului de operare GNU înregistrau progrese semnificative, cu excepția nucleului. Dezvoltatorii proiectului GNU lucrau la un microkernel numit GNU Hurd, dar ritmul progresului era lent. (Acesta se află încă în dezvoltare și în prezent, apropiindu-se de o versiune finală). Fără un nucleu, sistemul de operare nu putea fi complet.
În 1987, Andrew S. Tanebaum a lansat un sistem de operare numit MINIX (mini-Unix), ca material didactic pentru studenții care studiau proiectarea sistemelor de operare. MINIX era un sistem de operare funcțional, similar cu Unix, dar avea anumite limitări, în special în ceea ce privește sistemul de fișiere. În fond, codul sursă trebuia să fie suficient de mic pentru a putea fi studiat în cadrul unui singur semestru universitar. Prin urmare, anumite funcționalități au fost sacrificate.
Pentru a înțelege mai bine funcționarea internă a procesorului Intel 80386 din noul său computer, un student la informatică pe nume Linus Torvalds a scris un cod simplu de comutare a sarcinilor, ca exercițiu de învățare. În cele din urmă, acest cod a evoluat într-un proto-kernel elementar, devenind primul nucleu Linux. Torvalds era familiarizat cu MINIX. De altfel, primul său nucleu a fost dezvoltat pe MINIX, utilizând compilatorul GCC al lui Richard Stallman.
Torvalds a decis să-și creeze propriul sistem de operare, care să depășească limitările MINIX-ului, destinat exclusiv învățământului. În 1991, și-a făcut celebrul anunț pe grupul Usenet MINIX, solicitând feedback și sugestii pentru proiectul său.
Linux nu este o clonă a Unix în adevăratul sens al cuvântului. Dacă ar fi o clonă a Unix, atunci ar fi Unix. În realitate, Linux este doar asemănător cu Unix. Termenul „clonă” sugerează că o mică parte a originalului este cultivată într-o nouă replică, celulă cu celulă. Linux a fost creat de la zero, cu scopul de a avea aspectul și comportamentul Unix, îndeplinind în același timp aceleași necesități. Mai degrabă decât o clonă, Linux este mai degrabă un replicant.
În orice caz, Linux era un nucleu în căutarea unui sistem de operare, iar GNU era un sistem de operare în căutarea unui nucleu. Privind retrospectiv, ceea ce a urmat pare inevitabil. Și a schimbat, în același timp, întreaga lume.
Cine dezvoltă?
O distribuție Linux este un ansamblu de componente diverse, provenite din locuri diferite. Nucleul Linux, suita GNU de utilitare esențiale și aplicațiile pentru utilizatori sunt integrate pentru a crea o distribuție funcțională. Cineva trebuie să se ocupe de asamblarea, întreținerea și gestionarea acestora – similar cu persoanele care dezvoltă nucleul, aplicațiile și utilitățile de bază. Comunitățile care întrețin și susțin distribuțiile Linux contribuie la fel de mult la succesul acestora ca și dezvoltatorii de kernel.
Linux este rezultatul unui efort colaborativ, realizat de voluntari neplătiți, de organizații precum Canonical și Red Hat, precum și de indivizi susținuți de industria IT.
Fiecare versiune comercială de Unix este dezvoltată ca o entitate coerentă, folosind facilități de dezvoltare interne sau externalizate, controlate strict. De obicei, acestea au un nucleu unic și sunt proiectate special pentru platformele hardware ale fiecărui furnizor.
Derivatele gratuite și open-source ale liniei BSD Unix, cum ar fi FreeBSD, OpenBSD și DragonBSD, utilizează un amestec de cod BSD vechi și cod nou. Acestea sunt acum proiecte susținute și gestionate de comunități, similar cu distribuțiile Linux.
Standarde și Conformitate
În general, Linux nu este conform nici cu specificația Single Unix Specification (SUS), nici cu standardul POSIX. Încearcă să respecte ambele standarde fără a deveni un sclav al acestora. Au existat una sau două excepții, cum ar fi Inspur K-UX, un Linux chinezesc care este compatibil POSIX.
Un Unix autentic, cum sunt ofertele comerciale, este compatibil cu aceste standarde. Unele derivate BSD, inclusiv majoritatea versiunilor de macOS, sunt compatibile POSIX. Numele variantelor, precum AIX, HP-UX și Solaris, sunt mărci comerciale deținute de organizațiile respective.
Mărci comerciale și drepturi de autor
Linux este o marcă înregistrată a lui Linus Torvalds. Fundația Linux administrează această marcă în numele său. Nucleul Linux și utilitățile de bază sunt lansate sub diferite licențe „copyleft” GNU General Public License. Codul sursă este disponibil gratuit.
Unix este o marcă înregistrată a The Open Group. Este protejat prin drepturi de autor și este proprietar, cu codul sursă închis.
FreeBSD este protejat prin drepturi de autor de Proiectul FreeBSD, iar codul sursă este disponibil public.
Diferențe de Utilizare
Din perspectiva experienței utilizatorului, la linia de comandă, nu există diferențe semnificative vizibile. Datorită standardelor și conformității POSIX, software-ul scris pentru Unix poate fi compilat și pentru Linux cu un efort redus de portare. De exemplu, scripturile shell pot fi utilizate direct pe Linux în multe cazuri, cu modificări minime sau deloc.
Unele utilitare de linie de comandă au opțiuni ușor diferite, dar în esență, același set de instrumente este disponibil pe ambele platforme. De altfel, IBM AIX oferă AIX Toolbox for Linux Applications. Aceasta permite administratorilor de sistem să instaleze sute de pachete GNU (cum ar fi Bash, GCC etc.).
Diferitele versiuni de Unix au interfețe grafice cu utilizatorul (GUI) distincte, similar cu Linux. Un utilizator Linux familiarizat cu GNOME sau MATE se va adapta rapid când va întâlni KDE sau Xfce. Similar, gamei de GUI-uri disponibile pe Unix, cum ar fi Motif, Common Desktop Environment și X Window System. Toate sunt suficient de similare pentru a fi navigate de oricine este familiarizat cu conceptele unui mediu grafic cu ferestre, dialoguri, meniuri și pictograme.
Diferențele devin mai evidente în timpul administrării sistemelor. De exemplu, există mecanisme init diferite. Derivatele System V Unix și versiunile BSD au sisteme init distincte. Variantele BSD gratuite și-au păstrat schemele de inițiere BSD. În mod implicit, distribuțiile Linux folosesc fie un sistem init derivat din Unix System V, fie systemd.
Schimbător Manual vs. Automat
Dacă știi să conduci una dintre ele, o vei putea conduce și pe cealaltă, chiar dacă la început va trebui să te obișnuiești.
Lăsând deoparte aspectul financiar, diferențele de filozofie, licențiere, model de dezvoltare, organizare a comunității și tipul de guvernare sunt mai mari și mai semnificative decât diferențele minore de sintaxă a liniei de comandă, între, să zicem, o versiune de grep și alta.
Cele mai mari diferențe nu sunt cele pe care le observi pe ecran.