Punerea propriul sistem de operare bazat pe Linux

Creați propriul sistem de operare bazat pe Linux

Pentru numărul mare de diferite distribuții Linux de mai mulți ani de lucru cu Linux am folosit a fost: Mandriva, Fedora, Slackware, Debian, Ubuntu, și multe altele. Un proiect ca mai mult, altele - mai puțin. Dar toate distribuțiile au avut în mod inevitabil, de a face cu deficiențe grave, ceea ce complică foarte mult de lucru. Una este prea solicitantă pentru resurse într-o altă nu suportă toate echipamentele necesare, în al treilea este lipsită de software diferite. Atunci mi-am amintit de faimoasa înțelepciune orientală: dacă vrei ceva făcut bine, fă-o singur.

Linux de la zero

Nu sunt singurul care a decis să preia construcția de propria sa versiune de Linux - sistemul de operare, care va fi luată ca bază, partea de bază a sistemului și de bază, dar în cazul în care nu există un singur kilobyți inutile de la dezvoltator, care este de până la tine. Un număr mare de Linux-distribuții care nu îndeplinesc cerințele utilizatorilor, împins Bikmensa Gerard (Gerard Beekmans) pentru a crea o distribuție care va da tuturor posibilitatea de a pune împreună un sistem în cazul în care acesta va fi doar componentele și caracteristicile necesare.

Striving programator talentat transformat în Linux de proiect zero (www.linuxfromscratch.org), prescurtată - AFM. Acest proiect permite de a construi o „de la zero“, de la sursa, sistemul de operare bazat pe Linux. Compilarea AFM rulează pe un computer cu un Linux sistem deja instalat, cu toate acestea, se va apropia și un „avansat» live-CD, de exemplu, Knoppix [6].

În acest caz, sistemul Linux utilizat pentru asamblarea poate fi orice - în mod necesar doar prezența unui compilator și sistem de biblioteci. Linux de la zero este dificil de a numi distribuția în sensul obișnuit al cuvântului - este un fel de software auxiliar, care, împreună cu partea de bază a sistemului de operare va permite să creați propria versiune, unică a sistemului de operare.

După cum se știe, Linus Torvalds a dezvoltat sistemul său de operare, sub motto-ul «Doar pentru distracție!» - adică, doar pentru distracție. Trebuie admis că AFM nu adesea găsit pe serverele care folosesc acest sistem, de regulă, entuziaști de calculator. Instalarea și utilizarea de Linux de la zero va ajuta să înțeleagă relația componentele sistemului de operare care vin la îndemână atunci când desene sau modele proprii Linux-distribuție, nu numai în baza AFM. Prin urmare, AFM este în mare parte proiectat pentru acei oameni pentru care procesul de asamblare a propriei sale distro este distractiv și interesant - și acolo sunt oameni, crede-mă, foarte mult.

partiționare și crearea unui copac director

Pentru o mai bună înțelegere a materialului va descrie întregul curs al procesului în general (vezi. Fig. 1).

Figura 1. Schema AFM asamblare

Într-o primă etapă, folosind distribuție sau LiveCD deja instalate, pauze de disc. Pe partiția de hard disk este alocată pentru noul sistem. Apoi, această secțiune va trebui să compilați toate software și de sistem de nucleu necesare. În continuare există o schimbare în directorul rădăcină al partiției de hard disk alocat pentru un nou sistem de operare unul nostru. Compilation trebuie să se repete, dar de data aceasta software-ul trebuie să fie colectate în mod dinamic (spre deosebire de compilare dinamică statică va fi descrisă mai jos). Ultima etapă implică asamblarea mai importante dintre glibc și configurarea sistemului de operare instalat. După cum puteți vedea, nu este nimic deosebit de dificil, nu trebuie să faci.

Alegeți sistemul de fișiere la alegerea dumneavoastră: și ext3, ReiserFS, și fără probleme în cadrul AFM nu a fost. Dar fanii vor trebui să perturbe XFS - încercarea de a face Linux de la zero pentru a lucra cu acest sistem de fișiere nu a reușit.

Acum, montați partiția alocată pentru noul sistem de operare.

$ Mount / dev / hda5 / mnt / mylin

Pentru comoditate, definim MYLIN variabila:

Excelent pentru a lucra în continuare mai bine pentru a crea un utilizator mylin separat, iar acum este proprietarul secțiunii montate.

$ Chown -R mylin $ MYLIN

Avem nevoie pentru a crea un copac director la rădăcina noua partiție:

