Theme4 discuri de boot

Discul de pornire este în esență un sistem miniatura, separat, pe o dischetă. Trebuie să efectueze multe din aceleași funcții pe care le realizează un sistem complet de dimensiuni reduse. Înainte de a încerca să creați, trebuie să înțelegeți elementele de bază ale procesului inițial de boot Linux.







4.1.1 Procesul de bootstrap.

Toate sistemele PC încep procesul de încărcare executând codul din ROM (desemnat de BIOS) pentru a încărca sectorul 0; cilindrul 0 al dispozitivului de încărcare. Dispozitivul de pornire este de obicei prima unitate de dischetă (numită A: în DOS și / dev / fdO în Linux). BIOS-ul încearcă apoi să execute acest sector. Pe majoritatea discurilor de boot, sectorul 0, cilindrul 0 conține fie:

codul de bootloader este de tip LILO, care găsește, încarcă și execută nucleul, pornind de la bootstrap-ul corespunzător.

începutul kernelului sistemului de operare, cum ar fi Linux.

Dacă nucleul Linux a fost copiat brut pe o dischetă, primul sector al discului este primul sector al kernel-ului Linux. Acest prim sector va continua procesul de încărcare, încărcând restul kernel-ului din dispozitivul de boot.

Odată ce nucleul este încărcat complet, acesta efectuează o inițializare de bază a dispozitivului. Apoi, încearcă să încarce și să monteze sistemul de fișiere root (root) din

un dispozitiv. Sistemul de fișiere rădăcină este pur și simplu un sistem de fișiere care este montat ca un "V". Nucleul trebuie să-i spună unde să caute sistemul de fișiere rădăcină; Dacă nu poate găsi imaginea de boot, se oprește.

În unele situații - de multe ori, atunci când pornirea de pe o dischetă - sistemul de fișiere rădăcină pentru-navă într-un ramdisk, care este RAM (RAM), care se referă la sistemul ca și cum ar fi un disc. Există două motive pentru aceasta. În primul rând, memoria RAM are mai multe ordine de mărime mai rapidă decât discheta, astfel încât operațiile sistemului să fie executate rapid; și al doilea

- kernel-ul poate descărca un sistem de fișiere comprimat de pe o dischetă și îl poate decomprima într-un ramdisk, permițându-vă să plasați mai multe fișiere pe dischetă.

Odată ce sistemul de fișiere rădăcină este încărcat și montat, veți vedea mesajul: VFS: rădăcină montată (sistem de fișiere ext2) readonly.

și vsholnyaet ^ CTeMa este un program de biți pe sistemul de fișiere rădăcină (în / bin sau / sbin) svsinit și de a efectua SH11 ChITaST con O ur fișier Uratsioiny / etc / inittab, caută o linie desemnată „trebuie să și script-ul yaet pe nume. Scriptul de sysinit este, de obicei, ceva de genul / etc / rc

sau /etc/init.d/boot. Acest script este un set de comenzi shell care efectuează acțiuni de bază ale sistemului, cum ar fi:

Fii pe toate discurile,

Încărcarea modulelor de kernel necesare,

Pornind de swap (swaping),

Unitățile de montare specificate în fstab.

Acest script solicită adesea diverse alte script-uri pentru a inițializa modulele. Pe-exemplu, în sysvinit structura de ansamblu, directorul / etc / roșu structură / complex cuprinde sub-directoare cu fișiere determinate a porni sau opri majoritatea serviciilor de sistem. Cu toate acestea, pe discurile bootabile, scriptul sysinit este adesea foarte simplu.

4.1.2 Tipuri de discuri.

După ce am făcut o prezentare generală a procesului inițial de încărcare, putem stabili acum diferitele tipuri de discuri presupuse. Clasificăm discurile în patru tipuri. În cele ce urmează, termenul "disc" este folosit ca dischetă, dacă nu se specifică altfel, deși cea mai mare parte discutată poate fi folosită și pentru hard disk-uri.

Discul conține un nucleu care poate fi încărcat. Un disc poate fi folosit pentru a încărca nucleul, care poate încărca sistemul de fișiere rădăcină pe un alt disc. Kernel-ul de pe discul de boot trebuie să specifice de obicei unde să găsească sistemul de fișiere rădăcină. loturile disc de încărcare sunt de multe ori sistemul de fișiere rădăcină cu floppy Dru-goy, dar în schimb poate indica un disc de boot pentru a încărca sistemul de fișiere rădăcină de pe un hard disk. Acest lucru se face de obicei atunci când se testează un nou nucleu. (De fapt, "face zdisk" va crea un astfel de disc automat din codul sursă al kernel-ului).

