#!/bin/bash -eux architecture=$(chroot chroot dpkg --print-architecture) if [ "$architecture" = "ppc64el" ]; then echo "ppc64el disk images are handled separately" exit 0 fi . /build/config/functions create_empty_partition() { apt-get install -qqy parted parted_prefix="parted $1 --script --" ${parted_prefix} mklabel msdos ${parted_prefix} mkpart primary 1 -1 ${parted_prefix} set 1 B ${parted_prefix} print ${parted_prefix} align-check opt 1 } disk_image=binary/boot/disk.ext4 create_empty_disk_image "${disk_image}" create_empty_partition "${disk_image}" mount_image "${disk_image}" # Copy the chroot in to the disk make_ext4_partition "${rootfs_dev_mapper}" mkdir mountpoint mount "${rootfs_dev_mapper}" mountpoint cp -a chroot/* mountpoint/ umount mountpoint rmdir mountpoint case $architecture in amd64|i386) should_install_grub=1;; *) should_install_grub=0;; esac 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} rm mountpoint/tmp/device.map umount_partition mountpoint rmdir mountpoint fi if [ "$architecture" = "s390x" ]; then # Do ZIPL install bits mkdir mountpoint mount_partition "${rootfs_dev_mapper}" mountpoint # Write out cloudy zipl.conf for future kernel updates cat << EOF > mountpoint/etc/zipl.conf # This has been modified by the cloud image build process [defaultboot] default=ubuntu [ubuntu] target = /boot image = /boot/vmlinuz ramdisk = /boot/initrd.img 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 umount_partition mountpoint rmdir mountpoint fi clean_loops trap - EXIT