ricompilazione kernel

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

ricompilazione kernel

Messaggio da lennynero »

raga quando provo a ricompilare il mio kernel al comando make modules_install la procedura va in stallo e rimane a video questo:
if [ -r System.map -a -x /sbin/depmod ]; then /sbin/depmod -ae -F System.map versionekernel fi
da cosa può dipendere, mi succede da poco tempo, ora ho verificato il problema con il kernel 2.6.17.6

ps se provo a compilare da sorgenti puliti(presi da tar) il problema non si presenta....

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio da albatros »

ps se provo a compilare da sorgenti puliti(presi da tar) il problema non si presenta...
Perché, che sorgenti usi?
Hai provato a dare make mrproper (avendo cura di aver messo al sicuro il file .config fuori dal tree dei sorgenti) prima di ricompilare il kernel?

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Messaggio da lennynero »

Perché, che sorgenti usi?
intendevo dire che il problema si presenta quando ricompilo, ma non quando compilo...

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio da Paoletta »

prima di ricompilare (cioè di dare make -j3) prova a dare make clean

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Messaggio da lennynero »

sì, ho provato ma con nessun miglioramento, cioè la cosa che non capisco è che quando la procudera va a buon fine quel messaggio compare e subito dopo compaiono le operazioni di lilo

ps tutti i comandi di ricompilazione li ho messi in uno script...

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio da albatros »

posta lo script e la procedura che usi...

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Messaggio da lennynero »

questo è lo script che uso per compilare da sorgenti o per ricompilare....suppongo che non ci sia bisogno di spiegare le istruzioni, dopotutto l'ho scritto grazie al materiale trovato qui:), comunque io penso che lo script non faccia manovre che creano quella situaizone di stallo, comunque sia anche con make clean il problema rimane...come detto in precedenza il problema non si verifica nella procedura di compilazione.

di seguito posto lo script che uso:

Codice: Seleziona tutto

# Author: LeNNyNERo

#Variabili di personalizzazione
DEV="/dev/hda5"

# Test utenti non-root
if [ "$UID" != 0 ]; then
        echo "Non sei root. Loggati come root e riprova "
        exit 0
fi

