Donanımı yeniden başlatmadan Linux işletim sistemini yeniden başlatmak mümkün müdür?


89

Donanımı yeniden başlatmadan Linux sistemini (özellikle Debian) yeniden başlatmanın bir yolu var mı?

İşletim sistemi başlamadan önce çalışmasını sağlamak biraz zaman alan bir RAID denetleyicisine sahibim ve Linux işletim sistemini RAID denetleyicisini yeniden başlatma işleminin tamamını yeniden başlatmak zorunda kalmadan hızlı bir şekilde yeniden başlatmanın bir yolu olsaydı istiyorum. vb.


6
UEFI tabanlı tüm sistemler, işletim sistemini yeniden başlatmaya göre değiştirebilir. Aynı zamanda kexec()hangisine benziyorsun exec(), ama Unix çekirdekleri için.
user2284570

Yanıtlar:


98

Neredeyse tüm üretim sistemlerimde kexec-reboot kullanıyorum .

HP ProLiant sunuculardaki uzun POST zamanını atlamama ve önyükleme döngüsünü 5 dakikadan ~ 45 saniyeye düşürmeme izin vererek inanılmaz derecede iyi çalışıyor .

Bakınız: https://github.com/error10/kexec-reboot

Tek uyarı, UEFI'yı destekleyen RHEL / CentOS 6.x sistemlerinde işe yaramayacağıdır. Ancak çoğu akıllıca işletim sistemi / donanım kombinasyonu çalışır.


62
Bunu ben yazdım! Ama yine de ... oldukça iyi çalışıyor
Michael Hampton

1
Büyüleyici. Peki gerçek süreç nasıl görünüyor? Hariprasad Nellitheertha tarafından yayınlanan bir makaleye göre (kexec wikipedia sayfasından bağlantı verilmiştir), "Normal yeniden başlatma işleminden farklı olarak, kexec sistemi yeniden başlatmadan önce temiz bir kapatma işlemi yapmaz. Bir kexec yeniden başlatmayı denemeden önce. " Bazı şüpheli şeyleri fark ettim, örneğin, Wim Coekaerts, "sync; umount -a; kexec -e" nin çok hızlı bir şekilde yeniden başlatılacağını söylüyor. Ancak yoğun bir dosya sistemini çözemezsiniz. Web'i inceleyen, çoğu kişinin 'tüm uygulamaları öldür' bölümünü görmezden geldiği anlaşılıyor.
Mike S

2
@MikeS Bu değil kexec. Bu kexec-rebootyardımcı program. Github açıklaması, farkı ve hizmet programının sürece ne kattığını gösterir.
ewwhite

4
@MikeS Kexec'i ayarladıktan sonra, basitçe bir shutdown -r. Sistem komut dosyalarınız kexec'in hazır olduğunu fark edecek ve doğru olanı yapacak. Nasıl görünüyor? Üç ya da dört ya da on beş dakika daha kısa. Çok korkunç kalitede bir videoya sahibim, iDRAC konsolunu çıkardım, ama gerçekten bununla uğraşmak istemiyorsunuz… kexec-rebootKomut, kexec'e doğru komut satırı argümanlarını alma işlemini otomatikleştirmek anlamına geliyor, bu da zor olabilir .
Michael Hampton

1
@ MichaelHampton - harika. Ben /etc/rc3d/rc6.d/S01reboot sonuna yakın CentOS 6.5 olduğunu görüyoruz: [ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null. Yani, bir çekirdek kexec -l ile yüklenirse, sistem tam bir / sbin / reboot olmadan onu yeniden başlatır ... kexec içinde pişirilir! Bunu bilmiyordum, teşekkürler. Sanırım daha modern dağıtımlar da bunu kapsıyor. BTW, kexec önceden -l ile çalıştırılmadıysa, yeniden başlatma komut dosyası "Hiçbir şey yüklenmedi!" Diyecektir. bu nedenle çıktı / dev / null adresine gönderilir ve bu tesisten asla haberdar olmadım.
Mike S

17

Evet mümkün. kexec , bir Linux çekirdeğinin BIOS önyükleme işlemine girmeden doğrudan Linux'tan önyüklenmesini sağlar.


Ayrıca, UEFI, işletim sistemini yeniden başlatmadan değiştirmeye izin verir.
user2284570

1
@ user2284570 Bildiğim kadarıyla UEFI böyle bir mekanizma sağlamıyor.
Jonathon Reinhart

15

Evet. Kexec-tools kullanmalısınız. Hayatı kolaylaştırmak için kexec-reboot kullanıyorum .

$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
Hiçbir karışıklık olmadığı için bunu yazmadım.
Michael Hampton

Bu muhtemelen Ubuntu / yalnızca Debian'dır, değil mi?
ewwhite

1
@wwhite Muhtemelen RHEL / CentOS üzerinde çalışacak, ancak kodun okunması üzerine, kenar davalarının başarısız olmasına neden olabilecek birkaç sorunlu nokta buldum. Ve kaynak bir yorum ile bunu kabul ediyor gibi görünüyor:# The error checking is very basic.
Michael Hampton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.