ISP-spezifischen Kernel ersetzen/austauschen auf root-server

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

ISP-spezifischen Kernel ersetzen/austauschen auf root-server

Beitrag von pangu » 10.09.2013 20:02:00

Hi Leute,

auf einem root-Server wurde bei der Installation vor längerer Zeit nicht der "öffentliche" Kernel von (damals Debian Squeeze) installiert, sondern ein custom kernel der von dem ISP supportet wird. Das war ein Kernel, so daß quasi in Notfällen das Supportteam von denen jederzeit sich aufschalten kann, und irgendwelche xyz-Sicherheitsfeautures bietet. Mal abgesehen davon, dass ich persönlich so etwas nicht wollen würde, steht mein Bekannter nun vor folgendem Problem:

der Kernel scheint wohl irgendwas nicht zu supporten, weswegen er einen aktuelleren benötigt. Er hat mittlerweile seinen root-Server auf Debian Wheezy hochgezogen und mich um Hilfe gebeten. Ich habe jedoch keine Erfahrungen mit Kernel, weswegen ich da etwas vorsichtig bin und um eure Hilfe bitte. Hier einige Infos zum Host:

Code: Alles auswählen

# uname -a

Linux loreleiDE1 2.6.38.2-grsec-xxxx-grs-ipv6-64 #2 SMP Thu Aug 25 16:40:22 UTC 2011 x86_64 GNU/Linux

Code: Alles auswählen

# dpkg -l |grep headers

ii  linux-libc-dev:amd64             3.2.46-1+deb7u1               amd64        Linux support headers for userspace development

Code: Alles auswählen

# dpkg -l |grep linux

ii  doc-linux-text                   2008.08-1                     all          Linux HOWTOs and FAQs in ASCII format
ii  libselinux1:amd64                2.1.9-5                       amd64        SELinux runtime shared libraries
ii  linux-libc-dev:amd64             3.2.46-1+deb7u1               amd64        Linux support headers for userspace development
ii  util-linux                       2.20.1-5.3                    amd64        Miscellaneous system utilities

Code: Alles auswählen

# cat /etc/apt/sources.list

deb http://ftp2.de.debian.org/debian/ wheezy main
deb-src http://ftp2.de.debian.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main

deb http://ftp2.de.debian.org/debian/ wheezy-updates main
deb-src http://ftp2.de.debian.org/debian/ wheezy-updates main

Code: Alles auswählen

# ls -l /boot

insgesamt 7640
-rw-r--r-- 1 root root 5735824 Aug 26  2011 bzImage-2.6.38.2-xxxx-grs-ipv6-64
drwxr-xr-x 3 root root   12288 Sep 10 11:33 grub
-rw-r--r-- 1 root root 2056069 Aug 26  2011 System.map-2.6.38.2-xxxx-grs-ipv6-64

Kann mir jemand erklären, ob man da überhaupt ohne Weiteres den Kernel austauschen kann auf den aktuellsten eben der auch in Wheezy normalerweise beinhaltet ist, und vor allem wie? Bin über jede Hilfestellung sehr dankbar.
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: ISP-spezifischen Kernel ersetzen/austauschen auf root-se

Beitrag von pangu » 10.09.2013 20:44:13

Ich hab mal folgende Schritte gewagt (auf einem Test-Host):

(1) erstmal vergewissern, ob auch grub-2 im Einsatz ist mit

Code: Alles auswählen

update-grub -v
und schauen ob eine Ausgabe erfolgt, oder ggf. nachschauen ob eine /etc/default/grub existiert.

(2) nach den aktuellen Kernels suchen ...

Code: Alles auswählen

apt-get update && apt-cache search linux-image
(3) den aktuellsten Kernel für den Host installieren mit ...

Code: Alles auswählen

apt-get install linux-image-amd64


(4) die vorhandenen Kernels nun anzeigen (wobei 0=der erste Eintrag ist, und so weiter....)

Code: Alles auswählen

fgrep menuentry /boot/grub/grub.cfg
(5) der neue 3.2.x Kernel war mit dem im (4) gezeigten Befehl in der zweiten Zeile, also entspricht das dem menuentry 1. Dann habe ich die /etc/default/grub angepasst und die Zeile GRUB_DEFAULT=1 gesetzt (stand vorher auf 0)

