erlug
[Top] [All Lists]

Re: [Erlug] Help con ricompilazione kernel

To: "ERlug - Lista Pubblica" <erlug@xxxxxxxxxxxxxx>
Subject: Re: [Erlug] Help con ricompilazione kernel
From: "wilk3ert wilk" <wilk3ert@xxxxxxxxx>
Date: Fri, 11 Apr 2008 14:54:24 +0200
2008/4/10, Maurizio Lemmo - Tannoiser <tannoiser@xxxxxxxxxxx>:
1. installa un kernel pacchettizzato. Questo ti permette di installare
tutti i suoi pacchetti a corredo, e tipicamente i famosi header.

L'attuale versione del kernel che ho è pacchettizzata?
Te lo chiedo perché non lo so nemmeno io.
Infatti si è automaticamente installato durante gli aggiornamenti (i famosi aptitude update && aptitude uprade).
Cercando nel mio sistema ho trovato l'immagine linux-image-2.6.24-1-powerpc però gli header ho dovuto scaricarli io.
Così, se il mio attuale kernel è pacchettizzato, come mai non mi ha installato gli header durante il passaggio di versione dalla 2.6.18 alla 2.6.24?

Il kernel dell'installazione, verosimilmente NON e` un kernel
pacchettizzato e non va quindi bene per questo discorso. Se non ricordo
male, c'e` addirittura un disclaimer.

Questo è il mio kernel? Quello dell'installazione? (boh?)

Quando hai una combinazione utile (linux-image + linux-header) che ti
aggrada passa al punto 2.

Ok: bene o male a questo ci sono arrivato. (linux-image + linux-header (installato manualmente)).

2. installa module-assistant. Questo tool permette la gestione e
creazione dei singoli pacchetti modulo al limite del triviale.

Quindi questo tool mi permette di patchare il kernel anche se non ho i sorgenti ma se ho solo l'accoppiata linux-image+linux-headers?

module-assistant ha una comoda interfaccia ncurses che ti permette di
recuperare/compilare/installare diverse patch.

E qui c'è la risposta alla precedente domanda. Ok.

Da qui, c'e` una
diversione:

2a: se la patch/funzione che vuoi abilitare e` in module-assistant,
ovvero la patch e` stata debianizzata, e` sufficiente addirittura un
comando: m-a a-i patch (es per i driver ati: m-a a-i fglrx-source).

E fin qui non ci sono problemi.

2b: se la patch/funzione non e` in module-assistant devi renderla
module-assistant friendly (se vuoi usare m-a, e quando lo usi, poi VUOI
usarlo) - se questo e` possibile.
Questo potrebbe essere ovviamente fuori dalla tua portata. In questo il
modo tradizionale continua a funzionare sebbene sia forse piu` furbo:

  - scaricare i sorgenti della linux-image
  - applicare la patch non supportata
  - ricompilare lasciando inalterato il resto

In modo da garantirsi tutti i benefici.

Aha! Quindi se ho una patch non-module-assistant friendly devo fare ciò che sto tentando di diremdal primo post? Ovvero ricompilarmi il kernel?
Prendiamo ad esempio adbsyn per la configurazione del touchpad: non è module-assistant friendly.
Dunque devo patchare i sorgenti del kernel, selezionarlo dal menuconfig e compilare il kernel, giusto?

Se non erro eccoci ritornati al punto di partenza: ricompilazione kernel.

Infine: cosi` a occhio, e in modo grossolano, dagli errori che avevo
visto nella tua prima mail, a me pare che stai usando una versione di
gcc che non va bene. Ma e` piu` uno sparo nel buio che non una certezza.

Cercando sul web ho trovato qualcosa di simile eppure ho installato tutte le varie versioni del gcc (2.95, 3.3, 3.4, 4.1, 4.2 e 4.3) e di cpp (stesse).
Le ho installate tutte nel caso gli errori fossero collegati alle versioni del gcc.

Questo è il log completo dell'errore da dopo avergli dato un make:

  CHK     include/linux/version.h
  CHK     include/linux/utsrelease.h
  CALL    scripts/checksyscalls.sh
  CHK     include/linux/compile.h
  GEN     .version
  CHK     include/linux/compile.h
  UPD     include/linux/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
kernel/built-in.o: In function `getnstimeofday':
(.text+0x23b58): undefined reference to `__umoddi3'
kernel/built-in.o: In function `getnstimeofday':
(.text+0x23b78): undefined reference to `__udivdi3'
kernel/built-in.o: In function `do_gettimeofday':
(.text+0x23cd8): undefined reference to `__udivdi3'
kernel/built-in.o: In function `do_gettimeofday':
(.text+0x23cf8): undefined reference to `__umoddi3'
kernel/built-in.o: In function `timekeeping_resume':
timekeeping.c:(.text+0x23fd4): undefined reference to `__umoddi3'
timekeeping.c:(.text+0x23ff4): undefined reference to `__udivdi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x24544): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x24564): undefined reference to `__udivdi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x249c0): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x249e0): undefined reference to `__udivdi3'
make: *** [.tmp_vmlinux1] Error 1

Cosa posso fare?
Devo patchare il kernel e a quando pare devo riconfigurarlo ma ogni volta, anche cambiando config e trovandone di migliore, più simili e adatti alla mia macchine (ibook G4 debian ppc), l'errore è sempre lo stesso.
Qualche idea?

--
.:www.wilky.it:.
<Prev in Thread] Current Thread [Next in Thread>