Juste une question théorique...
Mais que se passerait-il si init
(en /sbin/init
) seraient supprimés ?
Juste une question théorique...
Mais que se passerait-il si init
(en /sbin/init
) seraient supprimés ?
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.
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
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.