Récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH

J’ai lamentablement fait planter le serveur en voulant mettre le kernel à jour…

Heureusement, il existe le mode rescue chez OVH qui permet d’installer un linux provisoire sur le serveur et d’initier une connexion SSH pour que l’on puisse réparer le système.

Si jamais cela vous arrive, voici la marche à suivre.

Passage en mode rescue depuis le manager OVH

lifesaver

1. Aller sur le manager OVH > Dedicated > Infrastructure > clic sur votre serveur > clic sur l’onglet Server Status.

Vous obtenez quelque chose comme :

System (OS) : Debian 6.0 oldstable LTS (Squeeze)
Boot :   hd (Boot from hard drive (no netboot)) Code language: JavaScript (javascript)
ovh-rescue-mode-boot

2. Nous allons temporairement booter en mode rescue donc cliquez sur Modifier. Vous obtenez cet écran :

ovh-rescue-mode-boot-confirm

Sélectionnez Boot on rescue mode puis rescue-pro. On vous demande de confirmer :

3. Confirmez. La fenêtre se ferme. Dans le manager, en haut à droite, cliquez sur Restart pour redémarrer votre serveur.

4. Armez-vous de patience : OVH installe un linux temporaire sur le serveur, cela prend du temps.

Quand l’installation du mode rescue est terminée, vous recevez un email intitulé “Paramètres d’accès au mode RESCUE” qui contient les informations nécessaires pour se connecter en SSH au serveur :

Bonjour,

Votre serveur a redémarré en mode ‘Rescue’ ; cela signifie qu’un
Linux/BSD est lancé sur votre serveur via le réseau. Il ne s’agit pas
du système qui est normalement installé sur votre serveur, aucune
de vos partitions n’est d’ailleurs montée.

Une interface web est disponible pour vous permettre d’effectuer un
diagnostique de votre serveur (disque dur, raid, ram, CPU) et de
parcourir l’arborescence de votre système de fichiers:
http://xxx.xxx.xxx.xxx:81
– nom d’utilisateur : root
– mot de passe : XXXXXX

Vous pouvez également vous connecter en SSH à votre serveur
avec les paramètres suivants:
– user : root
– mot de passe : XXXXXXX

Vous pouvez dès à présent effectuer les opérations de maintenance
nécessaires au rétablissement de votre serveur, à titre d’exemple,
vous pouvez:
– vérifier et mettre à jour vos fichiers de configuration réseau,
– vérifier et éventuellement désactiver votre firewall,
– vérifier et mettre à jour votre LILO
– procéder à la vérification manuelle de votre système de fichiers,
– effectuer une sauvegarde ou une restauration de données,
– etc.

Connexion en SSH et chroot du système

5. Nous allons utiliser SSH exclusivement. On se loggue avec :

ssh root@IPCode language: CSS (css)

et on rentre le mot de passe donné dans le mail. On obtient ceci :

Linux rescue.ovh.net 3.10.23-xxxx-std-ipv6-64-rescue #1 SMP Tue Mar 18 15:06:38 CET 2014 x86_64Code language: CSS (css)

Nous sommes bien dans le mode rescue.

6. On commence par lister nos partitions :

fdisk -l

Cela nous permet de savoir quel est le nom du disque dur à monter. Dans mon cas, il n’y en a qu’un, c’est /dev/sda et la partition système se trouve sur /dev/sda1.

7. On monte le disque :

mount /dev/sda1 /mnt/

A ce stade, il est en lecture seule donc il faut utiliser la commande chroot :

chroot /mnt/

Mise à jour du kernel

8. Je supprime les fichiers du kernel que j’avais tenté d’installer et je remets les anciens. Heureusement, je les avais sauvegardé dans un répertoire sous /boot.

Toujours penser à faire des sauvegardes ou à placer une copie des fichiers sensibles dans un répertoire.

Mes fichiers kernel se trouvent dans /boot/3.8.13, je les remets dans /boot

