Czy istnieje sposób na ponowne uruchomienie systemu Linux (w szczególności Debiana) bez ponownego uruchamiania sprzętu?
Mam kontroler RAID, który uruchamia się trochę przed uruchomieniem systemu operacyjnego, i chciałbym, aby istniał sposób szybkiego ponownego uruchomienia systemu operacyjnego Linux bez konieczności przechodzenia przez cały proces ponownego uruchamiania kontrolera RAID, itp.
kexec()
które jest podobneexec()
, ale dla jądra uniksowego.Odpowiedzi:
Używam kexec-reboot na prawie wszystkich moich systemach produkcyjnych.
Działa niesamowicie dobrze, co pozwala mi ominąć długi czas testu POST na serwerach HP ProLiant i skrócić cykl uruchamiania z 5 minut do ~ 45 sekund.
Zobacz: https://github.com/error10/kexec-reboot
Jedynym zastrzeżeniem jest to, że nie działa na systemach RHEL / CentOS 6.x uruchamiających UEFI. Ale większość rozsądnych kombinacji OS / sprzęt działa.
źródło
kexec
. Tokexec-reboot
narzędzie. Opis Github przedstawia różnicę i to, co narzędzie dodaje do procesu.shutdown -r
. Twoje skrypty systemowe zauważą, że kexec został zainscenizowany i postępują właściwie. Jak to wygląda? Trzy, cztery lub piętnaście minut krócej. Mam bardzo okropną jakość filmu, który zdjąłem z konsoli iDRAC, ale tak naprawdę nie chcesz przez to cierpieć ...kexec-reboot
Skrypt ma zautomatyzować proces przekazywania odpowiednich argumentów wiersza poleceń do kexec, co może być trudne .[ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null
. Więc, jeśli jądro jest ładowane przez kexec -l, system uruchomi się ponownie bez kompletnego / sbin / reboot ... kexec jest wypalony! Nie wiedziałem tego, dzięki. Podejrzewam, że obejmuje to także bardziej nowoczesne dystrybucje. BTW, jeśli kexec nie był wcześniej uruchamiany z opcją -l, skrypt restartu powie „Nic nie zostało załadowane!” dlatego dane wyjściowe są wysyłane do / dev / null i dlaczego nigdy nie byłem świadomy tego ułatwienia.Tak to mozliwe. kexec pozwoli na uruchomienie jądra Linuksa bezpośrednio z Linuksa bez konieczności uruchamiania systemu BIOS.
źródło
Tak. Musisz użyć narzędzi kexec. Aby ułatwić życie, używam kexec-reboot .
źródło
# The error checking is very basic.