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


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

Saya memiliki pengontrol RAID yang memerlukan sedikit untuk menjalankannya sendiri sebelum OS dijalankan, dan saya ingin jika ada cara untuk mem-boot ulang OS Linux dengan cepat tanpa harus melalui seluruh proses reboot dari restart controller RAID, dll.


81
2018-03-24 23:35




Semua sistem berbasis UEFI dapat mengubah OS tanpa boot ulang. Anda juga punyakexec()yang seperti ituexec(), tetapi untuk kernel Unix. - user2284570


Jawaban:


saya menggunakan kexec-reboot di hampir semua sistem produksi saya.

Ini bekerja sangat baik, memungkinkan saya untuk memotong waktu POST lama pada server HP ProLiant dan mengurangi siklus boot dari 5 menit menjadi ~ 45 detik.

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

Satu-satunya peringatan adalah bahwa hal itu tampaknya tidak bekerja pada RHEL / CentOS 6.x sistem boot UEFI. Tetapi kombinasi OS / perangkat keras yang paling baik bekerja.


94
2018-03-25 00:05



Saya menulis itu! Tapi itu masih berfungsi dengan baik ... - Michael Hampton♦
Sangat menarik. Jadi bagaimana proses sebenarnya terlihat? Menurut sebuah artikel oleh Hariprasad Nellitheertha (terkait dari halaman wikipedia kexec), "Tidak seperti proses reboot normal, kexec tidak melakukan shutdown bersih dari sistem sebelum me-reboot. Hal ini diserahkan kepada Anda untuk membunuh semua aplikasi dan meng-unmount file system. sebelum mencoba reboot kexec. " Saya melihat beberapa hal yang dipertanyakan, misalnya, Wim Coekaerts mengatakan bahwa "sync; umount -a; kexec -e" akan melakukan reboot yang sangat cepat. Tetapi Anda tidak dapat membuat filesystem yang sibuk. Membaca web, tampaknya banyak yang mengabaikan bagian 'bunuh semua aplikasi'. - Mike S
@MikeS Ini bukan kexec. Ini adalah kexec-reboot utilitas. Deskripsi Github menguraikan perbedaan dan apa yang ditambahkan oleh utilitas pada proses. - ewwhite
@MikeS Setelah mementaskan kexec, Anda cukup melakukan a shutdown -r. Skrip sistem Anda akan memperhatikan bahwa kexec telah dipentaskan dan melakukan hal yang benar. Bagaimana kelihatannya? Tiga atau empat atau lima belas menit lebih pendek. Saya memiliki kualitas video yang sangat buruk saya melepas konsol iDRAC, tetapi Anda benar-benar tidak ingin menderita melalui ... The kexec-reboot skrip dimaksudkan untuk mengotomatiskan proses mendapatkan argumen baris perintah yang tepat ke kexec, yang dapat menjadi rumit. - Michael Hampton♦
@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 di-load oleh kexec -l, sistem akan reboot ke dalamnya tanpa selesai / sbin / reboot ... kexec dipanggang! Saya tidak tahu itu, terima kasih. Saya kira distribusi yang lebih modern juga tertutup. 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


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


17
2018-03-24 23:51



Juga, UEFI memungkinkan untuk mengganti OS tanpa me-reboot. - user2284570


Iya nih. Anda harus menggunakan kexec-tools. Untuk membuat hidup lebih mudah, saya gunakan 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



Agar tidak ada kebingungan, saya tidak menulis ini. - Michael Hampton♦
Ini mungkin Ubuntu / Debian-only, kan? - ewwhite
@wwhite Itu akan mungkin bekerja pada RHEL / CentOS, tetapi pada pembacaan kode saya menemukan beberapa titik masalah di mana kasus tepi mungkin menyebabkannya gagal. Dan sumbernya sepertinya mengakui ini dengan komentar: # The error checking is very basic. - Michael Hampton♦