Jelenlegi hely
Sajat initrd, sajat boot CD
Sziasztok,
egy ideje azzal toltom az idomet, hogy rajojjek hogyan lehetne sajat boot CDt kesziteni. Itt most nem az a lenyeg, hogy milyen tartalom lenne rajta, hanem, hogy bebootoljon...
Pontosan mar nem is tudom mivel probalkoztam, egyszer mar nekifutottam a temanak, csak aztan pihentetve lett a dolog.
Most ujra volt egy kis idom ezzel foglalkozni.
Termeszetesen a Slackware DVD-bol indultam ki (Slackware64 13.0).
A tartalmat felmasolva vinyora ujra lehet belole bootolhato iso-t csinalni a mkisofs paranccsal. (bovebben: http://connie.slackware.com/~alien/tools/mirror-slackware-current.sh)
Az initrd-t szerettem volna modositani, ez sikerult is. Majd pl afind . | cpio -o -H newc | gzip > /tmp/initrd.gz
paranccsal vissztomoriteni es meg mindig bootolhato volt a CD.
Ezutan szerettem volna egy valoban sajat initrd-t kesziteni.
Itt tobfelekeppen is probalkoztam legutobb ez alapjan:
http://www.ibm.com/developerworks/linux/library/l-initrd.html
A problema roviden az, hogy a sajat initrd-vel keszitett cd a bootolas soran panicol."VFS: Cannot open root device "NULL" or unknown block(3,7)
Please append a correct "root=" boot option; here are the available partitions:
....... ide-gd
....... ide-cdrom"
Az isolinux.cfg igy nez ki:default huge.s
prompt 1
timeout 1200
display message.txt
F1 message.txt
F2 f2.txt
label huge.s
kernel /kernels/huge.s/bzImage
append initrd=initrd.gz load_ramdisk=1 prompt_ramdisk=0 rw SLACK_KERNEL=huge.s
....
Tehat ez az eredeti (Slackware-es) isolinux.cfg (kiveve: initrd.img-bol lett nalam initrd.gz)
Igy nem hiszem, hogy a root= parameter hianya lenne a gond. Bar azzal is probalkoztam, meg pl. az init=/linuxrc-vel is, stb.
Tudom a kerdes egy picit log a levegoben, ha vmit meg szertnetek ha leirnek szoljatok.
Azert is batorkodtam elojonni ezzel a temaval, mert - azt hiszem - Csabi keszitette a SlackWall-t (amit most nem tudok elerni az oldalon) es akar o, akar mas talalkozott mar ezzel a temakorrel.
Elore is koszi!
- A hozzászóláshoz regisztráció és belépés szükséges

megoldas
Rohej, hogy napokig szenvedtem vele, majd miutan irtam ide megtalaltam a megoldast.
(Bar meg nem tokeletes, lehet, hogy fogok meg kerdezni a temaban ebben a topicban)
Roviden a megoldas az lett, hogy mindenkeppen init-nek kell nevezni az init script*-et, nem lehet linuxrc-nek, mint ahogy azt sok leiras tartalmazza. (Vagy lehet csak en nem jottem ra hogyan.)
Én így csinálom, (csináltam)....
Szevasztok
Pár dolog nem világos nekem, de lehet én értelmezem rosszul.
Amit csinálsz initrd -t, annak egy mini linux rendszernek kell lennie.
Az lehet bikkmakk.img, vagy tököm.gz, az a lényeg, hogy a kernel tudja melyiket bootolja be.
Azt megadod az append paraméterrel, oszt jónapot.
( Nálam initrd.gz néven fut ).
Ami buktató lehet, az a ramdisk mérete, meg még egy csomó dolog :-))
Szerintem csinálj sajátot, azzal gyorsabban haladsz, meg jobban megérted a lényegét az egésznek.
Használhatod a slackwall -t puskának, bár már nem foglalkozom vele időhiány miatt.
Ha mégis kell, akkor feltolom valahova, oszt lehúzhatod.
Pár lépés az egész, nem nagy dolog.
Fordíts egy busybox -ot, lehetőleg a legújabbat.
Néhány binárist érdemes rendes rendszerről bemásolni a libekkel együtt, mert a busybox nem minden paramétert fogad el.
(Ezért olyan kicsi).
Tehát ldd paranccsal megnézed mi kell a binárisnak, oszt bemásolod a /lib -be, oszt biztonság kedvéért link a /usr/lib -be.
Ha készítesz saját telepítőt ( mint a slackwallba ), akkor kelleni fognak plusz dolgok, pl. lilo, grub, ncurses, ( ha dialogos cucc lesz, vagy ha akarsz bele pl. mc -t ).
Ezeknek mindnek kell majd a lib függőségei.
Kell majd terminfo, meg egyéb cucc, fontkészlet, ha magyar konzolt akarsz, stb.
Tehát megcsinálod a mini linuxot a cuccokkal, oszt kell majd inittab, meg profile, meg pár fájl, amibe megadod a környezeti változókat, amik kellenek majd a rendszer indulásakor.
Pl: /etc/inittab, /etc/rc.d/profile, /etc/rc.d/boot, stb.
De ezeket bárhova rakhatod, a lényeg, hogy az inittabot fogja keresni a rendszer, ott kell megadni az initnek a további elérhetőségeket.
Az /etc -be kell még pl:
ld.so.conf, HOSTNAME, passwd, group, stb....
Ha ezek megvannak, akkor az egészet összecsomagolod, oszt a bootba megadod a kernelnek mit hol keressen.
Ne felejtsd el a /dev -be az alap eszközöket beletenni.
Nem kell mind, csak hogy beinduljon a kernel, utána egy scripttel legyártod a többit, mikor már feláll a rendszer.
Pl. nálam így néz ki az isolinux.cfg :
default 1
prompt 1
timeout 200
display boot.msg
label 1
kernel linux
append initrd=initrd.gz root=/dev/ram0 load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=131072 rw vga=769
label 2
kernel linux
append initrd=initrd.gz root=/dev/ram0 load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=131072 rw vga=771
label 3
kernel linux
append initrd=initrd.gz root=/dev/ram0 load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=131072 rw vga=791
label 4
kernel memtest
Nálam még megvan a root adva (/dev/ram0) meg a ramdisk mérete.
A vga beállítás csak akkor kell, ha különböző felbontást szeretnél.
( Jól jöhet ).
Arra figyelj, hogy a ramdisk mérete mindenképp nagyobb legyen mint az initrd, mert különben nem fog elférni és a kernel pánikolni fog.
Csinálhatod kisebbre a ramdisket és a cd -ről csatolsz hozzá filesystemeket, de én így csináltam, mert én nem live cd -nek szántam, hanem telepítő funkciója volt.
Szal.
Ha ezek megvannak, akkor mennie kell.
...czappa írta...
Roviden a megoldas az lett, hogy mindenkeppen init-nek kell nevezni az init script*-et...
Az init script, az a /etc/inittab, innen tudja majd a rendszer, hogy mi újság.
Lehet nem erre gondoltál, akkor bocs...
Szevasztok
Szia, koszonom a
Szia,
koszonom a valaszt!
Eleinte csak azert kezdtem a Slackware-es initrd-vel foglalkozni, mert nem tudtam, hogyan induljak el egy sajat keszitesevel. Aztan a slakis cd-t nezve feltunt a busybox, amitol mar olvastam korabban igy azzal csinaltam en is.
Amivel szenvedtem az az volt, hogy a / -ba init neven nem adtam meg symlinkkent az /bin/init-et (ami meg a busyboxra link).
Ha ezt nem adtam meg akkor fogadott a mar emlitett hibauzenet boot soran:
"VFS: Cannot open root device "NULL" or unknown block(3,7)Please append a correct "root=" boot option;"
(Ez az init linkelos dolog igy van a Slackware cd-n is.)
Ettol fuggetlenul nem vilagos pontosan, hogy miert van erre szukseg, a telepitett Slackymon nincs /init nevu symlink. (Lehet azert, mert ott az /sbin/init "valodi" kulonallo program, nem a busyboxos megoldas, nem tudom, alkalmasint megprobalom kideriteni.)
Miutan ezzel megvoltam es vegre bebootolt sajat initrdvel, akkor egy masik problemat kellet megoldanom:
a shell ezt irta:
"job control turned off", ez nem lett volna tragedia, de zavart.
Most mar ez is mukodik.
Van meg persze ami nem tiszta pl.:
bash-3.1# cd dev/bash-3.1# ls -l
total 0
crw-rw-rw- 1 root root 5, 1 2009-12-29 17:17 console
crw-rw-rw- 1 root root 1, 3 2009-12-29 17:18 null
brw------- 1 root root 1, 0 2009-12-29 17:18 ram0
crw-r--r-- 1 root root 5, 0 2009-12-29 19:12 tty
crw-r--r-- 1 root root 4, 0 2009-12-29 23:55 tty0
crw-r--r-- 1 root root 4, 1 2009-12-29 19:11 tty1
crw-r--r-- 1 root root 4, 2 2009-12-29 19:11 tty2
crw-r--r-- 1 root root 4, 3 2009-12-29 19:11 tty3
crw-r--r-- 1 root root 4, 4 2009-12-30 00:01 tty4
A tty0 - 4 miert 4 a major szamuk?
Persze ilyen fajlok a gepemen nincsenek (mar /usr/src/sys/ sem), igy nem tudom miert 4 a major szam, talan karakteres terminalnal mindig 4-nek kell lennie, passz. No mindegy, szoval szep lassan haladok.Ezt talatam hozza: (http://www.manpagez.com/man/8/mknod/)