diff --git a/debian/changelog b/debian/changelog index 1828c0f8..66738e6f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +livecd-rootfs (2.672) groovy; urgency=medium + + [ David Krauser ] + * Boot with an initramfs by default in cloud images, except when + using a non-generic kernel. + + -- Robert C Jennings Fri, 10 Jul 2020 07:47:47 -0500 + livecd-rootfs (2.671) groovy; urgency=medium * Fix-up seeding snaps with tracks. diff --git a/live-build/functions b/live-build/functions index 5faf6093..dcfa46c9 100644 --- a/live-build/functions +++ b/live-build/functions @@ -944,4 +944,20 @@ replace_kernel () { install --assume-yes "${new_kernel}" env DEBIAN_FRONTEND=noninteractive chroot "${mountpoint}" apt-get \ autoremove --purge --assume-yes + + # If running a custom kernel, we should try to boot without an initramfs + # We do this by setting GRUB_FORCE_PARTUUID, which forces initramfs-less boot + partuuid=$(blkid -s PARTUUID -o value $(findmnt -n -o SOURCE --target "${mountpoint}")) + if [ -n "${partuuid}" ]; then + echo "Force booting without an initramfs..." + mkdir -p "${mountpoint}/etc/default/grub.d" + cat << EOF >> "${mountpoint}/etc/default/grub.d/40-force-partuuid.cfg" +# Force boot without an initramfs by setting GRUB_FORCE_PARTUUID +# Remove this line to enable boot with an initramfs +GRUB_FORCE_PARTUUID=${partuuid} +EOF + divert_grub "${mountpoint}" + chroot "${mountpoint}" update-grub + undivert_grub "${mountpoint}" + fi } diff --git a/live-build/ubuntu-cpc/hooks.d/base/disk-image-uefi.binary b/live-build/ubuntu-cpc/hooks.d/base/disk-image-uefi.binary index 98c08f81..2d298ec9 100755 --- a/live-build/ubuntu-cpc/hooks.d/base/disk-image-uefi.binary +++ b/live-build/ubuntu-cpc/hooks.d/base/disk-image-uefi.binary @@ -73,14 +73,6 @@ install_grub() { efi_boot_dir="/boot/efi/EFI/BOOT" chroot mountpoint mkdir -p "${efi_boot_dir}" - if [ -n "$partuuid" ]; then - # FIXME: code duplicated between disk-image.binary - # and disk-image-uefi.binary. We want to fix this to not - # have initramfs-tools installed at all on these images. - echo "partuuid found for root device; omitting initrd" - echo "GRUB_FORCE_PARTUUID=$partuuid" >> mountpoint/etc/default/grub.d/40-force-partuuid.cfg - fi - chroot mountpoint apt-get -y update # UEFI GRUB modules are meant to be used equally by Secure Boot and @@ -154,8 +146,6 @@ create_empty_disk_image "${disk_image}" create_partitions "${disk_image}" mount_image "${disk_image}" 1 -partuuid=$(blkid -s PARTUUID -o value "$rootfs_dev_mapper") - # Copy the chroot in to the disk make_ext4_partition "${rootfs_dev_mapper}" mkdir mountpoint diff --git a/live-build/ubuntu-cpc/hooks.d/base/disk-image.binary b/live-build/ubuntu-cpc/hooks.d/base/disk-image.binary index 5884fe61..14e9bc65 100755 --- a/live-build/ubuntu-cpc/hooks.d/base/disk-image.binary +++ b/live-build/ubuntu-cpc/hooks.d/base/disk-image.binary @@ -73,8 +73,6 @@ create_empty_partition "${disk_image}" "$ROOTPART" "$ROOTPART_START" -1 ext2 "$R mount_image "${disk_image}" "$ROOTPART" -partuuid=$(blkid -s PARTUUID -o value "$rootfs_dev_mapper") - # Copy the chroot in to the disk make_ext4_partition "${rootfs_dev_mapper}" mkdir mountpoint @@ -122,15 +120,6 @@ if [ "${should_install_grub}" -eq 1 ]; then ${loop_device} rm mountpoint/tmp/device.map - - if [ -n "$partuuid" ]; then - echo "partuuid found for root device; forcing it in Grub" - mkdir -p mountpoint/etc/default/grub.d - echo "GRUB_FORCE_PARTUUID=$partuuid" >> mountpoint/etc/default/grub.d/40-force-partuuid.cfg - divert_grub mountpoint - chroot mountpoint update-grub - undivert_grub mountpoint - fi fi if [ "$ARCH" = "s390x" ]; then diff --git a/live-build/ubuntu-cpc/hooks.d/base/kvm-image.binary b/live-build/ubuntu-cpc/hooks.d/base/kvm-image.binary index 094cb375..f9782d0b 100755 --- a/live-build/ubuntu-cpc/hooks.d/base/kvm-image.binary +++ b/live-build/ubuntu-cpc/hooks.d/base/kvm-image.binary @@ -49,9 +49,6 @@ replace_kernel ${mount_d} "linux-kvm" chroot "${mount_d}" update-grub undivert_grub "${mount_d}" -env DEBIAN_FRONTEND=noninteractive chroot "${mount_d}" rm \ - -rf /boot/initrd.img-* /boot/initrd.img - # Remove indices env DEBIAN_FRONTEND=noninteractive chroot "${mount_d}" apt-get \ clean