Acest document descrie modul de creare și instalare a initrd-ului, care ar putea fi necesar să utilizați kernel-ul 4.x. Vezi și "om mkinitrd".
Ce este Initrd?
initrd înseamnă "ramdisk inițial" (disc virtual inițial). Un disc virtual inițial este un sistem de fișiere Linux foarte mic care este încărcat în memorie RAM și montat ca un încărcător de kernel, înainte de a monta sistemul de fișiere rădăcină principal.
De ce am nevoie de un initrd?
Motivul obișnuit pentru utilizarea initrd-ului este că trebuie să încărcați modulele de kernel înainte de a instala partiția rădăcină. De obicei, aceste module sunt necesare pentru a suporta sistemul de fișiere utilizat de partiția rădăcină (ext3, ext4, btrfs, xfs) sau controlerul, hard diskul care este conectat la (SCSI, RAID etc.). În esență, există multe opțiuni diferite disponibile în kernel-urile moderne Linux, dar nu este practic să încercați să descărcați diferite kernel-uri pentru a satisface nevoile tuturor. O soluție mult mai flexibilă ar fi încărcarea unui kernel standard și a unui set de module pentru acesta.
Cum pot crea un Initrd?
Cea mai ușoară modalitate de a crea un initrd este să utilizați scriptul mkinitrd. Inclus în pachetul Slackware, numit "mkinitrd". Vom trece prin procesul de upgrade la kernel-ul generic 4.4.14 folosind pachetele care sunt în directorul slackware / a /.
Mai întâi, asigurați-vă că nucleul, modulele kernel și pachetul mkinitrd sunt instalate (numărul versiunii curente poate fi puțin diferit, deci este doar un exemplu):
Accesați directorul / boot:
Acum trebuie să rulați "mkinitrd". Eu folosesc ext4 pentru sistemul de fișiere rădăcină, și deoarece controlerul de disc nu necesită suport special, am nevoie doar de un singur modul ext4 pentru boot.
Această comandă va face două lucruri. Mai întâi, creați directorul / boot / initrd-tree conținând sistemul de fișiere initrd. Și apoi va crea initrdul însuși (/boot/initrd.gz) din acest arbore. Dacă doriți, puteți face unele modificări suplimentare în / boot / initrd-tree /, apoi rulați din nou mkinitrd fără opțiuni pentru a recrea imaginea. Acest lucru nu este necesar, deși numai utilizatorii cu experiență vor trebui să se gândească la acest lucru.
Iată un alt exemplu: Crearea unei imagini initrd utilizând modulul kernel Linux 4.4.14 pentru un sistem cu ext4 în partiția rădăcină / dev / sdb3:
Acum că am creat Initrd, cum pot să o folosesc?
Acum că aveți Initrd (/boot/initrd.gz), veți dori să îl descărcați cu kernel-ul la momentul încărcării. Dacă utilizați încărcătorul LILO, trebuie să editați fișierul /etc/lilo.conf și să adăugați o linie pentru a încărca Initrd. Iată un exemplu al secțiunii lilo.conf, care arată cum se face acest lucru:
Initrd este încărcat în linia "initrd = /boot/initrd.gz". Doar adăugați această linie direct sub linia imaginii kernelului pe care îl utilizați. Salvați fișierul, apoi porniți din nou LILO (tastând "lilo" pe linia de comandă). Trebuie să rulați lilo de fiecare dată când editați lilo.conf sau recreați Initrd.
Initrd este încărcat în linia "initrd = /boot/initrd.gz". Doar adăugați această linie direct sub linia imaginii kernelului pe care îl utilizați. Salvați fișierul, apoi porniți din nou LILO (tastând "lilo" pe linia de comandă). Trebuie să rulați lilo de fiecare dată când editați lilo.conf sau să recreați initrd-ul.
Alți încărcători, cum ar fi SYSLINUX, susțin, de asemenea, utilizarea initrd. Pentru detalii, consultați documentația pentru aceste programe despre utilizarea initrd-ului cu acestea.