MiniDebi #2

Előzmény

Úgy áll a helyzet, hogy nagyjából már értem, hogyan működik egy live disztró.
Kell egy kernel, egy initrd image, egy ISOLINUX bootloader és egy működő, konfigurált Linux rendszer, amit mondjuk egy tömörített fájlrendszerbe - SquashFS - összecsomagolunk és a bootolás során felmountolunk.

Kb. így néz ki egy egyszerű könyvtárstruktúra:


|-- image
|   |-- filesystem.manifest
|   |-- filesystem.size
|   `-- filesystem.squashfs
|-- kernel
|   |-- initrd.gz
|   |-- vmlinuz
|-- isolinux
|   |-- isolinux.bin
|   |-- isolinux.cfg
|   `-- isolinux.txt

A lényeg az, hogy mit tartalmaz az initrd és mi van az isolinux.cfg -ben. Utóbbi tartalmára egy egyszerű példa: itt

Az initrd érdekesebb, mert abban vannak az initscriptek is, amik a bootolás során hajtódnak végre. Ezek az initrd -n belül a /scripts -ben találhatók.

Amikor minden felsorolt dolog megvan, akkor létre kell hozni egy iso fájlt a katyvaszból, s abból később lehet írni boolható CD -t vagy pendrive -ra lehet másolni (pl. unetbootin -nel). Valahogy így kell:

genisoimage -r -cache-inodes -J -l -o ../minidebi.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .

Most ott tartok, hogy megvan minden, amit fentebb felsoroltam, de nem tudok rábootolni, mert a SquashFS -be tömörített fájlrendszerem nem találja bootoláskor az init (?). Úgy gondolom, a /scripts -ben lévő szkripteket kell faragnom...

folyt. köv. :)

Hozzászólások

Lehet, hogy hülye kérdés, de a kernelben van fixen SquashFS support?

-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."

Van, de az initrd -ig mindenképp eljut a boot, szóval modulként is be tudná rántani (FIXME). :)

Szerk: megvan a hiba: a loop device támogatást fixen be kell forgatni a kernelbe. Érdekes, hogy modulként nem tölti be a boot során, de amikor elakad a boot és kapok egy busybox shell -t, kézzel be tudom tölteni... mindegy, leforgattam újra a kernelt. Így felbootolt a rendszer. :)