Kernel panic po kompilacii kernelu
9r na seznam.cz
9r na seznam.cz
Pátek Červenec 6 17:34:53 CEST 2001
"Ing. Miroslav Cabarka" wrote:
>
> Podla: file /sbin/init je to ELF 32-bit LSB executable, 386, ver 1,
> dynamicky linkovane, stripovane
> Podporu pre ELF v kerneli som zapol, okrem toho file /bin/ls dava taky isty
> vysledok a ls funguje, takze podpora je.
???? vzdyt dotycny kernel neumi nabootovat... jak pod nim muze fungovat
ls? rad bych vedel podorobnosti.
> Mozno mu chyba nejaka kniznica, ale preco sa potom s kernelom 2.2.14 spusti
> ta ista binarka bez problemov a s 2.2.19 nie? V lilo.conf mam 3 kernely:
> 2.2.14 zdrojaky z distribucie, prekompilovane na firewall - funguje.
> Prakticky s rovnakou konfiguraciou kernelu, ale zdrojaky 2.2.19pre18 a
> 2.2.19 - oba stiahnute z internetu vykazuju tuto chybu. Postup konfiguracie
pokud si dobre vzpominam, pak rh 6.2 s cistou 2.2.19kou chodil bez
problemu.
> a kompilovania je rovnaky. Poziadavky na verzie kompilatora a utilit su
> rovnake.
pro jistotu doporucuji pouzit misto rovnakeho postupu postup
nasledujici:
cd /usr/src/linux-2.2.19
make menuconfig
#spravne nakonfigurovani
make dep
make clean
make bzImage
make modules
make modules-install
tohle vam vytvori hotovy kernel v
/usr/src/linux-2.2.19/arch/i386/boot/bzImage.
ten nejak zkopirujte tam, kde ho mate uvedeny v lilo.conf
(klidne jen tak "rucne", i kdyz jsou na to i nejake targety v Makefile)
pak spustte lilo (nutne nejen pote, co pridate novy kernel do lilo.conf,
ale po jakekoliv zmene nejakeho kernelu!)
...a rebootujte
> >Pokud to nebude ono, tak uz toho moc nezbyva - snad jen mirne
> >modifikovat uvedeny kod, aby po kazdem neuspesnem execve (neni treba
> >testovat return value, pokud execve vyjde tak se uz nic dalsiho
> >nevykona) udela nejaky perror();, ktery vam aspon rekne trochu vic. Na
> >zaklade tohoto vic pak mozna bude mozne urcit dalsi postup.
>
> Toto je na mna trochu vysoka matematika.
nejak proste zjistete, co vam vraci to neuspesne execve. nevim, co
vsechno lze v dane chvili pouzivat, knihovnim funkcim bych se radsi
vyhybal (kernel linkovany proti dynamickym knihovnam si tusim stejne
nechal patentovat microsoft :)). zkuste treba misto
execve("/sbin/init",argv_init,envp_init);
execve("/etc/init",argv_init,envp_init);
execve("/bin/init",argv_init,envp_init);
execve("/bin/sh",argv_init,envp_init);
napsat takovouhle obludnost:
printk("/sbin/init: %d\n",
execve("/sbin/init",argv_init,envp_init));
printk("/etc/init: %d\n",
execve("/etc/init",argv_init,envp_init));
printk("/bin/init: %d\n",
execve("/bin/init",argv_init,envp_init));
printk("/bin/sh: %d\n",
execve("/bin/sh",argv_init,envp_init));
pak prekompilujte kernel a zkuste to znovu. kernel by vam pak mel pred
smrti vypsat trosku vic veci. ty sem pak poslete.
--
NOTE FOR WINDOWS (TM) USERS: IN NO EVENT UNLESS REQUIRED BY APPLICABLE
LAW WILL I BE LIABLE TO YOU FOR ANY SOFTWARE OR HARDWARE DAMAGE, SYSTEM
MALFUNCTION OR DATA LOSS ARISING OUT WHILE YOU ARE READING THIS NOTE.
Další informace o konferenci Linux