$ Mkdir -p de boot bin dev, etc Sbin acasă lib mnt opt ​​rădăcină usr / var

Directorul usr, usr / X11R6, usr / local a crea structura necesară. subdirectoare bin, etc, includ, lib, sbin, cota, src.

Apoi a făcut același lucru pentru directorul / var și / opt viitor sistem:

De ce folosim un ansamblu static? Cu compilarii statică biblioteca de cod sursă este atașat la codul de aplicare, ceea ce atrage după sine creșterea dimensiunii sale, dar menținând în același timp integritatea. Atunci când compilarea dinamică a bibliotecii este un fișier separat, care, așa cum este necesar sunt accesate de aplicații. Ca urmare, toate programele rula pe o versiune a bibliotecii

Dar când suntem prin comanda chroot pentru a seta directorul rădăcină pentru unirea sistemului, sistemele de bibliotecă instalate „părinte“ situat în / lib, / usr / lib, iar altele, nu vor mai fi disponibile, programe astfel încât este compilat dinamic refuză să lucreze, în plus, versiunea de compatibilitate oricine nu este garantată.

Pentru a evita confuzia cu mai târziu programe static „dinamic“, a crea pentru ei un catalog special compilat:

La asamblarea și instalarea pachetelor, nu uitați să adăugați un parametru «--prefix = $ MYLIN / stat» pentru a muta fișiere în acest director este. I. în cele din urmă. pune bash:

$ ./configure --enable-statică-link --prefix = $ MYLIN / Stat

Același model de a colecta alte pachete necesare. binutils, bzip2, textutils, texinfo, gudron, SH-utils, gcc, grep, gzip, gawk, diffutils, fileutils, face, patch-uri, sed și. în sine. linux-kernel.

Da, nu uitați să compilați kernel-ul care pentru versiunile mai vechi ale kernel (2.2.x-2.4.x) trebuie să utilizeze gcc 2.95, iar pentru versiunea curentă 2.6.x se recomandă utilizarea 3.x gcc, deci nici o problema.

Nu uitați să se uite în secțiunile relevante ale AFM-carte, se spune despre acest lucru și multe alte nuanțe. În general, compilarea nucleului în AFM nu au diferit de proceduri similare efectuate folosind HDD montat pe distribuție. Despachetează sursele kernel în $ MYLIN / usr / src / linux-2.6.xx, apoi configurabil rulând:

Procesul de configurare a parametrilor de kernel este descrisă în mod repetat în Internet (6), nu este greu de nevoie să mă opresc asupra acestui mai detaliat. Apoi, da următoarea comandă în directorul cu sursa de Linux kernel-:

Apoi, creați un fișier de $ MYLIN / etc / passwd și $ MYLIN / etc / grup. În primul rând vom înregistra în timp ce un singur utilizator - root cu orice parolă, iar al doilea grup de utilizatori (pentru a începe un grup de rădăcină va fi suficient de asemenea).

Aici se încheie pregătirile noastre pentru etapa următoare peste, și vom merge prin ansamblul dinamic mai subtile.

Acum, avem nevoie pentru a schimba directorul rădăcină în / mnt / mylin, în cazul în care folosim colectate numai de utilități static - pentru utilizarea instrumentelor de „părinte“ sistem de operare, nu mai putem recurge. Dă comanda în consolă:

$ Chroot $ MYLIN / usr / bin / env -i

> HOME = / rădăcină TERMEN = $ TERM PS1 = 'u: w $'

> PATH = / bin: / usr / bin: / sbin: / usr / sbin: / stat / sbin

Această comandă ne-am specificat calea către fișierele executabile, tipul de terminale, shell-ul și tastați linie de comandă prompt.

Pentru a asigura funcționarea unor programe, trebuie să instalați sistemul de fișiere proc la noul sistem.

$ Mount proc / proc proc -t

A venit momentul crucial. Asamblarea de glibc. Este cea mai importantă deoarece majoritatea muncii fără a programelor necesare nu vor, și în utilizarea Linux, fără sensul principal al bibliotecii acolo. Asamblarea glibc, de asemenea, de multe ori aduce o mulțime de probleme.

Când ne-am arătat opțiunea de asamblare «--prefix = $ MYLIN / Stat», așa că, dacă schimbați rădăcina tuturor pachetelor compilate static va fi în directorul / STAT în conformitate cu noul sistem de operare.

