From 517cb2a2c60e264737ad712701fdd5f3baacae6a Mon Sep 17 00:00:00 2001 From: asmeron Date: Thu, 14 Aug 2025 00:06:55 +0600 Subject: [PATCH] Fix many --- ublinux/default | 2 ++ ublinux/rc.halt.pre/15-cleanup | 8 +++-- ublinux/rc.halt.pre/70-upgrade | 36 +++++++++---------- ublinux/rc.halt.pre/71-kernel | 17 ++++----- ublinux/rc.post.d/17-kiosk-gtk | 6 ++-- ublinux/rc.preinit/06-statemode | 34 +++++++++++------- ublinux/rc.preinit/10-accounts | 10 ++++-- .../rc.preinit/{07-remounthome => 20-remount} | 11 ++++-- 8 files changed, 72 insertions(+), 52 deletions(-) rename ublinux/rc.preinit/{07-remounthome => 20-remount} (75%) diff --git a/ublinux/default b/ublinux/default index 311497f..38bea9f 100644 --- a/ublinux/default +++ b/ublinux/default @@ -17,6 +17,7 @@ declare -A REPOPUBLIC_CACHE declare -A AUTOUPDATE declare -A UBPILE declare -A AUTOINSTALL +declare -A UPDATEHOME ##/rc.desktop/all/* is launching when desktop is ready @@ -158,6 +159,7 @@ ADMGROUPS=wheel,vboxsf,disk ADMUID=1000 ADDADM=yes HASHPASSWD=yescrypt +UPDATEHOME[root]=yes #/rc.preinit/50-xorg #NVIDIATEST="nvidia-current nvidia340 nvidia304 nvidia" diff --git a/ublinux/rc.halt.pre/15-cleanup b/ublinux/rc.halt.pre/15-cleanup index cbb3dd1..d99ffa2 100755 --- a/ublinux/rc.halt.pre/15-cleanup +++ b/ublinux/rc.halt.pre/15-cleanup @@ -8,8 +8,10 @@ ENABLED=yes [[ ${ENABLED} == "yes" ]] || exit 0 # some cleanups -rm -fr /tmp/* /mnt/live/memory/changes/usr/share/apps/ksplash/Themes/Default 2>/dev/null -#rm -f /usr/share/ublinux/wallpapers/default*.jpg 2>/dev/null + rm -fr /tmp/* /mnt/live/memory/changes/usr/share/apps/ksplash/Themes/Default 2>/dev/null +# rm -f /usr/share/ublinux/wallpapers/default*.jpg 2>/dev/null # cleanup empty dirs -for a in /media/* /mnt/* ;do rmdir $a >/dev/null 2>&1 ;done + for a in /media/* /mnt/*; do + rmdir $a >/dev/null 2>&1 + done diff --git a/ublinux/rc.halt.pre/70-upgrade b/ublinux/rc.halt.pre/70-upgrade index fe803b6..4be7ab0 100755 --- a/ublinux/rc.halt.pre/70-upgrade +++ b/ublinux/rc.halt.pre/70-upgrade @@ -21,47 +21,45 @@ ENABLED=yes PATH_KERNEL=$(find /memory/layer-base/*/ -maxdepth 1 -type f -name "vmlinuz*" | head -1 | xargs dirname) # Удаляем модули, отмеченные на устаревшие - for F_REMOVE in $(cat ${F_UPGRADE_CONF} | uniq | grep "remove=" | sed "s/remove=//"); do - [[ -f ${F_REMOVE} ]] && rm -f ${F_REMOVE} 2>/dev/null + [[ -f ${F_UPGRADE_CONF} ]] && for F_REMOVE in $(cat ${F_UPGRADE_CONF} | uniq | grep "remove=" | sed "s/remove=//"); do + [[ -f ${F_REMOVE} ]] && rm -vf ${F_REMOVE} 2>/dev/null done # Переименовываем модули, отмеченные на обновляемые - for F_RENAME_UPGRADE in $(find ${PATH_BASE} ${PATH_MODULES} -type f -name "*.upgrade"); do - [[ -f ${F_RENAME_UPGRADE} ]] && mv -f ${F_RENAME_UPGRADE} ${F_RENAME_UPGRADE/.${EXT}.upgrade/.${EXT}} 2>/dev/null + [[ -n ${PATH_BASE} || -n ${PATH_MODULES} ]] && for F_RENAME_UPGRADE in $(find ${PATH_BASE} ${PATH_MODULES} -type f -name "*.upgrade"); do + [[ -f ${F_RENAME_UPGRADE} ]] && mv -vf ${F_RENAME_UPGRADE} ${F_RENAME_UPGRADE/.${EXT}.upgrade/.${EXT}} 2>/dev/null done # Перемещаем модули, отмеченные на обновляемые - for F_UPGRADE in $(cat ${F_UPGRADE_CONF} | uniq | grep "upgrade=" | sed "s/install=//"); do - for PATH_UPGRADE_ITEM in ${PATH_UPGRADE}; do - [[ -f ${PATH_UPGRADE_ITEM}/${F_UPGRADE##*/} ]] && mv -f ${PATH_UPGRADE_ITEM}/${F_UPGRADE##*/} ${F_UPGRADE%/*} 2>/dev/null + [[ -f ${F_UPGRADE_CONF} ]] && for F_UPGRADE in $(cat ${F_UPGRADE_CONF} | uniq | grep "upgrade=" | sed "s/install=//"); do + [[ -n ${PATH_UPGRADE} ]] && for PATH_UPGRADE_ITEM in ${PATH_UPGRADE}; do + [[ -f ${PATH_UPGRADE_ITEM}/${F_UPGRADE##*/} ]] && mv -vf ${PATH_UPGRADE_ITEM}/${F_UPGRADE##*/} ${F_UPGRADE%/*} 2>/dev/null done done # Перемещаем модули, отмеченные на новые на установку - for F_INSTALL in $(cat ${F_UPGRADE_CONF} | uniq | grep "install=" | sed "s/install=//"); do - for PATH_UPGRADE_ITEM in ${PATH_UPGRADE}; do - [[ -f ${PATH_UPGRADE_ITEM}/${F_INSTALL##*/} ]] && mv -f ${PATH_UPGRADE_ITEM}/${F_INSTALL##*/} ${F_INSTALL%/*} 2>/dev/null + [[ -f ${F_UPGRADE_CONF} ]] && for F_INSTALL in $(cat ${F_UPGRADE_CONF} | uniq | grep "install=" | sed "s/install=//"); do + [[ -n ${PATH_UPGRADE} ]] && for PATH_UPGRADE_ITEM in ${PATH_UPGRADE}; do + [[ -f ${PATH_UPGRADE_ITEM}/${F_INSTALL##*/} ]] && mv -vf ${PATH_UPGRADE_ITEM}/${F_INSTALL##*/} ${F_INSTALL%/*} 2>/dev/null done done # Переименовываем модули, отмеченные на обновление, но отсутствующие в upgrade.conf - for F_NOMARK_UPGRADE in $(find ${PATH_UPGRADE} -type f -name "*.${EXT}*"); do + [[ -n ${PATH_UPGRADE} ]] && for F_NOMARK_UPGRADE in $(find ${PATH_UPGRADE} -type f -name "*.${EXT}*"); do NAME_NOMARK_UPGRADE=${F_NOMARK_UPGRADE##*/} if [[ ${NAME_NOMARK_UPGRADE} =~ ^[0-9]{3}-.* ]]; then - [[ -f ${F_NOMARK_UPGRADE} ]] && mv -f ${F_NOMARK_UPGRADE} $(tail -1 <<< ${PATH_BASE})/${NAME_NOMARK_UPGRADE/.upgrade/} + [[ -f ${F_NOMARK_UPGRADE} ]] && mv -vf ${F_NOMARK_UPGRADE} $(tail -1 <<< ${PATH_BASE})/${NAME_NOMARK_UPGRADE/.upgrade/} 2>/dev/null else - [[ -f ${F_NOMARK_UPGRADE} ]] && mv -f ${F_NOMARK_UPGRADE} $(tail -1 <<< ${PATH_MODULES})/${NAME_NOMARK_UPGRADE/.upgrade/} + [[ -f ${F_NOMARK_UPGRADE} ]] && mv -vf ${F_NOMARK_UPGRADE} $(tail -1 <<< ${PATH_MODULES})/${NAME_NOMARK_UPGRADE/.upgrade/} 2>/dev/null 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 + [[ -n ${PATH_BASE} || -n ${PATH_MODULES} ]] && 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 -I {} 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} {} + - - rm -f ${F_UPGRADE_CONF} - + [[ -n ${PATH_UPGRADE} && -d ${PATH_KERNEL} ]] && find ${PATH_UPGRADE} -type f -regextype sed -regex ".*/vmlinuz-[0-9.]\{5,8\}-[0-9]\{1,4\}" -exec mv -vft "${PATH_KERNEL}" {} + + [[ -n ${PATH_UPGRADE} && -d ${PATH_KERNEL} ]] && find ${PATH_UPGRADE} -type f -regextype sed -regex ".*/ublinux-[0-9.]\{5,8\}-[0-9]\{1,4\}" -exec mv -vft "${PATH_KERNEL}" {} + + [[ -f ${F_UPGRADE_CONF} ]] && rm -vf "${F_UPGRADE_CONF}" diff --git a/ublinux/rc.halt.pre/71-kernel b/ublinux/rc.halt.pre/71-kernel index 588b1e1..ddea0b4 100755 --- a/ublinux/rc.halt.pre/71-kernel +++ b/ublinux/rc.halt.pre/71-kernel @@ -12,6 +12,7 @@ PATH_KERNEL="/usr/lib/modules" copy_newkernel_to_boot(){ # Найти все файлы ядра и initramfs и которые отсутствуют + mountpoint --quiet "${PATH_BOOT}" || return 0 find ${PATH_KERNEL} -maxdepth 2 -name "vmlinuz-*.*.*-*" -print | while read FIND_FILE; do [[ $(stat -c%s $(readlink -e ${FIND_FILE} 2>/dev/null)) != $(stat -c%s ${PATH_BOOT}/${FIND_FILE##*/} 2>/dev/null) ]] \ && install -CDm400 -o root -g root $(readlink -e ${FIND_FILE}) ${PATH_BOOT}/${FIND_FILE##*/} @@ -28,28 +29,28 @@ copy_newkernel_to_boot(){ remove_oldkernel_from_boot(){ # Найти все файлы ядра "vmlinuz-*.*.*-*" и initramfs "ublinux-*.*.*-*" в ${PATH_BOOT}/boot и которые отсутствуют в /usr/modules/*/ удалить - find ${PATH_BOOT} -maxdepth 1 -name "vmlinuz-*.*.*-*" -exec bash -c "find ${PATH_KERNEL} -maxdepth 2 -name \${1##*/} -exec false \{\} + && rm -f \$1" bash {} \; - find ${PATH_BOOT} -maxdepth 1 -name "ublinux-*.*.*-*" -exec bash -c "find ${PATH_KERNEL} -maxdepth 2 -name \${1##*/} -exec false \{\} + && rm -f \$1" bash {} \; + mountpoint --quiet "${PATH_BOOT}" || return 0 + find ${PATH_BOOT} -maxdepth 1 -name "vmlinuz-*.*.*-*" -exec bash -c "find ${PATH_KERNEL} -maxdepth 2 -name \${1##*/} -exec false \{\} + && echo rm -f \$1" bash {} \; + find ${PATH_BOOT} -maxdepth 1 -name "ublinux-*.*.*-*" -exec bash -c "find ${PATH_KERNEL} -maxdepth 2 -name \${1##*/} -exec false \{\} + && echo rm -f \$1" bash {} \; } exec_prepare_menu_kernel(){ # Сформировать меню выбора версии ядра + mountpoint --quiet "${PATH_BOOT}" || return 0 FILE_LANG=${LANG%_*} FILE_BOOTMENU_KERNEL="/memory/data/from/0/boot/grub/ublinux/grub_${FILE_LANG}_settings_kernel.cfg" - PATH_BOOT_KERNEL="/memory/layer-base/0" TXT_RETURN="Return"; TXT_SELECTKERNEL="Select kernel version" TXT_RU_RETURN="Возврат"; TXT_RU_SELECTKERNEL="Выбрать версию ядра" [[ ${FILE_LANG} == "ru" ]] && TXT_RETURN=${TXT_RU_RETURN} && TXT_SELECTKERNEL=${TXT_RU_SELECTKERNEL} - [[ -d ${PATH_BOOT_KERNEL} ]] || return 0 - [[ -f ${FILE_BOOTMENU_KERNEL} ]] && rm -f ${FILE_BOOTMENU_KERNEL} - for VMLINUZ_FILES in ${PATH_BOOT_KERNEL}/vmlinuz-*; do + [[ -f ${FILE_BOOTMENU_KERNEL} ]] && echo rm -f ${FILE_BOOTMENU_KERNEL} + for VMLINUZ_FILES in ${PATH_BOOT}/vmlinuz-*; do [[ -f "${VMLINUZ_FILES}" ]] || continue [[ ${VMLINUZ_FILES} =~ .*\/vmlinuz\-([0-9]+\.[0-9]+\.[a-z0-9_]+\-[0-9]+)$ ]] VMLINUZ_VER=${BASH_REMATCH[1]} - if [[ -n ${VMLINUZ_VER} && -f ${PATH_BOOT_KERNEL}/ublinux-${VMLINUZ_VER} ]]; then + if [[ -n ${VMLINUZ_VER} && -f ${PATH_BOOT}/ublinux-${VMLINUZ_VER} ]]; then VMLINUZ_FILE="vmlinuz-\${VMLINUZ_VER}" UBLINUX_FILE="ublinux-\${VMLINUZ_VER}" - [[ -f ${PATH_BOOT_KERNEL}/addon-${VMLINUZ_VER} ]] && ADDON_FILE="addon-\${VMLINUZ_VER}" || ADDON_FILE="" + [[ -f ${PATH_BOOT}/addon-${VMLINUZ_VER} ]] && ADDON_FILE="addon-\${VMLINUZ_VER}" || ADDON_FILE="" cat << EOF >> "${FILE_BOOTMENU_KERNEL}" menuentry "${TXT_SELECTKERNEL}: ${VMLINUZ_VER}" --unrestricted { VMLINUZ_VER="${VMLINUZ_VER}" diff --git a/ublinux/rc.post.d/17-kiosk-gtk b/ublinux/rc.post.d/17-kiosk-gtk index ecdd089..13b8f5e 100755 --- a/ublinux/rc.post.d/17-kiosk-gtk +++ b/ublinux/rc.post.d/17-kiosk-gtk @@ -15,7 +15,7 @@ XFCE4_LOGOUT_BUTTON=".xfsm-logout-buttons > box:first-child button:nth-child(1) ## Настройка GTK3 для XFCE4 - if [[ -n ${XFCE4_DIALOGPOWER_LOGOUT[@]} ]]; then + if [[ -n ${XFCE4_DIALOGPOWER_LOGOUT[@]} ]]; then for SELECT_USERS in "${!XFCE4_DIALOGPOWER_LOGOUT[@]}"; do USERS=$(cut -d: -f1 <<< ${SELECT_USERS} | tr " ,;" "\n") # Выбрать пользователей из указанных групп @.. @@ -27,11 +27,9 @@ XFCE4_LOGOUT_BUTTON=".xfsm-logout-buttons > box:first-child button:nth-child(1) if [[ ${XFCE4_DIALOGPOWER_LOGOUT[${SELECT_USERS}],,} == "hide" ]]; then grep -q "${XFCE4_LOGOUT_BUTTON}" ${FILE_GTKCSS} 2>/dev/null || echo "${XFCE4_LOGOUT_BUTTON}" >> ${FILE_GTKCSS} else - echo sed "/${XFCE4_LOGOUT_BUTTON}/d" -i ${FILE_GTKCSS} + sed "/${XFCE4_LOGOUT_BUTTON}/d" -i ${FILE_GTKCSS} fi fi done < <(echo -e "$(grep -v "^@" <<< ${USERS})\n${USERS_GROUP}" | uniq) done fi - - \ No newline at end of file diff --git a/ublinux/rc.preinit/06-statemode b/ublinux/rc.preinit/06-statemode index fcaf07e..7bb9ec3 100755 --- a/ublinux/rc.preinit/06-statemode +++ b/ublinux/rc.preinit/06-statemode @@ -23,24 +23,32 @@ 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 - ## Полное сохранение ub.mode=changes - sed -e '$a\SYSTEMBOOT_STATEMODE=changes' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config + ## Полное сохранение HDD: ub.mode=changes + echo 'SYSTEMBOOT_STATEMODE=changes' > ${SYSCONF}/config elif [[ ${STATE_MODE} =~ ^("toxzm"|"machines")$ ]]; then - ## Сохранение в модуль ub.mode=toxzm ub.mode=machines - sed -e '$a\SYSTEMBOOT_STATEMODE=module' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config - elif [[ ${STATE_MODE} == "" && ${STATE_HOME} == "" ]]; then - ## Полная песочница RAM ub.mode= ; ub.home= - sed -e '$a\SYSTEMBOOT_STATEMODE=sandbox' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config + ## Сохранение 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 - ## Песочница с сохранением профиля пользователя ub.mode= ; ub.home=/ublinux-data/homes - sed -e '$a\SYSTEMBOOT_STATEMODE=sandbox_ram_home' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config + ## Песочница, изменения в 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= - sed -e '$a\SYSTEMBOOT_STATEMODE=sandbox_hdd' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config + ## Полная песочница, изменения в 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= - sed -e '$a\SYSTEMBOOT_STATEMODE=sandbox_hdd_home' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config + ## Песочница, изменения в HDD с сохранением профиля пользователя: ub.mode=clear ; ub.home=/... + echo 'SYSTEMBOOT_STATEMODE=sandbox_hdd_home' > ${SYSCONF}/config + else + ## Режим пользователя + echo 'SYSTEMBOOT_STATEMODE=manual' > ${SYSCONF}/config fi } diff --git a/ublinux/rc.preinit/10-accounts b/ublinux/rc.preinit/10-accounts index 0c12bb2..50f3202 100755 --- a/ublinux/rc.preinit/10-accounts +++ b/ublinux/rc.preinit/10-accounts @@ -738,8 +738,6 @@ exec_08_user_members(){ [[ ${SELECT_EXTRAGROUPS} == @(""|"x") ]] && SELECT_EXTRAGROUPS="${USERGROUPS},${DEFAULTGROUP}" || SELECT_EXTRAGROUPS+=",${USERGROUPS},${DEFAULTGROUP}" [[ ${SELECT_UID} == ${ADMUID} && ${ADDADM} == "yes" ]] && SELECT_EXTRAGROUPS+=",${ADMGROUPS}" SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS//;/,}"; SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS//,,/,}" - # Убираем дубликаты групп - SELECT_EXTRAGROUPS=$(sort -u <<< ${SELECT_EXTRAGROUPS//,/$'\n'}); SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS//$'\n'/,} [[ ${SELECT_EXTRAGROUPS} =~ ','$ ]] && SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS%*,} [[ ${SELECT_EXTRAGROUPS:0:1} == "," ]] && SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS:1}" # Создавать группы из параметра SELECT_EXTRAGROUPS @@ -751,7 +749,7 @@ exec_08_user_members(){ user_remove_group "$(printf "%s," "${!USERADD[@]}")" "%all" # Добавить пользователей в группы while IFS= read -ru3 SELECT_USERNAME; do - useradd_local "${SELECT_USERNAME}" + useradd_local ${SELECT_USERNAME} done 3< <(printf "%s\n" "${!USERADD[@]}" | sort -V) elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]] && [[ ${#USERADD[@]} -ne 0 ]]; then if [[ ${PARAM%%=*} =~ ^'USERADD['(.*)']' ]]; then @@ -790,6 +788,12 @@ exec_08_user_members(){ fi } +# Для root принудительно обновить skel в домаший каталог, если включено. По умолчанию включено +exec_98_updatehome_root(){ + local SELECT_USER="root" + [[ "$(declare -p UPDATEHOME 2>/dev/null)" == "declare -A"* && ${UPDATEHOME[${SELECT_USER}],,} == @(yes|y|enable) || ${UPDATEHOME} == @(yes|y|enable) ]] && create_home "${SELECT_USER}" yes +} + # Autodetect DM_HINT_PASSWORD # Если пароли по умолчанию, то DM_HINT_PASSWORD=yes exec_99_dm_hint_password(){ diff --git a/ublinux/rc.preinit/07-remounthome b/ublinux/rc.preinit/20-remount similarity index 75% rename from ublinux/rc.preinit/07-remounthome rename to ublinux/rc.preinit/20-remount index 89e5795..a24929e 100755 --- a/ublinux/rc.preinit/07-remounthome +++ b/ublinux/rc.preinit/20-remount @@ -21,10 +21,16 @@ SYSCONF="${ROOTFS}${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null # Если система загружена в песочнице без HOME и HOME пустой, то HOME подключаем к TMPFS для того что-бы работал аттрибут immutable -exec_remounthome(){ +exec_remount_home(){ [[ ${SYSTEMBOOT_STATEMODE} == @(sandbox|sandbox_hdd) ]] && find ${ROOTFS}/home -maxdepth 0 -empty -exec mount -t tmpfs tmpfs {} \; } +# Если система в полной песочнице и загрузка модулей в RAM, то отмонтируем каталоги загрузки модулей +exec_unmount_root(){ + [[ ${SYSTEMBOOT_STATEMODE} == sandbox_copy2ram ]] \ + && find /memory/data/from/* -maxdepth 0 -exec umount {} \; \ + && find /memory/layer-base/* -maxdepth 0 -exec umount {} \; +} ################ ##### MAIN ##### @@ -33,4 +39,5 @@ exec_remounthome(){ # Если файл подключен как ресурс с функциями, то выйти return 0 2>/dev/null && return 0 - exec_remounthome $@ + exec_remount_home + exec_unmount_root