#!/bin/bash -ex # vi: ts=4 noexpandtab # # Generate a squashfs root and manifest set -x echo "032-installer-squashfs.binary" case $IMAGE_TARGETS in ""|*squashfs*) ;; *) echo "Skipping squashfs build" exit 0 ;; esac if [ -n "$SUBARCH" ]; then echo "Skipping rootfs build for subarch flavor build" exit 0 fi . config/functions SQUASH_ROOT=binary/boot/squashfs.dir OVERLAY_ROOT=binary/overlay mkdir -p "$OVERLAY_ROOT" # Create an installer squashfs layer mount_overlay "$SQUASH_ROOT/" "$OVERLAY_ROOT/" "$SQUASH_ROOT/" setup_mountpoint binary/boot/squashfs.dir # Prepare installer layer. # Install any requirements for the installer, for things we don't want # to see on the installed system chroot $SQUASH_ROOT apt-get update chroot $SQUASH_ROOT apt-get -y install user-setup chroot $SQUASH_ROOT apt-get -y install curtin # Don't let cloud-init run in the live session. touch $SQUASH_ROOT/etc/cloud/cloud-init.disabled # Do the snap seeding dance. chroot $SQUASH_ROOT mkdir -p /var/lib/snapd/seed/snaps /var/lib/snapd/seed/assertions chroot $SQUASH_ROOT sh -c ' set -x; cd /var/lib/snapd/seed; sudo SNAPPY_STORE_NO_CDN=1 snap download core; sudo SNAPPY_STORE_NO_CDN=1 snap download --channel=edge subiquity; CORE_SNAP=$(ls -1 core*.snap); SUBIQUITY_SNAP=$(ls -1 subiquity*.snap); mv *.assert /var/lib/snapd/seed/assertions/; mv *.snap /var/lib/snapd/seed/snaps/; cat < /var/lib/snapd/seed/seed.yaml snaps: - name: core channel: stable file: ${CORE_SNAP} - name: subiquity channel: edge classic: true file: ${SUBIQUITY_SNAP} EOF ' teardown_mountpoint "$SQUASH_ROOT" # Then unmount the overlay umount "$SQUASH_ROOT" squashfs_f="${PWD}/livecd.${PROJECT}.installer.squashfs" (cd "$OVERLAY_ROOT/" && mksquashfs . ${squashfs_f} \ -no-progress -xattrs -comp xz )