1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dugistore-DUGI_COIDEA_NUC972

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
001.build_kernel.sh 5.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
dever Отправлено 6 лет назад b87aba0
#!/bin/bash
source ~/.colorc
export KERNEL_TOPDIR=$PWD
export GCC_PATH_DEFAULT=$PWD/../../0.GCCKIT/armgcc
export GCC_TYPE_DEFAULT=arm-linux
export MODULE_SRC_NAME=kernel
export MODULE_SRC_DIR=$KERNEL_TOPDIR/$MODULE_SRC_NAME
export MODULE_OUT_DIR=$KERNEL_TOPDIR/output
export MODULE_DEF_CFG=nuc972_coidea_defconfig
export MODULE_MOD_INS=$KERNEL_TOPDIR/install
export MODULE_CPY_DIR=${KERNEL_TOPDIR}/../../9.IMGBINS
check_compiler()
{
$GCC_TYPE-gcc -v > /dev/null 2>&1
if [ $? -eq 0 ]; then
pinfo "check global gcc type : $GCC_TYPE"
else
pinfo "check local gcc type : $GCC_PATH"
if [ -d $GCC_PATH ]; then
pdone "check local gcc valid OK!"
export PATH=$GCC_PATH/bin:$PATH
$GCC_TYPE-gcc -v > /dev/null 2>&1
if [ $? -eq 0 ]; then
pdone "test local gcc valid OK!"
else
perro "test local gcc valid Failed!"
exit 1
fi
else
perro "check local gcc valid Failed!"
exit 1
fi
fi
}
check_env()
{
if [ -z "$GCC_TYPE" ]; then
pwarn "No compile env configured!"
pwarn "Set default compile env"
export GCC_PATH=$GCC_PATH_DEFAULT
export GCC_TYPE=$GCC_TYPE_DEFAULT
export HOST=$GCC_TYPE
export TARGET=$GCC_TYPE
export CC="${HOST}-gcc"
export CXX="${HOST}-g++"
export OBJC="${CC}"
export LD="${HOST}-ld"
export ARCH=arm
export CROSS_COMPILE=${HOST}-
pinfo "--------default compile env------"
pinfo "ARCH : $ARCH"
pinfo "HOST : $HOST"
pinfo "GCC_TYPE : $GCC_TYPE"
pinfo "GCC_PATH : $GCC_PATH"
pinfo "CROSS_COMPILE: $CROSS_COMPILE"
pinfo "---------------------------------"
check_compiler
else
pwarn "Get compile env configured!"
pinfo "--------current compile env------"
pinfo "ARCH : $ARCH"
pinfo "HOST : $HOST"
pinfo "GCC_TYPE : $GCC_TYPE"
pinfo "GCC_PATH : $GCC_PATH"
pinfo "CROSS_COMPILE: $CROSS_COMPILE"
pinfo "---------------------------------"
fi
#Kernel with uImage need mkimage
mkimage -V >/dev/null 2>&1
if [ ! $? = 0 ]; then
pwarn "No \"mkimage\" found, auto install..."
sudo apt-get install u-boot-tools
if [ $? = 0 ];then
pdone "Install \"mkimage\" finish!"
else
perro "Install \"mkimage\" failed!"
exit 1
fi
fi
}
dir_in()
{
if [ -d $MODULE_SRC_DIR ]; then
pinfo "Now cd \$MODULE_SRC_DIR: $MODULE_SRC_DIR"
cd $MODULE_SRC_DIR
else
perro "\$MODULE_SRC_DIR: $MODULE_SRC_DIR not found!"
exit 1
fi
}
dir_ret()
{
pinfo "Exit $PWD"
cd - > /dev/null
}
show_help()
{
pinfo "Input: $0 build to build cur kernel"
pinfo "Input: $0 menuconfig to menuconfig cur kernel"
pinfo "Input: $0 defconfig to defconfig kernel"
pinfo "Input: $0 modules to build and install modules"
pinfo "Input: $0 clean to clean kernel"
pinfo "Input: $0 pack to pack kernel as .tar.gz"
}
check_option()
{
if [ -z "$1" ]; then
perro "No extra param!"
show_help
exit 1
else
if [ "x$1" = "xbuild" ]; then
$1
elif [ "x$1" = "xmenuconfig" ]; then
$1
elif [ "x$1" = "xdefconfig" ]; then
$1
elif [ "x$1" = "xmodules" ]; then
$1
elif [ "x$1" = "xclean" ]; then
$1
elif [ "x$1" = "xpack" ]; then
$1
else
perro "Invalid param : $1"
show_help
exit 1
fi
fi
}
check_lzop()
{
lzop -V >/dev/null 2>&1
if [ ! $? = 0 ]; then
pwarn "No \"lzop\" found, auto install..."
sudo apt-get install lzop
if [ $? = 0 ];then
pdone "Install \"lzop\" finish!"
else
perro "Install \"lzop\" failed!"
exit 1
fi
fi
}
pack()
{
if [ -d $MODULE_SRC_DIR ]; then
pinfo "Start pack $MODULE_SRC_NAME as $MODULE_SRC_NAME.tar.gz"
tar czf $MODULE_SRC_NAME.tar.gz $MODULE_SRC_NAME
[ $? -ne 0 ] && perro "Pack kernel [ERROR]" && exit 1
pdone "Pack kernel [OK]"
else
perro "No MODULE_SRC_DIR: $MODULE_SRC_DIR found!"
exit 1
fi
}
clean()
{
if [ ! -d $MODULE_OUT_DIR ]; then
pdone "kernel allready clean!"
exit 1
fi
check_env
dir_in
make O=$MODULE_OUT_DIR distclean
[ $? -ne 0 ] && perro "--------------------------" && dir_ret && exit 1
rm -rf $MODULE_OUT_DIR
dir_ret
pdone "--------------------------"
}
menuconfig()
{
check_env
dir_in
pinfo "Kernel menuconfig start"
make O=$MODULE_OUT_DIR menuconfig
[ $? -ne 0 ] && perro "Menuconfig kernel [ERROR]" && dir_ret && exit 1
dir_ret
pdone "Menuconfig kernel [OK]"
}
defconfig()
{
check_env
if [ ! -d $MODULE_OUT_DIR ]; then
mkdir -p $MODULE_OUT_DIR
fi
dir_in
pinfo "Kernel defconfig refer to: $MODULE_DEF_CFG"
if [ ! -d $MODULE_OUT_DIR/Makefile ]; then
cp $MODULE_SRC_DIR/Makefile $MODULE_OUT_DIR/Makefile
fi
make O=$MODULE_OUT_DIR $MODULE_DEF_CFG
[ $? -ne 0 ] && perro "Defconfig kernel [ERROR]" && dir_ret && exit 1
dir_ret
pdone "Defconfig kernel [OK]"
}
build()
{
check_env
check_lzop
if [ ! -d $MODULE_OUT_DIR ]; then
mkdir -p $MODULE_OUT_DIR
fi
dir_in
make O=$MODULE_OUT_DIR all -j4
[ $? -ne 0 ] && perro "Build kernel [ERROR]" && dir_ret && exit 1
pinfo "Build kernel [OK] output dir: $MODULE_OUT_DIR"
make O=$MODULE_OUT_DIR uImage -j4
[ $? -ne 0 ] && perro "Build kernel uImage [ERROR]" && dir_ret && exit 1
pinfo "Build kernel uImage [OK] output dir: $MODULE_OUT_DIR"
dir_ret
if [ ! -d $MODULE_CPY_DIR ]; then
pwarn "Create new copy directory"
sudo mkdir -p ${MODULE_CPY_DIR}
sudo chmod 777 ${MODULE_CPY_DIR}
fi
cp $MODULE_OUT_DIR/arch/arm/boot/uImage $MODULE_CPY_DIR/4.dE000S250.kernel.bin
}
modules()
{
check_env
check_lzop
if [ ! -d $MODULE_MOD_INS ]; then
mkdir -p $MODULE_MOD_INS
fi
dir_in
make O=$MODULE_OUT_DIR modules
[ $? -ne 0 ] && perro "Build kernel modules [ERROR]" && dir_ret && exit 1
pinfo "Build kernel modules [OK] output dir: $MODULE_OUT_DIR"
make O=$MODULE_OUT_DIR modules_install INSTALL_MOD_PATH=${MODULE_MOD_INS}
[ $? -ne 0 ] && perro "Install kernel modules [ERROR]" && dir_ret && exit 1
pinfo "Intall kernel modules [OK] output dir: $MODULE_OUT_DIR"
dir_ret
}
check_option $1

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/dugistore-DUGI_COIDEA_NUC972.git
git@gitlife.ru:oschina-mirror/dugistore-DUGI_COIDEA_NUC972.git
oschina-mirror
dugistore-DUGI_COIDEA_NUC972
dugistore-DUGI_COIDEA_NUC972
master