You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
livecd-rootfs/live-build/ubuntu-server/hooks/032-installer-squashfs.binary

113 lines
3.6 KiB

#!/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
. config/common
# somehow i don't have LB_DISTRIBUTION set ?!
. config/bootstrap
FILESYSTEM_ROOT=binary/boot/squashfs.dir
INSTALLER_ROOT=binary/boot/installer.squashfs.dir
OVERLAY_ROOT=binary/overlay
mkdir -p "$INSTALLER_ROOT" "$OVERLAY_ROOT"
# Create an installer squashfs layer
mount_overlay "$FILESYSTEM_ROOT/" "$OVERLAY_ROOT/" "$INSTALLER_ROOT/"
setup_mountpoint "$INSTALLER_ROOT"
# Override JobRunningTimeoutSec to 0s on the .device unit that
# subiquity_config.mount depends on to avoid a 5s delay on switching
# to a new VT when there is no device there (LP: #1750117).
# It would be better to have this in ../includes.binary/overlay but
# you can't have backslashes in filenames in bzr branches!
ANSWERS_DEVICE_UNIT='dev-disk-by\x2duuid-00c629d6\x2d06ab\x2d4dfd\x2db21e\x2dc3186f34105d.device'
mkdir -p "$INSTALLER_ROOT/etc/systemd/system/$ANSWERS_DEVICE_UNIT.d"
cat > "$INSTALLER_ROOT/etc/systemd/system/$ANSWERS_DEVICE_UNIT.d/override.conf" <<EOF
[Unit]
JobRunningTimeoutSec=0s
Wants=subiquity_config.mount
EOF
5 years ago
AUTOINSTALL_DEVICE_UNIT='dev-disk-by\x2dlabel-autoinstall.device'
mkdir -p "$INSTALLER_ROOT/etc/systemd/system/$AUTOINSTALL_DEVICE_UNIT.d"
5 years ago
cat > "$INSTALLER_ROOT/etc/systemd/system/$AUTOINSTALL_DEVICE_UNIT.d/override.conf" <<EOF
[Unit]
JobRunningTimeoutSec=0s
Wants=subiquity_autoinstall.mount
EOF
# Prepare installer layer.
# Install casper for live session magic.
chroot $INSTALLER_ROOT apt-get -y install lupin-casper
# Install linux-firmware for kernel to upload into hardware.
chroot $INSTALLER_ROOT apt-get -y install linux-firmware
# Make sure NoCloud is last
values=$(echo get cloud-init/datasources | chroot $INSTALLER_ROOT debconf-communicate | sed 's/^0 //;s/NoCloud, //;s/None/NoCloud, None/')
printf "%s\t%s\t%s\t%s\n" \
cloud-init cloud-init/datasources multiselect "$values" |
chroot $INSTALLER_ROOT debconf-set-selections
chroot $INSTALLER_ROOT dpkg-reconfigure --frontend=noninteractive cloud-init
if [ `dpkg --print-architecture` = s390x ]; then
chroot $INSTALLER_ROOT apt-get -y install s390-tools-zkey openssh-server
rm $INSTALLER_ROOT/etc/netplan/00-installer-config.yaml
else
# Don't let cloud-init run in the live session.
touch $INSTALLER_ROOT/etc/cloud/cloud-init.disabled
fi
chroot $INSTALLER_ROOT apt-get clean
# For bug #1743643 "Install to dirty disk with swap fails" remove the
# "helpful" casper script that mounts any swap partitions it finds.
rm -f $INSTALLER_ROOT/usr/share/initramfs-tools/scripts/casper-bottom/*swap
# Preseed subiquity into installer layer
snap_prepare $INSTALLER_ROOT
snap_preseed $INSTALLER_ROOT subiquity/classic
# Drop lxd from the installer layer preseed
sed -i -e'N;/name: lxd/,+2d' $INSTALLER_ROOT/var/lib/snapd/seed/seed.yaml
# Add initramfs hook to copy /autoinstall.yaml from initrd
# /run/initrd-autoinstall.yaml
cat <<EOF > "$INSTALLER_ROOT"/etc/initramfs-tools/scripts/init-bottom/copy-autoinstall
#!/bin/sh
case \$1 in
prereqs) exit 0;;
esac
[ -f /autoinstall.yaml ] && cp /autoinstall.yaml /run/initrd-autoinstall.yaml
EOF
chmod +x "$INSTALLER_ROOT"/etc/initramfs-tools/scripts/init-bottom/copy-autoinstall
teardown_mountpoint "$INSTALLER_ROOT"
squashfs_f="${PWD}/livecd.${PROJECT}.installer.squashfs"
(cd "$OVERLAY_ROOT/" &&
mksquashfs . ${squashfs_f} \
-no-progress -xattrs -comp xz )