Serg iakovlev

Discul RAM (initrd) este sistemul inițial de fișiere rudimentare, care este montat primul. Initrd-ul face parte din kernel și este încărcat ca parte a acestuia în timpul încărcării. Kernel-ul montează initrd-ul în prima parte a procesului de încărcare pentru încărcarea ulterioară a modulelor și a sistemului real de fișiere rădăcină.







Initrd include un set minimal de directoare și utilitare, cum ar fi insmod pentru instalarea modulelor de kernel.

În funcție de ceea ce avem - desktop sau server - initrd este un sistem de fișiere tranzitiv. Timpul lui de viață este minim. În sistemele încorporate, initrd este un sistem de fișiere rădăcină constant.

Imaginea initrd include utilitarele și fișierele de sistem necesare pentru a doua fază a procesului de boot Linux.

În funcție de versiunea Linux, metoda de creare a discului RAM inițial poate varia. De exemplu, Fedora Core initrd este creat folosind un dispozitiv cu buclă. buclă este un driver care vă permite să montați un fișier ca un dispozitiv bloc. este posibil ca dispozitivul să nu fie în kernelul dvs., îl puteți configura pentru acest lucru. cu (face menconfig) prin instalarea Driverelor de dispozitiv> Blocare dispozitive> Suport pentru dispozitivele de tip Loopback. Puteți verifica pentru un dispozitiv buclă după cum urmează (numele fișierului initrd poate varia):


Listarea 1. Inspectarea initrd (înainte de FC3)

Puteți vedea conținutul / mnt / initrd. Este posibil ca fișierul de imagine initrd să nu aibă extensia .gz la sfârșit, dar este oricum un fișier de arhivă.

Începând cu Fedora Core 3, imaginea initrd este arhiva cpio. Pentru acest tip de arhivă, puteți:


Listing 2. Inspectarea initrd (FC3 și mai târziu)

Rezultatul este un sistem de fișiere mic așa cum se arată în Listarea 3. În ./bin catalog director nash disponibile (script interpret), insmod pentru modulele de kernel de încărcare, LVM (instrumente logic volume manager).


Listarea 3. Structura de director initrd implicită Linux

Rețineți fișierul inițial de la rădăcină. Acest fișier este apelat când imaginea initrd este dezarhivată pe discul RAM.

Utilizând comanda cpio. puteți să manipulați fișierele cpio. Cpio este un format de fișiere care include hidraulii. Acesta include atât formatele ASCII cât și cele binare. Pentru portabilitate, utilizați ASCII. Pentru a reduce dimensiunea fișierului, utilizați formatul binar.







Pentru un sistem tipic Linux, imaginea initrd este creată la momentul compilării. Utilitarul mkinitrd poate fi folosit pentru a crea un initrd cu bibliotecile și modulele necesare. Utilitarul mkinitrd este un script shell. De asemenea, există o utilitate YAIRD (încă un alt Mkinitrd), cu care puteți proiecta initrd-ul.

Deoarece multe sisteme încorporate nu au discuri, initrd-ul este folosit permanent. Lista 4 arată cum se creează o imagine initrd. Aici folosim desktop-ul standard.


Listing 4. Utilitare (mkird) pentru crearea initrd personalizate

initrd distribuție Linux

Un exemplu de astfel de proiect este Minimax. Se potrivește în 32 MB și utilizează BusyBox și uClibc. În ciuda dimensiunii, folosește kernel-ul Linux 2.6 cu un set mare de utilitare.

Pentru a crea initrd, creați un fișier gol utilizând / dev / zero (set de zerouri) și scrieți-l în fișierul ramdisk.img. Fișierul rezultat va fi de 4MB (4000 blocuri de 1K) în mărime. Apoi, utilizați mke2fs pentru a crea un sistem de fișiere ext2 (extins), utilizând manechinul creat. Montați acest fișier în / mnt / initrd utilizând dispozitivul buclă. Acum avem un sistem de fișiere root ext2.

Următorul pas este crearea de subdirectoare pentru a crea un sistem de fișiere rădăcină: / bin, / sys, / dev, / proc.

Alternativă pentru sistemul de fișiere ext2

Pentru ext2, există sisteme de fișiere alternative cu care puteți reduce dimensiunea imaginii initrd. Acest sistem ROMfs (sistem de fișiere ROM), cramfs (sistem de fișiere ROM comprimat), squashfs (sistem de fișiere cu citire foarte comprimat). Dacă aveți nevoie să scrieți date, ext2 funcționează bine. Și, de asemenea, e2compr este o extensie a sistemului de fișiere ext2, care acceptă compresia.

Utilitarul BusyBox este o imagine care include utilitare precum cenușă, awk, sed, insmod. Avantajul BusyBox este acela că împachetează multe utilități într-o imagine mică. Acesta este ideal pentru sistemele încorporate. Copiați imaginea BusyBox în directorul / bin. Simbolurile indică utilitățile BusyBox.

Apoi creați un set de fișiere de dispozitiv. Pentru aceasta, creați directorul / dev folosind opțiunea -a.

Ultimul pas este de a crea un fișier linuxrc. După ce kernel-ul montează discul RAM, acesta caută fișierul init să se execute. Dacă fișierul inițial nu este prezent, kernelul încarcă linuxrc ca script de pornire. În acest fișier, se fac setări de bază, cum ar fi montarea sistemului de fișiere / proc. De asemenea, montează directorul de fișiere / sys și trimite mesaje către consola. Eu numesc cenușă (clona Bourne Shell), așa că comunic cu sistemul de fișiere rădăcină. linuxrc poate fi executat cu chmod.

La sfârșit, sistemul de fișiere rădăcină este terminat. Este dezmembrat și comprimat cu gzip. Fișierul rezultat (ramdisk.img.gz) este copiat în / boot și poate fi descărcat de pe GNU GRUB.

Pentru a crea un disc RAM inițial, sunați la mkird. imaginea va fi creată automat și va fi plasată în / boot.







Trimiteți-le prietenilor: