Fix remove old modules

master v2.95
Dmitry Razumov 1 year ago
parent 091eaf836b
commit a6afb30603
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -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
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
## <r> Переключает клавиатуру в режим XLATE. Это может пригодиться
## в случаях, когда приложения, использующие raw-моду (например X-сервер)
## заканчивают свою работу аварийно. С помощью команды <r> можно вернуть
## клавиатуру в рабочее состояние.
## <k> Клавиша безопасного доступа (SAK -- Secure Access Key). Ядро
## убивает все процессы на текущей консоли. Вы можете использовать эту
## клавишу, что бы быть уверенным, что пароль не будет украден программой
## троянским конём. Если оригинальный login был подменён злоумышленником
## на троянского коня, то по команде <k> эта вредная программа будет
## убита и init запустит подлинный login.
## <b> Немедленно перезапускает систему, не предпринимая попыток
## синхронизации и демонтирования файловых систем. Эта команда может быть
## использована, если Вы не можете перезапустить систему иным путём. Но
## перед тем, как использовать команду <b> всё-таки рекомендуется подать
## команды <s> (синхронизация файловых систем) и <u> (перемонтирование
## файловых систем в режим "только для чтения").
## <o> Останавливает систему, если такая возможность предусмотрена в ядре.
## <s> Ядро производит попытку синхронизации файловых систем (т.е.
## записи на диске приводятся в соответствие с записями в кэше).
## <u> Ядро производит попытку перемонтирования файловых систем в
## режим "только для чтения" (ro).
## <p> Ядро выдаёт dump текущего состояния регистров CPU на текущую консоль.
## <t> Ядро выдаёт список текущих заданий и информацию о них на текущую консоль.
## <e> Всем процессам, кроме init, посылается сигнал SIGTERM.
## <i> Всем процессам, кроме init, посылается сигнал SIGKILL.
## <l> Всем процессам, включая и init, посылается сигнал SIGKILL.
## После этого система становится неработоспособна.
## <0>..<9> Устанавливает loglevel консоли. Т.е. регламентирует вывод
## диагностических сообщений на консоль. Однако, не зависимо от того,
## какой loglevel Вы установите для консоли, диагностические сообщения
## по-прежнему будут регистрироваться демонами syslogd/klogd.
## <h> На консоль выдаётся подсказка по магическим клавишам. На
## самом деле, любая клавиша, не нагруженная определённой функцией,
## выдаёт подсказку, но "h" легче запомнить.
################
##### MAIN #####
################
# Если файл подключен как ресурс с функциями, то выйти
return 0 2>/dev/null && return 0
exec_sysrq_reboot $@

@ -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}

@ -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"

@ -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} {} +

@ -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*

@ -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"

@ -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(){

@ -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"

@ -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

@ -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]

Loading…
Cancel
Save