# Fase di verifica della sintassi
if [ $# -lt 1 ]; then
	echo -e "Syntax:\n  $0 parameter\nFor Help, type: $0 -h"
        exit 1
fi
if [ $1 == "-h" ]; then
        echo -e "Usage: $0 linux-VERSION.tar.(gz|bz2) | VERSION | current"
	echo -e "parameters:"
	echo -e "\tlinux-VERSION.tar.(gz/bz2)\tfor compiling new kernel from source archive"
	echo -e "\tVERSION\t\t\t\tfor compiling existing kernel with specified VERSION"
	echo -e "\t--current\t\t\t\tfor re-compiling current kernel"
        exit 0
fi

# Preparazione compilazione
EXT=${1#*tar.}  
NAME=${1%%-*}
tmp=${1#*-}
VERSION=${tmp%%.tar.$EXT}
SAFE="no"
if [ $EXT = "bz2" ]; then
	if [ -e $1 ]; then
		tar jxvf $1 -C /usr/src/
		echo -e "bz2"
	else
		echo -e "Specified file($1) does not exists"
		exit 2
	fi
elif [ $EXT = "gz" ]; then
	if [ -e $1 ]; then
		tar zxvf $1 -C /usr/src/
		echo -e "gz" 
	else
		echo -e "Specified file($1) does not exists"
		exit 2
	fi
else
	if [ $1 == "--current" ]; then 
		VERSION=`uname -r`
		SAFE="si"
	else
		VERSION=$1
		if [ ! -e /usr/src/linux-$VERSION ]; then 
			echo -e "Specified kernel($VERSION) does not exists"
			exit 2
		fi
	fi
fi

cd /usr/src/
rm linux
ln -sf linux-$VERSION linux
cd /usr/src/linux/
make mrproper

#cp /boot/config-$VERSION /usr/src/linux/.config
make menuconfig

make clean
# Compilazione
make -j5 bzImage
make -j5 modules
make modules_install
SAFE="si"
if [ $SAFE == "si" ]; then
	i=1
	while [ -e /boot/vmlinuz-$VERSION ]
	do
		((i+=1))
	done
	VERSION=$VERSION"_"$i
	echo -e "added _"$i
fi

# Copia dei files in /boot
cp /usr/src/linux/.config /boot/config-$VERSION
cp /usr/src/linux/System.map /boot/System.map-$VERSION
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-$VERSION

#ln -sf /boot/System.map-$VERSION /boot/System.map
#ln -sf /boot/config-$VERSION /boot/config
#ln -sf /boot/vmlinuz-$VERSION /boot/vmlinuz

# Aggiornamento lilo
echo "
image = /boot/vmlinuz-$VERSION
  root = $DEV
  label = $VERSION
  read-only" >> /etc/lilo.conf

lilo -v

# END

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio da albatros »

Impressioni da una rapida occhiata senza rifletterci troppo (con la possibilità quindi di sviste e errori da parte mia):
SAFE="si"
if [ $SAFE == "si" ]; then
i=1
while [ -e /boot/vmlinuz-$VERSION ]
do
((i+=1))
done
VERSION=$VERSION"_"$i
echo -e "added _"$i
fi
avendo assegnato a SAFE "si" non vedo perché dovrebbe essere diverso al rigo dopo...
poi, al ciclo while, gli dici di incrementare i con 1 ad ogni ciclo finché esiste il file /boot/vmlinuz-$VERSION, che, se c'è, come è probabile se stai ricompilando, ci rimane finché non lo cancelli o un fulmine si abbatte sul tuo pc, dando luogo ad un ciclo infinito...
Penso sia questa l'origine dello stallo, non il depmod...

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio da albatros »

Altra osservazione:
cd /usr/src/linux/
make mrproper

#cp /boot/config-$VERSION /usr/src/linux/.config
make menuconfig
Con make mrproper elimini i vecchi files di configurazione...
Poi, dato che la riga dove chiedi di copiare il file di configurazione è commentata e non ti copia nulla e quindi non dovresti avere file di configurazione di sorta nel tree dei sorgenti, che fai, ti rimetti a riconfigurare a mano tutte le ozioni del kernel? :shock:

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Messaggio da lennynero »

allora: il safe=si l'ho messo per forzare il ciclo while anche quando non lancio con il flag --current, mentre mi sa che il vero problema è quello che mi hai fatto notare (albatros) ovvero che non esce mai dal while; il mio obiettivo era di ciclare aggiorando sempre version quindi devo mettere il done dopo aver aggiornato version:), insomma se trova anche version_1 deve impostare version_2...:)mi sa proprio che era quello il problema, grazie mille, provo e vi faccio sapere(che tonto che sono) devo aver spostato qualche riga visto che il problema mi capita da poco tempo

ps per il fatto del config vecchio non avevo fatto caso al fatto che avevo decommentato la copia quindi, salvo suggerimenti, magari lascio che carica il conf del kernel in uso...

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio da albatros »

allora: il safe=si l'ho messo per forzare il ciclo while anche quando non lancio con il flag --current, mentre mi sa che il vero problema è quello che mi hai fatto notare
Il SAFE="si" non ti crea problemi, non è questo che sostenevo, dicevo che è inutile l'if se sai già che sicuramente SAFE è uguale a "si", visto che glielo hai detto tu un attimo prima...
A questo punto non capisco poi l'utilità della variabile SAFE, visto che il suo valore non influenza nulla, essendo nel momento in cui la usi nell'unica condizione dove compare sempre uguale a "si" ...

Un'altro particolare:

VERSION=`uname -r`

sarà diverso da:

VERSION=$VERSION"_"$i

no? Se non stai attento è una cosa che può creare potenziali problemi..
Ad esempio con l'opzione current se volessi usare
cp /boot/config-$VERSION /usr/src/linux/.config
non ti verrebbe copiato il file di config dell'ultima volta, che avevi copiato in /boot con
cp /usr/src/linux/.config /boot/config-$VERSION , perché VERSION finiva con _<numero>...

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Messaggio da lennynero »

per quanto riguarda safe mi ero espresso male io, allora: il safe=si prima dell'if l'ho aggiunto per forzare il controllo(insomma mi scocciavo di togliere l'if e per una questione di velocità l'ho aggiunto l'assegnazione), ma è una soluzione temporanea ovvaimente, di base quell'assegnazione non c'è;
mentre per il fatto di copiare il kernel uname -r invece che uname -r_numero quello me lo faccio bastare xke uso i kernel _numero solo per sicurezza, poi se va tutto bene li rinomino e cancello il vecchio, ma credo che in realtà la soluzione migliore sarebbe rinominare il vecchio in _old e il nuovo in uname -r, magari prevedendo che se esiste già un _old si possa creare _old2 :), che ne pensi?

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio da albatros »

Sì, oppure ci puoi aggiungere la data, dipende dai tuoi gusti... :)
Io di solito preferisco fare a mano, tanto sono pochi comandi, di solito appendo un .old, difficilmente poi ho bisogno di un old2 o di un bak perché, se il nuvo kernel funziona bene, dopo un po' cancello il vecchio...
Semmai un'altra perplessità:
io di solito rinomino anche la directory dei moduli se devo ricompilare la stessa versione del kerne, perché, almeno con le versioni 2.2.x, che sono state le prime che ho ricompilato, bisognava farlo...
Non so se questa necessità c'è ancora, tuttavia forse ti converrebbe in ogni caso spostare da qualche parte /lib/modules/$VERSION prima di reinstallare i nuovi moduli, perché potresti avere dei malfunzionamenti con quelli nuovi e non avere più quelli vecchi a disposizione...

Per curiosità: non lo hai scritto, ma il problema dello stallo lo hai risolto, vero? :)

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Messaggio da lennynero »

sìsì, lo script ora funziona :). Ti ringrazio moltissimo per la pazienza, e anche per al dritta sui moduli, comunque di sicuro attuerò la politica di rinominare in _old il kernel stabile e se va tutto ok poi la cancello.

grazie ancora di tutto.

Avatar utente
gohanz
Staff
Staff
Messaggi: 5832
Iscritto il: mar 30 nov 2004, 0:00

Messaggio da gohanz »

Perchè non completi lo script in modo che crei un pacchetto TGZ precompilato, per il kernel in uso. E che configuri lilo.conf all'atto dell'istallazione! Il grosso del lavoro l'hai fatto!

Rispondi