#!/bin/sh # lh_buildbinary if [ ! -f "${LIVE_ROOT}"/.stage/image_binary ] then # Configure chroot lh_patchchroot apply lh_patchrunlevel apply # Configure network lh_patchnetwork apply mkdir -p "${LIVE_ROOT}"/binary/casper for MANIFEST in "${LIVE_ROOT}"/filesystem.manifest* do if [ -e "${MANIFEST}" ]; then mv "${MANIFEST}" "${LIVE_ROOT}"/binary/casper/ fi done if [ "${LIVE_TYPE}" = "Net" ] then # Mount proc mount proc-live -t proc "${LIVE_CHROOT}"/proc # Installing smbfs lh_chroot "aptitude install --assume-yes smbfs" # Unmount proc umount "${LIVE_CHROOT}"/proc if [ "${LIVE_ARCHITECTURE}" = "amd64" ] || [ "${LIVE_ARCHITECTURE}" = "i386" ] then if [ ! -d "${LIVE_CHROOT}"/etc/initramfs-tools ] then mkdir "${LIVE_CHROOT}"/etc/initramfs-tools fi # Configuring initramfs for NFS cat >> "${LIVE_CHROOT}"/etc/initramfs-tools/initramfs.conf << EOF MODULES=netboot BOOT=nfs NFSROOT=auto EOF lh_chroot "update-initramfs -tu" fi fi lh_cleanapt # Switching package indices to default if [ "${LIVE_GENERIC_INDICES}" = "yes" ] then lh_setupapt default lh_configapt deapply-proxy lh_configapt deapply-recommends fi # Deconfigure network lh_patchnetwork deapply # Deconfigure chroot lh_patchrunlevel deapply lh_patchchroot deapply # Generating rootfs image lh_genrootfs # Configure chroot lh_patchchroot apply lh_patchrunlevel apply # Configure network lh_patchnetwork apply lh_cleanapt # Switching package indices to custom lh_setupapt custom lh_configapt apply-proxy lh_configapt apply-recommends case "${LIVE_TYPE}" in Iso) TYPE=iso ;; Usb) TYPE=usb ;; Net) TYPE=net ;; esac # Mount proc mount proc-live -t proc "${LIVE_CHROOT}"/proc # Install depends lh_depends install $TYPE # Installing syslinux lh_installsyslinux $TYPE # Installing linux-image lh_installlinux $TYPE # Installing memtest lh_installmemtest86+ $TYPE # Deconfigure network lh_patchnetwork deapply # Deconfigure chroot lh_patchrunlevel deapply lh_patchchroot deapply # Installing templates if [ "${LIVE_FLAVOUR}" != "minimal" ] || [ "${LIVE_FLAVOUR}" != "mini" ] then if [ "${TYPE}" != "usb" ] then cp -r "${LIVE_TEMPLATES}"/common/* "${LIVE_ROOT}"/binary fi if [ "${TYPE}" = "iso" ] || [ "${TYPE}" = "usb" ] then cp -r "${LIVE_TEMPLATES}"/iso/* "${LIVE_ROOT}"/binary fi fi # Calculating md5sums lh_md5sums case "${TYPE}" in iso) if [ "${LIVE_ARCHITECTURE}" = "amd64" ] || [ "${LIVE_ARCHITECTURE}" = "i386" ] then # Create image ${GENISOIMAGE} -A "Debian Live" -p "Debian Live; http://debian-live.alioth.debian.org/; debian-live-devel@lists.alioth.debian.org" -publisher "Debian Live; http://debian-live.alioth.debian.org/; debian-live-devel@lists.alioth.debian.org" -o "${LIVE_ROOT}"/"${LIVE_IMAGE}"binary.iso -r -J -l -V "${LIVE_DISK_VOLUME}" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table "${LIVE_ROOT}"/binary ${LIVE_INCLUDE_IMAGE} else echo "W: Bootloader on your architecture not yet supported (Continuing in 5 seconds)." sleep 5 # Create image ${GENISOIMAGE} -A "Debian Live" -p "Debian Live; http://debian-live.alioth.debian.org/; debian-live-devel@lists.alioth.debian.org" -publisher "Debian Live; http://debian-live.alioth.debian.org/; debian-live-devel@lists.alioth.debian.org" -o "${LIVE_ROOT}"/"${LIVE_IMAGE}"binary.iso -r -J -l -V "${LIVE_DISK_VOLUME}" "${LIVE_ROOT}"/binary ${LIVE_INCLUDE_IMAGE} fi ;; net) cd "${LIVE_ROOT}" && \ mv binary "`basename ${LIVE_SERVER_PATH}`" && \ cd .. && \ tar cfz binary.tar.gz "`basename ${LIVE_ROOT}`/`basename ${LIVE_SERVER_PATH}`" "`basename ${LIVE_ROOT}`/tftpboot" && \ mv binary.tar.gz "${LIVE_ROOT}" && \ cd "${OLDPWD}" && \ mv "`basename ${LIVE_SERVER_PATH}`" binary ;; usb) # 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="`lh_chroot 'losetup -f'`" echo "!!! The following error/warning messages can be ignored !!!" lh_losetup $FREELO "${LIVE_ROOT}"/binary.img 0 set +e lh_chroot "parted -s ${FREELO} mklabel msdos" lh_chroot "parted -s ${FREELO} mkpartfs primary fat16 0.0 100%" lh_chroot "parted -s ${FREELO} set 1 boot on" lh_chroot "parted -s ${FREELO} set 1 lba off" set -e cat "${LIVE_CHROOT}"/usr/lib/syslinux/mbr.bin > ${FREELO} losetup -d ${FREELO} lh_losetup $FREELO "${LIVE_ROOT}"/binary.img 1 lh_chroot "mkfs.msdos -n DEBIAN_LIVE ${FREELO}" mkdir "${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 lh_chroot "syslinux ${FREELO}" losetup -d ${FREELO} echo "!!! The above error/warning messages can be ignored !!!" ;; esac # Remove depends lh_depends remove $TYPE # Unmount proc umount "${LIVE_CHROOT}"/proc # Touching stage file touch "${LIVE_ROOT}"/.stage/image_binary fi