FÉV 04

Installation d'un noyau Debian sur Kimsufi


Blog, Kimsufi, openvz, r8168, r8169 0 commentaire
Les serveurs Kimsufi sont livrés avec la distribution demandée, mais avec des noyaux "fait-maison". Lorsque l'on souhaite changer de noyau, et utiliser par exemple un noyau fourni par les paquets Debian, on se retrouve confronté à un problème assez gênant : la carte réseau (Realtek r8169) ne fonctionne pas.
Cela se voit dans le fichier /var/log/dmesg (celui qui correspond au précédent boot, à savoir /var/log/dmesg.0 ) une fois que l'on a rebooté sur un noyau OVH :
[ XX.XX] r8169: eth0: link down
[ XX.XX] ADDRCONF(NETDEV_UP): eth0: link is not ready

Le noyau que je souhaitais installer est celui pour openvz, en version 64bits.

Après de très nombreuses tentatives infructueuses, j'ai fini par trouver le problème, puis la solution. Il se trouve que le module chargé par la carte réseau est non seulement buggué, mais en plus, ce n'est pas le bon.

Sur un serveur tout neuf, on va d'abord commencer par le mettre à jour :

aptitude update
aptitude upgrade

Ensuite, on va remplacer lilo par grub :

aptitude install grub

On va maintenant installer le nouveau noyau, ainsi que ses sources (pour compiler le driver de la carte réseau),

aptitude install linux-image-openvz-amd64 linux-headers-2.6.26-2-openvz-amd64
grub-install /dev/sda

On récupère les drivers pour la carte r8168, puisque c'est ce que nous rapporte lspci :

$ lspci
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
wget ftp://WebUser:K4d5wHY@152.104.238.19/cn/nic/r8168-8.016.00.tar.bz2

On décompresse les sources du driver, et on modifie son Makefile

tar -xvjf r8168-8.016.00.tar.bz2
cd r8168-8.016.00/src

Voici un apercu du diff entre le fichier d'origine, et le fichier modifié

33c33
< KVER        := $(shell uname -r)
---
> KVER        := 2.6.26-2-openvz-amd64
46c46
<     $(MAKE) -C $(KDIR) SUBDIRS=$(PWD)/src modules
---
>     $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

Il reste à compiler le driver et à l'installer :

make clean modules
make install

Pour être certain que le bon module sera chargé, on va supprimer celui qui ne fonctionne pas (cette opération est facultative) :

rm /lib/modules/2.6.26-2-openvz-amd64/kernel/drivers/net/r8169.ko

Ensuite, il faut prendre en compte le module, et générer un nouveau initrd.img :

depmod 2.6.26-2-openvz-amd64 -a
mkinitramfs -o /boot/initrd.img-2.6.26-2-openvz-amd64 /lib/modules/2.6.26-2-openvz-amd64/

Et voilà, il ne reste plus qu'à rebooter, puis à installer tout ce qui sera nécessaire sur le serveur.

Commentaires