# Kernel Upgrade - welche Version habe ich nun?

## Sabaton

Hallo NG;

ich habe Gentoo als Gastsystem in VirtualBox am laufen und habe das erste mal ein Kernel-Upgrade durchgeführt.

Nun zeigt es mir den alten 4.19.82 und neuen 4.19.86 Kernel an.

```
gentoo /home/peter # uname -r

4.19.82-gentoo

gentoo /home/peter # eselect kernel list

Available kernel symlink targets:

  [1]   linux-4.19.86-gentoo *

gentoo /home/peter # emerge --info

Portage 2.3.79 (python 3.6.9-final-0, default/linux/amd64/17.1/desktop/plasma, gcc-9.2.0, glibc-2.29-r7, 4.19.82-gentoo x86_64)

gentoo /home/peter # ls -lsa /usr/src

insgesamt 16

4 drwxr-xr-x  4 root root 4096  4. Jan 15:02 .

4 drwxr-xr-x 12 root root 4096 13. Nov 23:07 ..

0 -rw-r--r--  1 root root    0 13. Nov 22:51 .keep

0 lrwxrwxrwx  1 root root   20  4. Jan 15:02 linux -> linux-4.19.86-gentoo

4 drwxr-xr-x 23 root root 4096  2. Dez 18:22 linux-4.19.82-gentoo

4 drwxr-xr-x 27 root root 4096  4. Jan 16:36 linux-4.19.86-gentoo
```

Wie bekomme ich die Ungereimtheiten gelöst?

MfG,

Sabaton

----------

## firefly

gestartet wird immer noch der "alte" Kernel.

Du hast wohl beim upgrade vergessen die konfiguration des bootloaders (vermutlich grub) anzupassen, damit der neue Kernel gebootet wird.

Bzw. Hast du auch das image file des neuen kernels (meist bzImage benannt) auch an die passende stelle kopiert von wo aus der bootloader den kernel läd?

----------

## demiurg

Hallo Sabaton,

welchen Kernel habe ich?

1. Das System ist mit 4.19.82 am Laufen. 

2. An Kernelquellen hast Du 4.19.82 und 4.19.86 installiert. Merkwürdiger Effekt bei Dir - eselect muss eigentlich alle beiden Quellen anzeigen.

```
demiurg64@eiche ~ $ uname -r

5.4.6-gentoo

demiurg64@eiche ~ $ eselect kernel list

Available kernel symlink targets:

  [1]   linux-5.4.5-gentoo

  [2]   linux-5.4.6-gentoo *

  [3]   linux-5.4.7-gentoo

demiurg64@eiche ~ $ ls -lsa /usr/src

insgesamt 20

4 drwxr-xr-x  5 root root 4096  1. Jan 14:08 .

4 drwxr-xr-x 13 root root 4096  2. Nov 16:44 ..

0 -rw-r--r--  1 root root    0 30. Okt 22:55 .keep

0 lrwxrwxrwx  1 root root   18 31. Dez 08:25 linux -> linux-5.4.6-gentoo

4 drwxr-xr-x 25 root root 4096 20. Dez 19:02 linux-5.4.5-gentoo

4 drwxr-xr-x 25 root root 4096 31. Dez 08:28 linux-5.4.6-gentoo

4 drwxr-xr-x 25 root root 4096  1. Jan 14:08 linux-5.4.7-gentoo
```

 mal zum Vergleich bei mir. 

Arbeitskernel ist 4.5.6; Quellen 5.4.5, 5.4.6 und 5.4.7 sind installiert, aber den 4.5.7 habe ich noch nicht compiliert und auf boot geschoben.

An sich greift sich eselect kernel list immer alle Quellverzeichnisse unter /usr/src zur Auswahl, um den symbolischen Link linux-> mit "eselect kernel set [Nr]" zu setzen.

kernel Upgrade https://wiki.gentoo.org/wiki/Kernel/Upgrade/de

Vom Grund her würde ich wie folgt arbeiten (Kernelquellen werden ohne use symlink installiert - ich habe das lieber selbst in der Hand)

cp /usr/src/linux-4.19.82-gentoo/.config /usr/src/linux-4.19.86-gentoo/.config

cd /usr/src/linux (weil der symbolische Link ja schon auf die neuen Quellen zeigt)

make oldconfig 

make -jxx (xx= der Wert in der make.conf für Deinen Prozessor) && make modules_install

und dann eigentlich wie bei der Erstinstallation eines Kernels nach der Konfiguration https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation/de#Installation_der_Quellen ff.

 Und nicht vergessen ein neues Grubmenü zu erstellen mit dem alten und neuen Kernel auf boot. Neuen Kernel ausprobieren und wenn er läuft, erst dann ggf. den alten Kernel löschen und ein neues Grubmenü erzeugen. Ich habe immer zwei Kernel auf boot, da mir das auch schon (selten) passiert ist, dass einer neuer Kernel nicht gebootet hat. Da kannst Du das System mit dem Vorgänger hochfahren und auf Suche gehen.

Gruß

demiurg

----------

## firefly

 *demiurg wrote:*   

> 
> 
> 2. An Kernelquellen hast Du 4.19.82 und 4.19.86 installiert. Merkwürdiger Effekt bei Dir - eselect muss eigentlich alle beiden Quellen anzeigen.
> 
> 

 

