# [Risolto]chiarimenti su symlink e nuovo kernel

## Tigerwalk

Salve a tutti quelli ancora al lavoro (come me!).

Ho scaricato gli ultimi gentoo-sources stabili con la USE=symlink

Ovviamente, in /usr/src/ ritrovo i gentoo-sources vecchi e nuovi e la directory /linux.

Facendo eselect kernel list, il kernel attivo è quello dell'installazione.

Premesso questo, volevo capire se adesso, /usr/src/linux, fa riferimento ancora al kernel vecchio, oppure, avendo scaricato con la USE=symlink, essa fa riferimento ai gentoo-sources nuovi.

In definitiva, per ricompilare il nuovo kernel, devo semplicemente andare in /usr/src/linux e dare i soliti comandi oppure devo creare un altro symlink ai nuovi gentoo-sources??

Grazie!Last edited by Tigerwalk on Thu Aug 09, 2007 4:11 pm; edited 1 time in total

----------

## Manwhe

Ciao,

Ora non ricordo bene la funzione di symlink, ma solitamente quando installi un nuovo kernel devi ricreare a manina il link simbolico che lega /usr/src/"kernel" con /usr/src/linux con "ln -s"

Ciao

----------

## Peach

 *Tigerwalk wrote:*   

> Premesso questo, volevo capire se adesso, /usr/src/linux, fa riferimento ancora al kernel vecchio, oppure, avendo scaricato con la USE=symlink, essa fa riferimento ai gentoo-sources nuovi.

 

penso che facendo un 

```
% ls -l /usr/src/
```

 avrai modo di toglierci questa curiosità

 *Tigerwalk wrote:*   

> In definitiva, per ricompilare il nuovo kernel, devo semplicemente andare in /usr/src/linux e dare i soliti comandi oppure devo creare un altro symlink ai nuovi gentoo-sources??
> 
> Grazie!

 

vedi sopra.

per compilare il nuovo kernel penso che comunque te debba crearti o spostarti il .config dalla vecchia configurazione, dargli una controllata e poi ricompilare il tutto.

----------

## Tigerwalk

ciao, grazie della risposta.

Che tu sappia, creando un nuovo symlink /usr/src/linux al nuovo kernel e ricompilandolo, il vecchio kernel mi rimane comunque, ossia avrò la possibilità di scegliere se partire col kernel vecchio oppure col nuovo?

----------

## Manwhe

Il nuovo kernel ti rimane, poi dovrai modificare o lilo o grub  :Smile: 

ciao

----------

## Tigerwalk

@Peach

ecco il risultato

```
giuliano@tigergen ~ $ ls -l /usr/src

totale 8

lrwxrwxrwx  1 root root   22 17 giu 22:18 linux -> linux-2.6.20-gentoo-r8

drwxr-xr-x 20 root root 4096 15 lug 18:18 linux-2.6.20-gentoo-r8

drwxr-xr-x 19 root root 4096  8 ago 17:53 linux-2.6.21-gentoo-r4
```

tnx!

----------

## Peach

 *Tigerwalk wrote:*   

> ciao, grazie della risposta.
> 
> Che tu sappia, creando un nuovo symlink /usr/src/linux al nuovo kernel e ricompilandolo, il vecchio kernel mi rimane comunque, ossia avrò la possibilità di scegliere se partire col kernel vecchio oppure col nuovo?

 

si, in parole povere, il symlink serve a determinare il kernel in uso corrente per il quale alcuni moduli vengono compilati.

il symlink determina in quale directory dei moduli (di quale kernel) devono finire i driver che stai compilando (tipo nvidia-driver, fuse, etc)

----------

## Tigerwalk

In effetti, provando ad andare in /usr/src/linux e dando

```
make menuconfig
```

il kernel è ancora il 

```
linux-2.6.20-gentoo-r8
```

Il che vuol dire che dovrò creare il symlink al nuovo kernel per compilarlo.

Mi chiedo però a questo punto, a che serve inserire la USE=symlink!?

p.s.: il vecchio .config posso metterlo in qualsiasi cartella e poi usarlo per la nuova compilazione? Se ad esempio lo metto in /home/giuliano, quando compilo il nuovo kernel, volendo usare il .config vecchio, come faccio?

Grazie per la pazienza!

----------

## skypjack

In realtà a me la USE symlink funziona alla meraviglia (cioè sposta il link simbolico per me, non è che faccia molto a dire il vero).

----------

## Tigerwalk

 *skypjack wrote:*   

> In realtà a me la USE symlink funziona alla meraviglia (cioè sposta il link simbolico per me, non è che faccia molto a dire il vero).

 

E' quello che mi sarei aspettato ma in effetti il symlink /linux, fa riferimento ancora al vecchio kernel e quindi mi sono posto la domanda dell'utilità della USE symlink.

----------

## skypjack

Non so che dirti, da un po' non reinstallavo i sorgenti perchè non avevo tempo di ricompilare il kernel, poi una settimana fa li ho presi e ha funzionato.

