Bine, deci am o problemă cu Fedora 34. Mai exact, am o problemă cu a imagine construită la comandă asta face parte din serviciile pe care le oferim.
Problema
Problema are de-a face cu initramfs. Vezi, am folosit initrd până acum, dar cantitatea de pachete și binare a crescut de la ultima noastră actualizare de la Fedora 32 la Fedora 34. Fără a adăuga manual noi pachete, pachetele de bază, de lansare și de dependență au crescut până la un punct în care initrd a devenit de peste 500 MB în dimensiune.
Dimensiunea acestui initrd face ca această imagine să fie foarte instabilă: PXE moștenit nu funcționează, de exemplu, deoarece această imagine este prea mare pentru TFTP și se va îngheța pe majoritatea rețelelor. Cu toate acestea, cea mai mare, cea mai importantă problemă pe care o avem, este că GRUB2 nu mai permite acestui initrd să pornească, în principal pe laptop-urile HP. Ori de câte ori ne întoarcem la Fedora 32, imaginile par a fi mai stabile. Credem că se datorează faptului că initrd este mai mic aici. Imaginile implicite ale stației de lucru Fedora (34) funcționează și pe sistemele în care imaginea noastră personalizată primește panică de kernel.
Imaginea noastră folosește a /vmlinuz
și /initrd
fișier pentru a porni pe un RAMDisk folosind fie USB (GRUB2) fie PXE (iPXE). Acesta este prin design: aplicația noastră este un browser web chioșc integrat, bazat pe Chromium, care rulează pe Fedora (34). Se presupune că este volatil și apatrid.
Initramfs
Am căutat initramfs ca înlocuitor al initrd, deoarece este mult mai nou, mult mai ușor și este posibil ca dimensiunea acestui fișier să nu declanșeze erori în GRUB2. Poate că acest lucru ne va permite, de asemenea, utilizarea implementărilor PXE vechi, cum ar fi PXELINUX și Servicii de implementare Windows. M-am gândit că aș putea înlocui cu ușurință utilizarea CPIO + XZ cu Dracut. Dar am rămas blocat cu o problemă la care nu pot să-mi înțeleg cu adevărat capul...
Paradoxul
Înlocuirea initrd cu initramfs în GRUB2 nu este atât de dificilă. Dacă folosesc același nume pentru ambele fișiere (nu în același timp), ar căuta numele fișierului în configurație și ar găsi fișierul. Ușor, nu? Dar apoi, mesajele nucleului apar și nu reușește să pornească citind ceva de genul: Schimbarea rădăcină a eșuat: calea rădăcină a comutatorului specificată /sysroot nu pare să fie un arbore de sistem de operare. fișierul os-release lipsește.
Inutil să spun că am verificat conținutul /sysroot
: gol. Ar trebui să existe o os-release
dosar în /etc
. Citind pe „Sysroot”, ar trebui să monteze structura directorului sistemului de operare, motiv pentru care probabil îmi spune că îi lipsesc unele fișiere.
Sysroot
Iată unde m-am pierdut: structura directorului este în interiorul initramfs, nu? Dar pentru a rula initramfs prin GRUB2, trebuie să montez structura de directoare pe Sysroot. Asta înseamnă că pot ajunge doar /sysroot
din interiorul initramfs. Dar nu pot monta initramfs, pentru că am nevoie de fișierul OS-release /sysroot
. De asemenea, nu pot monta directoarele din interiorul initramfs, deoarece este un fișier imagine. Poți să-mi vezi paradoxul? Cum ar trebui să mă montez /sysroot
, când acest lucru necesită ceva în interior initramfs
în sine? Am încercat deja rădăcină=
parametru kernel cu a PARTUUID sau ETICHETA, dar nu pot folosi UUID-uri deoarece este vFAT peste UEFI.
Am omis ceva aici? Chiar ar trebui să folosesc initramfs, când folosesc discuri RAM USB bootabile? Dacă nu, ar trebui să mă uit la împărțirea initrd în mai multe fișiere? Cum fac asta?
NOTĂ: Folosim deja cea mai mare compresie posibilă (XZ nivel 9). Am încercat să împart initrd înainte, dar nu am reușit să o fac corect.
Mie personal nu-mi place să cer ajutor, dar când toate rezultatele căutării Google sunt în violet, s-ar putea să am nevoie de un punct în direcția corectă. O mulțime de sisteme nu funcționează după actualizarea noastră la F:34 și chiar aș dori să rezolv acest lucru. Știe cineva cum să folosească Dracut corect? Cineva cu experiență în generarea de imagini initramfs? De ce este al meu /sysroot
nu este deja montat?
Ajutorul este foarte apreciat, mulțumesc.