live-build/helpers/lh_buildbinary

201 lines
5.2 KiB
Bash
Executable File

#!/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