Here is the build script:
#################################################################
Copyright (C) 2009 D-Link Corp./D-Link Systems, Inc.
------------------------------------------------------
DESCRIPTION : The makefile for builing the complete
Management Switch image files.
#################################################################
include ${MGM_PROJECT_BASE_DIR}/make.h
CP := cp
RM := rm
CAT := cat
CC := $(CROSS_COMPILE)gcc
STRIP := $(CROSS_COMPILE)strip
GZIP := gzip
DD := dd
OBJDUMP := $(CROSS_COMPILE)objdump
os_dir := os/linux-3.6.5_iProLDK_3.4.6
OS_DIR := ${MGM_PROJECT_BASE_DIR}/${os_dir}
BOOT_ABSOLUTE_DIR := ${MGM_PROJECT_BASE_DIR}/boot/uboot-2012.10_iProLDK_3.4.6
OS_ABSOLUTE_DIR := ${MGM_PROJECT_BASE_DIR}/os/linux-3.6.5_iProLDK_3.4.6
IMAGE_ABSOLUTE_DIR := ${MGM_PROJECT_BASE_DIR}/image
TOOL_DIR := ${MGM_PROJECT_BASE_DIR}/tools
TAG_BOOT_VERSION := 1
IMGTAG := ${TOOL_DIR}/./imgtag
GEN_CHECKSUM := ${TOOL_DIR}/genTotalChecksum
IMGHDR := ${TOOL_DIR}/imghdr
MODEL := ${MODEL_NAME}
CUSTOMER_SIGNATURE := 2
BOARD_VERSION := 16
TAG_OS_VERSION := 1
HW_VER := B1
OUTPUT_BOOT_HEX := ${OUTPUT_IMAGE_FOLDER_NAME}-BOOT.hex
OUTPUT_OS_HEX := ${OUTPUT_IMAGE_FOLDER_NAME}-OS.hex
HEADER_MODEL := ${DISPLAY_MODEL_NAME}
.PHONY: os
Check if "image" folder exists
check-image-folder:
if [ -d ${IMAGE_ABSOLUTE_DIR} ]; then
echo "image folder exists";
else
echo "no image folder exists";
mkdir ${IMAGE_ABSOLUTE_DIR};
fi
change tool mod to 777
change_tools:
chmod 777 -R ${TOOL_DIR}
Make u-boot and copy ot to image dir
boot: check-image-folder
chmod 777 -R ${BOOT_ABSOLUTE_DIR}
${CP} ${BOOT_ABSOLUTE_DIR}/include/configs/cameo/smart5_series.h ${BOOT_ABSOLUTE_DIR}/include/configs/cameo/cameo_header.h
sed -i "s/hw_version=../hw_version=${HW_VER}/g" ${BOOT_ABSOLUTE_DIR}/include/configs/cameo/cameo_header.h
sed -i "s/#define BOARD_VERSION../#define BOARD_VERSION ${BOARD_VERSION}/g" ${BOOT_ABSOLUTE_DIR}/include/configs/cameo/cameo_header.h
make -w -C ${BOOT_ABSOLUTE_DIR} O=./build-output mdk-all
${CP} ${BOOT_ABSOLUTE_DIR}/build-output/u-boot.bin ${IMAGE_ABSOLUTE_DIR}/boot.bin
Make OS image and copy ot to image dir
os: check-image-folder
chmod 777 -R ${OS_ABSOLUTE_DIR}
cp ${OS_ABSOLUTE_DIR}/cameo/cameo.config/hurricane2_dgs_linux-3.6.5-flash.config ${OS_ABSOLUTE_DIR}/.config
make -w -C ${OS_ABSOLUTE_DIR} oldconfig
make -w -C ${OS_ABSOLUTE_DIR} zImage
if [ -f ${OS_ABSOLUTE_DIR}/arch/arm/boot/Image.gz ]; then
${RM} ${OS_ABSOLUTE_DIR}/arch/arm/boot/Image.gz;
fi
gzip -9 ${OS_ABSOLUTE_DIR}/arch/arm/boot/Image
echo 'start address ${LOADADDR}' > ${IMAGE_ABSOLUTE_DIR}/vmlinux.dump
${TOOL_DIR}/mkimage -A arm -O linux -T kernel -n Image -a ${LOADADDR} -C gzip -d ${OS_ABSOLUTE_DIR}/arch/arm/boot/Image.gz ${IMAGE_ABSOLUTE_DIR}/vmlinux.gz
os-clean:
make -w -C ${OS_DIR} clean
------------------------------------------------------------------------------
Make relevant image information and attach
------------------------------------------------------------------------------
.PHONY: vmlinux-attach-version-checksum
vmlinux-attach-version-checksum:
${CP} ${IMAGE_ABSOLUTE_DIR}/vmlinux.gz ${IMAGE_ABSOLUTE_DIR}/vmlinux.tag
${IMGTAG} ${IMAGE_ABSOLUTE_DIR}/vmlinux.tag ${TAG_OS_VERSION}
${GEN_CHECKSUM} ${IMAGE_ABSOLUTE_DIR}/vmlinux.tag ${IMAGE_ABSOLUTE_DIR}/vmlinux.sum
${CAT} ${IMAGE_ABSOLUTE_DIR}/vmlinux.tag ${IMAGE_ABSOLUTE_DIR}/vmlinux.sum > ${IMAGE_ABSOLUTE_DIR}/vmlinux.vc
${CP} ${IMAGE_ABSOLUTE_DIR}/vmlinux.vc ${IMAGE_ABSOLUTE_DIR}/vmlinux.ub
${RM} ${IMAGE_ABSOLUTE_DIR}/vmlinux.tag
${RM} ${IMAGE_ABSOLUTE_DIR}/vmlinux.sum
Make relevant image information and attach
boot-attach-version-checksum:
${CP} ${IMAGE_ABSOLUTE_DIR}/boot.bin ${IMAGE_ABSOLUTE_DIR}/boot.tag
${HEXTAG} ${IMAGE_ABSOLUTE_DIR}/boot.tag ${BOOT_VERSION}
${IMGTAG} ${IMAGE_ABSOLUTE_DIR}/boot.tag ${TAG_BOOT_VERSION}
${GEN_CHECKSUM} ${IMAGE_ABSOLUTE_DIR}/boot.tag ${IMAGE_ABSOLUTE_DIR}/boot.sum
${CAT} ${IMAGE_ABSOLUTE_DIR}/boot.tag ${IMAGE_ABSOLUTE_DIR}/boot.sum > ${IMAGE_ABSOLUTE_DIR}/boot.vc
${RM} ${IMAGE_ABSOLUTE_DIR}/boot.tag
${RM} ${IMAGE_ABSOLUTE_DIR}/boot.sum
Make bimage for update boot code only
bimage: boot-attach-version-checksum
${RM} -f ${IMAGE_ABSOLUTE_DIR}/bimage
${CP} ${IMAGE_ABSOLUTE_DIR}/boot.vc ${IMAGE_ABSOLUTE_DIR}/bimage
${IMGHDR} ${IMAGE_ABSOLUTE_DIR}/boot.vc ${IMAGE_ABSOLUTE_DIR}/${OUTPUT_BOOT_HEX} ${HEADER_MODEL} boot 0 ${CUSTOMER_SIGNATURE} ${BOARD_VERSION} ${IMAGE_ABSOLUTE_DIR}/vmlinux.dump
${RM} -f ${IMAGE_ABSOLUTE_DIR}/boot.vc ${IMAGE_ABSOLUTE_DIR}/boot.bin
${RM} -f ${IMAGE_ABSOLUTE_DIR}/bimage
zimage: vmlinux-attach-version-checksum
${RM} -f ${IMAGE_ABSOLUTE_DIR}/zimage
${DD} if=${IMAGE_ABSOLUTE_DIR}/vmlinux.vc of=${IMAGE_ABSOLUTE_DIR}/zimage bs=1024
${IMGHDR} ${IMAGE_ABSOLUTE_DIR}/vmlinux.vc ${IMAGE_ABSOLUTE_DIR}/${OUTPUT_OS_HEX} ${HEADER_MODEL} os 2 ${CUSTOMER_SIGNATURE} ${BOARD_VERSION} ${IMAGE_ABSOLUTE_DIR}/vmlinux.dump
${RM} -f ${IMAGE_ABSOLUTE_DIR}/vmlinux.vc
------------------------------------------------------------------------------
Remove unnecessary files to save disk space
------------------------------------------------------------------------------
clear-file:
find ./image -path "./image/" ! -name ".hex" -exec rm -f {} ;
find ./ -name ".pfx" -delete
find ./ -name ".spc" -delete
find ./ -name ".pvk" -delete
find ./ -name ".tgz" -delete
find ./ -name ".gz" -delete
find ./ -name ".xz" -delete
find ./ -name ".bz" -delete
find ./ -name ".bz2" -delete
find ./ -name ".Z" -delete
find ./ -name ".tar" -delete
find ./ -name ".lha" -delete
find ./ -name ".cab" -delete
find ./ -name "*.z" -delete
GPL:check-image-folder change_tools os zimage boot bimage clear-file