From 9cf7b2278f06f432d1caf4054f49498f668beb8f Mon Sep 17 00:00:00 2001 From: Robert C Jennings Date: Thu, 25 May 2017 20:35:24 -0500 Subject: [PATCH] ubuntu-cpc: Refactor for consistency & fix grub-install logic [ Steve Langasek ] * Refactor/reorder ubuntu-cpc support for consistency with other flavors, so that subarch overrides can be applied correctly. [ Ben Howard ] * ubuntu-cpc: - fixed loop setup due to change of kpartx output - only use grub-install logic for Intel architectures --- debian/changelog | 13 +++++ live-build/auto/config | 52 +++++++++---------- live-build/ubuntu-cpc/functions | 35 +++++++++---- .../ubuntu-cpc/hooks/032-disk-image.binary | 23 ++++---- 4 files changed, 75 insertions(+), 48 deletions(-) diff --git a/debian/changelog b/debian/changelog index c274207d..ef3c9db6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +livecd-rootfs (2.209.10) trusty; urgency=medium + + [ Steve Langasek ] + * Refactor/reorder ubuntu-cpc support for consistency with other flavors, + so that subarch overrides can be applied correctly. + + [ Ben Howard ] + * ubuntu-cpc: + - fixed loop setup due to change of kpartx output + - only use grub-install logic for Intel architectures + + -- Robert C Jennings Tue, 23 May 2017 21:01:47 -0500 + livecd-rootfs (2.209.9) trusty; urgency=medium [Daniel Watkins] diff --git a/live-build/auto/config b/live-build/auto/config index 72e0a0ff..eea3b37f 100755 --- a/live-build/auto/config +++ b/live-build/auto/config @@ -388,6 +388,31 @@ case $PROJECT in ;; ubuntu-cpc) + add_task install minimal standard cloud-image + add_package install ubuntu-minimal + + BINARY_REMOVE_LINUX=false + OPTS="${OPTS:+$OPTS }--initramfs=none" + KERNEL_FLAVOURS=virtual + case $ARCH in + armhf) + KERNEL_FLAVOURS=generic-lpae + add_package install flash-kernel + add_task install server + ;; + arm64) + KERNEL_FLAVOURS=generic + add_package install flash-kernel + add_task install server + ;; + ppc64el) + add_task install server + ;; + esac + OPTS="${OPTS:+$OPTS }--system=normal" + OPTS="${OPTS:+$OPTS }--hdd-label=cloudimg-rootfs" + OPTS="${OPTS:+$OPTS }--ext-resize-blocks=536870912 --ext-block-size=4096" + OPTS="${OPTS:+$OPTS }--ext-fudge-factor=15" ;; *) @@ -467,33 +492,6 @@ case $PROJECT in ;; esac -if [ "$PROJECT" = "ubuntu-cpc" ]; then - BINARY_REMOVE_LINUX=false - OPTS="${OPTS:+$OPTS }--initramfs=none" - KERNEL_FLAVOURS=virtual - case $ARCH in - armhf) - KERNEL_FLAVOURS=generic-lpae - add_package install flash-kernel - add_task install server - ;; - arm64) - KERNEL_FLAVOURS=generic - add_package install flash-kernel - add_task install server - ;; - ppc64el) - add_task install server - ;; - esac - OPTS="${OPTS:+$OPTS }--system=normal" - OPTS="${OPTS:+$OPTS }--hdd-label=cloudimg-rootfs" - OPTS="${OPTS:+$OPTS }--ext-resize-blocks=536870912 --ext-block-size=4096" - OPTS="${OPTS:+$OPTS }--ext-fudge-factor=15" - add_task install minimal standard cloud-image - add_package install landscape-client ubuntu-minimal -fi - add_chroot_hook update-apt-file-cache add_chroot_hook update-apt-xapian-index add_chroot_hook update-mlocate-database diff --git a/live-build/ubuntu-cpc/functions b/live-build/ubuntu-cpc/functions index 79b02c4c..f4557c9e 100644 --- a/live-build/ubuntu-cpc/functions +++ b/live-build/ubuntu-cpc/functions @@ -11,15 +11,16 @@ backing_img= apt-get -qqy install dosfstools gdisk clean_loops() { - if [ -z "${rootfs_dev_mapper}" ]; then - return 0 - fi if [ -n "${backing_img}" ]; then kpartx -v -d "${backing_img}" + unset backing_img + fi + + if [ -z "${rootfs_dev_mapper}" ]; then + return 0 fi - unset backing_img unset loop_device unset loop_raw unset rootfs_dev_mapper @@ -40,11 +41,27 @@ mount_image() { apt-get install -qqy kpartx trap clean_loops EXIT backing_img="$1" - loop_raw="$(kpartx -s -v -a "$1" )" - loop_device="$(echo -e "${loop_raw}" | head -n1 | awk '{print($(NF-1))}')" - rootfs_dev_mapper="/dev/mapper${loop_device///dev/}p1" - [ ! -b "${rootfs_dev_mapper}" ] && - echo "${rootfs_dev_mapper} is not a block device" && exit 1 + kpartx_mapping="$(kpartx -s -v -a ${backing_img})" + + # Find the loop device + loop_p1="$(echo -e ${kpartx_mapping} | head -n1 | awk '{print$3}')" + loop_device="/dev/loop$(echo ${loop_p1} | cut -b5)" + if [ ! -b ${loop_device} ]; then + echo "unable to find loop device for ${backing_img}" + exit 1 + fi + + # Find the rootfs location + rootfs_dev_mapper="/dev/mapper/${loop_p1}" + if [ ! -b "${rootfs_dev_mapper}" ]; then + echo "${rootfs_dev_mapper} is not a block device"; + exit 1 + fi + + # Add some information to the debug logs + echo "Mounted disk image ${backing_img} to ${rootfs_dev_mapper}" + blkid ${rootfs_dev_mapper} + return 0 } diff --git a/live-build/ubuntu-cpc/hooks/032-disk-image.binary b/live-build/ubuntu-cpc/hooks/032-disk-image.binary index 99514de4..1eefd13c 100644 --- a/live-build/ubuntu-cpc/hooks/032-disk-image.binary +++ b/live-build/ubuntu-cpc/hooks/032-disk-image.binary @@ -32,24 +32,23 @@ cp -a chroot/* mountpoint/ umount mountpoint rmdir mountpoint -should_install_grub() { - case $architecture in - armhf|arm64) - return 1 - ;; - *) - return 0 - ;; - esac -} +case $architecture in + amd64|i386) should_install_grub=1;; + *) should_install_grub=0;; +esac -if should_install_grub; then +if [ "${should_install_grub}" -eq 1 ]; then mkdir mountpoint mount_partition "${rootfs_dev_mapper}" mountpoint echo "(hd0) ${loop_device}" > mountpoint/tmp/device.map chroot mountpoint grub-install ${loop_device} - chroot mountpoint grub-bios-setup --boot-image=i386-pc/boot.img --core-image=i386-pc/core.img --skip-fs-probe --device-map=/tmp/device.map ${loop_device} + chroot mountpoint grub-bios-setup \ + --boot-image=i386-pc/boot.img \ + --core-image=i386-pc/core.img \ + --skip-fs-probe \ + --device-map=/tmp/device.map \ + ${loop_device} rm mountpoint/tmp/device.map umount_partition mountpoint