diff --git a/ublinux/rc.halt.pre/01-sysrq-sleepshutdown b/ublinux/rc.halt.pre/01-sysrq-sleepshutdown index dcda82a..5edba7a 100755 --- a/ublinux/rc.halt.pre/01-sysrq-sleepshutdown +++ b/ublinux/rc.halt.pre/01-sysrq-sleepshutdown @@ -1,8 +1,70 @@ -#!/bin/bash +#!/usr/bin/env bash ENABLED=yes [[ ${ENABLED} == "yes" ]] || exit 0 -#echo "Sleep 60 sec to reboot /proc/sysrq-trigger" -#echo 1 > /proc/sys/kernel/sysrq -sleep 60 && echo b > /proc/sysrq-trigger & \ No newline at end of file +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 $@ diff --git a/ublinux/rc.halt.pre/10-shutdown b/ublinux/rc.halt.pre/10-shutdown index d1520a6..4296def 100755 --- a/ublinux/rc.halt.pre/10-shutdown +++ b/ublinux/rc.halt.pre/10-shutdown @@ -11,9 +11,9 @@ HALTEXCLUDESTOP="" PATH=/usr/lib/ublinux/scripts:$PATH . /usr/lib/ublinux/default -SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null -SOURCE=${SYSCONF}/system; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null -SOURCE=${SYSCONF}/desktop; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null # Stop DisplayManager @@ -22,7 +22,7 @@ SOURCE=${SYSCONF}/desktop; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null # Stop all running service #HALTSERVICESSTOP="$HALTSERVICESSTOP $(systemctl list-units --type=service --state=running | grep -E "running" | awk '{$1=$1;print}' | cut -d ' ' -f 1 | egrep -v " $HALTEXCLUDESTOP" | xargs)" for i in ${HALTSERVICESSTOP}; do - [ -z "${i}" ] || systemctl stop ${i} 2>/dev/null + [[ -z "${i}" ]] || systemctl stop ${i} 2>/dev/null done # Kill all users apps @@ -33,5 +33,5 @@ done #pkill -U $LISTUSERS -[ -z "$HALTPROCESSESKILL" ] || killall -9 $HALTPROCESSESKILL +[[ -z ${HALTPROCESSESKILL} ]] || killall -9 ${HALTPROCESSESKILL} diff --git a/ublinux/rc.halt.pre/20-grub b/ublinux/rc.halt.pre/20-grub index 18a9c73..1b611e1 100755 --- a/ublinux/rc.halt.pre/20-grub +++ b/ublinux/rc.halt.pre/20-grub @@ -11,7 +11,7 @@ debug_mode "$0" "$@" SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null -SOURCE=${SYSCONF}/boot; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/boot; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null get_path_grub2(){ NAME_GRUB_CFG="grub.cfg" diff --git a/ublinux/rc.halt.pre/70-upgrade b/ublinux/rc.halt.pre/70-upgrade index ce83f0e..7e4fb0f 100755 --- a/ublinux/rc.halt.pre/70-upgrade +++ b/ublinux/rc.halt.pre/70-upgrade @@ -7,7 +7,7 @@ ENABLED=yes #. /usr/lib/ublinux/functions #. /usr/lib/ublinux/default -#SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null +#SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null EXT="ubm" PATH_BASE=$(find /memory/layer-base/*/ -maxdepth 1 -type d -name "base") @@ -50,6 +50,10 @@ ENABLED=yes fi done + # Удаляем модули с одинаковыми именами старых версий + find ${PATH_BASE} ${PATH_MODULES} -maxdepth 1 -name "*.${EXT}" 2>/dev/null | sed -En "s/(.*\/)((.*)-([^-]+)-([^-]+)-[^-]+\.${EXT})/\1|\3|\2/p" | sort --field-separator="|" --key=3rbV | awk -F '|' 'prefixes[$2]++ {print $1$3}' | xargs rm -vf 2>/dev/null + # TODO: Вырезать из файла чек сумм имена удаляемых модулей + # Обновление найденных модулей ядра find ${PATH_UPGRADE} -type f -regextype sed -regex ".*/vmlinuz-[0-9.]\{5,8\}-[0-9]\{1,4\}" -exec mv -ft ${PATH_KERNEL} {} + find ${PATH_UPGRADE} -type f -regextype sed -regex ".*/ublinux-[0-9.]\{5,8\}-[0-9]\{1,4\}" -exec mv -ft ${PATH_KERNEL} {} + diff --git a/ublinux/rc.halt.pre/75-chmod b/ublinux/rc.halt.pre/75-chmod index e2589bb..8b408ed 100755 --- a/ublinux/rc.halt.pre/75-chmod +++ b/ublinux/rc.halt.pre/75-chmod @@ -6,12 +6,12 @@ ENABLED=yes chmod_ublinux() { local PATH_UBLINUX=$1 if [[ -w ${PATH_UBLINUX} ]]; then - chown -fR root:root "${PATH_UBLINUX}"/{base,machines,modules,optional,upgrade} 2>/dev/null + chown -fR root:root "${PATH_UBLINUX}"/{base,machines,modules,optional,upgrade,install} 2>/dev/null chown -f root:root "${PATH_UBLINUX}"/{cache,changes,rootcopy,homes} 2>/dev/null - chmod -f 0750 "${PATH_UBLINUX}"/{base,machines,modules,machines/dynamic,machines/static,optional,upgrade} 2>/dev/null + chmod -f 0750 "${PATH_UBLINUX}"/{base,machines,modules,machines/dynamic,machines/static,optional,upgrade,install} 2>/dev/null chmod -f 0755 "${PATH_UBLINUX}"/{cache,changes,rootcopy,homes} 2>/dev/null - find "${PATH_UBLINUX}"/{base,machines,modules,optional,upgrade}/ -type f -exec chmod -f 0640 {} + 2>/dev/null + find "${PATH_UBLINUX}"/{base,machines,modules,optional,upgrade,install}/ -type f -exec chmod -f 0640 {} + 2>/dev/null chmod -f 0644 "${PATH_UBLINUX}"/LICENSE*; chown -f root:root "${PATH_UBLINUX}"/LICENSE* chmod -f 0640 "${PATH_UBLINUX}"/VERSION*; chown -f root:root "${PATH_UBLINUX}"/VERSION* chmod -f 0640 "${PATH_UBLINUX}"/boot*; chown -f root:root "${PATH_UBLINUX}"/boot* diff --git a/ublinux/rc.halt.pre/80-savetomodule b/ublinux/rc.halt.pre/80-savetomodule index f8aba53..e322212 100755 --- a/ublinux/rc.halt.pre/80-savetomodule +++ b/ublinux/rc.halt.pre/80-savetomodule @@ -7,8 +7,8 @@ ENABLED=no . /usr/lib/ublinux/functions . /usr/lib/ublinux/default -SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null -SOURCE=${SYSCONF}/system; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SAVETOMODULEOPTIONS="$MKSQFS_FASTALG" diff --git a/ublinux/rc.halt.pre/85-save-cache b/ublinux/rc.halt.pre/85-save-cache index 3bf4738..78ed8f0 100755 --- a/ublinux/rc.halt.pre/85-save-cache +++ b/ublinux/rc.halt.pre/85-save-cache @@ -12,9 +12,9 @@ debug_mode "$0" "$@" SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 -SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null -SOURCE=${SYSCONF}/save; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null -SOURCE=${SYSCONF}/network; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/save; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null exec_save_all_cache(){ diff --git a/ublinux/rc.halt.pre/86-save-rootcopy b/ublinux/rc.halt.pre/86-save-rootcopy index 7faedd4..8f6185e 100755 --- a/ublinux/rc.halt.pre/86-save-rootcopy +++ b/ublinux/rc.halt.pre/86-save-rootcopy @@ -11,8 +11,8 @@ debug_mode "$0" "$@" SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null -SOURCE=${SYSCONF}/save; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null -SOURCE=${SYSCONF}/network; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/save; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null PATH_CHANGES="/memory/changes" NAME_ROOTCOPY="rootcopy" diff --git a/ublinux/rc.halt.pre/90-deactivate b/ublinux/rc.halt.pre/90-deactivate index 79fd3c3..11d88f1 100755 --- a/ublinux/rc.halt.pre/90-deactivate +++ b/ublinux/rc.halt.pre/90-deactivate @@ -9,7 +9,7 @@ EXT="ubm" COREMODS=".*/[0-9]{3}-core-[0-9]{4}-.*\.${EXT}|.*/[0-9]{3}-ublinux-[0-9]{4}-.*\.${EXT}" #IMAGES=/mnt/live/memory/images IMAGES=/memory/bundles -[ -f /etc/initvars ] && . /etc/initvars && IMAGES=${SYSMNT}/bundles +[[ -f /etc/initvars ]] && . /etc/initvars && IMAGES=${SYSMNT}/bundles sync; sync; sync; echo 3 > /proc/sys/vm/drop_caches # umount any modules squashfs diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index 5c4f20d..6f5d409 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -1430,7 +1430,7 @@ VERSION= ## =@dislock # Установить владельца:группу домашний_пользователь:домашний_пользователь и очистить ACL права на каталог рабочего стола рекурсивно ## APPDESKTOP_PLACEONDESKTOP[superadmin,@wheel]=ubinstall,htop ## APPDESKTOP_PLACEONDESKTOP[user-1]=htop@lock -## APPDESKTOP_PLACEONDESKTOP[user-2]=*@lock +## APPDESKTOP_PLACEONDESKTOP[user-2]=@lock ## APPDESKTOP_PLACEONDESKTOP=gimp,pinta [/etc/ublinux/desktop]