#!/bin/sh # lh_binary_usb(1) - build binary image set -e # Source common functions for FUNCTION in /usr/share/live-helper/functions/*.sh do . ${FUNCTION} done # Reading configuration files Read_conffile config/common Read_conffile config/bootstrap Read_conffile config/image Set_defaults # Requiring stage file Require_stagefile "${LIVE_ROOT}"/.stage/bootstrap # Checking lock file Check_lockfile "${LIVE_ROOT}"/.lock # Creating lock file Create_lockfile "${LIVE_ROOT}"/.lock # Checking stage file Check_stagefile "${LIVE_ROOT}"/.stage/binary_usb for IMAGE in ${LIVE_BINARY_IMAGE} do if [ "${IMAGE}" = "usb" ] then if [ ! -f "${LIVE_CHROOT}"/sbin/mkdosfs ] then PACKAGES="${PACKAGES} dosfstools" fi if [ ! -f "${LIVE_CHROOT}"/usr/bin/mtools ] then PACKAGES="${PACKAGES} mtools" fi if [ ! -f "${LIVE_CHROOT}"/sbin/parted ] then PACKAGES="${PACKAGES} parted" fi if [ ! -f "${LIVE_CHROOT}"/usr/bin/syslinux ] then PACKAGES="${PACKAGES} syslinux" fi if [ -n "${PACKAGES}" ] then # Installing packages case "${LH_APT}" in apt) Chroot "apt-get install --yes ${PACKAGES}" ;; aptitude) Chroot "aptitude install --assume-yes ${PACKAGES}" ;; esac fi # Remove old binary if [ -f "${LIVE_ROOT}"/binary.img ] then rm -f "${LIVE_ROOT}"/binary.img fi # Everything which comes here needs to be cleaned up, DU_DIM="`du -ms ${LIVE_ROOT}/binary | cut -f1`" REAL_DIM="`expr ${DU_DIM} + ${DU_DIM} / 20`" # Just 5% more to be sure, need something more sophistcated here... dd if=/dev/zero of="${LIVE_ROOT}"/binary.img bs=1024k count=${REAL_DIM} FREELO="`losetup -f`" if [ ! -b "${LIVE_CHROOT}"/${FREELO} ] then MAKEDEV="true" Chroot "cd /dev && ./MAKEDEV ${FREELO}" fi echo "!!! The following error/warning messages can be ignored !!!" lh_losetup $FREELO "${LIVE_ROOT}"/binary.img 0 Chroot "parted -s ${FREELO} mklabel msdos" || true Chroot "parted -s ${FREELO} mkpartfs primary fat16 0.0 100%" || true Chroot "parted -s ${FREELO} set 1 boot on" || true Chroot "parted -s ${FREELO} set 1 lba off" || true cat "${LIVE_CHROOT}"/usr/lib/syslinux/mbr.bin > ${FREELO} losetup -d ${FREELO} lh_losetup $FREELO "${LIVE_ROOT}"/binary.img 1 Chroot "mkfs.msdos -n DEBIAN_LIVE ${FREELO}" mkdir -p "${LIVE_ROOT}"/binary.tmp mount ${FREELO} "${LIVE_ROOT}"/binary.tmp cp -r "${LIVE_ROOT}"/binary/* "${LIVE_ROOT}"/binary.tmp umount "${LIVE_ROOT}"/binary.tmp rmdir "${LIVE_ROOT}"/binary.tmp Chroot "syslinux ${FREELO}" losetup -d ${FREELO} echo "!!! The above error/warning messages can be ignored !!!" if [ -n "${MAKEDEV}" ] then rm -f "${LIVE_CHROOT}"/${FREELO} fi if [ -n "${PACKAGES}" ] then # Removing packages case "${LH_APT}" in apt) Chroot "apt-get remove --purge --yes ${PACKAGES}" ;; aptitude) Chroot "aptitude purge --assume-yes ${PACKAGES}" ;; esac fi fi # Creating stage file Create_stagefile "${LIVE_ROOT}"/.stage/binary_usb done