Question Est-il possible de redémarrer un système d'exploitation Linux sans redémarrer le matériel?


Est-il possible de redémarrer un système Linux (Debian en particulier) sans redémarrer le matériel?

J'ai un contrôleur RAID qui prend un peu de temps à s'exécuter avant que le système d'exploitation ne démarre, et j'aimerais qu'il soit possible de redémarrer rapidement le système d'exploitation Linux sans avoir à passer par tout le processus de redémarrage du contrôleur RAID, etc.


81
2018-03-24 23:35


origine


Tous les systèmes basés sur UEFI peuvent changer de système d’exploitation sans redémarrer. Vous avez aussikexec()qui est commeexec(), mais pour les noyaux Unix. - user2284570


Réponses:


j'utilise kexec-reboot sur presque tous mes systèmes de production.

Cela fonctionne incroyablement bien, me permettant de contourner le long temps de poste sur les serveurs HP ProLiant et réduisez le cycle de démarrage de 5 minutes à environ 45 secondes.

Voir: https://github.com/error10/kexec-reboot

Le seul inconvénient est que cela ne semble pas fonctionner sur les systèmes RHEL / CentOS 6.x démarrant UEFI. Mais la plupart des combinaisons saines système / matériel fonctionnent.


94
2018-03-25 00:05



J'ai écrit ça! Mais ça marche encore assez bien ... - Michael Hampton♦
Fascinant. Alors, à quoi ressemble le processus actuel? Selon un article de Hariprasad Nellitheertha (lié à la page wikipedia de kexec), "contrairement au processus de redémarrage normal, kexec n'effectue pas un arrêt complet du système avant le redémarrage. Il vous appartient de tuer toutes les applications et de démonter les systèmes de fichiers avant de tenter un redémarrage kexec. " Je remarque certaines choses discutables, par exemple, Wim Coekaerts dit que "sync; umount -a; kexec -e" effectuera un redémarrage très rapide. Mais vous ne pouvez pas supprimer un système de fichiers occupé. En parcourant le Web, il semble que beaucoup ignorent la partie "tuer toutes les applications". - Mike S
@MikeS Ce n'est pas kexec. C'est le kexec-reboot utilitaire. La description de Github décrit la différence et ce que l'utilitaire ajoute au processus. - ewwhite
@MikeS Après avoir mis en place kexec, il vous suffit de shutdown -r. Vos scripts système remarqueront que kexec a été mis en scène et agissent correctement. De quoi ça a l'air? Trois, quatre ou quinze minutes plus courtes. J'ai une vidéo de qualité très horrible. J'ai enlevé la console iDRAC, mais vous ne voulez vraiment pas en subir les conséquences. kexec-reboot script est destiné à automatiser le processus d'obtention des arguments de ligne de commande appropriés pour kexec, ce qui peut être délicat. - Michael Hampton♦
@ MichaelHampton - cool. Je vois que sur CentOS 6.5 vers la fin de /etc/rc3d/rc6.d/S01reboot, il y a: [ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null . Donc, si un noyau est chargé par kexec -l, le système redémarrera sans un / sbin / reboot complet ... kexec est intégré! Je ne savais pas ça, merci. Je suppose que les distributions plus modernes l'ont également couvert. En passant, si kexec n’avait pas déjà été exécuté avec -l, le script de redémarrage dira "Rien n’a été chargé!" c'est pourquoi la sortie est envoyée à / dev / null, et pourquoi je n'ai jamais été au courant de cette installation. - Mike S


Oui c'est possible. kexec permettra à un noyau Linux d’être démarré directement à partir de Linux sans passer par le processus de démarrage du BIOS.


17
2018-03-24 23:51



De plus, l'UEFI permet de changer de système d'exploitation sans redémarrer. - user2284570


Oui. Vous devez utiliser kexec-tools. Pour rendre la vie plus facile, j'utilise kexec-reboot.

$sudo apt-get install kexec-tools
$wget https://raw.githubusercontent.com/vadmium/kexec-reboot/master/kexec-reboot
$chmod +x kexec-reboot
$sudo mv kexec-reboot /usr/local/sbin/kexec-reboot
$sudo /usr/local/sbin/kexec-reboot

13
2018-03-26 04:04



Pour qu'il n'y ait pas de confusion, je n'ai pas écrit ceci. - Michael Hampton♦
Ceci est probablement basé uniquement sur Ubuntu / Debian, n'est-ce pas? - ewwhite
@ewwhite Il serait Probablement travailler sur RHEL / CentOS, mais lors de la lecture du code, j’ai trouvé plusieurs points problématiques où des cas extrêmes pourraient provoquer son échec. Et la source semble reconnaître cela avec un commentaire: # The error checking is very basic. - Michael Hampton♦