Добавлены комментарии на английском

master
Mike Khiretskiy 10 years ago
parent 4697b4e0a4
commit 63879320a4

@ -26,23 +26,30 @@ DEBUG_LOG=/var/log/calculate/cl-kernel.log
KVER= KVER=
KERNEL_DIR=${DEFAULT_KERNEL_DIRECTORY} KERNEL_DIR=${DEFAULT_KERNEL_DIRECTORY}
# создавать базовую конфигурацию ядра # создавать базовую конфигурацию ядра
# create the base kernel configuration
CREATE_BASE=1 CREATE_BASE=1
# создавать текущую конфигурацию ядра # создавать текущую конфигурацию ядра
# create the current kernel configuration
CREATE_NEW=1 CREATE_NEW=1
# собирать ядро после конфигурации # собирать ядро после конфигурации
# compile the kernel once configuration is complete
BUILD_KERNEL=1 BUILD_KERNEL=1
# права на файл шаблона # права на файл шаблона
# template file privileges
CHMOD=0644 CHMOD=0644
# наличие dracut в системе # наличие dracut в системе
# dracut present or not in the system
DRACUT=$(which dracut 2>/dev/null) DRACUT=$(which dracut 2>/dev/null)
declare -a TAILOUT=() declare -a TAILOUT=()
# прервать скрипт в случае ошибки любой из команд # прервать скрипт в случае ошибки любой из команд
# break the script execution in case of a command error
set -e set -e
: >$DEBUG_LOG : >$DEBUG_LOG
# вывод короткой справки # вывод короткой справки
# show the short help message
usage() { usage() {
echo $"Usage: $0 [OPTION] echo $"Usage: $0 [OPTION]
@ -54,6 +61,7 @@ ${DESCRIPTION}
} }
# вывод полной справки # вывод полной справки
# show the long help message
long_usage() { long_usage() {
echo $"Usage: $0 [OPTION] echo $"Usage: $0 [OPTION]
@ -72,6 +80,7 @@ ${DESCRIPTION}
} }
# подготовить параметры командной строки # подготовить параметры командной строки
# prepare the commmand line parameters
rearrange_params() { rearrange_params() {
TEMP=$(unset POSIXLY_CORRECT; getopt \ TEMP=$(unset POSIXLY_CORRECT; getopt \
-o "hs" \ -o "hs" \
@ -90,6 +99,7 @@ rearrange_params() {
} }
# выполнить параметры командной строки # выполнить параметры командной строки
# apply the command line parameters
do_args() { do_args() {
while :; do while :; do
case $1 in case $1 in
@ -138,6 +148,7 @@ do_args() {
} }
# использовать параметры из make.conf # использовать параметры из make.conf
# apply the make.conf options
source_makeconf() { source_makeconf() {
[[ -f /etc/make.conf ]] && source /etc/make.conf [[ -f /etc/make.conf ]] && source /etc/make.conf
if [[ -d /etc/portage/make.conf ]] if [[ -d /etc/portage/make.conf ]]
@ -150,6 +161,7 @@ source_makeconf() {
} }
# получить значение переменной calculate # получить значение переменной calculate
# get the value of variable 'calculate'
variable_value() variable_value()
{ {
local varname=$1 local varname=$1
@ -157,52 +169,61 @@ variable_value()
} }
# оставить только названия параметров + "=" # оставить только названия параметров + "="
# keep parameter names only + "="
options_name() { options_name() {
sed -r 's/^# (CON.*) is not set.*$/\1=/' | sed -r 's/^(CON.*=).*/\1/' sed -r 's/^# (CON.*) is not set.*$/\1=/' | sed -r 's/^(CON.*=).*/\1/'
} }
# преобразовать опции в синтаксис удаления параметра # преобразовать опции в синтаксис удаления параметра
# convert the options into parameter removal syntax
remove_syntax() { remove_syntax() {
sed -r 's/^(.*=).*$/!\1/' sed -r 's/^(.*=).*$/!\1/'
} }
# преобразовать CONFIG_XXX=n -> # CONFIG_XXX is not set # преобразовать CONFIG_XXX=n -> # CONFIG_XXX is not set
# make the conversion # CONFIG_XXX is not set -> CONFIG_XXX=n
n2not_set() { n2not_set() {
sed -r 's/(CONFIG.*)=n/# \1 is not set/' sed -r 's/(CONFIG.*)=n/# \1 is not set/'
} }
# получить разницу в конфигурационных файлах # получить разницу в конфигурационных файлах
# get a difference of configuration files
diff_config() { diff_config() {
diff -u <(grep CONFIG_ $1 | sort | n2not_set) <(grep CONFIG_ $2 | sort | n2not_set) diff -u <(grep CONFIG_ $1 | sort | n2not_set) <(grep CONFIG_ $2 | sort | n2not_set)
} }
# получить разницу в параметрах конфигурационных файлов # получить разницу в параметрах конфигурационных файлов
# get paramters difference of configuration files
diff_config_options() { diff_config_options() {
diff -u <(cat $1 | options_name | sort) <(cat $2 | options_name | sort) diff -u <(cat $1 | options_name | sort) <(cat $2 | options_name | sort)
} }
# изменённые параметры # изменённые параметры
# changed parameters
append_options() { append_options() {
diff_config $1 $2 | grep -e "^+CON" -e "^+# CON" | sed 's/^.//' | sort diff_config $1 $2 | grep -e "^+CON" -e "^+# CON" | sed 's/^.//' | sort
} }
# удаленные параметры # удаленные параметры
# removed parameters
removed_options() { removed_options() {
diff_config_options $1 $2 | grep -e "^-CON" | sed 's/^.//' | sort diff_config_options $1 $2 | grep -e "^-CON" | sed 's/^.//' | sort
} }
# получить содержимое шаблона # получить содержимое шаблона
# get the template contents
diff_template_body() { diff_template_body() {
append_options $1 $2 append_options $1 $2
removed_options $1 $2 | remove_syntax removed_options $1 $2 | remove_syntax
} }
# вывести заголов для шаблона # вывести заголов для шаблона
# show the template headers
# Args: # Args:
# категория/название пакета # category/package name
# версия пакета # package version
diff_template_head() { diff_template_head() {
local category_pn=$1 local category_pn=$1
local pv=$2 local pv=$2
@ -210,11 +231,12 @@ diff_template_head() {
} }
# вывести полный шаблон # вывести полный шаблон
# show the full template
# Args: # Args:
# категория/название пакета # category/package name
# версия пакета # package version
# файл базовой конфигурации # base configuration file
# файл новой конфигурации # new configuration file
create_template() { create_template() {
local category_pn=$1 local category_pn=$1
local pv=$2 local pv=$2
@ -225,11 +247,12 @@ create_template() {
} }
# получить конфигурацию ядра # получить конфигурацию ядра
# get the kernel configuration
# Args: # Args:
# каталог с исходным кодом ядра # kernel sources directory
# категория/название пакета # category/package name
# версия пакета # package version
# применяемые шаблоны (локации) # used templates (locations)
create_kernel_config() { create_kernel_config() {
local kernel_dir=$1 local kernel_dir=$1
local category_pn=( ${2/\// } ) local category_pn=( ${2/\// } )
@ -237,36 +260,44 @@ create_kernel_config() {
local pn=${category_pn[1]} local pn=${category_pn[1]}
local pv=$3 local pv=$3
# создать временную директорию для выполнения шаблонов # создать временную директорию для выполнения шаблонов
# create temporary directory for templates applying
local tempdir=$(${MKTEMP} -d) local tempdir=$(${MKTEMP} -d)
[[ -n $4 ]] && local templates="-T $4" [[ -n $4 ]] && local templates="-T $4"
# получить конфигурацию ядра по умолчанию, нужной архитектуры # получить конфигурацию ядра по умолчанию, нужной архитектуры
# get default kernel configuration for architecture
local temp_config=".config_clkernel_${ARCH}" local temp_config=".config_clkernel_${ARCH}"
(cd ${kernel_dir};ARCH=$MARCH KCONFIG_CONFIG=${temp_config} make defconfig;mv ${temp_config} ${tempdir}/.config) &>>$DEBUG_LOG || (cd ${kernel_dir};ARCH=$MARCH KCONFIG_CONFIG=${temp_config} make defconfig;mv ${temp_config} ${tempdir}/.config) &>>$DEBUG_LOG ||
eerror $"Failed to create the default kernel config" eerror $"Failed to create the default kernel config"
# выполнить шаблоны (патчи) # выполнить шаблоны (патчи)
# apply templates (patches)
/usr/sbin/cl-core-patch --march=$TEMPLATE_ARCH --pkg-name ${pn} --pkg-category ${category} --pkg-version=${pv} --pkg-slot=${pv} --pkg-path=$tempdir $templates &>>$DEBUG_LOG || eerror $"Failed to apply kernel templates" /usr/sbin/cl-core-patch --march=$TEMPLATE_ARCH --pkg-name ${pn} --pkg-category ${category} --pkg-version=${pv} --pkg-slot=${pv} --pkg-path=$tempdir $templates &>>$DEBUG_LOG || eerror $"Failed to apply kernel templates"
# вывести содержимое файла конфигурации ядра # вывести содержимое файла конфигурации ядра
# display content of kernel configuration file
cat $tempdir/.config || eerror $"Kernel configuration file not found" cat $tempdir/.config || eerror $"Kernel configuration file not found"
rm -rf $tempdir &>>$DEBUG_LOG rm -rf $tempdir &>>$DEBUG_LOG
} }
# проверить содержит ли каталог полный исходный код ядра # проверить, содержит ли каталог полный исходный код ядра
# check if the directory contains the full kernel sources
check_kernel_sources() { check_kernel_sources() {
local sources_dir=$1 local sources_dir=$1
[[ -f ${sources_dir}/arch/x86/configs/i386_defconfig ]] [[ -f ${sources_dir}/arch/x86/configs/i386_defconfig ]]
} }
# версия исходного кода ядра # версия исходного кода ядра
# kernel sources version
sources_ver() { sources_ver() {
basename "$(readlink -f $1)" | sed 's/linux-//' || true basename "$(readlink -f $1)" | sed 's/linux-//' || true
} }
# текущее ядро # текущее ядро
# current_kernel
current_kernel() { current_kernel() {
sources_ver /usr/src/linux sources_ver /usr/src/linux
} }
# вывести список версий ядер с полным исходным кодом # вывести список версий ядер с полным исходным кодом
# list all kernels with full sources available
list_kernel() { list_kernel() {
local asterisk=$(echo -e "\033[1m*\033[0m") local asterisk=$(echo -e "\033[1m*\033[0m")
local green_asterisk=$(echo -e "\033[1;32m*\033[0m") local green_asterisk=$(echo -e "\033[1;32m*\033[0m")
@ -280,13 +311,15 @@ list_kernel() {
} }
# вывести сообщение и добавить его в список выводимых после сборки ядра сообщений # вывести сообщение и добавить его в список выводимых после сборки ядра сообщений
# show the message and add it to the list of messages to be displayed after compilation
einfo_tail() { einfo_tail() {
einfo $* einfo $*
TAILOUT+=( "$*" ) TAILOUT+=( "$*" )
} }
# получить содержимое текущего конфига # получить содержимое текущего конфига
# .config в директории исходного кода ядра # get the content of current kernel configuration
# .config into kernel sources directory
# /boot/config- # /boot/config-
# /proc/config.gz # /proc/config.gz
get_old_config() { get_old_config() {
@ -318,6 +351,8 @@ _qfile() {
(cd /; qfile $*) (cd /; qfile $*)
} }
# проверить принадлежит ли директория только одному пакету
# check that the directory belongs to only one package
check_belong() { check_belong() {
local fn=$1 local fn=$1
local linenum=$(_qfile -C $fn | wc -l) local linenum=$(_qfile -C $fn | wc -l)
@ -333,24 +368,30 @@ check_belong() {
###################### ######################
# Обработать параметры # Обработать параметры
# Process the options
###################### ######################
rearrange_params "$@" rearrange_params "$@"
eval set -- "$TEMP" eval set -- "$TEMP"
do_args "$@" do_args "$@"
######################## ########################
# Подготовить переменные # Подготовить переменные
# Prepare variables
######################## ########################
# вычислить архитектуру # вычислить архитектуру
# detect the architecture
[[ -z $MARCH ]] && MARCH=$(/usr/bin/arch) [[ -z $MARCH ]] && MARCH=$(/usr/bin/arch)
if [[ "$MARCH" == "x86" ]] || [[ "$MARCH" == "i686" ]] if [[ "$MARCH" == "x86" ]] || [[ "$MARCH" == "i686" ]]
then then
# архитектура для конфигурации по умолчанию # архитектура для конфигурации по умолчанию
# default configuration architecture
MARCH=i386 MARCH=i386
# templates architecture
# архитектура для шаблонов # архитектура для шаблонов
TEMPLATE_ARCH=i686 TEMPLATE_ARCH=i686
# название архитектуры # название архитектуры
# architecture name
NAME_ARCH=x86 NAME_ARCH=x86
else else
TEMPLATE_ARCH=$MARCH TEMPLATE_ARCH=$MARCH
@ -358,11 +399,13 @@ else
fi fi
# подготовить имя для шаблона очистить старые временные данные # подготовить имя для шаблона очистить старые временные данные
# prepare the template name; clear old temporary data
TMP_TEMPLATE=/tmp/cl_kernel_${MARCH} TMP_TEMPLATE=/tmp/cl_kernel_${MARCH}
MKTEMP="/usr/bin/mktemp ${TMP_TEMPLATE}.XXXXXX" MKTEMP="/usr/bin/mktemp ${TMP_TEMPLATE}.XXXXXX"
rm -rf ${TMP_TEMPLATE}* rm -rf ${TMP_TEMPLATE}*
# пропустить сборку ядра если выбранная архитектура и архитектура машины отличаются # пропустить сборку ядра если выбранная архитектура и архитектура машины отличаются
# skip the kernel compilation if selected architecture is different from machine architecture
if [[ $TEMPLATE_ARCH != $(/usr/bin/arch) ]] if [[ $TEMPLATE_ARCH != $(/usr/bin/arch) ]]
then then
OTHER_ARCH=1 OTHER_ARCH=1
@ -370,6 +413,7 @@ then
fi fi
# вывести список доступных ядер # вывести список доступных ядер
# list avaiable kernels
if [[ $KVER == "list" ]] || [[ $KVER_OLD == "list" ]] if [[ $KVER == "list" ]] || [[ $KVER_OLD == "list" ]]
then then
list_kernel $(current_kernel) list_kernel $(current_kernel)
@ -377,6 +421,7 @@ then
fi fi
# получить директорию ядра по версии # получить директорию ядра по версии
# get the kernel directory by version
if [[ -n $KVER ]] if [[ -n $KVER ]]
then then
KERNEL_DIR=${SRC_DIRECTORY}/linux-${KVER} KERNEL_DIR=${SRC_DIRECTORY}/linux-${KVER}
@ -386,6 +431,7 @@ then
KERNEL_OLD_DIR=${SRC_DIRECTORY}/linux-${KVER_OLD} KERNEL_OLD_DIR=${SRC_DIRECTORY}/linux-${KVER_OLD}
fi fi
# проверить правильность исходников # проверить правильность исходников
# check the integrity of the sources
for check_dir in ${KERNEL_DIR} ${KERNEL_OLD_DIR} for check_dir in ${KERNEL_DIR} ${KERNEL_OLD_DIR}
do do
[[ -d ${check_dir} ]] || eerror $"Kernel directory ${check_dir} not found" [[ -d ${check_dir} ]] || eerror $"Kernel directory ${check_dir} not found"
@ -393,12 +439,14 @@ do
done done
# получить версию из директории ядра # получить версию из директории ядра
# get the version from the kernel directory
if [[ -z $KVER ]] if [[ -z $KVER ]]
then then
KVER=$(sources_ver $KERNEL_DIR) KVER=$(sources_ver $KERNEL_DIR)
fi fi
# проверка доступности safemode # проверка доступности safemode
# check if safemode is available
if [[ -n $SAFEMODE ]] && ! [[ $KVER =~ -calculate ]] if [[ -n $SAFEMODE ]] && ! [[ $KVER =~ -calculate ]]
then then
eerror $"--safemode available for calculate-sources only" eerror $"--safemode available for calculate-sources only"
@ -410,6 +458,7 @@ then
fi fi
# создать каталог в локальных шаблонах для шаблонов ядра # создать каталог в локальных шаблонах для шаблонов ядра
# create the directory for kernel templates in the local tempalte tree
if ! [[ -d $LOCAL_TEMPLATES_DIR ]] if ! [[ -d $LOCAL_TEMPLATES_DIR ]]
then then
(mkdir -p $LOCAL_TEMPLATES_DIR ; (mkdir -p $LOCAL_TEMPLATES_DIR ;
@ -418,6 +467,7 @@ then
fi fi
# если другая архитектура # если другая архитектура
# if other architecture
if [[ -n $OTHER_ARCH ]] if [[ -n $OTHER_ARCH ]]
then then
NEW_CONFIG=${KERNEL_DIR}/.config_${TEMPLATE_ARCH} NEW_CONFIG=${KERNEL_DIR}/.config_${TEMPLATE_ARCH}
@ -427,6 +477,7 @@ fi
check_belong ${KERNEL_DIR}/Makefile check_belong ${KERNEL_DIR}/Makefile
# получение параметров пакета, которому принадлежат исходники # получение параметров пакета, которому принадлежат исходники
# getting the parameters for the package whose sources are being processed
CATEGORY_PN=$( _qfile -C ${KERNEL_DIR}/Makefile | awk '{print $1}' ) CATEGORY_PN=$( _qfile -C ${KERNEL_DIR}/Makefile | awk '{print $1}' )
PV=$( _qfile -Cv ${KERNEL_DIR}/Makefile | awk '{print $1}' ) PV=$( _qfile -Cv ${KERNEL_DIR}/Makefile | awk '{print $1}' )
PV=${PV/$CATEGORY_PN-/} PV=${PV/$CATEGORY_PN-/}
@ -439,10 +490,12 @@ then
PV_OLD=${PV_OLD/${CATEGORY_PN_OLD}-/} PV_OLD=${PV_OLD/${CATEGORY_PN_OLD}-/}
fi fi
# получить версия MAJOR.MINOR для условий в шаблонах # получить версии MAJOR.MINOR для условий в шаблонах
# get the version (MAJOR.MINOR format) for conditions in templates
[[ $KVER =~ ^([[:digit:]]+\.[[:digit:]]+) ]] && PV2=${BASH_REMATCH[0]} || PV2=$PV [[ $KVER =~ ^([[:digit:]]+\.[[:digit:]]+) ]] && PV2=${BASH_REMATCH[0]} || PV2=$PV
# определение имени шаблонов для пакета # определение имени шаблонов для пакета
# define templates name for the package
if [[ $CATEGORY_PN =~ ^.*/(.*)-sources ]] if [[ $CATEGORY_PN =~ ^.*/(.*)-sources ]]
then then
TEMPLATE_NAME_PREFIX=10-${BASH_REMATCH[1]}- TEMPLATE_NAME_PREFIX=10-${BASH_REMATCH[1]}-
@ -452,9 +505,10 @@ fi
TEMPLATE_NAME_ARCH_PREFIX=${TEMPLATE_NAME_PREFIX}${NAME_ARCH}- TEMPLATE_NAME_ARCH_PREFIX=${TEMPLATE_NAME_PREFIX}${NAME_ARCH}-
TEMPLATE_NAME="${LOCAL_TEMPLATES_DIR}/${TEMPLATE_NAME_ARCH_PREFIX}${PV2}" TEMPLATE_NAME="${LOCAL_TEMPLATES_DIR}/${TEMPLATE_NAME_ARCH_PREFIX}${PV2}"
#################################### ########################################
# Подготовка новой конфигурации ядра # Подготовка новой конфигурации ядра
#################################### # Preparing the new kernel configuration
########################################
CONFIG_GZ=/proc/config.gz CONFIG_GZ=/proc/config.gz
@ -473,15 +527,17 @@ else
get_old_config get_old_config
fi fi
###################################### #########################################
# Подготовка базовой конфигурации ядра # Подготовка базовой конфигурации ядра
###################################### # Preparing the base kernel configuration
#########################################
BASE_CONFIG=$( ${MKTEMP} ) BASE_CONFIG=$( ${MKTEMP} )
ebegin $"Preparing the basic kernel configuration" ebegin $"Preparing the basic kernel configuration"
if [[ -n $CREATE_BASE ]] if [[ -n $CREATE_BASE ]]
then then
# будут использоваться только шаблоны оверлеев # будут использоваться только шаблоны оверлеев
# will be used the overlay templates only
TEMPLATES=$(variable_value main.cl_template_location) TEMPLATES=$(variable_value main.cl_template_location)
create_kernel_config ${KERNEL_DIR} ${CATEGORY_PN} ${PV} ${TEMPLATES/,local,remote/} >$BASE_CONFIG create_kernel_config ${KERNEL_DIR} ${CATEGORY_PN} ${PV} ${TEMPLATES/,local,remote/} >$BASE_CONFIG
else else
@ -491,17 +547,20 @@ eend
########################################### ###########################################
# Изменение конфигурации ядра пользователем # Изменение конфигурации ядра пользователем
# Manual kernel configuration
########################################### ###########################################
(cd $KERNEL_DIR; [[ -n ${KERNEL_OLD_DIR} || -z ${CREATE_NEW} ]] && KCONFIG_CONFIG=$(basename $NEW_CONFIG) make oldconfig;KCONFIG_CONFIG=$(basename $NEW_CONFIG) make -s menuconfig) || true (cd $KERNEL_DIR; [[ -n ${KERNEL_OLD_DIR} || -z ${CREATE_NEW} ]] && KCONFIG_CONFIG=$(basename $NEW_CONFIG) make oldconfig;KCONFIG_CONFIG=$(basename $NEW_CONFIG) make -s menuconfig) || true
########################### ###########################
# Создание шаблона # Создание шаблона
# Template creation
########################### ###########################
NEW_TEMPLATE=$( ${MKTEMP} ) NEW_TEMPLATE=$( ${MKTEMP} )
create_template $CATEGORY_PN $PV2 $BASE_CONFIG $NEW_CONFIG >${NEW_TEMPLATE} create_template $CATEGORY_PN $PV2 $BASE_CONFIG $NEW_CONFIG >${NEW_TEMPLATE}
################################## ##################################
# Создание резервной копии шаблона # Создание резервной копии шаблона
# Template backup
################################## ##################################
if ls ${LOCAL_TEMPLATES_DIR}/${TEMPLATE_NAME_ARCH_PREFIX}* &>/dev/null if ls ${LOCAL_TEMPLATES_DIR}/${TEMPLATE_NAME_ARCH_PREFIX}* &>/dev/null
then then
@ -526,6 +585,7 @@ then
fi fi
# пропуск создания пустого шаблона # пропуск создания пустого шаблона
# skip the empty template
if [[ $(sed 1d $NEW_TEMPLATE | wc -l) -gt 0 ]] if [[ $(sed 1d $NEW_TEMPLATE | wc -l) -gt 0 ]]
then then
mv $NEW_TEMPLATE $TEMPLATE_NAME mv $NEW_TEMPLATE $TEMPLATE_NAME
@ -542,14 +602,16 @@ rm -f $BASE_CONFIG
STARTTIME=$(date +%s) STARTTIME=$(date +%s)
############# ####################
# Сборка ядра # Сборка ядра
############# # Kernel compilation
####################
if [[ -n ${BUILD_KERNEL} ]] if [[ -n ${BUILD_KERNEL} ]]
then then
cd $KERNEL_DIR cd $KERNEL_DIR
(source_makeconf && make clean && make $MAKEOPTS && make $MAKEOPTS modules_install && make $MAKEOPTS install) (source_makeconf && make clean && make $MAKEOPTS && make $MAKEOPTS modules_install && make $MAKEOPTS install)
# сборка initramfs # сборка initramfs
# initramfs building
if [[ -n $DRACUT ]] if [[ -n $DRACUT ]]
then then
grep -q "CONFIG_BLK_DEV_INITRD=y" ${NEW_CONFIG} && ${DRACUT} -fH --kver $KVER /boot/initramfs-${KVER}.img grep -q "CONFIG_BLK_DEV_INITRD=y" ${NEW_CONFIG} && ${DRACUT} -fH --kver $KVER /boot/initramfs-${KVER}.img
@ -560,13 +622,16 @@ then
fi fi
fi fi
# удалить старый ramfs если его поддержка выключена в ядре # удалить старый ramfs если его поддержка выключена в ядре
# remove the old ramfs if its support disabled in the kernel configuration
grep -q "CONFIG_BLK_DEV_INITRD=y" ${NEW_CONFIG} || rm -f /boot/initramfs-${KVER}.img || true grep -q "CONFIG_BLK_DEV_INITRD=y" ${NEW_CONFIG} || rm -f /boot/initramfs-${KVER}.img || true
grep -q "CONFIG_BLK_DEV_INITRD=y" ${NEW_CONFIG} || rm -f /boot/initramfs-${KVER/-calculate/-SafeMode-calculate}.img || true grep -q "CONFIG_BLK_DEV_INITRD=y" ${NEW_CONFIG} || rm -f /boot/initramfs-${KVER/-calculate/-SafeMode-calculate}.img || true
# выполнение шаблонов для настройки загрузки системы # выполнение шаблонов для настройки загрузки системы
# applying the templates for boot configuration
cl-setup-boot cl-setup-boot
# вывод времени компиляции ядра # вывод времени компиляции ядра
# display kernel compilation time
DELTATIME=$(( $(date +%s) - $STARTTIME )) DELTATIME=$(( $(date +%s) - $STARTTIME ))
HOUR=$(( $DELTATIME / 3600 )) HOUR=$(( $DELTATIME / 3600 ))
DELTATIME=$(( $DELTATIME % 3600 )) DELTATIME=$(( $DELTATIME % 3600 ))
@ -583,6 +648,7 @@ then
fi fi
# вывод информационных сообщений, отображённых до сборки ядра # вывод информационных сообщений, отображённых до сборки ядра
# display info messages, show before kernel compilation
for line in "${TAILOUT[@]}" for line in "${TAILOUT[@]}"
do do
einfo $line einfo $line

Loading…
Cancel
Save