# Create a EFI Bootable ISO
FROM ubuntu:15.10

RUN apt-get update && apt-get -y upgrade && apt-get -y install \
    binutils mtools dosfstools xorriso \
    gdisk qemu

RUN mkdir -p /tmp/efi

COPY initrd.img.gz /tmp/efi
COPY kernel/vmlinuz64 /tmp/efi
COPY packages/gummiboot/linuxx64.efi.stub /tmp/efi

# Create a EFI boot file with kernel and initrd. From:
# https://github.com/haraldh/mkrescue-uefi/blob/master/mkrescue-uefi.sh
RUN cd /tmp/efi && \
    echo "earlyprintk=serial console=ttyS0" > cmdline.txt && \
    objcopy \
        --add-section .osrel=/etc/os-release --change-section-vma .osrel=0x20000 \
        --add-section .cmdline=./cmdline.txt --change-section-vma .cmdline=0x30000 \
        --add-section .linux=./vmlinuz64 --change-section-vma .linux=0x40000 \
        --add-section .initrd=initrd.img.gz --change-section-vma .initrd=0x3000000 \
        ./linuxx64.efi.stub \
        mobylinux.efi

# create a ISO with a EFI boot partition
RUN cd /tmp/efi && \
    mkdir -p iso && \
    dd if=/dev/zero of=iso/efi.raw bs=1024 count=70000 && \
    mkfs.vfat iso/efi.raw && \
    mmd -i iso/efi.raw ::/EFI && \
    mmd -i iso/efi.raw ::/EFI/BOOT && \
    mcopy -i iso/efi.raw mobylinux.efi ::/EFI/BOOT/BOOTX64.EFI && \
    xorriso -as mkisofs \
            -R -f -e efi.raw -no-emul-boot -o mobylinux-efi.iso iso

# How to build a VHDX. Commented out because we are currently not using it
# Don't delete: It took too long to figure out how to do this...
# # create a disk image (150MB)
# # This is a little odd, as we run this as part of the default command.
# # Can't run this during the build step as it requires privilege.
# # The Magic numbers in losetup are startsector (2048) times 512 and
# # (endsector - startsector) * 512
# CMD cd /tmp/efi && \
#     dd if=/dev/zero of=disk.raw bs=1024 count=51200 && \
#     sgdisk -N 1 -t 1:ef00 disk.raw && \
#     losetup -o 1048576 --sizelimit 51362816 /dev/loop/1 disk.raw && \
#     mkfs.vfat /dev/loop/1 && \
#     echo "drive c: file=\"/dev/loop/1\" mtools_skip_check=1" > /etc/mtools.conf && \
#     mmd c:/EFI && \
#     mmd c:/EFI/BOOT && \
#     mcopy mobylinux.efi c:/EFI/BOOT/BOOTX64.EFI && \
#     losetup -d /dev/loop/1 && \
#     qemu-img convert -O vhdx disk.raw mobylinux-boot.vhdx && \
#     cp /tmp/efi/mobylinux.efi /tmp/efi/mobylinuxefi.iso /tmp/efi/mobylinux-boot.vhdx /mnt/
