Installando Fedora Core 6 su un PC d’emergenza, a seguito del furto che mi ha lasciato a piedi, mi sono imbattutto in un problema che mi ero già trovato davanti quando ho installato sul Thinkpad.

E’ un problema noto, elencato insieme alla soluzione nel sito del progetto Fedora.

I sintomi riguardano specialmente i notebook, dove per qualche motivo il processore va sempre alla massima velocità, anche se non ci sono applicazioni in esecuzione. Il demone cpuspeed non funziona perché non trova il supporto nel kernel alla variazione di velocità del processore.

Questo succede perché l’installer anaconda, per motivi che non sono ancora stati appurati, durante l’installazione sceglie l’architettura errata per il kernel: invece di i686 installa un kernel i586.

Per evitare il problema al momento dell’installazione, al prompt boot: che appare all’avvio dal supporto di installazione si passano i parametri:

linux i686

indicando al programma di installazione di selezionare un kernel di questo tipo.

Se invece abbiamo già Fedora funzionante, per verificare il tipo di kernel installato basta questo comando, dato da un terminale:

$ rpm -qa "kernel*" --queryformat "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n"
kernel-devel-2.6.18-1.2798.fc6.i586
kernel-2.6.18-1.2798.fc6.i586

Se i pacchetti installati sono per architettura i586 ed avete da un Pentium II™ in su, vuol dire che avete il kernel sbagliato.

Per correggere la situazione potete operare in questo modo, dall’utente root:

  1. installate il pacchetto yum-utils, che contiene l’utility yumdownloader
  2. scaricate la giusta versione di kernel
  3. se il kernel installato è di una versione predecente rispetto a quello scaricato da yumdownloader, potete installare direttamente il nuovo kernel e riavviare il computer
  4. se invece la versione di kernel è la stessa, occorre forzare l’installazione.

Per il passo 1 il comando è:

# yum install yum-utils

Per il passo 2 il comando è:

# yumdownloader kernel.i686

Per il passo 3:

# rpm -ivh kernel-*.rpm

Se invece la versione del pacchetto è la stessa, invece del passo 3 occorre eseguire il passo 4:

# rpm -ivh --replacefiles --replacepkgs kernel-*.rpm

e poi riavviare il computer in tutti e due i casi.

Al riavvio per avere conferma della giusta versione di kernel basta ripetere il comando rpm visto prima:

$ rpm -qa "kernel*" --queryformat "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n"
kernel-devel-2.6.18-1.2798.fc6.i586
kernel-2.6.18-1.2868.fc6.i686
kernel-headers-2.6.18-1.2868.fc6.i386
kernel-2.6.18-1.2798.fc6.i586

C’è ancora un problema: il pacchetto kernel-devel è per l’architettura sbagliata. Se abbiamo bisogno di compilare un driver non ci riusciremo a causa della differente configurazione del kernel i586 rispetto al tipo i686.

Da utente root togliamo il pacchetto kernel-devel per i586, prima di fare qualsiasi altra operazione:

# rpm -e kernel-devel-2.6.18-1.2798.fc6

Ora installiamo di nuovo il pacchetto kernel-devel, che viene scelto da yum con la giusta architettura:

yum install kernel-devel

Ora, controlliamo che sia usato il kernel giusto:

# uname -a
Linux aborigeno 2.6.18-1.2868.fc6 #1 SMP Fri Dec 15 17:32:54 EST 2006 i686 athlon i386 GNU/Linux

poi possiamo rimuovere il kernel i586:

# rpm -e kernel-2.6.18-1.2798.fc6

Fine. Attenzione, il comando rpm non avverte se si rimuove il kernel in esecuzione! Quindi ricontrollate tre volte i comandi digitati prima di eseguirli.

Per rendere le cose più semplici, potete usare questa procedura:

  1. installate Fedora Core 6 passando linux i686 al prompt boot: e siete a posto.
  2. Se avete già installato, NON eseguite l’aggiornamento
  3. cambiate kernel e kernel-devel come spiegato sopra
  4. procedete al normale aggiornamento.

Così non vi troverete altri pacchetti installati dall’aggiornamento con l’architettura errata.

(Modificato il 21 marzo 2007, su segnalazione di Alessandro Carducci)