mirror of
				https://git.launchpad.net/livecd-rootfs
				synced 2025-11-04 02:44:07 +00:00 
			
		
		
		
	Fix broken minimal cloud image boot on amd64 (LP: #1920043)
I recently pulled initramfs logic out of the base build hook, and dropped that into the `replace_kernel` function. Any cloud image that does not leverage the generic virtual kernel was expected to call `replace_kernel` to pull in a custom kernel. That function will disable initramfs boot for images that use a custom kernel. Minimal cloud images on amd64 use the linux-kvm kernel, but the build hook does not utilize the `replace_kernel` function. Instead, the kernel flavor is set in `auto/config`. I pulled that logic out of `auto/config` and am now calling `replace_kernel` in the build hook. I also moved a call to generate the package list so that it will pick up the change to the linux-kvm kernel.
This commit is contained in:
		
							parent
							
								
									82f69612c7
								
							
						
					
					
						commit
						597d678e17
					
				
							
								
								
									
										6
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							@ -1,3 +1,9 @@
 | 
			
		||||
livecd-rootfs (2.664.19) UNRELEASED; urgency=medium
 | 
			
		||||
 | 
			
		||||
  *  Fix broken minimal cloud image boot on amd64 LP: #1920043
 | 
			
		||||
 | 
			
		||||
 -- Patrick Viafore <patrick.viafore@canonical.com>  Thu, 18 Mar 2021 11:50:04 -0500
 | 
			
		||||
 | 
			
		||||
livecd-rootfs (2.664.18) focal; urgency=medium
 | 
			
		||||
 | 
			
		||||
  [ Patrick Viafore ]
 | 
			
		||||
 | 
			
		||||
@ -786,20 +786,14 @@ case $PROJECT in
 | 
			
		||||
		;;
 | 
			
		||||
 | 
			
		||||
	ubuntu-cpc)
 | 
			
		||||
		KERNEL_FLAVOURS=virtual
 | 
			
		||||
 | 
			
		||||
		if [ "${SUBPROJECT:-}" = minimized ]; then
 | 
			
		||||
			add_task install cloud-image
 | 
			
		||||
			add_package install sudo lxd-installer
 | 
			
		||||
			# linux-kvm currently only exists for amd64, so fall back to the
 | 
			
		||||
			# virtual flavour for other architectures
 | 
			
		||||
			if [ "$ARCH" = "amd64" ]; then
 | 
			
		||||
				KERNEL_FLAVOURS=kvm
 | 
			
		||||
			else
 | 
			
		||||
				KERNEL_FLAVOURS=virtual
 | 
			
		||||
			fi
 | 
			
		||||
		else
 | 
			
		||||
			add_task install minimal standard cloud-image
 | 
			
		||||
			add_package install ubuntu-minimal
 | 
			
		||||
			KERNEL_FLAVOURS=virtual
 | 
			
		||||
		        case $ARCH in
 | 
			
		||||
				armhf|arm64|ppc64el|powerpc)
 | 
			
		||||
					add_task install server
 | 
			
		||||
 | 
			
		||||
@ -191,15 +191,6 @@ EOF
 | 
			
		||||
 | 
			
		||||
    chroot mountpoint apt-get autoremove --purge --assume-yes
 | 
			
		||||
 | 
			
		||||
    # This call to rewrite the debian package manifest is added here to capture
 | 
			
		||||
    # grub-efi packages that otherwise would not make it into the base
 | 
			
		||||
    # manifest. filesystem.packages is moved into place via symlinking to
 | 
			
		||||
    # livecd.ubuntu-cpc.manifest by live-build/auto/build after lb_binary runs
 | 
			
		||||
    # and at that time snaps are added to the manifest (create-manifest is
 | 
			
		||||
    # not called here as it calls snap-seed-parse, resulting in duplicate
 | 
			
		||||
    # snap listings)
 | 
			
		||||
    chroot mountpoint dpkg-query -W > binary/boot/filesystem.packages
 | 
			
		||||
 | 
			
		||||
    chroot mountpoint grub-install "${loop_device}" \
 | 
			
		||||
        --boot-directory=/boot \
 | 
			
		||||
        --efi-directory=/boot/efi \
 | 
			
		||||
@ -213,6 +204,21 @@ EOF
 | 
			
		||||
        chroot mountpoint grub-install --target=i386-pc "${loop_device}"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Use the linux-kvm kernel for minimal images where available
 | 
			
		||||
    # linux-kvm currently only exists for amd64
 | 
			
		||||
    if [ "${SUBPROJECT:-}" = "minimized" ] && [ "$ARCH" = "amd64" ]; then
 | 
			
		||||
        replace_kernel mountpoint linux-kvm
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # This call to rewrite the debian package manifest is added here to capture
 | 
			
		||||
    # grub-efi packages that otherwise would not make it into the base
 | 
			
		||||
    # manifest. filesystem.packages is moved into place via symlinking to
 | 
			
		||||
    # livecd.ubuntu-cpc.manifest by live-build/auto/build after lb_binary runs
 | 
			
		||||
    # and at that time snaps are added to the manifest (create-manifest is
 | 
			
		||||
    # not called here as it calls snap-seed-parse, resulting in duplicate
 | 
			
		||||
    # snap listings)
 | 
			
		||||
    chroot mountpoint dpkg-query -W > binary/boot/filesystem.packages
 | 
			
		||||
 | 
			
		||||
    divert_grub mountpoint
 | 
			
		||||
    track_initramfs_boot_fallback mountpoint
 | 
			
		||||
    chroot mountpoint update-grub
 | 
			
		||||
 | 
			
		||||
@ -127,6 +127,12 @@ if [ "${should_install_grub}" -eq 1 ]; then
 | 
			
		||||
    rm mountpoint/tmp/device.map
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Use the linux-kvm kernel for minimal images where available
 | 
			
		||||
# linux-kvm currently only exists for amd64
 | 
			
		||||
if [ "${SUBPROJECT:-}" = "minimized" ] && [ "$ARCH" = "amd64" ]; then
 | 
			
		||||
    replace_kernel mountpoint linux-kvm
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ "$ARCH" = "s390x" ]; then
 | 
			
		||||
    # Do ZIPL install bits
 | 
			
		||||
    chroot mountpoint apt-get -qqy install s390-tools sysconfig-hardware
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user