Un disc cu un sistem de fișiere care conține fișierele necesare pentru a rula sistemul Linux. Un astfel de disc nu conține neapărat nici un kernel sau un bootloader.

Discul rădăcină poate fi folosit pentru a rula sistemul independent de orice alte discuri odată ce boot-ul a pornit. De obicei, discul rădăcină este copiat automat în ramdisk. Acest lucru face ca discul rădăcină să fie mult mai rapid și eliberează unitatea de disc pentru discul de serviciu.

Discul care conține atât sistemul de fișiere kernel cât și sistemul de fișiere rădăcină. Cu alte cuvinte, conține tot ceea ce trebuie să încărcați și să rulați un sistem Linux fără un hard disk. Avantajul acestui tip de disc este că tot ceea ce aveți nevoie este pe același disc.

Cu toate acestea, dimensiunea treptată a tot ceea ce înseamnă că este tot mai dificil să puneți totul pe o dischetă, chiar și cu compresie.

Un disc care conține un sistem de fișiere care nu este destinat a fi montat ca sistem de fișiere rădăcină. Acesta este un disc de date suplimentar. Puteți utiliza acest tip de disc pentru a stoca utilitare suplimentare dacă aveți prea mult spațiu pe discul dvs. root.

În general, atunci când vorbim de "crearea unui disc bootabil", noi intenționăm să creăm atât componentele de boot (kernel) cât și cele de root (files). Ele pot fi una (un singur bootable / root disk) sau separate (boot + disc root). Abordarea cea mai flexibilă pentru dischetele de salvare este de a folosi o dischetă separată rădăcină și de boot și una sau mai multe dischete de service pentru a rezolva excesul.

Creați un sistem de fișiere rădăcină. Crearea unui sistem de fișiere rădăcină include selectarea fișierelor necesare pentru pornirea sistemului. În această secțiune, descriem modul de creare a unui sistem de fișiere rădăcină comprimat. O opțiune mai puțin frecventă este crearea unui sistem de fișiere necomprimat pe o dischetă care este montată direct ca un disc rădăcină.

Prezentare generală. Sistemul de fișiere rădăcină trebuie să conțină tot ceea ce este necesar pentru a suporta un sistem Linux complet. Pentru a face acest lucru, discul trebuie să includă cerințele minime pentru sistemul Linux:

sistem de bază de fișiere,







Setul minim de directoare este / dev, / proc, / bin, / etc, / lib, / usr, / tmp,

Setul de bază de utilități: sh, Is, cp, mv, etc.,

Setul minim de fișiere de configurare: rc, inittab, fstab, etc.,

Dispozitive: / dev / hd *, / dev / tty *, / dev / fdO, etc.,

Bibliotecile sprijină, pentru a oferi funcții de bază, utilități utilizate.

Desigur, orice sistem devine util doar atunci când puteți face ceva pe el, iar discheta rădăcină devine utilă atunci când puteți face ceva de genul:

Verificați sistemul de fișiere al unui alt dispozitiv, de exemplu, verificați sistemul de fișiere rădăcină de pe hard disk, ar trebui să puteți să încărcați Linux de pe un alt dispozitiv - discheta rădăcină. Apoi puteți executa fsck pe discul rădăcină principal, în timp ce acesta nu este montat.

Restaurați tot sau o parte din dispozitivul rădăcină principal din arhivă utilizând utilitare de backup cum ar fi cpio, tar, gzip și ftape.

Vom descrie modul de creare a unui sistem de fișiere comprimat, numit așa, deoarece este comprimat pe un disc și, atunci când este încărcat, este decomprimat într-un ramdisk. Cu un sistem de fișiere comprimat, puteți plasa multe fișiere (aproximativ două megaocteți) pe un disc standard 1440K. Deoarece sistemul de fișiere este mult mai mare decât o dischetă, acesta nu poate fi montat pe o dischetă. Trebuie să o creăm în altă parte, să comprimăm și apoi să copiem pe dischetă.

Creați un sistem de fișiere.

