From 6dbb30f53bd3f2086021abdecaee04645c9ccda0 Mon Sep 17 00:00:00 2001 From: Robert C Jennings Date: Mon, 29 Jun 2020 12:28:50 -0500 Subject: [PATCH] ubuntu-cpc: Disable boot splash in all cloud images (LP: #1725358) When trying to debug an issue on ARM64 it was reported that it was quite difficult to debug because of control codes on the console from the splash. For cloud image there is a chroot customization the drops 'quiet splash' but this is only applied to amd64. It hasn't made it into other architectures because they don't have grub by default in the chroot. However, when we get into binary hook for the uefi disk image and it's derivatives grub is installed and this includes architectures that were skipped in the chroot hook. This patch changes the cpc-fixes chroot hook to add a cloud-images grub config with basic overrides, including dropping the boot splash, for all architectures. For images that never get grub installed this addition is harmless and small while ensuring that the grub experience is consistent for images that have grub. The configuration of console devices as hard-coded remains arch specific. --- .../hooks.d/base/disk-image-ppc64el.binary | 20 ++++----- .../hooks.d/chroot/999-cpc-fixes.chroot | 42 ++++++++++++------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/live-build/ubuntu-cpc/hooks.d/base/disk-image-ppc64el.binary b/live-build/ubuntu-cpc/hooks.d/base/disk-image-ppc64el.binary index 77f24e7e..d6a7f9ac 100755 --- a/live-build/ubuntu-cpc/hooks.d/base/disk-image-ppc64el.binary +++ b/live-build/ubuntu-cpc/hooks.d/base/disk-image-ppc64el.binary @@ -35,19 +35,15 @@ install_grub() { chroot mountpoint apt-get -qqy remove --purge grub-legacy-ec2 # set the kernel commandline to use hvc0 - mkdir -p mountpoint/etc/default/grub.d - cat << EOF > mountpoint/etc/default/grub.d/50-cloudimg-settings.cfg -${IMAGE_STR} + CONSOLE="console=hvc0 earlyprintk" + # Append to the existing GRUB_CMDLINE_LINUX_DEFAULT line + if [ ! -f mountpoint/etc/default/grub.d/50-cloudimg-settings.cfg ]; then + echo "Expected to find an existing grub config override" + exit 1 + fi + sed -e "/^\s*GRUB_CMDLINE_LINUX_DEFAULT=/{s/=\"\"/=\"$CONSOLES$itemNum\"/;t;s/\"$/ $CONSOLES$itemNum&/;}" \ + mountpoint/etc/default/grub.d/50-cloudimg-settings.cfg -# Set the recordfail timeout -GRUB_RECORDFAIL_TIMEOUT=0 - -# Do not wait on grub prompt -GRUB_TIMEOUT=0 - -# Set the default commandline -GRUB_CMDLINE_LINUX_DEFAULT="console=hvc0 earlyprintk" -EOF prep_partition="/dev/mapper${loop_device///dev/}p2" chroot mountpoint grub-install "${prep_partition}" \ --no-nvram \ diff --git a/live-build/ubuntu-cpc/hooks.d/chroot/999-cpc-fixes.chroot b/live-build/ubuntu-cpc/hooks.d/chroot/999-cpc-fixes.chroot index 7817c430..8b805a7a 100755 --- a/live-build/ubuntu-cpc/hooks.d/chroot/999-cpc-fixes.chroot +++ b/live-build/ubuntu-cpc/hooks.d/chroot/999-cpc-fixes.chroot @@ -112,8 +112,26 @@ if [ "${SUBPROJECT:-}" = minimized ]; then _xchroot "${rootd}" apt clean fi -#### END COMMON ARCH FUNCTIONS +# for Quantal and later, use /etc/default/grub.d functionality +# rather than modifying the grub configuration itself. +# This avoids the mess of having to do dpkg stuff +# LP: 1179940 +mkdir -p "${rootd}/etc/default/grub.d" +cat << EOF > "${rootd}/etc/default/grub.d/50-cloudimg-settings.cfg" +# Cloud Image specific Grub settings for Generic Cloud Images +${CLOUD_IMG_STR} + +# Set the recordfail timeout +GRUB_RECORDFAIL_TIMEOUT=0 +# Do not wait on grub prompt +GRUB_TIMEOUT=0 + +# Drop 'quiet' and 'splash' for cloud images +GRUB_CMDLINE_LINUX_DEFAULT="" +EOF + +#### END COMMON ARCH FUNCTIONS case $arch in # ARM, ppc, riscv64 and s390x images are special @@ -187,23 +205,15 @@ fi psuedo_grub_probe > "${gprobe}" chmod 755 "${gprobe}" -# for Quantal and later, use /etc/default/grub.d functionality -# rather than modifying the grub configuration itself. -# This avoids the mess of having to do dpkg stuff -# LP: 1179940 -mkdir -p "${rootd}/etc/default/grub.d" -cat << EOF > "${rootd}/etc/default/grub.d/50-cloudimg-settings.cfg" -# Cloud Image specific Grub settings for Generic Cloud Images -${CLOUD_IMG_STR} -# Set the recordfail timeout -GRUB_RECORDFAIL_TIMEOUT=0 - -# Do not wait on grub prompt -GRUB_TIMEOUT=0 +# Set the consoles on the default grub commandline +CONSOLES="console=tty1 console=ttyS0" +# Append to the existing GRUB_CMDLINE_LINUX_DEFAULT line +sed -e "/^\s*GRUB_CMDLINE_LINUX_DEFAULT=/{s/=\"\"/=\"$CONSOLES$itemNum\"/;t;s/\"$/ $CONSOLES$itemNum&/;}" \ + "${rootd}/etc/default/grub.d/50-cloudimg-settings.cfg" -# Set the default commandline -GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0" +# Append the terminal console setting to the cloud grub config +cat << EOF >> "${rootd}/etc/default/grub.d/50-cloudimg-settings.cfg" # Set the grub console type GRUB_TERMINAL=console