cp /boot/3.8.13/* /boot

9. Je tente un premier update-grub2 :

update-grub2

qui me renvoie :

Generating grub.cfg ...
Found linux image: /boot/bzImage-3.8.13-xxxx-grs-ipv6-64
grep: /proc/mounts: No such file or directory
Cannot find list of partitions!  (Try mounting /sys.)
doneCode language: JavaScript (javascript)

puis :

grep: /proc/mounts: No such file or directory
  /proc/mounts: _get_sysfs_dir fopen failed: No such file or directory
  /proc/devices: fopen failed: No such file or directory
  Failed to set up list of device-mapper major numbers
  /proc/devices: fopen failed: No such file or directory
  Failed to create lvm type filter
warning: failed to read mtab
umount: /var/lib/os-prober/mount: not mounted
warning: failed to read mtab
umount: /var/lib/os-prober/mount: not mounted
done
Code language: PHP (php)

D’autres répertoires importants sont donc à chrooter également :

mount sysfs /sys -t sysfs
mount -o bind /dev /dev
mount -o bind /dev/pts /dev/pts
mount -o bind /tmp /tmp

On relance update-grub2. Résultats :

Generating grub.cfg ...
Found linux image: /boot/bzImage-3.8.13-xxxx-grs-ipv6-64
  No volume groups found
umount: /var/lib/os-prober/mount: not mounted
doneCode language: JavaScript (javascript)

et, par acquis de conscience :

grub-mkconfig

qui renvoie :

Generating grub.cfg ...
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  insmod vbe
  insmod vga
  insmod video_bochs
  insmod video_cirrus
}

insmod part_msdos
insmod ext2
set root='(/dev/sda,msdos1)'
search --no-floppy --fs-uuid --set=root acb31c4f-318c-4733-8770-b58cd94da69b
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  load_video
  insmod gfxterm
  insmod part_msdos
  insmod ext2
  set root='(/dev/sda,msdos1)'
  search --no-floppy --fs-uuid --set=root acb31c4f-318c-4733-8770-b58cd94da69b
  set locale_dir=($root)/boot/grub/locale
  set lang=fr_FR
  insmod gettext
fi
terminal_output gfxterm
set timeout=5
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/06_OVHkernel ###
Found linux image: /boot/bzImage-3.8.13-xxxx-grs-ipv6-64
menuentry "Debian GNU/Linux, OVH kernel 3.8.13-xxxx-grs-ipv6-64" {
	insmod part_msdos
	insmod ext2
	set root='(/dev/sda,msdos1)'
	search --no-floppy --fs-uuid --set=root acb31c4f-318c-4733-8770-b58cd94da69b
	linux	/boot/bzImage-3.8.13-xxxx-grs-ipv6-64 root=/dev/sda1 ro  quiet
}
### END /etc/grub.d/06_OVHkernel ###

### BEGIN /etc/grub.d/10_linux ###
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
  No volume groups found
umount: /var/lib/os-prober/mount: not mounted
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
done
Code language: PHP (php)

Pour l’erreur “No volume groups found” avec os-prober, c’est normal. C’est un programme qui détecte les autres systèmes d’exploitation sur la machine.

Comme c’est un serveur, il n’y a qu’un seul OS donc aucune information à remonter.

Redémarrage du serveur sur le disque dur

10. Il ne vous reste plus qu’à rebooter le serveur. Le soft reboot (/sbin/reboot ou reboot) via SSH ne fonctionnant pas, j’ai redémarré le serveur via le manager OVH en sélectionnant Boot on the hard-disk.

Après quelques (longues) minutes d’attente, le serveur est revenu à lui. Tous les services étaient alors fonctionnels.

Ouf, merci le mode rescue !

Synopsis » Monter un serveur dédié de A à Z

  1. Serveur dédié : installation d’Apache, PHP, MySQL et Webmin
  2. Serveur dédié : créer la base de données MySQL et importer WordPress
  3. Serveur dédié : créer et activer un Virtual Host sous Apache
  4. Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
  5. Serveur dédié : sécurisation des services avec iptables et fail2ban
  6. Serveur dédié : sécurisation de la couche TCP/IP
  7. Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels
  8. Serveur dédié : sécuriser Apache 2 avec ModSecurity
  9. Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
  10. Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
  11. Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
  12. Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
  13. Serveur dédié : installer la dernière version d’APC par SVN
  14. Serveur dédié : analyse des performances du serveur
  15. Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
  16. Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
  17. Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
  18. Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire
  19. Serveur dédié : impossible de se connecter à un port distant
  20. Rsync: rapatrier les fichiers du serveur à la maison
  21. Bash : réparer les tables MySQL en cas de crash
  22. Serveur dédié : création d’une seedbox avec Transmission
  23. Serveur dédié : des paquets LAMP à jour sous Debian
  24. Serveur dédié : mise à jour vers Debian 7 Wheezy
  25. Serveur dédié : activer X11 forwarding pour SSH
  26. Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
  27. Postfix : résoudre l’erreur “fatal: www-data(33): message file too big”
  28. Serveur dédié : mise en place de l’IPv6
  29. WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
  30. WordPress : héberger les images sur un sous-domaine
  31. Serveur dédié : ajouter l’authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
  32. Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
  33. Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
  34. Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
  35. Serveur dédié : configurer Webmin en TLS avec un certificat SSL
  36. Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
  37. Serveur dédié : installer et configurer Varnish 4
  38. Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
  39. Récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
  40. Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
  41. Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
  42. Serveur dédié : installer la dernière version d’OpenSSL sous Debian
  43. Serveur dédié : activer l’IP canonique du serveur sous Apache
  44. Serveur dédié : mise à jour vers PHP 5.6
  45. MySQL : convertir les tables MyISAM au format InnoDB
  46. Serveur dédié : optimiser toutes les images GIF avec GIFsicle
  47. Serveur dédié : migration de MySQL vers MariaDB
  48. BASH : lister, bloquer et débloquer des adresses IP avec iptables
  49. Serveur dédié : produire une meilleure réserve d’entropie avec haveged
  50. Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
  51. Serveur dédié : mise en place du protocole DANE
  52. 8 règles d’or pour bien déployer DNSSEC et DANE
  53. Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
  54. Serveur dédié : optimiser la couche TCP
  55. Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
  56. Serveur dédié : mettre à jour Apache pour HTTP/2
  57. Serveur dédié : ajouter le domaine à la liste HSTS preload
  58. Serveur dédié : ajouter l’authentification DMARC à Postfix et BIND
  59. Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème “no space left on device”
  60. Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB sous Debian

Vous avez un projet WordPress ou WooCommerce en tête? Transformez votre vision en réalité avec mon expertise reconnue.

Parlons de votre projet dès aujourd'hui »

Articles conseillés :

Matt

Matt Biscay est développeur WordPress et WooCommerce certifié chez Codeable, ainsi que sysadmin qualifié et enseignant-chercheur. Passionné par le code performant et les solutions sécurisées, je m'efforce d'offrir une expérience utilisateur exceptionnelle sur chaque projet.

Vous avez aimé cet article ? Vous avez un projet en tête et vous pensez que je pourrais vous aider à le concrétiser ? N'hésitez pas à me contacter, je serais ravi de discuter avec vous de votre projet !

Opinions