#!/usr/bin/bash # # Author: Dmitry Razumov # Copyright (c) 2021-2025 UBLinux # # SPDX-License-Identifier: AGPL-3.0-or-later # ENABLED=yes [[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; } unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=. SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/save; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null exec_sysrq_reboot(){ #Активизировать магические клавиши SysRq echo 1 > /proc/sys/kernel/sysrq [[ ${SYSTEMBOOT_STATEMODE} == "module" ]] && return 0 [[ -n ${SAVE_ALL_CACHE} ]] && return 0 [[ -n ${SAVE_ROOTCOPY_INCLUDE} || -n ${SAVE_ROOTCOPY_CHANGES} || -n ${SAVE_ROOTCOPY_EXCLUDE} ]] && return 0 [[ -n ${SAVE_MODULE_CHANGES} || -n ${SAVE_MODULE_INCLUDE} || -n ${SAVE_MODULE_EXCLUDE} ]] && return 0 echo echo "The system will restart/shutdown after a maximum of 60 seconds" echo sleep 60 && echo b > /proc/sysrq-trigger & } ## Возможности магических клавиш SysRq ## Переключает клавиатуру в режим XLATE. Это может пригодиться ## в случаях, когда приложения, использующие raw-моду (например X-сервер) ## заканчивают свою работу аварийно. С помощью команды можно вернуть ## клавиатуру в рабочее состояние. ## Клавиша безопасного доступа (SAK -- Secure Access Key). Ядро ## убивает все процессы на текущей консоли. Вы можете использовать эту ## клавишу, что бы быть уверенным, что пароль не будет украден программой ## троянским конём. Если оригинальный login был подменён злоумышленником ## на троянского коня, то по команде эта вредная программа будет ## убита и init запустит подлинный login. ## Немедленно перезапускает систему, не предпринимая попыток ## синхронизации и демонтирования файловых систем. Эта команда может быть ## использована, если Вы не можете перезапустить систему иным путём. Но ## перед тем, как использовать команду всё-таки рекомендуется подать ## команды (синхронизация файловых систем) и (перемонтирование ## файловых систем в режим "только для чтения"). ## Останавливает систему, если такая возможность предусмотрена в ядре. ## Ядро производит попытку синхронизации файловых систем (т.е. ## записи на диске приводятся в соответствие с записями в кэше). ## Ядро производит попытку перемонтирования файловых систем в ## режим "только для чтения" (ro). ##

Ядро выдаёт dump текущего состояния регистров CPU на текущую консоль. ## Ядро выдаёт список текущих заданий и информацию о них на текущую консоль. ## Всем процессам, кроме init, посылается сигнал SIGTERM. ## Всем процессам, кроме init, посылается сигнал SIGKILL. ## Всем процессам, включая и init, посылается сигнал SIGKILL. ## После этого система становится неработоспособна. ## <0>..<9> Устанавливает loglevel консоли. Т.е. регламентирует вывод ## диагностических сообщений на консоль. Однако, не зависимо от того, ## какой loglevel Вы установите для консоли, диагностические сообщения ## по-прежнему будут регистрироваться демонами syslogd/klogd. ## На консоль выдаётся подсказка по магическим клавишам. На ## самом деле, любая клавиша, не нагруженная определённой функцией, ## выдаёт подсказку, но "h" легче запомнить. ################ ##### MAIN ##### ################ # Если файл подключен как ресурс с функциями, то выйти return 0 2>/dev/null && return 0 exec_sysrq_reboot $@