mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-02-10 20:57:29 +00:00
Whilst configs are sources, the variables are not exported into the environment by default. Thus when casper hook is executed, it had no idea that it should generate UUID.
91 lines
2.7 KiB
Bash
91 lines
2.7 KiB
Bash
#!/bin/bash -eux
|
|
# vi: ts=4 noexpandtab
|
|
#
|
|
# Generate a squashfs root and manifest
|
|
|
|
echo "033-kernel-bits.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
|
|
|
|
INSTALLER_ROOT=binary/boot/installer.squashfs.dir
|
|
|
|
KERNEL_BITS_ROOT=binary/boot/kernel-bits.dir
|
|
KERNEL_BITS_OVERLAY=binary/boot/overlay-kernel-bits
|
|
|
|
variants='ga hwe'
|
|
|
|
for variant in $variants; do
|
|
if [ "$variant" = "ga" ]; then
|
|
kernel_metapkg=linux-generic
|
|
flavor=generic
|
|
elif [ "$variant" = "hwe" ]; then
|
|
kernel_metapkg=linux-generic-hwe-$(lsb_release -sr)
|
|
flavor=generic-hwe
|
|
else
|
|
echo "bogus variant: $variant"
|
|
exit 1
|
|
fi
|
|
|
|
# Make preparations
|
|
mkdir -p $KERNEL_BITS_ROOT $KERNEL_BITS_OVERLAY
|
|
mount_overlay "$INSTALLER_ROOT/" "$KERNEL_BITS_OVERLAY/" "$KERNEL_BITS_ROOT/"
|
|
setup_mountpoint $KERNEL_BITS_ROOT
|
|
|
|
# Our initramfs hook implements a kind of extreme version of
|
|
# cloud-initramfs-copymods, so remove that and prevent duelling hooks
|
|
env DEBIAN_FRONTEND=noninteractive chroot $KERNEL_BITS_ROOT apt-get -y remove cloud-initramfs-copymods ubuntu-server || true
|
|
|
|
# Configure initramfs creation
|
|
mkdir -p "$KERNEL_BITS_ROOT"/etc/initramfs-tools/conf.d/
|
|
if [ -n "$LB_INITRAMFS_COMPRESSION" ]; then
|
|
echo "COMPRESS=$LB_INITRAMFS_COMPRESSION" > "$KERNEL_BITS_ROOT"/etc/initramfs-tools/conf.d/livecd-rootfs.conf
|
|
fi
|
|
echo "export CASPER_GENERATE_UUID=1" > "$KERNEL_BITS_ROOT"/etc/initramfs-tools/conf.d/casper.conf
|
|
|
|
# Add a hook to record which kernel was booted and mount the
|
|
# modules.squashfs created below.
|
|
cat <<EOF > "$KERNEL_BITS_ROOT"/etc/initramfs-tools/scripts/init-bottom/live-server
|
|
#!/bin/sh
|
|
case \$1 in
|
|
prereqs) exit 0;;
|
|
esac
|
|
|
|
echo ${kernel_metapkg} > /run/kernel-meta-package
|
|
mkdir -p \$rootmnt/lib/modules
|
|
mount \$rootmnt/cdrom/casper/extras/modules.squashfs-$flavor \$rootmnt/lib/modules
|
|
EOF
|
|
chmod +x "$KERNEL_BITS_ROOT"/etc/initramfs-tools/scripts/init-bottom/live-server
|
|
|
|
# Install the kernel!
|
|
env DEBIAN_FRONTEND=noninteractive chroot $KERNEL_BITS_ROOT apt-get -y install ${kernel_metapkg}
|
|
|
|
# Fish out generated kernel image and initrd
|
|
mv "$KERNEL_BITS_ROOT"/boot/initrd.img-* ${PWD}/livecd.${PROJECT}.initrd-$flavor
|
|
mv "$KERNEL_BITS_ROOT"/boot/vmlinu?-* ${PWD}/livecd.${PROJECT}.kernel-$flavor
|
|
|
|
# Create squashfs containing all the modules
|
|
modules_squashfs_path="${PWD}/livecd.${PROJECT}.modules.squashfs-$flavor"
|
|
(cd "$KERNEL_BITS_ROOT/lib/modules" &&
|
|
mksquashfs . $modules_squashfs_path -no-progress -xattrs -comp xz)
|
|
|
|
# And clean up
|
|
teardown_mountpoint $KERNEL_BITS_ROOT
|
|
umount $KERNEL_BITS_ROOT
|
|
rm -rf $KERNEL_BITS_ROOT $KERNEL_BITS_OVERLAY
|
|
done
|