Questo è quanto. Nessun problema, ho anche ricontrollato ora per accertarmi di non aver reinstallato il vecchio kernel ma ... no! Funziona ...

----------

## Kernel78

scusa ma non facevi prima a dare

```
ls -ld /usr/src/linux
```

  :Question: 

----------

## Tigerwalk

@skypjack

 *Tigerwalk wrote:*   

> 
> 
> p.s.: il vecchio .config posso metterlo in qualsiasi cartella e poi usarlo per la nuova compilazione? Se ad esempio lo metto in /home/giuliano, quando compilo il nuovo kernel, volendo usare il .config vecchio, come faccio?
> 
> Grazie per la pazienza!

 

sai dirmi niente al proposito?

@Kernel78

se lo avessi conosciuto certo che avrei fatto prima  :Smile: 

----------

## skypjack

Ma non fai prima a copiarlo dalla vecchia cartella dei sorgenti nella nuova e poi aggiustare le cose via menuconfig o quel che vuoi tu?

Così parti da una base già pronta e vai avanti con le novità ... Spero di essermi spiegato!

----------

## Tigerwalk

 *skypjack wrote:*   

> Ma non fai prima a copiarlo dalla vecchia cartella dei sorgenti nella nuova e poi aggiustare le cose via menuconfig o quel che vuoi tu?
> 
> Così parti da una base già pronta e vai avanti con le novità ... Spero di essermi spiegato!

 

se ho ben capito:

```
cp /usr/src/linux/.config /usr/src/linux-2.6.21-gentoo-r4/.config
```

poi

```
1.cd /usr/src 

2.rm linux 

3.ln -s linux-2.6.21-gentoo-r4 linux
```

a questo punto, posso dare

```
genkernel --menuconfig all
```

e mi trovo già la nuova entry del kernel in grub.conf oppure devo per forza dare:

```
1.cd /usr/src/linux 

2.make oldconfig 

3.make menuconfig 

4.make dep clean bzImage modules modules_install 

5.mv /boot/bzImage /boot/bzImage.old 

6.cp /usr/src/linux/arch/i386/boot/bzImage /boot/bzImage 

7.editare /boot/grub/grub.conf
```

  :Question: 

scusa ma non vorrei proprio combinare casini  :Embarassed: 

----------

## lucapost

per parcondicio, la versione meno aggiornata:

http://www.gentoo.org/doc/it/kernel-upgrade.xml

e la versione aggiornata:

http://www.gentoo.org/doc/en/kernel-upgrade.xml

----------

## skypjack

lucapost ha detto tutto, direi!  :Wink: 

----------

## djinnZ

