initrd(4) Device Drivers Manual initrd(4) NUME initrd - discul RAM iniializat de incarcatorul de boot CONFIGURARE /dev/initrd este un dispozitiv de bloc numai pentru citire caruia i s-a atribuit numarul major 1 i numarul minor 250. In mod obinuit, /dev/initrd este deinut de root:disk cu modul 0400 (acces in citire numai de catre root). In cazul in care sistemul Linux nu are /dev/initrd deja creat, acesta poate fi creat cu urmatoarele comenzi: mknod -m 400 /dev/initrd b 1 250 chown root:disk /dev/initrd De asemenea, pentru a utiliza /dev/initrd, trebuie compilat direct in nucleul Linux atat suportul pentru ,,discul RAM", cat i pentru ,,discul RAM iniial" (de exemplu, CONFIG_BLK_DEV_RAM=y i CONFIG_BLK_DEV_INITRD=y). Atunci cand se utilizeaza /dev/initrd, controlorul de disc RAM nu poate fi incarcat ca modul. DESCRIERE Fiierul special /dev/initrd este un dispozitiv de bloc numai pentru citire. Acest dispozitiv este un disc RAM care este iniializat (adica, incarcat) de catre incarcatorul de boot inainte de pornirea nucleului. Apoi, nucleul poate utiliza coninutul lui /dev/initrd pentru o pornire a sistemului in doua faze. In prima faza de pornire, nucleul pornete i monteaza un sistem de fiiere radacina iniial din coninutul lui /dev/initrd (de exemplu, discul RAM iniializat de incarcatorul de pornire). In a doua faza, controlori suplimentari sau alte module sunt incarcate din coninutul dispozitivului radacina iniial. Dupa incarcarea modulelor suplimentare, un nou sistem de fiiere radacina (adica sistemul de fiiere radacina normal) este montat de pe un alt dispozitiv. Operaia de pornire La pornirea cu initrd, sistemul pornete dupa cum urmeaza: (1) Incarcatorul de pornire incarca programul nucleului i coninutul lui /dev/initrd in memorie. (2) La pornirea nucleului, acesta decomprima i copiaza coninutul dispozitivului /dev/initrd pe dispozitivul /dev/ram0 i apoi elibereaza memoria utilizata de /dev/initrd. (3) Apoi, nucleul monteaza in citire-scriere dispozitivul /dev/ram0 ca sistem de fiiere radacina iniial. (4) Daca sistemul de fiiere radacina normal indicat este, de asemenea, sistemul de fiiere radacina iniial (de exemplu, /dev/ram0), atunci nucleul sare la ultimul pas pentru secvena obinuita de pornire. (5) Daca fiierul executabil /linuxrc este prezent in sistemul de fiiere radacina iniial, /linuxrc este executat cu UID 0; (fiierul /linuxrc trebuie sa aiba permisiunea de execuie). Fiierul /linuxrc poate fi orice executabil valid, inclusiv un script shell. (6) Daca /linuxrc nu este executat sau cand /linuxrc se termina, este montat sistemul de fiiere radacina normal; (daca /linuxrc iese cu orice sistem de fiiere montat pe sistemul de fiiere radacina iniial, atunci comportamentul nucleului este NESPECIFICAT). Consultai seciunea NOTE pentru comportamentul actual al nucleului. (7) Daca sistemul de fiiere radacina normal are un director /initrd, dispozitivul /dev/ram0 este mutat din / in /initrd. In caz contrar, daca directorul /initrd nu exista, dispozitivul /dev/ram0 este demontat.; (atunci cand este mutat din / in /initrd, /dev/ram0 nu este demontat i, prin urmare, procesele pot continua sa ruleze de pe /dev/ram0. Daca directorul /initrd nu exista pe sistemul de fiiere radacina normal i orice proces ramane in execuie de pe /dev/ram0 cand /linuxrc iese, comportamentul nucleului este NESPECIFICAT). Consultai seciunea NOTE pentru comportamentul actual al nucleului. (8) Secvena obinuita de pornire (de exemplu, invocarea lui /sbin/init) este efectuata pe sistemul de fiiere radacina normal. Opiuni Urmatoarele opiuni ale incarcatorului de pornire, atunci cand sunt utilizate cu initrd, afecteaza operaia de pornire a nucleului: initrd=fnume-fiier Specifica fiierul care urmeaza sa fie incarcat ca fiind coninutul lui /dev/initrd. Pentru LOADLIN, aceasta este o opiune de linie de comanda. Pentru LILO trebuie sa utilizai aceasta comanda in fiierul de configurare LILO /etc/lilo.config. Numele fiierului specificat cu aceasta opiune va fi de obicei o imagine de sistem de fiiere comprimata in formatul gzip. noinitrd Aceasta opiune de pornire dezactiveaza operaia de pornire in doua faze. Nucleul executa secvena obinuita de pornire ca i cum /dev/initrd nu ar fi fost iniializat. Cu aceasta opiune, orice coninut al /dev/initrd incarcat in memorie de catre coninutul incarcatorului de pornire este pastrat. Aceasta opiune permite ca coninutul lui /dev/initrd sa fie orice date i nu este necesar sa se limiteze la o imagine a sistemului de fiiere. Cu toate acestea, dispozitivul /dev/initrd este numai pentru citire i poate fi citit o singura data dupa pornirea sistemului. root=nume-dispozitiv Specifica dispozitivul care urmeaza sa fie utilizat ca sistem de fiiere radacina normal. Pentru LOADLIN, aceasta este o opiune de linie de comanda. Pentru LILO, aceasta este o opiune de pornire sau poate fi utilizata ca o linie de opiune in fiierul de configurare LILO /etc/lilo.config. Dispozitivul specificat de aceasta opiune trebuie sa fie un dispozitiv care poate fi montat i care are un sistem de fiiere radacina adecvat. Schimbarea sistemului de fiiere radacina normal In mod implicit, pentru sistemele de fiiere radacina normale se utilizeaza configuraia nucleului (de exemplu, configurata in fiierul nucleu cu rdev(8) sau compilata in fiierul nucleu) sau configuraia opiunii incarcatorului de pornire. Pentru un sistem de fiiere radacina normal montat prin NFS, trebuie sa se utilizeze opiunile de pornire nfs_root_name i nfs_root_addrs pentru a da parametrii NFS. Pentru mai multe informaii despre radacina montata prin NFS, consultai fiierul de documentare a nucleului Documentation/filesystems/nfs/nfsroot.txt (sau Documentation/filesystems/nfsroot.txt inainte de Linux 2.6.33). Pentru mai multe informaii despre stabilirea sistemului de fiiere radacina, consultai, de asemenea, documentaia LILO i LOADLIN. De asemenea, este posibil ca executabilul /linuxrc sa schimbe dispozitivul radacina normal. Pentru ca /linuxrc sa modifice dispozitivul root normal, trebuie sa fie montat /proc. Dupa montarea /proc, /linuxrc modifica dispozitivul normal radacina prin scrierea in fiierele proc /proc/sys/kernel/real-root-dev, /proc/sys/kernel/nfs-root-name i /proc/sys/kernel/nfs-root-addrs. Pentru un dispozitiv radacina fizic, dispozitivul radacina este schimbat prin faptul ca /linuxrc scrie noul numar al dispozitivului sistemului de fiiere radacina in /proc/sys/kernel/real-root-dev. Pentru un sistem de fiiere radacina NFS, dispozitivul radacina este modificat prin faptul ca /linuxrc scrie configuraia NFS in fiierele /proc/sys/kernel/nfs-root-name i /proc/sys/kernel/nfs-root-addrs i apoi scrie 0xff (de exemplu, numarul pseudo-dispozitivului NFS) in fiierul /proc/sys/kernel/real-root-dev. De exemplu, urmatoarea linie de comanda shell ar schimba dispozitivul radacina normal in /dev/hdb1: echo 0x365 >/proc/sys/kernel/real-root-dev Pentru un exemplu NFS, urmatoarele linii de comanda shell ar schimba dispozitivul radacina normal in directorul NFS /var/nfsroot pe un server NFS in reea locala cu numarul IP 193.8.232.7 pentru un sistem cu numarul IP 193.8.232.2 i numit ,,idefix": echo /var/nfsroot >/proc/sys/kernel/nfs-root-name echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \ >/proc/sys/kernel/nfs-root-addrs echo 255 >/proc/sys/kernel/real-root-dev Nota: Utilizarea /proc/sys/kernel/real-root-dev pentru a schimba sistemul de fiiere radacina este depaita. Consultai fiierul sursa al nucleului Linux Documentation/admin-guide/initrd.rst (sau Documentation/initrd.txt inainte de Linux 4.10), precum i pivot_root(2) i pivot_root(8) pentru informaii despre metoda moderna de schimbare a sistemului de fiiere radacina. Utilizare Principala motivaie pentru implementarea initrd a fost aceea de a permite configurarea modulara a nucleului la instalarea sistemului. Un posibil scenariu de instalare a sistemului este urmatorul: (1) Programul de incarcare pornete de pe discheta sau de pe alt suport cu un nucleu minim (de exemplu, suport pentru /dev/ram, /dev/initrd i sistemul de fiiere ext2) i incarca /dev/initrd cu o versiune comprimata in format gzip a sistemului de fiiere iniial. (2) Executabilul /linuxrc determina ce este necesar pentru (1) montarea sistemului de fiiere radacina normal (adica tipul de dispozitiv, controlorii de dispozitiv, sistemul de fiiere) i (2) suportul de distribuie (de exemplu, CD-ROM, reea, banda, ...). Acest lucru se poate face prin solicitarea utilizatorului, prin autoprobare sau prin utilizarea unei abordari hibride. (3) Executabilul /linuxrc incarca modulele necesare din sistemul de fiiere radacina iniial. (4) Executabilul /linuxrc creeaza i populeaza sistemul de fiiere radacina; (in aceasta etapa, sistemul de fiiere radacina normal nu trebuie sa fie inca un sistem finalizat). (5) Executabilul /linuxrc instaleaza /proc/sys/kernel/real-root-dev, demonteaza /proc, sistemul de fiiere root normal i orice alte sisteme de fiiere pe care le-a montat, apoi se termina. (6) Nucleul monteaza apoi sistemul de fiiere radacina normal. (7) Acum ca sistemul de fiiere este accesibil i intact, incarcatorul de pornire poate fi instalat. (8) Incarcatorul de pornire este configurat sa incarce in /dev/initrd un sistem de fiiere cu setul de module care a fost utilizat pentru a porni sistemul (de exemplu, dispozitivul /dev/ram0 poate fi modificat, apoi demontat i, in final, imaginea este scrisa din /dev/ram0 intr-un fiier). (9) Sistemul este acum pornibil i pot fi efectuate sarcini suplimentare de instalare. Rolul cheie al /dev/initrd in cele de mai sus este acela de a reutiliza datele de configurare in timpul funcionarii normale a sistemului, fara a necesita selectarea iniiala a nucleului, un nucleu generic de mari dimensiuni sau, recompilarea nucleului. Un al doilea scenariu este cel al instalaiilor in care Linux ruleaza pe sisteme cu configuraii hardware diferite intr-o singura reea administrativa. In astfel de cazuri, ar putea fi de dorit sa se utilizeze doar un set mic de nuclee (ideal ar fi unul singur) i sa se menina cat mai mica partea de informaii de configurare specifica sistemului. In acest caz, creai un fiier comun cu toate modulele necesare. Apoi, doar fiierul /linuxrc sau un fiier executat de /linuxrc ar fi diferit. Un al treilea scenariu este reprezentat de discuri de recuperare mai convenabile. Deoarece informaii precum locaia partiiei sistemului de fiiere radacina nu sunt necesare in momentul pornirii, sistemul incarcat de pe /dev/initrd poate utiliza un dialog i/sau o detecie automata urmata de o eventuala verificare a corectitudinii. Nu in ultimul rand, distribuiile Linux pe CD-ROM pot folosi initrd pentru o instalare uoara de pe CD-ROM. Distribuia poate utiliza LOADLIN pentru a incarca direct /dev/initrd de pe CD-ROM fara a fi nevoie de dischete. Distribuia ar putea, de asemenea, sa utilizeze o discheta de pornire LILO i apoi sa porneasca un disc RAM mai mare prin intermediul /dev/initrd de pe CD-ROM. FIIERE /dev/initrd /dev/ram0 /linuxrc /initrd NOTE o Cu nucleul actual, orice sistem de fiiere care ramane montat atunci cand /dev/ram0 este mutat de la / la /initrd continua sa fie accesibil. Cu toate acestea, intrarile /proc/mounts nu sunt actualizate. o Cu nucleul actual, daca directorul /initrd nu exista, atunci /dev/ram0 nu va fi complet demontat daca /dev/ram0 este utilizat de orice proces sau daca are un sistem de fiiere montat pe el. Daca /dev/ram0 nu este complet demontat, atunci /dev/ram0 va ramane in memorie. o Utilizatorii de /dev/initrd nu ar trebui sa depinda de comportamentul prezentat in notele de mai sus. Comportamentul se poate schimba in versiunile viitoare ale nucleului Linux. CONSULTAI I chown(1), mknod(1), ram(4), freeramdisk(8), rdev(8) Documentation/admin-guide/initrd.rst (sau Documentation/initrd.txt inainte de Linux 4.10) in arborele sursa al nucleului Linux, documentaia LILO, documentaia LOADLIN, documentaia SYSLINUX TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.8 2 mai 2024 initrd(4)