#!/usr/bin/env bash ENABLED=yes [ "$ENABLED" != "yes" ] && exit 0 #grep -q 1 /run/ublinux_started || exit 0 #. /usr/lib/ublinux/functions #. /usr/lib/ublinux/os-config #SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null EXT="ubm" PATH_BASE=$(find /memory/layer-base/*/ -maxdepth 1 -type d -name "base") PATH_MODULES=$(find /memory/layer-base/*/ -maxdepth 1 -type d -name "modules") PATH_UPGRADE=$(find /memory/layer-base/*/ -maxdepth 1 -type d -name "upgrade") F_UPGRADE_CONF=$(find ${PATH_UPGRADE} -maxdepth 1 -type f -name "upgrade.conf") 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 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 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 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 done done # Переименовываем модули, отмеченные на обновление, но отсутствующие в upgrade.conf 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/} else [[ -f ${F_NOMARK_UPGRADE} ]] && mv -f ${F_NOMARK_UPGRADE} $(tail -1 <<< ${PATH_MODULES})/${NAME_NOMARK_UPGRADE/.upgrade/} fi done # Обновление найденных модулей ядра 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}