eselect ti crea un link /usr/src/linux -> linux-versione mentre tradizionalmente è preferito usare il percorso assoluto (ma in gentoo /usr/include/linux non è un symlink quindi non c'è problema) poi ad ogni aggiornamento del kernel ti conviene avviare un "module-rebuild rebuild"

per il .config devi solo copiarlo nella nuova dir dei sorgenti lanciare make oldconfig ed hai risolto (o lanciare un genkernel --noclean).

la use symlink ha un solo difetto se un emerge -aDNuv world prevede che venga aggiornato il kernel e poi un pacchetto che crea dei moduli come ntfs3g, per dirne uno, il build si interromperà perchè ntfs3g troverà il kernel non configurato ed installato (in /lib/modules) per questo ho preferito disabilitarla.

----------

## Tigerwalk

li avevo già letti, prenderò il coraggio a due mani e compilerò. Grazie a tutti per le risposte!  :Smile: 

----------

## skypjack

Consiglio: abbandona genkernel!

La compilazione (passando per tutte le fasi, dalla configurazione al prodotto finale) del kernel è una esperienza interessante che dovresti provare.

Vero che le prime volte si rischia di fare casini, ma basta mantenere una copia del kernel precedente funzionante per ripristinare il tutto e riprovare.

In bocca al lupo e se hai dubbi sai dove trovare aiuto.

----------

## djinnZ

per fare quello supponendo che il link è già aggiornato che vuoi il comando è questo

```
cp /usr/src/linux-vecchiaversione/.config /usr/src/linux ; (cd /usr/src/linux ; make oldconfig) ; genkernel --noclean --menuconfig all; module-rebuild rebuild
```

confermi tutto quello che ti propone il make oldconfig e con il menuconfig (od il gconfig se preferisci) completi la configurazione.

@skipjack: abbandonare genkernel? ma cosa c'è di interessante ed instruttivo nel lanciare 

```
make menuconfig ; make modules bZimage ; cp ...
```

 etc.?

----------

## Kernel78

 *skypjack wrote:*   

> Consiglio: abbandona genkernel!
> 
> La compilazione (passando per tutte le fasi, dalla configurazione al prodotto finale) del kernel è una esperienza interessante che dovresti provare.

 

Io uso tranquillamente genkernel dopo averlo configurato a puntino ...

magari volevi suggerirgli di non usarlo con le opzioni di default dove non lancia neanche il menuconfig ...

----------

## skypjack

Interessante e istruttivo e configurare il kernel CAPENDO cosa si fa e a cosa serve (e non sempre è così, per molti).

Poi, tieni conto che parli con un appassionato si sistemi operativi che si studia il kernel angolo per angolo per curiosità, quindi premetto che è una guerra persa con me, troppo testardo per dare ragioni a qualsiasi motivazione fondata mi porrai davanti!  :Wink: 

----------

## skypjack

 *Kernel78 wrote:*   

> magari volevi suggerirgli di non usarlo con le opzioni di default dove non lancia neanche il menuconfig ...

 

Ovvio, si, mi sono espresso a cacio cavallo, ma il senso era questo.

Ovvio che il bello e interessante non è dare tre comandi in fila, ma capire cosa ci sta dietro e prepararsi il kernel a puntino!  :Very Happy: 

----------

## Kernel78

 *skypjack wrote:*   

>  *Kernel78 wrote:*   magari volevi suggerirgli di non usarlo con le opzioni di default dove non lancia neanche il menuconfig ... 
> 
> Ovvio, si, mi sono espresso a cacio cavallo, ma il senso era questo.
> 
> Ovvio che il bello e interessante non è dare tre comandi in fila, ma capire cosa ci sta dietro e prepararsi il kernel a puntino! 

 

Ovvio mica tanto  :Wink: 

----------

## skypjack

Vabbè, mi ero espresso a cavolo (aka mea culpa). Sorry!!  :Wink: 

----------

## Tigerwalk

ho seguito il consiglio di djinnZ e cioè, copiato il vecchio .config nei nuovi sorgenti. 

Rimosso il vecchio symlink. Ricreato un nuovo symlink.

entrato in /usr/src/linux e dato

make oldconfig

dopo

genkernel --menuconfig --all (--noclean non lo accettava)

poi

module-rebuild rebuild

Unico problemino è che ho dovuto aggiungere la voce per il kernel a mano nel grub ed adesso non sento l'audio, ma vedrò come rimediare.

Grazie a tutti!

----------

## Kernel78

non è --noclean ma --no-clean, inoltre ti suggerisco di modificare il file /etc/genkernel.conf così ti eviti di specificare le opzioni a riga di comando ogni volta ...

inoltre l'opzione --menuconfig lancia di suo make oldconfig quindi non devi farlo tu

----------

## Tigerwalk

 *Kernel78 wrote:*   

> non è --noclean ma --no-clean, inoltre ti suggerisco di modificare il file /etc/genkernel.conf così ti eviti di specificare le opzioni a riga di comando ogni volta ...
> 
> inoltre l'opzione --menuconfig lancia di suo make oldconfig quindi non devi farlo tu

 

O.k. grazie per le delucidazioni ed il consiglio

----------

## djinnZ

verificare sempre quello che scrivo... in genere sono da windozz e non posso ricordarmi tutto esattamente (modo elegante per nicchiare sul classico RTFM  :Twisted Evil:  cha fa tanto MD  :Twisted Evil:   :Mr. Green:   :Twisted Evil:  ).

@skypjack: dicendo "abbandona genkernel" ad un novizio o quasi tale lo inviti solo a far danni assemblando l'immagine initrd male o facendo confusione in /lib/modules.

genkernel all con le impostazioni di default (che comprendono --clean --mrproper poichè il secondo dipende dal primo basta --no-clean per disabilitarli entrambi) lancia un mrproper dopo di che copia in /usr/src/linux il .config che ha salvato come /etc/kernels/kernel-vattelappesca o se non esiste un .config che ha archiviato un /usr/nonmiricordodove e lancia un make oldconfig dopo di che lancia il make dep; make bzImage, make modules (però copia i nuovi moduli e fa pulizia dei vecchi) 

```
lanciare "make dep; make bzImage ; make modules" non è la stessa cosa che lanciare "make modules bzImage"
```

, crea l'initrd e aggiorna grub se è decommentata l'apposita riga in genkernel.conf o con il parametro --grub (verificare se è esatto). 

Quindi come hai fatto tu non hai ottenuto altro che la configurazione di default e non hai usato il vecchio .config

Io ho abilitato in automatico --menuconfig e disabilitato il clean tu potresti trovarti meglio con l'inverso è solo questione di comodità quindi regolati tu. Fondamentalmente è più utile per trovarsi una base preconfigurata che per affidarsi ciecamente ad esso (il kernel a configurazione non ottimizzatizzatisssima su una distro dove compili tutto è un controsenso)

cosa importante: poichè l'immagine gentoo ha la stringa di versione modificata (bug non infrequenti a parte) presta attenzione a CONFIG-LOCALVERSION-AUTO (o la tieni sempre =y o sempre =n) o rischi seri problemi con i moduli esterni al kernel che ti verrebbero installati a casaccio.

----------

## skypjack

Ho già spiegato sopra cosa intendevo con "abbandona genkernel". Aggiungo che un novizio sarà tale a vita se non osa.

Passo e chiudo.

----------

