Newsgroup: it.comp.os.linux.iniziare
Titolo: Nuovo Kernel e "Error 13 invalid or unsupported exe format"

Salve a tutti.
Sto imparando a capire come e perchè ricompilare il kernel. Nella mia
distribuzione Mandriva 2005 non sono presenti i sorgenti del kernel
2.6.11-6mdk quindi ho messo nella apposita directory /usr/src i sorgenti
del kernel 2.6.14 e ho eseguito i seguenti comandi:
make xconfig
dopodichè ho eseguito la sequenza:
make clean
make dep
make bzImage
make modules
make modules_install
dopo circa 2 ore o più, la compilazione ha avuto termine, quindi ho
modificato il file lilo.conf in modo da fare il boot a scelta tra il nuovo
e il vecchio kernel, ma nella applicazione in X in cui sceglo e configuro
il bootloader, mi dice che il kernel è troppo grande!
Ho quindi provato con grub, eseguendo sempre le modifiche per avere la
scelta del kernel da avviare. In questo modo non ho avuto errori nella
configurazione, ma al successivo riavvio, se scelgo di avviare il nuovo
kernel, ottengo l'errore "Error 13 Invalid or unsupported executable
format". Essendo la mia prima compilazione del kernel ho dimenticato
qualcosa?
Preciso che ho WinXP Pro su hda, e linux su hdb, e il bootloader grub,
presente in hdb, viene avviato impostando dal BIOS l'avvio del PC dal disco
primary slave, cioè hdb.
Il file VMLINUZ del vecchio kernel 2.6.11-6mdk è grande circa 1,5Mb, mentre
il nuovo VMLINUZ_2.6.14 è lungo circa 3,4Mb (cosa che tra l'altro i
impedisce di poter usare un floppy di avvio invece che il settore d'avvio
dell'harddisk...)
Vi sarei molto grato se sapeste indicarmi come riuscire ad avviare il nuovo
kernel...
Saluti
Fulcro

 dell'harddisk...)
?!?

 ?!?
Si, usavo come disco di boot un floppy. Ora che il file VMLINUZ è di oltre
3Mb ovviamente non posso usare più un floppy... Infatti ho installato GRUB
nel boot record hdb. Preferivo però avere anche un floppy di avvio...
Comunque, ti ringrazio per le indicazioni! Ora provo subito e ti faccio
sapere cosa ho combinato ;-)
Saluti
Fulcro

 7. make install
