Telepítés saját kernellel. Hogyan? (vmlinuz, initrd, iso)

Fórumok

Sziasztok!
A következő a történet:
- Vettem egy hardvert tök új, meg gyors, csak éppen semmit sem ér el rajta a linux. Core2 Duo és ennek folyományaként egy csomó új hardverelem, pl. két integrált ata vezérlő, amit még csak a legújabb kernelek ismernek.
- Nagy nehezen ráerőszakoltam USB Pendriveról (hd-media) egy debiant, de ez egy etch testing-daily build. És ráadásul nem is 64 bites, továbbá csak az egyik ata adaptert látja.
- Fordítottam rajta 2.6.18-as kernelt, ez már a hálókártya és a cdrom kivételével már mindent lát :), ezzel már tudnék valamit kezdeni.

Kérdések:
a) Hogyan tudok custom kernellel telepíteni, mondjuk egy sarge-ot (jelen esetben AMD64 unofficial sarge 31r3)?
b) Azt vágom, hogy a vmlinuz-t fölülvágom a pendrive-on. De a modulokat már a initrd-ről olvassa be a kernel. Hogyan fogom én átírni a initrd-ben a modulokat? Ez mindenképpen kell, mert enélkül még az USB-t sen találja meg.
c) Mintha még az iso-ról is olvasna be modulokat. Ez talán jelen esetben nem is annyira fontos, de ezt hogyan csinálom? (make-kpkg?, aztán fölmásolni az iso-ba?)
d) Egyáltalán fog ez így működni, vagy valamit még kihagytam a számításból?

Köszönöm,
Balázs

Hozzászólások

"Vettem egy hardvert tök új, meg gyors, csak éppen semmit sem ér el rajta a linux."
" Hogyan tudok custom kernellel telepíteni,"

Ha olyan gyors a vas, talán gentoo is felmehet rája!
Akkor télleg olyan kernelt csinálsz amilyet akarsz!

----------------------------------------------------------------
"A megoldas mindeki kerdesere egyszeru.
OLVASSATOK DOKUMENTACIOT!"
by thuglife

Tulajdonképpen jogos a megjegyzés, de megint csak jön a probléma, hogy hogyan fogom bebootolni. Már tudom, hogy a linux az ATAPI-CD-t a legújabb kernellel sem éri el. A gentoo handbook meg úgy kezdődik, hogy bootolj be CD-ről...
Azért még olvasgatom a gentoo-t, csak azt meg annyira nem ismerem, és nincs nagyon időm játszadozni, ezért lenne nekem jobb a debian.

Milyen alaplap az, csak nem jmicron a pata vezérlő?

"Már tudom, hogy a linux az ATAPI-CD-t a legújabb kernellel sem éri el. A gentoo handbook meg úgy kezdődik, hogy bootolj be CD-ről..."

Nekem nincs ilyen "vadiúj" vasam, de ha lenne biztosan gentoo-t tennék rá! :)

"linux az ATAPI-CD-t a legújabb kernellel sem éri el"

Ez valami új szabvány?
2.4.x nél scsi emuláció kellett a cdíráshoz,
2.6.x-től már ez nem kell, közvetlenül pl: /dev/hdc-vel megy.
Biztos a linuxban(kernel) van a hiba?!

"....... pata vezérlő?"

Akkor mégsem ata?
----------------------------------------------------------------
"A megoldas mindeki kerdesere egyszeru.
OLVASSATOK DOKUMENTACIOT!"
by thuglife

Én is gépet cseréltem, bele is futottam ebbe a problémába.
A pár nappal ezelőtti edgy daily cd-n levő kernel már támogatja a jmicron vezérlőt, fel is tudtam telepiteni. Az ICH8 -as sata vezérlő ugy látom még felejtős a "gyári" kernellel.
Persze ha forgasz egyet..
https://wiki.ubuntu.com/Core_2_Duo_Support
Az itt található linkben levő fórumok valamelyikén találsz egy gentoo leirást.

ad a)
Bebootolsz pendriveról, amin rajta van a custom kerneled meg egy debian. Debootstrap segítségével felpakolod a rendszert, felmásolod a custom kernelt, editálod a lilo.conf-ot, futtatsz egy lilo-t és kész is a debian telepítés custom kernellel.
Pendrive-ra meg pakolj egy modul nélküli kernelt, azt bootold be.

Üdv,
Csabi

Kössz a gyors és értékes válaszokat.

Leírom a tapasztalásaimat.

Gentoo
- Thuglife Robert leírását nem találtam meg
- Próbáltam gentoo USB install-t csinálni, de amit én csináltam, az (teljesen indokolatlan módon) beKernelpánikolt, és normális leírást ehhez sem találtam, mert mindenki live-USB-t akar csinálni, nem pedig installCD-t hekkelni USB-re.
- Ráadásul még mindig jobban örülnék debian-nak, mert tulajdonképpen ez egy meglévő rendszer hardverfrissítésének indult volna, csak kicsit kinőtte magát.

Debian
- A téma bonyolódott azzal, hogy mostmár x86_64-es debiant szeretnék fölrakni.
- Nekem momentán i386-os debiant sikerült telepítenem, a crosscomplie-on elvéreztem, így csak lopkodom más telepítőkből a kerneleket.
- Hekkeltem magamnak egy initrd-t ami már a szívemnek kedves kernelmodulokat tartalmazza (gentoo-ból lopott kernellel), de már rootfs mount-olásnál elszáll, az új udev-téma miatt: a sarge telepítő, még regi dev-es témát akar, vagy mi: ezt itt feladtam
- Valószínűleg a debootstrap lesz a megoldás, ezzel még nem foglalkoztam, de félő, hogy ez is azon fog megbukni, hogy nem tudok megfelelő kernelt lopni a boot-hoz.

