diff --git a/ublinux/rc.halt.pre/71-kernel b/ublinux/rc.halt.pre/71-kernel index feb47ff..a528cc1 100755 --- a/ublinux/rc.halt.pre/71-kernel +++ b/ublinux/rc.halt.pre/71-kernel @@ -13,23 +13,11 @@ 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 + find ${PATH_KERNEL} -maxdepth 2 \( -name "vmlinuz-*.*.*-*" -o -name "ublinux-*.*.*-*" -o -name "addon-*.*.*-*" \) -print | while read FIND_FILE; do local DTIME_FIND_FILE=$(stat -c'%Y' $(readlink -e ${FIND_FILE} 2>/dev/null)) - [[ -e ${PATH_BOOT}/${FIND_FILE##*/} ]] && local DTIME_BOOT_FILE=$(stat -c'%Y' ${PATH_BOOT}/${FIND_FILE##*/} 2>/dev/null) || local DTIME_BOOT_FILE= + [[ -e ${PATH_BOOT}/${FIND_FILE##*/} ]] && local DTIME_BOOT_FILE=$(stat -c'%Y' ${PATH_BOOT}/${FIND_FILE##*/} 2>/dev/null) || local DTIME_BOOT_FILE=0 [[ ${DTIME_FIND_FILE} =~ ^[0-9]+$ && ${DTIME_BOOT_FILE} =~ ^[0-9]+$ ]] && [[ ${DTIME_FIND_FILE} -gt ${DTIME_BOOT_FILE} ]] \ - && install -CDm400 -o root -g root $(readlink -e ${FIND_FILE}) ${PATH_BOOT}/${FIND_FILE##*/} - done - find ${PATH_KERNEL} -maxdepth 2 -name "ublinux-*.*.*-*" -print | while read FIND_FILE; do - local DTIME_FIND_FILE=$(stat -c'%Y' $(readlink -e ${FIND_FILE} 2>/dev/null)) - [[ -e ${PATH_BOOT}/${FIND_FILE##*/} ]] && local DTIME_BOOT_FILE=$(stat -c'%Y' ${PATH_BOOT}/${FIND_FILE##*/} 2>/dev/null) || local DTIME_BOOT_FILE= - [[ ${DTIME_FIND_FILE} =~ ^[0-9]+$ && ${DTIME_BOOT_FILE} =~ ^[0-9]+$ ]] && [[ ${DTIME_FIND_FILE} -gt ${DTIME_BOOT_FILE} ]] \ - && install -CDm400 -o root -g root $(readlink -e ${FIND_FILE}) ${PATH_BOOT}/${FIND_FILE##*/} - done - find ${PATH_KERNEL} -maxdepth 2 -name "addon-*.*.*-*" -print | while read FIND_FILE; do - local DTIME_FIND_FILE=$(stat -c'%Y' $(readlink -e ${FIND_FILE} 2>/dev/null)) - [[ -e ${PATH_BOOT}/${FIND_FILE##*/} ]] && local DTIME_BOOT_FILE=$(stat -c'%Y' ${PATH_BOOT}/${FIND_FILE##*/} 2>/dev/null) || local DTIME_BOOT_FILE= - [[ ${DTIME_FIND_FILE} =~ ^[0-9]+$ && ${DTIME_BOOT_FILE} =~ ^[0-9]+$ ]] && [[ ${DTIME_FIND_FILE} -gt ${DTIME_BOOT_FILE} ]] \ - && install -CDm400 -o root -g root $(readlink -e ${FIND_FILE}) ${PATH_BOOT}/${FIND_FILE##*/} + && cp -aL "${FIND_FILE}" "${PATH_BOOT}/" && chown root:root "${PATH_BOOT}/${FIND_FILE##*/}" && chmod 400 "${PATH_BOOT}/${FIND_FILE##*/}" done } @@ -48,7 +36,7 @@ exec_prepare_menu_kernel(){ 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} - [[ -f ${FILE_BOOTMENU_KERNEL} ]] && rm -f ${FILE_BOOTMENU_KERNEL} + local DATA_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]+)$ ]] @@ -57,28 +45,32 @@ exec_prepare_menu_kernel(){ VMLINUZ_FILE="vmlinuz-\${VMLINUZ_VER}" UBLINUX_FILE="ublinux-\${VMLINUZ_VER}" [[ -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}" - VMLINUZ_FILE="${VMLINUZ_FILE}" - UBLINUX_FILE="${UBLINUX_FILE}" - ADDON_FILE="${ADDON_FILE}" + DATA_BOOTMENU_KERNEL+=\ +" menuentry \"${TXT_SELECTKERNEL}: ${VMLINUZ_VER}\" --unrestricted { + VMLINUZ_VER=\"${VMLINUZ_VER}\" + VMLINUZ_FILE=\"${VMLINUZ_FILE}\" + UBLINUX_FILE=\"${UBLINUX_FILE}\" + ADDON_FILE=\"${ADDON_FILE}\" export VMLINUZ_VER export VMLINUZ_FILE export UBLINUX_FILE export ADDON_FILE configfile \${prefix}/ublinux/grub_${FILE_LANG}.cfg } -EOF +" fi done - cat << EOF >> "${FILE_BOOTMENU_KERNEL}" - if [ -f \${prefix}/ublinux/grub_${FILE_LANG}.cfg ]; then - menuentry "${TXT_RETURN}" --unrestricted { + if [[ -n ${DATA_BOOTMENU_KERNEL} ]]; then + DATA_BOOTMENU_KERNEL+=\ +" if [ -f \${prefix}/ublinux/grub_${FILE_LANG}.cfg ]; then + menuentry \"${TXT_RETURN}\" --unrestricted { configfile \${prefix}/ublinux/grub_${FILE_LANG}.cfg } + fi" + [[ -f ${FILE_BOOTMENU_KERNEL} ]] && [[ "$(< ${FILE_BOOTMENU_KERNEL})" == "${DATA_BOOTMENU_KERNEL}" ]] || echo "${DATA_BOOTMENU_KERNEL}" > "${FILE_BOOTMENU_KERNEL}" + else + [[ -f ${FILE_BOOTMENU_KERNEL} ]] && rm -f ${FILE_BOOTMENU_KERNEL} fi -EOF } copy_newkernel_to_boot