184 lines
4.1 KiB
Bash
Executable File
184 lines
4.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
## live-build(7) - System Build Scripts
|
|
## Copyright (C) 2006-2012 Daniel Baumann <daniel@debian.org>
|
|
##
|
|
## 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
|