A Frugalware-t még nem néztem, de hátha van neki valami jó kis ellopható kernele. :)

b,

Ezt kifejtenéd egy kicsit?
Egy éve használom a sarge-ot, úgy adminisztrálom a rendszert, hogy összességében kb. havi 2 órát kellett foglalkozzak az operációs rendszerrel. Iszonyúan hatékony az aptitude. Pl. egy perc alatt föl tudtam rakni a felhasználónak a mysql-t úgy, hogy én nem értek hozzá.
Tényleg kiváncsi vagyok mások véleményére.

Ha nem akarsz az initrd-vel bajlódni, akkor:
1. Forgass egy olyan kernel-t, amiben minden bele van fordítva statikusan, ami a telpítéshez kell. Viszont a sallangokat szedd ki belőle. Tapasztalataim szerint alig lesz nagyobb a Debian-os kernelnél.
2. Cseréld ki a vmlinuz-t.
3. Kezd el telepíteni.
4. Modulok telepítésénél ne válassz ki semmit.
5. Telepítés után pedig olyan kernelt forgatsz és úgy (+-initrd), ahogy jól esik.

Üdv,
Dw.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Megpróbáltam ezt is, de nem tudtam, hogy hogyan kell azt mondani, hogy minden legyen statikus. Előszor lsmod infó alapján próbáltam kiszedni, hogy milyen modulok legyenek statikusan használandók. (Kernelfordítás fél óra) Nem jött be, mert biztos valamit kihagytam.
Aztán vi .config :%s/=m/=y/, hadd legyen az a kernel óriási, ez csúfos kudarc lett. Egymást ütik a modulok így le sem fordult a dolog.
Így gondoltam azt, hogy inkább fordítok normálisan az initrd meg lesz 60Mega a millió modul miatt.
Aztán rájöttem, hogy nekem igazából x86_64-re illene kernelt fordítanom, el is töltöttem vele vagy fél napot, mielőtt föladtam volna.
b,

Ha ragaszkodsz a karakteres minimál felülethez, akkor használj "make config"-ot. Ezzel kikerülöd a függőségi hibákat a konfig fájlban. Vi helyett. Én egyébként eltunyultam, és a "make menuconfig"-ot szeretem.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Szeretnék válaszolni saját kérdésemre ha megengeditek.

Tehát custom kernellel történő installálás nagyon egyszerű is lehetne, de sajnos nem az.
Az elmélet a következő:
- Az, hogy milyen kernellel boot-olsz be, az tulajdonképpen csak rajtad múlik. Pl. syslinux-al megycsinálsz egy pendrive-ot bootolósra, és máris be tudsz bootolni saját kerlent.
- Az initrd egyik szerepe az, hogy a kernelhez tartozó kiegészítő modulokat (/lib/modules) el lehessen érni bootolás után. (Pl. hálókártya, vagy USB vezérlő eléréséhez nélkülözhetetlen lehet)
- Az initrd másik szerepe - jelen esetben, hogy installról beszélünk - az installáláshoz szükséges minimális eszköztárat lehet rámásolni, és az installálási procedúrát elkezdeni.
- Az initrd (init ram disk ?) többnyire egy valós fájlrendszer pl. ext2fs.

Vagyis, ha van egy számunkra szimpatikus kernel és megvannak hozzá a modulok, akkor
1. ki kell zip-elni
2. fel kell mount-olni az initrd-t -o loop-pal
3. felmásolni a /lib/modules -be a modulokat, a megfelelő herarchiában
4. vissza kell zip-elni és
5. Frissítsük a boot-médiánkat az új initrd-vel.

Ha a szívednek kedves kernel-t egy másik disztribúcióban találod meg, az eljárás hasonló, ilyenkor az idegen disztribúció initrd-jét felmount-olva szerzed meg a modulokat.

Ez eddig jól hangzik, de most jönnek a buktatól (legalábbis, amikbe én belefutottam):
- újabb kernel-ek udev kezelése eltér az előzőektől, nem jól fognak működni az install scriptek
- i386 kernel-el nem tudsz majd x86_64-es binárist futtatni (legalábbis nekem nem ment)
- ki fogsz futni a helyből. Az initrd-k általában 10-20 megás fs-es. Tipikusan nem fog ráférni az a plussz, amit te raknál rá. Így csinálsz új nagyobb (itt 21 megás) filesystemet:
# dd if=/dev/zero of=myinitrd bs=1MB count=21
# mkfs.ext3 myinitrd
És így másolsz klasszikusan (ezt nem tudtam kihagyni):
# cd /mnt/initrdfs1
# tar cf - . | ( cd /mnt/initrdfs2; tar xpf - )
- Egyes újabb install kernelek már úgy vannak fordítva, hogy nem támogatják az ext2fs-t, vagyis, ha régi install initrd-d még ext2-fs, akkor nem fog bebootolni. Így a fönti lépés elkerülhetetlen.
- Addig bővítetted az initrd-t, hogy túlcsordul az alapértelmezett ramdisk méreten: bootolásnál add meg a következő paramétert (attributumot) (is): ramdisk_size=22000 (azaz 22Megás initrd-t tudok indítani)
- Egyes idióta installok - mint pl. a gentoo - nem fs-t használ az initrd-nek, hanem valami cpio-val összeállított stream-et. Gentoo-nál ráadásul ez hatványozottan "böszmeségben" jelentkezik (http://gentoo-wiki.com/HOWTO_Gentoo_LiveCD_and_LiveUSB#Notes)

Jó éjszakát.
Balázs