(6) das ganze aktualisieren, damit es auch geschrieben wird in grub mit ...

Code: Alles auswählen

update-grub
Ich habe jedoch noch nicht rebootet, weil mir diese Zeilen etwas im Magen lagen:
Entpacken von linux-image-amd64 (aus .../linux-image-amd64_3.2+46_amd64.deb) ...^M
Trigger für man-db werden verarbeitet ...^M
libuuid-perl (0.02-5) wird eingerichtet ...^M
linux-base (3.5) wird eingerichtet ...^M
libklibc (2.0.1-3.1) wird eingerichtet ...^M
klibc-utils (2.0.1-3.1) wird eingerichtet ...^M
initramfs-tools (0.109.1) wird eingerichtet ...^M
update-initramfs: deferring update (trigger activated)^M
linux-image-3.2.0-4-amd64 (3.2.46-1+deb7u1) wird eingerichtet ...^M
Running depmod.^M
Examining /etc/kernel/postinst.d.^M
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64^M
update-initramfs: Generating /boot/initrd.img-3.2.0-4-amd64^M
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.^M
W: mdadm: no arrays defined in configuration file.^M
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64^M
Generating grub.cfg ...^M
Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead^M
Found linux image: /boot/bzImage-2.6.38.2-xxxx-grs-ipv6-64^M
Found linux image: /boot/vmlinuz-3.2.0-4-amd64^M
Found initrd image: /boot/initrd.img-3.2.0-4-amd64^M
No volume groups found^M
done^M
firmware-linux-free (3.2) wird eingerichtet ...^M
update-initramfs: deferring update (trigger activated)^M
linux-image-amd64 (3.2+46) wird eingerichtet ...^M
Trigger für initramfs-tools werden verarbeitet ...^M
update-initramfs: Generating /boot/initrd.img-3.2.0-4-amd64^M
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.^M
W: mdadm: no arrays defined in configuration file.^M
Log ended: 2013-09-10 20:23:39
# update-grub

Generating grub.cfg ...
Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead
Found linux image: /boot/bzImage-2.6.38.2-xxxx-grs-ipv6-64
Found linux image: /boot/vmlinuz-3.2.0-4-amd64
Found initrd image: /boot/initrd.img-3.2.0-4-amd64
File descriptor 3 (/usr/share/bash-completion/completions) leaked on lvs invocation. Parent PID 26690: /bin/sh
No volume groups found
done
oder auch
grub-mkconfig >grub-mkconfig.output

Generating grub.cfg ...
Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead
Found linux image: /boot/bzImage-2.6.38.2-xxxx-grs-ipv6-64
Found linux image: /boot/vmlinuz-3.2.0-4-amd64
Found initrd image: /boot/initrd.img-3.2.0-4-amd64
File descriptor 3 (/usr/share/bash-completion/completions) leaked on lvs invocation. Parent PID 27582: /bin/sh
No volume groups found
done
Muss ich mir über die Warnung wegen /etc/mdadm Sorgen machen ?? oder ist das ok?

Code: Alles auswählen

# ls -l /etc/grub.d/

insgesamt 56
-rwxr-xr-x 1 root root 6728 Apr 29 01:43 00_header
-rwxr-xr-x 1 root root 5407 Apr 29 01:23 05_debian_theme
-rwxr-xr-x 1 root root  969 Sep 13  2011 06_OVHkernel
-rwxr-xr-x 1 root root 5977 Apr 29 01:43 10_linux
-rwxr-xr-x 1 root root 6335 Apr 29 01:43 20_linux_xen
-rwxr-xr-x 1 root root 6522 Apr 29 01:43 30_os-prober
-rwxr-xr-x 1 root root  214 Dez 18  2010 40_custom
-rwxr-xr-x 1 root root   95 Dez 18  2010 41_custom
-rw-r--r-- 1 root root  483 Dez 18  2010 README

Code: Alles auswählen

# cat /etc/grub.d/06_OVHkernel

#!/bin/bash -e

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
. ${libdir}/grub/update-grub_lib

OS="Debian GNU/Linux"

LINUX_ROOT_DEVICE=${GRUB_DEVICE}

