Az initrd (initial ram disk) általános célú kernelek esetében a rendszer kötelező összetevője, eleme. Enélkül vagy ennek a komponensnek a sérülése, hiányossága esetén a rendszer nem lesz indítható. Ez az állomány általában egy tömörített CPIO fájl vagy virtuális lemezfájl. A kernel után közvetlenül feltöltésre kerül a rendszer memóriába. Az initrd gyakorlatilag tartalmaz egy mini rendszert ahhoz, hogy a teljes PC indításához szükséges folyamatokat elindítsa és a megfelelő meghajtókat (kernel modulok) betöltse, még az előtt, hogy az init folyamat hozzáakarna férni a fizikai rendszerhez. Pontosabban csak úgy tudja „elérni” a telepített rendszer init szakaszát, hogy betölti a megfelelő meghajtóprogramokat (kernel modulok) amelyek elérhetővé teszik például a HDD/SSD/Optikai/PCMCIA/stb. eszközök működését, kezelését.
Egyes esetekben, mint például új meghajtó telepítése, vagy egy régi hardver cseréje után célszerű az initrd állományt újragenerálni, hogy ki/be kerüljenek a megfelelő meghajtóprogramok.
A blackPanther OS-ben biztosítunk egy grafikus alkalmazást az initrd állományunk gyors létrehozásához, melyet itt találsz:
Főmenü > Rendszerbeállítások > Rendszerbetöltő > Indítási ramdiszk (initrd) újragenerálása
Szakértőknek
Initrd újragenerálása, hibaelhárítás parancssorból
A következő parancs a dracut segítségével automatikusan a /boot mappába generál egy új initrd fájlt.
0 1 2 | dracut -f |
Amennyiben egy adott kernel verzióhoz akarunk új intird-t (ramdiszket), akkor használjuk a következőt:
0 1 2 | dracut -f --kver IDE_ADD_MEG_A_KERNEL_VERZIÓT. PL.: 5.10.1-desktop-1bP |
Az aktuális kernel teljes verzióját így kapod meg
0 1 2 | $ uname -r |
Új initrd készítése az aktuális kernelhez
0 1 2 3 4 5 6 7 8 9 | rootmod [enter] jelszó: cd /boot # vagy ahova akarod az új initrd-t atnevezes initrd-$(uname -r).img initrd-$(uname -r)_old.img mkinitrd initrd-$(uname -r).img $(name -r) # ellenőrzés, hogy létezik-e az új initrd ls initrd-$(uname -r).img |
Új initrd készítése egy adott verziójú (a példában: 4.9.20-desktop-pae-1bP) kernelhez
0 1 2 3 4 5 6 7 8 9 10 11 12 | rootmod #enter jelszó: #add meg a root jelszót, nem látszik amikor gépeled cd /boot # ugorj egyből az indítási ramdiszkhez listaz | grep "4.9.20-desktop-pae" # hogy tudd mit kell készítened initrd-4.9.20-desktop-pae-1bP.img # ezt kell látnod atnevezes initrd-4.9.20-desktop-pae-1bP.img initrd-4.9.20-desktop-pae-1bP_old.img # nevezd át, hátha kell, ha nem akkor törölheted # most jön a lényeg mkinitrd initrd-4.9.20-desktop-pae-1bP.img 4.9.20-desktop-pae-1bP # ellenőrzés, hogy létezik-e az új initrd ls initrd-4.9.20-desktop-pae-1bP.img |
Az mkinitrd hasznos opciói
0 1 2 3 4 5 6 7 8 9 10 11 | # root joggal mkdinitrd --help usage: mkinitrd [--version] [--help] [-v] [-f] [--preload <module>] [--image-version] [--with=<module>] [--nocompress] <initrd-image> <kernel-version> (Például: mkinitrd /boot/initrd-4.18.16-desktop-1bP.img 4.18.16-desktop-1bP --with="ata_piix, bcm9348") |
Miért nevezzük át „old”-ra a korábbi initrd állományt?
Biztonsági okokból. Bármi történik és hibás vagy hiányos lenne az új ramdiszk, akkor a rendszer nem indul el. Ebben az esetben a Grub-ot úgy szerkeszted át, hogy megadod a korábbi ramdiszket
0 1 2 3 4 5 6 7 | # az eredeti bejegyzés initrdefi /boot/initrd-4.18.16-desktop-1bP.img # módosítod erre: initrdefi /boot/initrd-4.18.16-desktop-1bP_old.img # és nyomd meg az F10-et vagy a Ctrl-x gombokat |
Egyéni ramdisk létrehozása (dracut)
Statikusan beállított kernel modulok hozzáadása, kizárása a konfigurációs fájban is megadható (vagy már megadott). Ez a beállítófájl itt található: /etc/dracut.conf
A beállítófájl felépítése
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # Azonos ezzel a kapcsolóval --drivers="module module module" drivers+="modul1 modul2 modul3" # Azonos ezzel a kapcsolóval --add-drivers="modul" add_drivers+="modul" # Azonos ezzel a kapcsolóval --omit-drivers="modul" omit_drivers+="modul" # Azonos ezzel a kapcsolóval --filesystems="fs1 fs2 fs3" filesystems+="fs1 fs2 fs3" # Azonos ezzel a kapcsolóval --kmoddir="/lib/modules/fixed" drivers_dir="/lib/modules/fixed" # Azonos ezzel a kapcsolóval --fwdir=":/lib/fw/alt:/lib/fw/alt2" fw_dir+=":/lib/fw/alt:/lib/fw/alt2" |
Amennyiben a konfiguráció tartalmaz egy tiltást vagy beépítést, akkor az kézzel nem zárható ki a dracut futtatásakor! Előtte el kell távolítani…
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # szükségtelen modulok tiltása kézi módszerrel: echo "blacklist modul_neve" >> /etc/modprobe.d/blacklist.conf # vagy echo "install modul_neve /bin/false" >> /etc/modprobe.d/egyeni-blacklist.conf # modul hozzáadása a ramdiszkhez dracut --force --add-drivers modul_neve # modul kizárása a ramdiskből a dracut futásakor dracut --omit-drivers module_name -f # modul betöltésének megakadályozása a Grub rendszerbetöltésekor. Adjuk hozzá a Grub kapcsolókhoz ahol a vga= vagy quiet szavakat látjuk modul_neve.blacklist=1 rd.driver.blacklist=modul_neve |
Példa: USB eszközről indításhoz szükségesek az USB modulok (meghajtók)
Figyelem!
A példa esetében az
megadja az aktuális kerneled verzióját, nevét! Tehát, ha egyedi kernelhez akarsz új initrd csinálni, meg kell adnod a nevét a telepített kernelednek! Ennek a listáját megkapod így: uname -r
listaz /lib/modules
0 1 2 3 4 5 6 | # MKINITRD példa mkinitrd /ahol_létrejön/initrd-`uname -r`.img `uname -r` --preload "usbcore usbid ehci_hcd uhci_hcd ohci_hcd usb_storage" --force # dracut példa dracut -f --add-drivers " usbore ehci_hcd uhci_hcd ohci_hcd usb_storage" /ahol_létrejön/initrd-`uname -r`.img `uname -r` |
A /boot-ba berakott, sérült, vagy hiányos initrd a rendszer indítását megakadályozza! Ezért az eredetit mindig mentsd el!
Ajánlott tartalom további lehetőségekkel
Hozzászólások lezárva