22 votes

Que se passerait-il si init était supprimé ?

Juste une question théorique...

Mais que se passerait-il si init (en /sbin/init ) seraient supprimés ?

31voto

meva Points 158

Le boot loader va charger le noyau, le noyau tenterait d'exécuter init, ne le trouverait pas et paniquerait.

Le moyen de s'en sortir est de redémarrer, de modifier les paramètres de démarrage, d'ajouter init=/bin/bash et démarrer de cette façon. Le noyau utilisera bash comme init. Cela vous permettra d'exécuter des commandes et de réparer le système.

Correction
Apparemment, le noyau (fichier init/main.c ) le fait :

if (!try_to_run_init_process("/sbin/init") ||
    !try_to_run_init_process("/etc/init") ||
    !try_to_run_init_process("/bin/init") ||
    !try_to_run_init_process("/bin/sh"))
        return 0;

panic("No working init found.  Try passing init= option to kernel. "
      "See Linux Documentation/init.txt for guidance.");

Ainsi, il trouvera /bin/sh (qui est un lien vers dash) et cela vous donnera un Shell et une chance de le corriger sans utiliser la fonction init=/bin/bash paramètre de démarrage.

12voto

200_success Points 997

Rien ne se passe, jusqu'à ce que vous essayiez de redémarrer. Tant que le système fonctionne, et que vous n'essayez pas de changer de niveau d'exécution en exécutant la commande /sbin/init n tu ne te rendrais même pas compte qu'il a disparu.

En fait, la suppression de /sbin/init est irrémédiable si vous réalisez l'erreur à temps et restez calme. Les administrateurs système ont se sont remis de "lobotomies" bien plus méchantes. tout en gardant le système d'exploitation en marche.

Une façon de récupérer de la suppression de /sbin/init est de réinstaller le upstart en utilisant APT.

La manière macho de récupérer est d'utiliser uniquement les ressources de la machine elle-même. Un facteur en votre faveur est que /sbin/init est toujours en cours. Par conséquent, lorsque vous exécutez rm /sbin/init le fichier est simplement délié du système de fichiers. L'inode et le contenu du fichier restent sur le disque et en mémoire jusqu'à la sortie de PID 1. Vous devez simplement recréer /sbin/init à partir de l'inode approprié.

El meilleur moyen pour accomplir cela :

# cp /proc/1/exe /sbin/init
# chmod 755 /sbin/init

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X