diff options
Diffstat (limited to 'helpers/lh_binary_usb')
-rwxr-xr-x | helpers/lh_binary_usb | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/helpers/lh_binary_usb b/helpers/lh_binary_usb new file mode 100755 index 000000000..ec0d13f36 --- /dev/null +++ b/helpers/lh_binary_usb @@ -0,0 +1,128 @@ +#!/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 |