linux=`ls -1 -t /boot/bzImage*64* 2>/dev/null | head -n1`
if [[ -n "${linux}" ]]; then
        echo "Found linux image: $linux" >&2
        basename=`basename "${linux}"`
        dirname=`dirname "${linux}"`
        rel_dirname=`make_system_path_relative_to_its_root $dirname`
        version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
        alt_version=`echo $version | sed -e "s,\.old$,,g"`
        linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
        initrd="/initrd-iscsi.img"


        cat << EOF
menuentry "${OS}, OVH kernel ${version}" {
EOF
        prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/"
        cat << EOF
        linux   ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}
EOF
        if test -e "${initrd}" ; then
                cat << EOF
        initrd  ${initrd}
EOF
        fi
        cat << EOF
}
EOF

fi
sollte ich im Verzeichnis /etc/grub.d außerdem noch ein

Code: Alles auswählen

mv 06_OVHkernel 25_OVHkernel
ausführen, um die Reihenfolge zu ändern? oder war es ausreichend die /etc/default/grub wie ganz oben beschrieben, anzupassen?

EDIT: Also ich hab ebenso die Reihenfolge abgeändert, jetzt ist 10_blabla der neue 3.2.x Kernel, und den ursprünglichen Kernel des ISP's habe ich auf Rang 25 verschoben. Wenn ich so boote, dann kommt die Maschine jedoch nicht hoch. Ich bin dann über netboot (und einen anderen ISP-Kernel) wieder in die Maschine rein und habe nach möglichen Probleme gesucht. Mir ist aufgefallen, dass in der /boot/grub/grub.cfg diese Änderungen drinstehen:

Code: Alles auswählen

[...]
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux, mit Linux 3.2.0-4-amd64' --class debian --class gnu-linux --class gnu --class os {
        load_video
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set=root 07ce861d-1a11-4431-85a3-f52c00547cc7
        echo    'Linux 3.2.0-4-amd64 wird geladen …'
        linux   /boot/vmlinuz-3.2.0-4-amd64 root=UUID=07ce861d-1a11-4431-85a3-f52c00547cc7 ro  quiet
        echo    'Initiale Ramdisk wird geladen …'
        initrd  /boot/initrd.img-3.2.0-4-amd64
}
menuentry 'Debian GNU/Linux, mit Linux 3.2.0-4-amd64 (Wiederherstellungsmodus)' --class debian --class gnu-linux --class gnu --class os {
        load_video
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set=root 07ce861d-1a11-4431-85a3-f52c00547cc7
        echo    'Linux 3.2.0-4-amd64 wird geladen …'
        linux   /boot/vmlinuz-3.2.0-4-amd64 root=UUID=07ce861d-1a11-4431-85a3-f52c00547cc7 ro single
        echo    'Initiale Ramdisk wird geladen …'
        initrd  /boot/initrd.img-3.2.0-4-amd64
}
### END /etc/grub.d/10_linux ###
[...]
### BEGIN /etc/grub.d/25_OVHkernel ###
menuentry "Debian GNU/Linux, OVH kernel 2.6.38.2-xxxx-grs-ipv6-64" {
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set=root 07ce861d-1a11-4431-85a3-f52c00547cc7
        linux   /boot/bzImage-2.6.38.2-xxxx-grs-ipv6-64 root=/dev/sda1 ro  quiet
}
### END /etc/grub.d/25_OVHkernel ###
muss ich evtl. beim 10_Wheezy-Kernel-Eintrg die Zeilen
load_video
insmod gzio

entfernen (bzw.kommentieren) und root=/dev/sda1 reinschreiben, so wie es unten beim 25_OVHKernel auch dransteht?
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: ISP-spezifischen Kernel ersetzen/austauschen auf root-se

Beitrag von pangu » 10.09.2013 23:44:08

Juhuuu, haben es endlich hingekriegt. :hail:

Ich hab die /etc/grub.d/25_OVHkernel aus diesem /etc/grub.d herausgenommen und vorsorglich nach /root verschoben:

Code: Alles auswählen

mkdir ~/ovh-kernel.bak && mv /etc/grub.d/25_OVHkernel ~/ovh-kernel.bak
und anschließend noch ein

Code: Alles auswählen

update-grub
ausgeführt.

Danach hat's wunderbar geklappt und die Maschine bootet und hat den Kernel...
Linux loreleiDE1 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1+deb7u1 x86_64 GNU/Linux
Danke mir :) :THX: :mrgreen:
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Antworten