From ca800e778bd4a9b6d4297a9b82d26f6fdc8e8e95 Mon Sep 17 00:00:00 2001 From: Ben Howard Date: Tue, 2 Feb 2016 13:10:06 -0700 Subject: [PATCH] * ubuntu-cpc: - fixed loop setup due to change of kpartx output - only use grub-install logic for Intel architectures --- debian/changelog | 9 +++-- live-build/ubuntu-cpc/functions | 35 ++++++++++++++----- .../ubuntu-cpc/hooks/032-disk-image.binary | 33 ++++++++++------- 3 files changed, 53 insertions(+), 24 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3581a0f9..05c9ea4f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -livecd-rootfs (2.374) UNRELEASED; urgency=medium +livecd-rootfs (2.374) xenial; urgency=medium [ Michael Vogt ] * ubuntu-core: @@ -13,7 +13,12 @@ livecd-rootfs (2.374) UNRELEASED; urgency=medium * Refactor/reorder ubuntu-cpc support for consistency with other flavors, so that subarch overrides can be applied correctly. - -- Michael Vogt Thu, 28 Jan 2016 18:27:23 +0100 + [ Ben Howard ] + * ubuntu-cpc: + - fixed loop setup due to change of kpartx output + - only use grub-install logic for Intel architectures + + -- Ben Howard Tue, 02 Feb 2016 10:18:14 -0700 livecd-rootfs (2.373) xenial; urgency=medium 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 bbab9817..fe6f1c71 100755 --- 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 @@ -75,7 +74,15 @@ parameters = root=LABEL=cloudimg-rootfs EOF # Create bootmap file - mountpoint/sbin/zipl -V --image=mountpoint/boot/vmlinuz --ramdisk=mountpoint/boot/initrd.img --parameters='root=LABEL=cloudimg-rootfs' --target=mountpoint/boot/ --targetbase=/dev/loop0 --targettype=SCSI --targetblocksize=512 --targetoffset=2048 + mountpoint/sbin/zipl -V \ + --image=mountpoint/boot/vmlinuz \ + --ramdisk=mountpoint/boot/initrd.img \ + --parameters='root=LABEL=cloudimg-rootfs' \ + --target=mountpoint/boot/ \ + --targetbase=/dev/loop0 \ + --targettype=SCSI \ + --targetblocksize=512 \ + --targetoffset=2048 umount_partition mountpoint rmdir mountpoint