[ Linux ] Que faire lorsque son kernel est corrompu ?
Ce genre de situation est toujours délicate (et stressante d’ailleurs), surtout si comme moi le problème intervient un dimanche matin à 04H (l’heure ou déjà le cerveau est en pleine indexation), et sur 4 serveurs simultanés, situation pas toujours très simple… L’objet de cet article est donc de vous présenter une solution facile et assez rapide (moins de 15min) pour régénérer son kernel lorsqu’il est corrompu, il doit certainement exister d’autres solutions, je mettrais l’article à jour si j’arrive trouver d’autres infos !
Sachez que la reconstruction d’un kernel (noyau) s’effectue avec l’outil Dracut, une autre commande existe pour la même chose mais nous en parlerons pas dans cet article pour ne pas compliquer les choses. Si vous avez moyen de démarrer sur un ancien kernel, c’est top et vous pourriez passer directement à la dernière étape, sinon il vous faudra utiliser un LiveCD pour faire les actions.
Présentation rapide de Finnix
Finnix est une distribution autonome bootable (LiveCD) basé sur Debian pour les administrateurs système, très souvent utilisé lorsqu’il n’y a pas d’autres choix. Il embarque également une large gamme d’outil pour la gestion des partitions, des réseaux, système d’amorçage (grub par exemple), … L’image ISO fait environ 160Mo, donc assez facile à gérer en urgence. Même si vous n’avez pas encore eu de kernel panic, je vous recommande déjà de mettre en place l’ISO au cas ou vous en aurez besoin un jour, 160Mo c’est rien ! Plus d’info sur Finnix !
Démarrage sur Finnix LiveCD
Commencez par modifier la configuration du serveur afin de booter sur Finnix (connecté, connecté au démarrage, chargement de l’image ISO de Finnix, …) et dans les paramètres avancés du serveur vous avez moyen de retarder le boot de quelques secondes, 10s est pas trop mal pour gérer la chose facilement (faudra définir 10000 dans ce cas). Une fois ces opérations réalisées, rebooter le serveur pour démarrer sur le LiveCD de Finnix, appuyez sur ESC s’il continue de booter sur le disque. Si vous utilisez un système 64bits, je devrez lancer l’ISO en 64bits, sinon choisissez 32bits, si vous avez fait une erreur, vous ne pourrez pas faire votre chroot, un message s’affichera concernant « /bin/bash ».
Montage des partitions
Une fois démarré, nous allons monter les partitions systèmes sur notre Finnix, dans cet article nous utiliserons, à vous de voir avec « fdisk » le nom de vos disques/partitions :
- /dev/sda1 => /boot
- /dev/sda2 => /
- /dev/sda3 => swap (qui ne sera pas utilisé)
- /dev/sda4 => /home (qui ne sera pas utilisé)
Et nous lançons le montage des partitions sur « /mnt/system » :
loadkeys fr mkdir -p /mnt/system mount /dev/sda2 /mnt/system mount /dev/sda1 /mnt/system/boot for i in proc dev sys; do mount -o bind /$i /mnt/system/$i; done chroot /mnt/system
Terminé ! Si vous avez une erreur lors du chroot, vérifier bien que vous êtes identiques à votre système 32/64bits.
Génération du kernel
Vous serez à cette étape dans votre environnement, placez-vous alors dans la partition « /boot » et régénérez le kernel avec la commande dracut :
cd /boot dracut -f initramfs-2.6.32.378.el6.x86_64.img 2.6.32.378.el6.x86_64
A vous de voir la version du kernel à générer, souvent prenez la dernière version du fichier « initramfs-* ». Rebooter ensuite votre serveur « reboot », Finnix s’occupera de stopper le chroot et de démonter vos partitions. Une fois terminé, n’oubliez pas non plus de désactiver le lecteur de cd-rom 🙂
Conclusion
J’espère que cela vous aidera à régler ce genre de situation, je mettrais le wiki à jour avec ces informations (ou seulement une redirection, je sais pas trop). L’article sera prochainement modifié avec l’ajout d’une commande qui vous permettra de voir si le kernel n’est pas corrompu, utilisé sur mon serveur d’ailleurs 🙂
++