#!/bin/sh ## live-build(7) - System Build Scripts ## Copyright (C) 2006-2013 Daniel Baumann ## ## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. ## This is free software, and you are welcome to redistribute it ## under certain conditions; see COPYING for details. set -e # Including common functions [ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh # Setting static variables DESCRIPTION="$(Echo 'build netboot binary image')" HELP="" USAGE="${PROGRAM} [--force]" Arguments "${@}" # Reading configuration files Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source Set_defaults if ! In_list netboot "${LIVE_IMAGE_TYPE}" then exit 0 fi if [ "${LB_NET_TARBALL}" = "false" ] then exit 0 fi Echo_message "Begin building binary netboot image..." # Requiring stage file Require_stagefile .build/config .build/bootstrap # Checking stage file Check_stagefile .build/binary_netboot # Checking lock file Check_lockfile .lock # Creating lock file Create_lockfile .lock if [ "${LIVE_IMAGE_ARCHITECTURE}" = "sparc" ] then # Checking depends Check_package chroot/usr/bin/elftoaout sparc-utils # Restoring cache Restore_cache cache/packages.binary # Installing depends Install_package # Set target and source directories DESTDIR="tftpboot" case "${LB_INITRAMFS}" in casper) ORIGDIR="binary/casper" ;; live-boot) ORIGDIR="binary/live" ;; *) ORIGDIR="binary/boot" ;; esac # Find defaults DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')" DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})" DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e 's|vmlinuz-||')" DEFAULT_MAP="$(echo chroot/boot/System.map-*${DEFAULT_FLAVOUR})" gzip -cd ${ORIGDIR}/${DEFAULT_KERNEL} > kernel.tmp mkdir -p ${DESTDIR} rm -f ${DESTDIR}/boot.img elftoaout -o ${DESTDIR}/boot.img kernel.tmp case "${DEFAULT_FLAVOUR}" in sparc32) piggyback ${DESTDIR}/boot.img ${DEFAULT_MAP} ${ORIGDIR}/${DEFAULT_INITRD} ;; sparc64) piggyback64 ${DESTDIR}/boot.img ${DEFAULT_MAP} ${ORIGDIR}/${DEFAULT_INITRD} ;; *) Echo_error "Invalid default kernel flavour for sparc \"%s\"" "${DEFAULT_FLAVOUR}" exit 1; ;; esac # Pad boot.img REMAINDER=$((( 4 - $(stat -c %s ${DESTDIR}/boot.img) % 4 ) % 4)) dd if=/dev/zero bs=1 count=${REMAINDER} >> ${DESTDIR}/boot.img # No need for kernel and initrd images in the binary rm -f ${ORIGDIR}/vmlinuz-* rm -f ${ORIGDIR}/initrd.img-* # Clean temporaries rm -f kernel.tmp # Saving cache Save_cache cache/packages.binary # Removing depends Remove_package fi # Remove old binary rm -f ${LIVE_IMAGE_NAME}-${LIVE_IMAGE_ARCHITECTURE}.netboot.tar ${LIVE_IMAGE_NAME}-${LIVE_IMAGE_ARCHITECTURE}.netboot.tar.gz ${LIVE_IMAGE_NAME}-${LIVE_IMAGE_ARCHITECTURE}.netboot.tar.bz2 ${LIVE_IMAGE_NAME}-${LIVE_IMAGE_ARCHITECTURE}.netboot.tar.xz ${LIVE_IMAGE_NAME}-${LIVE_IMAGE_ARCHITECTURE}.netboot.tar.xz # Creating image file ROOT_DIR=$(basename ${LB_NET_ROOT_PATH}) if [ "${ROOT_DIR}" = "chroot" ] then mv chroot chroot.tmp fi if [ "${ROOT_DIR}" != "binary" ] then mv binary ${ROOT_DIR} fi mkdir binary.tmp mv ${ROOT_DIR} tftpboot binary.tmp cd binary.tmp # Moving kernel and initrd image arround mkdir tftpboot/live mv */live/vmlinuz* */live/initrd* tftpboot/live tar cf ../${LIVE_IMAGE_NAME}-${LIVE_IMAGE_ARCHITECTURE}.netboot.tar * case "${LB_COMPRESSION}" in bzip2) bzip2 ${BZIP2_OPTIONS} ../${LIVE_IMAGE_NAME}-${LIVE_IMAGE_ARCHITECTURE}.netboot.tar ;; gzip) gzip ${GZIP_OPTIONS} ../${LIVE_IMAGE_NAME}-${LIVE_IMAGE_ARCHITECTURE}.netboot.tar ;; lzip) lzip ${LZIP_OPTIONS} ../${LIVE_IMAGE_NAME}-${LIVE_IMAGE_ARCHITECTURE}.netboot.tar ;; xz) xz ${XZ_OPTIONS} ../${LIVE_IMAGE_NAME}-${LIVE_IMAGE_ARCHITECTURE}.netboot.tar ;; none) ;; esac mv * ../ cd "${OLDPWD}" rmdir binary.tmp if [ "${ROOT_DIR}" != "binary" ] then mv ${ROOT_DIR} binary fi if [ "${ROOT_DIR}" = "chroot" ] then mv chroot.tmp chroot fi # Creating stage file Create_stagefile .build/binary_netboot