Pentru a crea un astfel de sistem de fișiere rădăcină, aveți nevoie de un dispozitiv de rezervă suficient de mare pentru a ține toate fișierele înainte de a fi comprimat. Aveți nevoie de un dispozitiv care să stocheze aproximativ patru megaocteți. Există mai multe opțiuni:

• Utilizați ramdisk (DEVICE = / dev / ramO). În acest caz, memoria este utilizată pentru a simula unitatea. Ramdisk ar trebui să fie suficient de mare pentru a deține un sistem de fișiere de dimensiuni corespunzătoare. Dacă utilizați LILO, verificați următoarele în fișierul de configurare (/etc/lib.conf):

RAMDISKSIZE = rum Care determină cantitatea de RAM care va fi alocată. Valoarea implicită este 4096KB, care ar trebui să fie suficientă. Nu încercați să încercați să utilizați un astfel de ramdisk pe o mașină cu mai puțin de 8 MB de memorie. Asigurați-vă că există un dispozitiv / dev / ramO, / dev / ram sau / dev / ramdisk. Dacă este necesar, creați / dev / ramO cu mknod (număr major 1, minor 0).

Dacă aveți o partiție de hard disk suficient de mare (mai multe megaocteți), aceasta este o soluție bună.

Utilizați dispozitivul loopback (ioopback), care vă permite să lucrați cu un fișier pe disc ca dispozitiv. Când utilizați un dispozitiv loopback, puteți crea un fișier de trei megabyte pe hard disk și creați un sistem de fișiere pe acesta. Introduceți losetup pentru utilizatori pentru instrucțiuni cu privire la utilizarea dispozitivelor loopback. Dacă sistemul dvs. nu are un dispozitiv de buclă (/ dev / loopO, / dev / loopl, etc), va trebui să le creați -. „Mknod / dev / loopO b 7 0 m Odată ce ați stabilit o montură specială și Nye . umount, a crea un fișier temporar pe hard disk cu suficient Stu încăpătoare (de exemplu, / tmp / fsfile), puteți utiliza comanda .:

dd dacă Wdev / zero deVtmp / fsfile bs = lk coshn = mw "

pentru a crea un fișier ppt-block.

Utilizați numele fișierului în locul dispozitivului DEVICE de mai jos. Când dați comanda mount, trebuie să activați comanda "

o bucla ", astfel încât mount-ul folosește un dispozitiv buclă, de exemplu:

mount -o bucla -t ext2 / tmp / fsfile / mnt

mounts / tmp / fsfile (prin dispozitivul loopback) la punctul de montare / mnt. Comanda df trebuie să confirme acest lucru. După ce ați selectat una dintre aceste opțiuni, pregătiți DEVICE:

dd ifWdev / zero of = DEVICE bs = lk count = 3000 Această comandă resetează dispozitivul la zero. Acest pas este important, pentru că sistemul de fișiere de pe dispozitiv va fi comprimat, pentru a atinge rata maximă de compresie, toate piesele neutilizate trebuie umplute cu zerouri.

(Dacă utilizați un dispozitiv cu buclă, numele fișierului disc utilizat ar trebui să fie înlocuit cu DEVICE.) Mke2fs vă va întreba dacă doriți cu adevărat acest lucru, spuneți da.)

Comanda mke2fs va detecta automat spațiul disponibil și în consecință va fi configurat. parametrul -t 0 împiedică rezervarea spațiului pentru rădăcină și, prin urmare, oferă spațiu mai util pe disc. Apoi, montați dispozitivul: mount -t ext2 DEVICE / mnt (Trebuie să creați un director mount / mnt dacă acesta nu există.) În secțiunile următoare toate numele directorului de destinație sunt relative la / mnt.

Umplerea sistemului de fișiere. Există un set minim rezonabil de directoare pentru sistemul de fișiere rădăcină:

/ dev - Dispozitivele necesare pentru I / O

stub director necesar pentru sistemul de fișiere prog

/ etc - fișiere de configurare a sistemului

/ binare binare critice ale sistemului

binarele de bază, parte a sistemului propus

/ lib - biblioteci partajate, pentru a furniza instrumente pentru suport dinamic (run-time)

/ mnt - punct de montare pentru a suporta alte unități

/ usr - utilități și aplicații suplimentare

