Вопрос: Можно ли перезагрузить ОС Linux без перезагрузки оборудования?


Есть ли способ перезагрузить систему Linux (в частности, Debian) без перезагрузки оборудования?

У меня есть RAID-контроллер, который требует немного времени, чтобы запустить его до запуска ОС, и мне бы хотелось, чтобы был способ быстро перезагрузить ОС Linux, не переходя весь процесс перезагрузки перезагрузки RAID-контроллера, и т.п.


81
2018-03-24 23:35


Источник


Все системы на базе UEFI могут переключать ОС при перезагрузке. У вас также естьkexec()который подобенexec(), но для ядер Unix. - user2284570


Ответы:


я использую Kexec-перезагрузка почти на всех моих производственных системах.

Он работает невероятно хорошо, позволяя мне обойти длительное время POST на серверах HP ProLiant и сократить цикл загрузки с 5 минут до ~ 45 секунд.

Видеть: https://github.com/error10/kexec-reboot

Единственное предостережение в том, что он, похоже, не работает на системах RHEL / CentOS 6.x, загружающих UEFI. Но работают самые разумные комбинации ОС / аппаратных средств.


94
2018-03-25 00:05



Я это написал! Но он все еще работает очень хорошо ... - Michael Hampton♦
Захватывающий. Итак, как выглядит процесс? Согласно статье Hariprasad Nellitheertha (связанной с страницей kexec wikipedia): «В отличие от обычного процесса перезагрузки, kexec не выполняет чистое завершение работы системы перед перезагрузкой. Вам остается убить все приложения и отключить файловые системы перед попыткой перезагрузки kexec. " Я замечаю некоторые сомнительные вещи, например, Wim Coekaerts говорит, что «sync; umount -a; kexec -e» сделает очень быструю перезагрузку. Но вы не можете объединить загруженную файловую систему. Просматривая Интернет, кажется, что многие игнорируют часть «убить всех приложений». - Mike S
@MikeS Это не kexec, Это kexec-reboot утилита. Описание Github описывает разницу и то, что утилита добавляет к процессу. - ewwhite
@MikeS После установки kexec вы просто выполняете shutdown -r, Ваши системные скрипты заметят, что kexec был поставлен и делает правильные вещи. Как это выглядит? Три или четыре или пятнадцать минут короче. У меня очень ужасное качество видео, которое я снял с консоли iDRAC, но вы действительно не хотите страдать от этого ... kexec-reboot script предназначен для автоматизации процесса получения правильных аргументов командной строки к kexec, что может быть сложно. - Michael Hampton♦
@MichaelHampton - круто. Я вижу, что на CentOS 6.5 в конце /etc/rc3d/rc6.d/S01reboot есть: [ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null , Итак, если ядро ​​загружено kexec -l, система перезагрузится в него без полной / sbin / reboot ... kexec запекается! Я не знал этого, спасибо. Я полагаю, что более современные дистрибутивы охватили его. BTW, если kexec ранее не выполнялся с -l, скрипт перезагрузки скажет: «Ничего не было загружено!» поэтому вывод отправляется в / dev / null, и почему я никогда не знал об этом объекте. - Mike S


Да, это возможно. Kexec позволит ядро ​​Linux загружаться непосредственно из Linux без прохождения процесса загрузки BIOS.


17
2018-03-24 23:51



Кроме того, UEFI позволяет переключать ОС без перезагрузки. - user2284570


Да. Вы должны использовать инструменты kexec. Чтобы облегчить жизнь, я использую Kexec-перезагрузка,

$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



Чтобы не было замешательства, я этого не писал. - Michael Hampton♦
Это, скорее всего, Ubuntu / Debian-only, не так ли? - ewwhite
@ewwhite Это было бы вероятно работа над RHEL / CentOS, но при чтении кода я обнаружил несколько проблемных точек, где краевые случаи могут привести к его сбою. И источник, кажется, подтверждает это с комментарием: # The error checking is very basic. - Michael Hampton♦