Apakah mungkin untuk reboot OS Linux tanpa me-reboot perangkat keras?

89

Apakah ada cara untuk reboot sistem Linux (khususnya Debian) tanpa me-reboot perangkat keras?

Saya memiliki pengontrol RAID yang memerlukan sedikit waktu untuk menjalankannya sebelum OS dimulai, dan saya ingin jika ada cara untuk dengan cepat me-reboot OS Linux tanpa harus melalui seluruh proses reboot untuk memulai kembali pengontrol RAID, dll.

lacrosse1991
sumber
6
Semua sistem berbasis UEFI dapat beralih OS jika reboot. Anda juga memiliki kexec()yang seperti exec(), tetapi untuk kernel Unix.
user2284570

Jawaban:

98

Saya menggunakan kexec-reboot pada hampir semua sistem produksi saya.

Ini bekerja sangat baik, memungkinkan saya untuk mem-bypass waktu POST yang lama pada server HP ProLiant dan mengurangi siklus booting dari 5 menit menjadi ~ 45 detik.

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

Satu-satunya peringatan adalah tampaknya tidak berfungsi pada sistem RHEL / CentOS 6.x mem-boot UEFI. Tetapi kebanyakan kombinasi OS / perangkat keras yang waras bekerja.

putih
sumber
62
Saya menulis itu! Tapi itu masih berfungsi dengan baik ...
Michael Hampton
1
Menarik. Jadi bagaimana proses yang sebenarnya terlihat? Menurut sebuah artikel oleh Hariprasad Nellitheertha (ditautkan ke dari halaman wikipedia kexec), "Tidak seperti proses reboot normal, kexec tidak melakukan shutdown bersih dari sistem sebelum me-reboot. Terserah Anda untuk mematikan semua aplikasi dan unmount sistem file sebelum mencoba reboot kexec. " Saya melihat beberapa hal yang dipertanyakan, misalnya, Wim Coekaerts mengatakan bahwa "sinkronisasi; umount -a; kexec -e" akan melakukan reboot sangat cepat. Tetapi Anda tidak dapat membuat umount sistem file yang sibuk. Membaca web dengan teliti, tampaknya banyak yang mengabaikan bagian 'bunuh semua aplikasi'.
Mike S
2
@ Mike Ini bukan kexec. Ini adalah kexec-rebootutilitas. Deskripsi Github menguraikan perbedaan dan apa yang ditambahkan utilitas untuk proses.
ewwhite
4
@ MikeSetelah pementasan kexec, Anda cukup melakukan a shutdown -r. Skrip sistem Anda akan melihat bahwa kexec telah dipentaskan dan melakukan hal yang benar. Bagaimana kelihatannya? Tiga atau empat atau lima belas menit lebih pendek. Saya memiliki video berkualitas yang sangat mengerikan, saya melepas konsol iDRAC, tetapi Anda benar-benar tidak ingin menderita melalui itu ... kexec-rebootScript ini dimaksudkan untuk mengotomatiskan proses mendapatkan argumen baris perintah yang tepat untuk kexec, yang bisa rumit .
Michael Hampton
1
@MichaelHampton - keren. Saya melihat bahwa pada CentOS 6.5 dekat akhir /etc/rc3d/rc6.d/S01reboot ada: [ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null. Jadi, jika sebuah kernel dimuat oleh kexec -l, sistem akan reboot ke dalamnya tanpa / sbin / reboot lengkap ... kexec dipanggang! Saya tidak tahu itu, terima kasih. Saya kira distribusi yang lebih modern juga telah membahasnya. BTW, jika kexec sebelumnya tidak dijalankan dengan -l, skrip reboot akan mengatakan "Tidak ada yang dimuat!" itulah sebabnya output dikirim ke / dev / null, dan mengapa saya tidak pernah mengetahui fasilitas ini.
Mike S
17

Ya itu mungkin. kexec akan memungkinkan kernel Linux untuk boot langsung dari Linux tanpa melalui proses boot BIOS.

kasperd
sumber
UEFI juga memungkinkan untuk mengganti OS tanpa perlu reboot.
user2284570
1
@ user2284570 Sejauh yang saya ketahui, UEFI tidak menyediakan mekanisme seperti itu.
Jonathon Reinhart
15

Iya. Anda harus menggunakan kexec-tools. Untuk membuat hidup lebih mudah, saya menggunakan 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
Jose Raul Barreras
sumber
13
Agar tidak ada kebingungan, saya tidak menulis ini.
Michael Hampton
Ini kemungkinan hanya Ubuntu / Debian, kan?
ewwhite
1
@ewwhite Ini akan mungkin bekerja pada RHEL / CentOS, tetapi pada pembacaan kode saya menemukan beberapa titik masalah di mana kasus tepi mungkin menyebabkan gagal. Dan sumber itu tampaknya mengakui hal ini dengan komentar:# The error checking is very basic.
Michael Hampton