|
|
#!/usr/bin/env bash
|
|
|
#
|
|
|
# Author: Dmitry Razumov <asmeron@ublinux.com>
|
|
|
# Copyright (c) 2021-2025 UBLinux <support@ublinux.com>
|
|
|
#
|
|
|
# Initial script for UBLinux
|
|
|
# This script are launching before starting init from initrd script
|
|
|
# Current dir allways must be set to root (/)
|
|
|
# All system path must be relative, except initrd dirs
|
|
|
|
|
|
ENABLED=yes
|
|
|
[[ ${ENABLED} == "yes" ]] || exit 0
|
|
|
DEBUGMODE=no
|
|
|
|
|
|
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
|
|
|
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
|
|
|
SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
|
|
|
debug_mode "$0" "$@"
|
|
|
|
|
|
SYSCONF="${ROOTFS}${SYSCONF}"
|
|
|
|
|
|
exec_statemode(){
|
|
|
## Setting state mode
|
|
|
STATE_MODE=$(cmdline_value ub.mode)
|
|
|
STATE_HOME=$(cmdline_value ub.home)
|
|
|
STATE_COPY2RAM=$(cmdline_parameter ub.copy2ram)
|
|
|
sed '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config
|
|
|
if [[ ${STATE_MODE} =~ ^"changes"$ ]]; then
|
|
|
## Полное сохранение HDD: ub.mode=changes
|
|
|
echo 'SYSTEMBOOT_STATEMODE=changes' > ${SYSCONF}/config
|
|
|
elif [[ ${STATE_MODE} =~ ^("toxzm"|"machines")$ ]]; then
|
|
|
## Сохранение RAM и при выключении в модуль: ub.mode=toxzm ub.mode=machines
|
|
|
echo 'SYSTEMBOOT_STATEMODE=module' > ${SYSCONF}/config
|
|
|
elif [[ ${STATE_MODE} == "" && ${STATE_HOME} == "" && ${STATE_COPY2RAM} == "" ]]; then
|
|
|
## Полная песочница, изменения в RAM: ub.mode= ; ub.home=
|
|
|
echo 'SYSTEMBOOT_STATEMODE=sandbox' > ${SYSCONF}/config
|
|
|
elif [[ ${STATE_MODE} == "" && ${STATE_HOME} == "" && ${STATE_COPY2RAM} == "ub.copy2ram" ]]; then
|
|
|
## Полная песочница, изменения в RAM с загрузкой модулей в RAM: ub.mode= ; ub.home= ; ub.copy2ram
|
|
|
echo 'SYSTEMBOOT_STATEMODE=sandbox_copy2ram' > ${SYSCONF}/config
|
|
|
elif [[ ${STATE_MODE} == "" && ${STATE_HOME} =~ ^"/" ]]; then
|
|
|
## Песочница, изменения в RAM с сохранением профиля пользователя: ub.mode= ; ub.home=/ublinux-data/homes
|
|
|
echo 'SYSTEMBOOT_STATEMODE=sandbox_ram_home' > ${SYSCONF}/config
|
|
|
elif [[ ${STATE_MODE} == "clear" && ${STATE_HOME} == "" ]]; then
|
|
|
## Полная песочница, изменения в HDD: ub.mode=clear ; ub.home=
|
|
|
echo 'SYSTEMBOOT_STATEMODE=sandbox_hdd' > ${SYSCONF}/config
|
|
|
elif [[ ${STATE_MODE} == "clear" && ${STATE_HOME} =~ ^"/" ]]; then
|
|
|
## Песочница, изменения в HDD с сохранением профиля пользователя: ub.mode=clear ; ub.home=/...
|
|
|
echo 'SYSTEMBOOT_STATEMODE=sandbox_hdd_home' > ${SYSCONF}/config
|
|
|
else
|
|
|
## Режим пользователя
|
|
|
echo 'SYSTEMBOOT_STATEMODE=manual' > ${SYSCONF}/config
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
|
|
|
################
|
|
|
##### MAIN #####
|
|
|
################
|
|
|
|
|
|
# Если файл подключен как ресурс с функциями, то выйти
|
|
|
return 0 2>/dev/null && return 0
|
|
|
|
|
|
exec_statemode $@
|