Structura directorului prezentată aici este utilizată numai în discheta rădăcină. Sistemele Real Linux au un set mai complet și mai clar de reguli pentru alocarea fișierelor, numit Standard Ierarhia Standard (Standard Ierarhia fișierelor).

Trei dintre aceste directoare trebuie să fie goale pe sistemul de fișiere rădăcină, deci că ele ar trebui create numai de mkdir. Directorul / proc este în esență un stub în care este plasat sistemul de fișiere proc. Directoarele / mnt și / usr sunt doar puncte de montare pentru utilizare după pornirea sistemului boot / root. Prin urmare, aceste directoare ar trebui create numai.

Transfer. După ce ați terminat crearea sistemului de fișiere rădăcină, dezactivați-l, copiați-l într-un fișier și comprimați:

dd dacă = DEVICE bs = lk | gzip -v9> rootfs.gz După sfârșit, veți avea rootfs.gz. care este sistemul de fișiere rădăcină comprimat. Trebuie să verificați dimensiunea pentru a vă asigura că se potrivește pe disc; dacă nu se potrivește, trebuie să vă întoarceți și să ștergeți unele fișiere.

Selectați kernel-ul. Când aveți un sistem de fișiere rădăcină complet comprimat. Următorul pas este crearea sau selectarea unui kernel. În majoritatea cazurilor, este posibil să copiați nucleul actual și să încărcați o dischetă din acesta. Cu toate acestea, pot exista momente când doriți să creați unul separat.

Unul dintre motive este mărimea. Dacă creați o singură dischetă de boot, kernelul va fi unul dintre cele mai mari fișiere de pe dischetă, deci ar trebui să minimizați cât mai mult dimensiunea kernel-ului. Dacă creați o dischetă root + bootable cu două discuri, aceasta nu este atât de importantă, deoarece nucleul va fi rulat de pe un disc separat. Pentru a reduce dimensiunea otrăvurilor, creați-o cu setul minim de instrumente necesare pentru a susține sistemul dorit. Aceasta înseamnă că lipsesc tot ce nu aveți nevoie. Lucrul cu rețelele este un lucru bun pentru a exclude, precum și suport pentru orice unități și alte dispozitive de care nu aveți nevoie atunci când rulați sistemul de boot. Așa cum am spus mai devreme, nucleul dvs. trebuie să aibă suport integrat pentru ramdisk și ext2.

După ce ați determinat setul minim de instrumente incluse în kernel, trebuie să determinați ce să adăugați înapoi. Probabil cea mai comună utilizare a dischetei de boot este de a examina și de a restabili sistemul de fișiere rădăcină distrus și pentru a face acest lucru aveți nevoie de suport pentru kernel. De exemplu, dacă rezerva dvs. este pe o bandă și ftape este folosit pentru a accesa unitatea dvs. de bandă, atunci dacă vă pierdeți discul rădăcină curent și dispozitivele care conțin ftape, atunci nu veți putea să le restaurați de pe casetele de rezervă. Va trebui să reinstalați Linux, să descărcați și să reinstalați ftape și apoi să încercați să citiți copiile de rezervă.

Principalul lucru este că orice suport I / O din kernel pentru suport de rezervă ar trebui să fie adăugat și în kernel-ul dvs. bootabil.

Crearea unui disc Acum aveți un kernel și un sistem de fișiere rădăcină comprimat. Dacă creați un disc bootable / root, verificați dimensiunile acestora pentru a vă asigura că ambele se încadrează pe același disc. Dacă faceți două discuri de boot + rădăcină, verificați dacă sistemul de fișiere rădăcină este plasat pe o dischetă.

Trebuie să decideți dacă să utilizați LILO pentru a boot-ul sau pentru a boot-da kernel-ul. Alternativa este copierea kernel-ului direct pe o dischetă și boot-ul fără LILO. Avantajul utilizării LILO este capacitatea de a specifica anumiți parametri kernel care ar putea fi necesari pentru a inițializa hardware-ul (verificați fișierul /etc/lilo.conf din sistemul dvs.). Dacă există și are șirul "append ^.", Probabil că aveți nevoie de această proprietate. Dezavantajul utilizării LILO este complexitatea creării unui disc de boot și un spațiu mai mic. Trebuie să instalați un mic sistem de fișiere separat, pe care îl vom numi sistemul de fișiere kernel, unde veți transfera kernelul și alte câteva fișiere necesare de LILO.







Articole similare

Trimiteți-le prietenilor: