| initrd(4) | Device Drivers Manual | initrd(4) |
initrd - discul RAM inițializat de încărcătorul de boot
/dev/initrd este un dispozitiv de bloc numai pentru citire căruia i s-a atribuit numărul major 1 și numărul minor 250. În mod obișnuit, /dev/initrd este deținut de root:disk cu modul 0400 (acces în citire numai de către root). În cazul în care sistemul Linux nu are /dev/initrd deja creat, acesta poate fi creat cu următoarele comenzi:
mknod -m 400 /dev/initrd b 1 250 chown root:disk /dev/initrd
De asemenea, pentru a utiliza /dev/initrd, trebuie compilat direct în nucleul Linux atât suportul pentru „discul RAM”, cât și pentru „discul RAM inițial” (de exemplu, CONFIG_BLK_DEV_RAM=y și CONFIG_BLK_DEV_INITRD=y). Atunci când se utilizează /dev/initrd, controlorul de disc RAM nu poate fi încărcat ca modul.
Fișierul special /dev/initrd este un dispozitiv de bloc numai pentru citire. Acest dispozitiv este un disc RAM care este inițializat (adică, încărcat) de către încărcătorul de boot înainte de pornirea nucleului. Apoi, nucleul poate utiliza conținutul lui /dev/initrd pentru o pornire a sistemului în două faze.
În prima fază de pornire, nucleul pornește și montează un sistem de fișiere rădăcină inițial din conținutul lui /dev/initrd (de exemplu, discul RAM inițializat de încărcătorul de pornire). În a doua fază, controlori suplimentari sau alte module sunt încărcate din conținutul dispozitivului rădăcină inițial. După încărcarea modulelor suplimentare, un nou sistem de fișiere rădăcină (adică sistemul de fișiere rădăcină normal) este montat de pe un alt dispozitiv.
La pornirea cu initrd, sistemul pornește după cum urmează:
Următoarele opțiuni ale încărcătorului de pornire, atunci când sunt utilizate cu initrd, afectează operația de pornire a nucleului:
În mod implicit, pentru sistemele de fișiere rădăcină normale se utilizează configurația nucleului (de exemplu, configurată în fișierul nucleu cu rdev(8) sau compilată în fișierul nucleu) sau configurația opțiunii încărcătorului de pornire. Pentru un sistem de fișiere rădăcină normal montat prin NFS, trebuie să se utilizeze opțiunile de pornire nfs_root_name și nfs_root_addrs pentru a da parametrii NFS. Pentru mai multe informații despre rădăcina montată prin NFS, consultați fișierul de documentare a nucleului Documentation/filesystems/nfs/nfsroot.txt (sau Documentation/filesystems/nfsroot.txt înainte de Linux 2.6.33). Pentru mai multe informații despre stabilirea sistemului de fișiere rădăcină, consultați, de asemenea, documentația LILO și LOADLIN.
De asemenea, este posibil ca executabilul /linuxrc să schimbe dispozitivul rădăcină normal. Pentru ca /linuxrc să modifice dispozitivul root normal, trebuie să fie montat /proc. După montarea /proc, /linuxrc modifică dispozitivul normal rădăcină prin scrierea în fișierele proc /proc/sys/kernel/real-root-dev, /proc/sys/kernel/nfs-root-name și /proc/sys/kernel/nfs-root-addrs. Pentru un dispozitiv rădăcină fizic, dispozitivul rădăcină este schimbat prin faptul că /linuxrc scrie noul număr al dispozitivului sistemului de fișiere rădăcină în /proc/sys/kernel/real-root-dev. Pentru un sistem de fișiere rădăcină NFS, dispozitivul rădăcină este modificat prin faptul că /linuxrc scrie configurația NFS în fișierele /proc/sys/kernel/nfs-root-name și /proc/sys/kernel/nfs-root-addrs și apoi scrie 0xff (de exemplu, numărul pseudo-dispozitivului NFS) în fișierul /proc/sys/kernel/real-root-dev. De exemplu, următoarea linie de comandă shell ar schimba dispozitivul rădăcină normal în /dev/hdb1:
echo 0x365 >/proc/sys/kernel/real-root-dev
Pentru un exemplu NFS, următoarele linii de comandă shell ar schimba dispozitivul rădăcină normal în directorul NFS /var/nfsroot pe un server NFS în rețea locală cu numărul IP 193.8.232.7 pentru un sistem cu numărul 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
Notă: Utilizarea /proc/sys/kernel/real-root-dev pentru a schimba sistemul de fișiere rădăcină este depășită. Consultați fișierul sursă al nucleului Linux Documentation/admin-guide/initrd.rst (sau Documentation/initrd.txt înainte de Linux 4.10), precum și pivot_root(2) și pivot_root(8) pentru informații despre metoda modernă de schimbare a sistemului de fișiere rădăcină.
Principala motivație pentru implementarea initrd a fost aceea de a permite configurarea modulară a nucleului la instalarea sistemului.
Un posibil scenariu de instalare a sistemului este următorul:
Rolul cheie al /dev/initrd în cele de mai sus este acela de a reutiliza datele de configurare în timpul funcționării normale a sistemului, fără a necesita selectarea inițială a nucleului, un nucleu generic de mari dimensiuni sau, recompilarea nucleului.
Un al doilea scenariu este cel al instalațiilor în care Linux rulează pe sisteme cu configurații hardware diferite într-o singură rețea administrativă. În astfel de cazuri, ar putea fi de dorit să se utilizeze doar un set mic de nuclee (ideal ar fi unul singur) și să se mențină cât mai mică partea de informații de configurare specifică sistemului. În acest caz, creați un fișier comun cu toate modulele necesare. Apoi, doar fișierul /linuxrc sau un fișier executat de /linuxrc ar fi diferit.
Un al treilea scenariu este reprezentat de discuri de recuperare mai convenabile. Deoarece informații precum locația partiției sistemului de fișiere rădăcină nu sunt necesare în momentul pornirii, sistemul încărcat de pe /dev/initrd poate utiliza un dialog și/sau o detecție automată urmată de o eventuală verificare a corectitudinii.
Nu în ultimul rând, distribuțiile Linux pe CD-ROM pot folosi initrd pentru o instalare ușoară de pe CD-ROM. Distribuția poate utiliza LOADLIN pentru a încărca direct /dev/initrd de pe CD-ROM fără a fi nevoie de dischete. Distribuția ar putea, de asemenea, să utilizeze o dischetă de pornire LILO și apoi să pornească un disc RAM mai mare prin intermediul /dev/initrd de pe CD-ROM.
/dev/initrd
/dev/ram0
/linuxrc
/initrd
chown(1), mknod(1), ram(4), freeramdisk(8), rdev(8)
Documentation/admin-guide/initrd.rst (sau Documentation/initrd.txt înainte de Linux 4.10) în arborele sursă al nucleului Linux, documentația LILO, documentația LOADLIN, documentația SYSLINUX
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
| 15 iunie 2024 | Pagini de manual de Linux 6.9.1 |