[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