Qui ho ricevuto un paio di warning del tipo:
...............
CC      arch/i386/kernel/apm.o
arch/i386/kernel/apm.c: In function `suspend':
arch/i386/kernel/apm.c:1183: warning: `pm_send_all' is deprecated (declared
at include/linux/pm.h:122)
arch/i386/kernel/apm.c:1237: warning: `pm_send_all' is deprecated (declared
at include/linux/pm.h:122)
arch/i386/kernel/apm.c: In function `check_events':
arch/i386/kernel/apm.c:1358: warning: `pm_send_all' is deprecated (declared
at include/linux/pm.h:122)
  CC      arch/i386/kernel/mpparse.o
...............
E anche questi non so se sono gravi o meno...
In ogni caso, nel menu di GRUB mi son ritrovato una voce in più indicante
"2614". Il problema però rimane, e se provo ad avviare da questa opzione
ottengo lo stesso errore "Error 13 Invalid or unsupported executable
format"... Immagino che il formato non valido sia del file VMLINUZ...
A questo punto decido di usare il file VMLINUX compresso presente nella
directory /usr/src/linux/arch/i386/boot/compressed, lo copio in /boot e lo
rinomino in VMLINUZ. Poi il file System.map presente in /usr/src/linux lo
copio anch'esso in /boot.
In definitiva nel directory /boot ora ho questi file, che ho rinominato per
comodità:
System.map.2611
System.map.2614
vmlinuz.2611
vmlinuz.2614
ovviamente nel menu di GRUB le relative voci chiamano ora vmlinuz.2611 o
vmlinuz.2614, e non più vmlinuz...
Ma al riavvio del sistema ho sempre lo stesso errore....
Ho sbagliato qualcosa? Sto integrando una piccola guida al kernel compiling
con i tuoi consigli, ma sembra che non ne cavo piedi...
Ti ringrazio per la disponibilità...
Fulcro

 copio anch'esso in /boot.
make install fa esattamente questo senza che tu faccia nulla!

 make install fa esattamente questo senza che tu faccia nulla!
Ehm... Ne avevo il sospetto, ma solo ora lo sò per certo... :-)
Grazie, aspetto una conferma prima di ritentare...

 versione del nuovo kernel?
bè c'hai dato prima il nome con mkinitrd (è il primo parametro)!

 versione del nuovo kernel?
Ok, ho visto che nelle entry del bootloader il riferimento dell'initrd del
nuovo kernel è proprio initrd-2.6.14.img che suppongo giusto, visto che
questo file è presente nella directory /boot. Quindi penso che il problema
sia altrove... Ma dove?
Acc... Sono proprio una schiappa.

> ecc...
Accidenti, sono arrivato (nella sequenza di comandi da te indicati) al make
-j 2 e questo è successo alle 10:30 di stamattina. Ora sono le 14:00 e
ancora non sembra finire questo processo.... Possibile?

 e ancora non sembra finire questo processo.... Possibile?
Bene! Alle 14:30 circa il "make -j 2" ha terminato il suo processo...
10 minuti dopo avevo terminato l'installazione del nuovo kernel!!!
Siete troppo in gamba, e io sono troppo schiappa!
Ora sto scrivendo dal nuovo kernel 2.6.14! Vi ringrazio per avermi dato i
vostri suggerimenti, mi accorgo solo ora dove sbagliavo...
Piuttosto, mi sembra di capire che il tempo impiegato per portare a termine
l'operazione di make è troppo lungo: sapreste spiegarmi da cosa può
dipendere e come posso evitarlo? Non ho selezionato nessun componente, ho
solo seguito le indicazioni presenti nel menu ottenuto con "make xconfig" e
previsto l'esclusione di componenti dove consigliato a chi non ne conosce
la funzione...
Ho anche ottenuto un sacco di warning durante la compilazione...
Boh, sto pensando che nonostante non abbia intenzione di ricompilare il
kernel frequentemente, dover aspettare tutto questo tempo mi scoccia un
pò...
Grazie ancora per le vostre preziose informazioni, intanto continuo a
documentarmi in rete.
A presto
Fulcro

 dipendere e come posso evitarlo? 
ma fai make clean ogni volta?
se è così ci mette un botto a prescindere se crei dei processi figli 
(make -j serve proprio a questo)
io mi sto seguendo questo corso:
http://bravo.ce.uniroma2.it/kernelhacking2006/index.html
se ti scarichi questo pdf:
http://bravo.ce.uniroma2.it/kernelhacking2006/lkh06_2_s.pdf
da pag 25 in poi ci sono degli aiuti a riguardo... e ti spiega 
qualcosina in +!
se sei a roma e non c'hai nulla da fare ogni mercoledì sera alle 18 ci 
sta questo corso (per ulteriori info spulciati il sito!)

 sta questo corso (per ulteriori info spulciati il sito!)
Peccato... tra me e Roma ci sta il mare, altrimenti volentieri...
A presto
Fulcro

 testo...
esatto... se ti va... puoi patchare il tuo kernel per abilitarci questa 
funzionalità -> 
www.bootsplash.org
 (la patch x il 2.6.15 l'ho fatta io :D)

 funzionalità -> 
www.bootsplash.org
 (la patch x il 2.6.15 l'ho fatta io :D)
Complimenti! Ma nel mio kernel che versione dovrei usare? Non vedo la patch
per il 2.6.14... E poi la patch sarebbe il file diff? Quindi dovrei
scaricare una vecchia versione di bootsplash e patcharla con uno dei file
diff? Acc... Forse sono troppo newbie per avere un bootsplash nel kernel
2.6.14... Ti ringrazio, sei stato molto gentile in questi miei primi passi
da gigante sul kernel... Ora vedo di riordinare le idee prima di continuare
e fare casini...
A presto
Fulcro