Acest articol arată cum să creați un initramfs minim, subțire, pentru un sistem cu o configurație hardware specifică, cunoscută și statică. Procedura este explicată din Optimizarea bootării cu mkinitcpio de către Falconindy (Dave Reisner).

archwiki

Cuprins

  • 1 Cerință Udev
  • 2 Editarea fișierelor .preset
  • 3 Găsirea modulelor necesare
  • 4 Editarea inițială a mkinitcpio.conf
  • 5 Testul inițial
  • 6 Sortarea modulelor
    • 6.1 Module de sistem de fișiere
    • 6.2 Modulele dispozitivului de stocare
    • 6.3 Module de tastatură
  • 7 Terminarea

Cerința Udev

Marele avantaj al creării propriilor imagini initramfs este că puteți elimina udev. Acest cârlig singur este responsabil pentru o dimensiune destul de mică (

700-800 KiB cu LZ4 și LZOP, mai puțin cu alți algoritmi) în imaginea initramfs. Nu numai că dimensiunea mai mare va duce la cizme mai lungi (mai multe date de decomprimat), dar inițializarea udev în sine va dura, de asemenea, ceva timp suplimentar. Cu toate acestea, unele lucruri necesită udev . Aceasta include rezolvarea identificatorilor UUID, LABEL, PARTUUID și PARTLABEL (cârlig de soluție fără udev) și asamblarea dispozitivelor LVM și mdadm care conțin partiția rădăcină. Dacă nu sunteți sigur dacă aveți nevoie de udev, continuați cu instrucțiunile de pe această pagină până la testul #Initial. Dacă nu totul funcționează fără udev, reactivați cârligul și încercați din nou.

De asemenea, în timp ce majoritatea tastaturilor (AT, PS/2, USB) nu necesită utilizarea cârligului udev, dispozitivele USB Logitech care utilizează receptorul unificat Logitech o fac. În acest moment, puteți include udev în toate imaginile sau vă puteți baza pe o imagine de rezervă care o face.

Dacă aveți nevoie de udev, eforturile dvs. de minimizare vor fi cel mai probabil în zadar. Este posibil să puteți micșora dimensiunea imaginii cu

600 KiB, dar timpul de încărcare nu va fi îmbunătățit semnificativ. Continuarea acestui scenariu poate fi totuși o experiență de învățare utilă.

Editarea fișierelor .preset

În tutorialul Falconidy, el editează /etc/mkinitcpio.conf și rulează mkinitcpio -g pentru a crea imaginea initramfs de testare, lăsând neatinse imaginile initramfs cunoscute de pe sistem. Cu toate acestea, dacă rulați orbește mkinitcpio -P după aceea, chiar și imaginea de rezervă va fi dezactivată.

O modalitate mai sigură de a vă pregăti pentru preluarea creației fișierelor initramfs în propriile mâini este modificarea fișierelor .preset din /etc/mkinitcpio.d. Următorul exemplu de configurație va înlocui implicit imaginea inițială minimă și va crea o nouă imagine normală care este construită The Arch Way. Dacă lucrurile merg prost, vă puteți baza pe imaginile normale sau de rezervă. Când ați terminat, puteți scăpa liniile normal_ * din config și eliminați fișierele initramfs-linux * -normal.img.

Găsirea modulelor necesare

Cea mai rapidă modalitate de a afla ce module aveți nevoie este să reporniți sistemul cu imaginea inițială de rezervă și să adăugați break = postmount la parametrii kernel din încărcătorul de boot, astfel încât să fiți lăsat pe linia de comandă odată ce sistemul de fișiere rădăcină este montat.

Odată ce sistemul dvs. repornește, rulați următoarea comandă pentru a vedea ce module aveți nevoie:

Notați modulele care au fost încărcate și tastați exit pentru a continua boot-ul.

Alternativ, instalați pachetul hwdetect pentru a ajuta la determinarea modulelor necesare. Deși neîntreținut, poate oferi informații valoroase. De asemenea, consultați module Kernel pentru a începe cu instrumentele native.

Editarea inițială a mkinitcpio.conf

Editați /etc/mkinitcpio.conf și modificați linia MODULES =. O notă utilă este că /etc/mkinitcpio.conf este obținut, astfel încât să puteți construi linia MODULURI ca o variabilă într-un script bash.

Adăugați toate modulele dvs. la ultima linie diversă. Pe măsură ce sortați modulele, le puteți plasa în linia corespunzătoare.

De asemenea, veți avea nevoie de binare pentru a efectua verificări ale sistemului de fișiere pe dispozitivul rădăcină și orice alte puncte de montare în/etc/fstab care au fost setate să facă acest lucru.

  • Pentru dispozitive ext [2 | 3 | 4]:
  • Pentru partițiile vfat (boot UEFI):
  • Pentru dispozitivul cu un singur disc btrfs:
  • Pentru dispozitivul multi-disc btrfs:
  • Pentru dispozitivele xFS

Testul inițial

Editați /etc/mkinitcpio.conf și rulați mkinitcpio -P pentru a reconstrui toate imaginile initramfs. Apoi reporniți.

Primul dvs. boot ar trebui să aibă succes dacă nu aveți nevoie de udev . Dacă ceva nu funcționează (de exemplu, Arch nu poate găsi partiția rădăcină sau tastatura nu funcționează), va trebui să vă întoarceți și să eliminați udev din parametrul -S din linia default_options și să încercați din nou. Dacă aveți nevoie de udev, rețineți că nu veți vedea o îmbunătățire semnificativă a timpului de pornire și continuarea este numai bună pentru o experiență de învățare.

Sortarea modulelor

Acum, că aveți un initramfs de pornire cunoscut, este timpul să reduceți și mai mult initramf-urile. Metoda normală este să eliminați câteva module la un moment dat, să reconstruiți imaginile initramfs și să reporniți pentru a vedea dacă totul este în continuare OK. Dacă aflați că totul nu este OK, reporniți cu imaginea inițială de rezervă și adăugați din nou modulele șterse până când totul este din nou OK. Clătiți și repetați până când aveți doar modulele de care aveți nevoie. Deoarece aceasta poate fi o experiență plictisitoare, următoarele liste sunt furnizate pentru a oferi oamenilor un avans în procesul de eliminare.