[TiLUG] Compilare kernel amd64 da i386
Daniele Mastro
daniele.bilug@gmail.com
Gio 27 Lug 2006 20:56:28 CEST
Ciao,
sto cercando di ricompilare il mio kernel per l'architettura AMD64 (K8)
ho dato
make ARCH=x86_64 menuconfig
ho sistemato le opzioni...
ora perņ.. in /usr/bin/
dando
ls -l | grep gcc
trovo
-rwxr-xr-x 1 root root 428 2006-05-07 11:28 c89-gcc
-rwxr-xr-x 1 root root 451 2006-05-07 11:27 c99-gcc
lrwxrwxrwx 1 root root 7 2006-07-15 16:09 gcc -> gcc-4.0
-rwxr-xr-x 1 root root 81072 2006-03-18 16:08 gcc-3.3
-rwxr-xr-x 1 root root 93712 2006-05-07 21:31 gcc-4.0
lrwxrwxrwx 1 root root 10 2006-07-15 16:09 gccbug -> gccbug-4.0
-rwxr-xr-x 1 root root 15963 2006-03-18 16:00 gccbug-3.3
-rwxr-xr-x 1 root root 16256 2006-05-07 21:28 gccbug-4.0
-rwxr-xr-x 1 root root 2013 2006-04-19 01:59 gccmakedep
lrwxrwxrwx 1 root root 7 2006-07-15 16:09
i486-linux-gnu-gcc -> gcc-4.0
lrwxrwxrwx 1 root root 7 2006-07-15 16:09
i486-linux-gnu-gcc-3.3 -> gcc-3.3
lrwxrwxrwx 1 root root 7 2006-07-15 16:09
i486-linux-gnu-gcc-4.0 -> gcc-4.0
-rwxr-xr-x 1 root root 60844 2006-05-08 11:23 sbigccd
come vedete esiste i486-linux-....
quando provo a compilare il kernel con
fakeroot make-kpkg --arch amd64 kernel_image
mi dice che non puņ trovare il comdando
amd64-linux-gcc
con man gcc ho visto che servono alcune opzioni per dire a gcc di
compilare per una certa architettura
in particolare ho notato le opzioni -march=k8 e -m64
cercando un po su web ho trovato questo link:
http://www.moduli.net/articles/2006/06/21/compiling-x86_64-kernels-on-debian-i386
che consiglia di utilizzare questo script:
#!/bin/sh
# This is a little wrapper script for building 64 bit kernels on i386 Debian
# (sarge). Taken from Debian source package for kernel-image-2.6.8-amd64.
#echo >&2 cc "$@"
ARGS="$@"
M64="-m64"
while [ $# -gt 1 ]; do
if [ "$1" = "-m32" ]; then
M64=""
break;
fi
shift
done
gcc-3.4 $M64 $ARGS
se non ho capito male questo script controlla che non esista la stringa -m32
se non esiste mette la stringa -m64 e chiama il gcc-3.4
quello che non ho capito č dove dovrebbe essere richiamato..
ed inoltre credo che io dovrei usare gcc-4.0 e aggiungere l'opzione -march=k8
su quella pagina dice di usare make make install ecc...
perņ io preferisco utilizzare make-kpkg.. suppongo non ci sia una
grossa differenza...
l'unica cosa č che non so come fare a creare dei link simbolici del
tipo "amd64-linux-gcc" che mi puntino al gcc con le opzioni -m64
-march=k8
ho pensato di usare gli alias.... ma non so se č una buona idea
inoltre tenermi 2 kernel, uno per i386 e l'altro per amd64
implicherebbe dover cambiare i link tutte le volte affinche aggiungano
le opzioni necessarie? (x capircise entro con kernel a 64 bit gcc deve
eseguirsi con quelle opzioni, altrimenti senza)
nelle opzioni del kernel ho abilitato EFI (se non ricordo male) per
far funzionare tutto anche con applicazioni a 32 bit (non se se
quest'info puņ servirvi)
mi date una mano?
ps: (ho debian ETCH)
--
ciao,
Daniele
Maggiori informazioni sulla lista
Tilug