USB boot saját kernellel

 ( SySERR | 2019. március 24., vasárnap - 20:52 )

Sziasztok!

Adott egy olyan 32 bites Debian 10-et futtató gép mely mindössze két előre konfigurált programot futtat minimális diszk használat mellett. A benne lévő hangkártya csak a legújabb kézzel fordított kernellel működik hibátlanul, ezért a „gyárit” nem tudom használni. Tekintettel arra, hogy minimális a diszk használat, ezért kitaláltam, hogy a rendszer egy pendrive-ról legyen használható, tehát a bootolás is arról történjen. Azonban az új kernellel folyamatosan „Unable to mount root fs on unknown-block(8,2)” hibaüzenettel megáll kernel panic-kal. Mindezt úgy, hogy minden USB storage-el kapcsolatos dolog bele van fordítva a kernelbe. A jelenlegi kézzel fordított kernel 5.0.4, ami sima diszkről rendesen bootol és felismeri a pendrive-ot is a rajta lévő partíciókkal.
Mit kell még belefordítanom ahhoz, hogy a boot folyamán a kernel felismerje az USB eszközt és a rajta lévő partíciókat, amivel a boot már sikeres lehet?

A jelenlegi kernel config: http://syserr.hu/kernel.conf.txt

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

> minden USB storage-el kapcsolatos dolog bele van fordítva a kernelbe

Tényleg bele van fordítva, vagy modulban van? A moduok bekerülnek az initramfs-be?

Az a fura, hogy pánikol. A legtöbb disztrón ha nem tudja csatolni a root FS-t, akkor egy single user root konzolt kapunk, amiben busybox fut, és van némi esély hibaelhárításra. Illetve lehet ilyet boot paraméterrel is kérni. Ezeket próbáltad? Próbáltad ebből a konzolból kézzel mountolni az USB háttértárat?

(Csak találgatózok.)

Az usb boot-hoz nem csak usb dolgok kellenek.
De megfordítanám. Miért nem forgatod újra a gyári kernel konfigjával plusz a tiedet bele. Így már próbáltad?

---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.

Szerintem amit szeretnél, az nem fog menni.
Bizonyos dolgokat a kernel nem tud inicializálni, kell hozzá a user-space, és szzerintem a full-featured USB storage az ilyen. Ergó vagy floppy/cd-emulációval bootolsz (ahogy a telepítő image-ek szoktak) - ez még BIOS-hívásokkal berántja az egész cuccot ramdiszkbe, és onnan futtatja, vagy kell az initrd/initramfs, ami fellövi az udevet, hogy legyen USB device, amit root fs-ként tudsz mountolni.

Jelen állás szerint úgy néz ki valóban az initrd/initramfs lesz a megoldás. PXE boot NFS root esetében is erősen kellett ez.

-------------------
https://onlinestream.hu/ - A legtöbb magyar rádió és TV egy helyen!

Bekerültek a modulok initrd/initramfs-be. A rendszer pendrivera való átklónozása után bedugva hagytam a pendriveot, majd reboot után root=/dev/sdb2 paraméterrel újraindítottam a gépet. De már azelőtt elpanicolt, hogy felismerte volna a pendriveot ami a /dev/sdb lenne. Ezután újra a diszkről bootolva megnéztem, hogy milyen modulokat tölt be amikor bedugom a pendriveot, hátha valami még sincs a kernelbe fordítva, de nem töltött be semmit. Jó lenne valahogy tudni, hogy mit kell még az új kernelbe belefordítanom ami a gyáriba benne van (és működik is azzal).

-------------------
https://onlinestream.hu/ - A legtöbb magyar rádió és TV egy helyen!

A gond az, hogy az initrd/initramfs script, és a hozzá fordított kernel konfigjának matchelnie kell valamilyen szinten.

Nyilván lehet olyan scriptet írni, ami kb. minden esetet jól kezel, de ehelyett az embernek el szokott múlni a türelme, és constrainteket tesz bele a rendszerbe (ez az opció mindig fixen module, ez mindig fixen on, meg hasonlók), és utána ezzel a feltételezéssel írja a scriptet, mert úgy egyszerűbb/rövidebb lesz.

Ergó vagy írsz magadnak scriptet és a saját kernel beállításaidat használod (itt azért elég magas a belépési küszöb), vagy használod más scriptjét, de akkor az ő constraintjei szerint kell a kernelt fordítani.

Az ubuntu kernele (és a hozzávaló scripttel gyártódó initrd/initramfs image) pl. úgy készül, hogy van valami script, ami adott formában mindent lefordít (beállítja a kernel flageket, megcsinálja a fordítást, utána buildeli az image-eket). Mivel az is debianos, gondolom a debianhoz is van ilyen script, vagy netalántán kb. ugyanaz a script is.

Szerintem jobban jársz, ha telepíted a pendrivera, a live helyett.

A megoldás végül az initrd/initramfs lett. Ennek támogatása is valami miatt hiányzott a kernel configból ami szintén bele lett forgatva a kernelbe.

-------------------
https://onlinestream.hu/ - A legtöbb magyar rádió és TV egy helyen!