Deci, despachetați arhiva glibc-2.x.x.tar.gz (de exemplu, directorul / usr / src /) și du-te la directorul glibclinuxthreads. Vom avea un pic mai rafinați codul sursă din cauza faptului că în această etapă nu poate fi sistemul de identificare a utilizatorului numit (doar din cauza lipsei de glibc și alte biblioteci), și că necesitatea de a instala glibc Perl interpret, pe care noi nu facem.

Înlocuiți numele de utilizator root în datele de conectare / Makefile dosarul său uid, adică 0, iar $ PERL variabilă în malloc / fișierul Makefile trebuie înlocuită cu calea către interpret - / usr / bin / perl - și în configurația va fi pur și simplu ignorate.

$ /usr/src/glibc-2.x.x/configure --prefix = / usr --enable-add-on-uri --libexecdir = / usr / bin

make install

Dacă ai făcut totul bine, de glibc compilat, la prompt apare în cele din urmă «rădăcină», și poate fi recompilați dinamic toate programele.

Încheiat nucleu de instalare.

Pentru a muta noul nucleu la directorul / boot, executați o altă comandă:

Punerea totul instalat și unele programe noi, acum, fără steaguri compilare statică. Vom avea nevoie (în această etapă, este important să nu uitați să compilați toate caracteristicile următoare) (a se vedea. Tabelul 1).

Tabelul 1. Numărul necesar de pachete pentru asamblare

După efectuarea recompilarea dinamic, puteți șterge directorul cu pachete compilate static:

Puteți respira un oftat de ușurare și o ceașcă de cafea - cele mai dificile, rutina este lăsat în urmă. Vom trece la etapa următoare - configurația inițială a sistemului nostru.

Configurația inițială a sistemului

Înainte de a începe să setați, observ că toate modificările trebuie să fie făcut de către fișierele de noul sistem de operare, mai degrabă decât sistemul părinte.

Pentru a seta ora sistemului a crea un fișier / etc / sysconfig / ceas, care conține numai o singură linie:

Acum, ceasul computerului va afișa ora fusului orar - cu condiția ca valoarea timpului în BIOS-ul este setat corect.

Să ne dea numele calculatorului:

echo "HOSTNAME = my_linux"> / etc / sysconfig / network

Acum, împărțiți acest sistem ar trebui să fie montat la pornire, specificați / etc / fstab:

# Filesystem opțiuni de tip fs mount-point benă fsck-comandă

/ Dev / hda5 / valori implicite ext3 1 ianuarie

/ Dev / hda3 de swap de swap pri = 1 0 0

proc / proc proc defaults 0 0

În loc de / dev / hda3 și / dev / hda5 a scrie partițiile (rădăcină și de swap), completează fișierul dacă este necesar, punctele de mount pentru alte partiții de hard disk-ul și CD-ROM.

Acum, să ne facă sistemul nostru bootabil.

În cazul în care, în plus, LFS utilizați alte distribuții de Linux, dar acum trebuie să intre în vechiul sistem - este rulat:

Deja în sistemul de operare părinte în fișierul /etc/lilo.conf se adaugă următoarele:

Este clar că «/ boot / bzImage» - este calea către compilat kernel-ul sistemului, iar «partiția» - partiția unde directorul rădăcină.

Dacă nu intenționați să utilizați alte sisteme de operare și distribuții Linux, apoi trece la configurația LILO în AFM.

În acest caz, lilo.conf va arata ceva de genul:

Faceți modificările necesare în funcție de configurația. Actualizați comanda de boot:

Și dacă toți pașii anteriori au fost efectuate corect, vom fi în noul sistem. Cu toate acestea, o fază lungă de setare „fin“ (o atenție deosebită trebuie acordată securității noului sistem, deoarece implicit AFM pare destul de vulnerabil, precum și orice sistem de operare nou instalate) este încă să vină. Dar personal colectate aveți deja o versiune de Linux.

Gerard Bikmens - nu singurul care a avut ideea de a crea propriul Linux. Un alt proiect - BYOLinux, al cărui cap a fost Dzhonatan Torp (Jonatan Thorpe), până în prezent, dezvoltarea lor a oprit, cu toate că imdokumentatsiya scris este încă valabil astăzi, dar nu este la fel de detaliat ca AFM-carte și traduse în limba română. Diferența principală dintre metoda lui Ioan că biblioteca glibc este transferată de la mamă la copil sistemul fără recompilare, nu este la fel de eficace, dar evită multe probleme în timpul asamblării. Dorința de a simți ca o experiență de operare de designer și unii utilizatori FreeBSD.

Referințe și link-uri

Link-uri către toate aceste programe sunt prezentate într-un articol din AFM-carte (partea 3 din anexă).