Nein muss es nicht, falls nach einem emerge @world ein emerge --depclean gemacht wurde, was ältere versionen eines kernels unter umständen entfernt.

Das verzeichnis unter /usr/src bleibt dabei erhalten da in diesem verzeichnis auch die Dateien befinden die durch das übersetzen des kernels entstanden sind.

----------

## Sabaton

Ich bin Gentoo-Neuling und habe Gentoo als Gastsystem in VirtualBox laufen.

Das System läuft aktuell problemlos.

Beim Kernel Upgrade ist mir folgendes aufgefallen.

Der Ordner /boot ist aktuell leer und ich musste erst den Unterordner /boot/grub anlegen um die Grubmenuconfiguration beim Kernel Upgrade durchführen zu können.

Warum ist /boot leer und Gentoo kann aktuell trotzdem booten?

Werde morgen den alten Zustand in VB wiederherstellen und das Kernel Upgrade nochmals durchführen, hab ja schon Infos erhalten.

----------

## firefly

vermutlich hast du bei der installation eine separate partition für /boot angelegt.

AFAIK wird diese Partition in der standard Beschreibung der Installation in der fstab mit noauto markiert -> wird nicht automatisch beim starten des system gemounted.

Du musst bei einem Kernel update erst /boot manuell mounten bevor du den übersetzten kernel kopierst und anpassungen an der bootloader konfiguration vornehmen kannst

----------

## Sabaton

Ja,

das scheint mein Fehler beim Kernel Upgrade gewesen zu sein. 

/boot hat eine eigene Partition und muss vorher gemountet werden. 

Werde morgen den Kernel Upgrade - Prozess nochmals durchführen. 

Danke für den Support. 

Mfg,

Sabaton

----------

## demiurg

 *firefly wrote:*   

>  *demiurg wrote:*   
> 
> 2. An Kernelquellen hast Du 4.19.82 und 4.19.86 installiert. Merkwürdiger Effekt bei Dir - eselect muss eigentlich alle beiden Quellen anzeigen.
> 
>  
> ...

 

Ja, das mit den "Resten" im Verzeichnis ist richtig. Den Effekt hatte ich nicht in Betracht gezogen. Ich bringe seit Jahren das zu löschende Kernelverzeichnis als erstes mit rm -r /usr/src/kernelverzeichnis um die "Ecke", bevor ich die Kernelquelle in der Portageverwaltung lösche. Ob so rum oder nächträglich - manuelles aufräumen der /usr/src bleibt immer, wenn der Kernel erzeugt wurde.

Zum Test habe ich mal manuell ein /usr/src/linux-fiktive_Quelle angelegt. Die kommt dann auch nicht bei eselect kernel list als Auswahl. Also nur die über Portage installierten Quellen werden angezeigt.

Gruß

demiurg

----------

## Sabaton

Hallo,

ich bekomme das Kernel-Upgrade einfach nicht hin!

Der aktuelle Kernel ist linux-4.19.82-gentoo, der verfügbare linux-4.19.86-gentoo.

Meine bisherigen Schritte.

```
su

mount /dev/sda2 /boot

cd /usr/src/linux

cp .config ~/kernel-config-`uname -r`

eselect kernel list

ls -lsa /usr/src

eselect kernel set 1

ls -lsa /usr/src

cp /usr/src/linux-4.19.82-gentoo/.config /usr/src/linux/

make olddefconfig

make menuconfig

make -j4 && make modules_install

emerge --ask @module-rebuild
```

Danach ist mir der finale Weg unklar zum Fertigstellen und Booten des neuen Kernels 4.19.86.

Kann mir jemand die letzten Schritte erklären.

MfG,

Sabaton

----------

## Tyrus

Was dir fehlt - aus dem Verzeichnis '/usr/src/linux':

```

make install

```

Das installiert den Kernel nach /boot und erstellt auch eine System.map und ein Kopie von .config dort.

Wenn du dann noch eine initramfs bauen willst wäre jetzt der Schritt auch noch zu machen.

z.B. so - das ist bei mir mit lvm und luks Support:

```

genkernel --luks --lvm initramfs

```

Die initramfs brauchste aber wahrscheinlich in der VM nicht.

'/boot/' sieht dann so aus bei mir:

```

ls -la /boot

insgesamt 17376

drwxr-xr-x 4 root root    4096  1. Jan 1970  .

drwxr-xr-x 1 root root     136  6. Jan 03:08 ..

drwxr-xr-x 5 root root    4096 18. Jun 2017  EFI

-rwxr-xr-x 1 root root 4099214  5. Jan 18:51 System.map-5.4.8-gentoo-luthien

-rwxr-xr-x 1 root root  121047  5. Jan 18:51 config-5.4.8-gentoo-luthien

drwxr-xr-x 6 root root    4096  5. Jan 22:06 grub

-rwxr-xr-x 1 root root 4845928  5. Jan 18:52 initramfs-5.4.8-gentoo-luthien.img

-rwxr-xr-x 1 root root 8688512  5. Jan 18:51 vmlinuz-5.4.8-gentoo-luthien

```

Jetzt musste dem Bootmanger - normalerweise grub - noch den neuen Kerneleintrag bekannt geben.

Dazu:

```

cd /boot

grub-mkconfig -o grub/grub.cfg

```

----------

## Sabaton

Danke, hat so nun geklappt    :Very Happy: 

----------

