DEFAULT: _target
-.PHONY: clean _target _qemu _partition _format _mount _bootstrap _install _sparse _copy _config _syslinux _umount _partcopy _squash _mbr
+.PHONY: clean .FORCE
+.PHONY: _qemu _bootstrap _install _copy _config _syslinux _squash
+.PHONY: _target _partition _format _mount _sparse _umount _partcopy _mbr
ARCH := amd64
KEYRING := keys/debian-archive-stretch-stable.gpg
BOOTSTRAP := http://cdn.debian.net/debian
-# Partition Table + Boot Partition + Root Partition = 2048M
+# Partition Table (2M) + Boot Partition (126M)+ Root Partition + Slack Space (1M) = 2048M
BOOT_MB := 126
-ROOT_MB := 1920
+ROOT_MB := 1919
define SOURCES =
deb http://cdn.debian.net/debian stretch main
_squash: ${SQUASH}
-${VOLUME}:
+${VOLUME}: .FORCE
! printf '%s\n' "$${VOLUME}" |grep -q '^/dev/' # abort if volume should be real device
- dd bs=1M count=0 seek=$$((2 + ${BOOT_MB} + ${ROOT_MB})) of="$${VOLUME}"
+ dd bs=1M count=0 seek=$$((3 + ${BOOT_MB} + ${ROOT_MB})) of="$${VOLUME}"
-${PBOOT}:
+${PBOOT}: .FORCE
! printf '%s\n' "$${PBOOT}" |grep -q '^/dev/' # abort if volume should be real device
dd bs=1M count=0 seek=${BOOT_MB} of="$${PBOOT}"
-${PROOT}:
+${PROOT}: .FORCE
! printf '%s\n' "$${PROOT}" |grep -q '^/dev/' # abort if volume should be real device
dd bs=1M count=0 seek=${ROOT_MB} of="$${PROOT}"
_partition: ${VOLUME}
- printf 'label: gpt\n\n: start=2MiB, size=%iMiB, type=1, attrs="LegacyBIOSBootable"\n: type=20\n' \
- ${BOOT_MB} | sfdisk "$${VOLUME}"
+ printf 'label: gpt\n\n: start=2MiB, size=%iMiB, type=1, attrs="LegacyBIOSBootable"\n: size=%iMiB, type=20\n' \
+ ${BOOT_MB} ${ROOT_MB} | sfdisk "$${VOLUME}"
_sparse: ${PBOOT} ${PROOT}
_format: ${PBOOT} ${PROOT}
-umount "$${CFGROOT}/boot" "$${CFGROOT}"
- mkfs.fat -F 32 -n boot "$${PBOOT}"
+ mkfs.fat -F 32 -n BOOT "$${PBOOT}"
mkfs.ext4 -F -L FSROOT "$${PROOT}"
.PHONY: _syslinux_efi32 _syslinux_efi64 _syslinux_bios
cp /usr/lib/SYSLINUX.EFI/efi32/syslinux.efi "$${CFGROOT}/boot/EFI/BOOT/BOOTIA32.EFI"
mkdir -p "$${CFGROOT}/boot/efi32"
cp $(addprefix /usr/lib/syslinux/modules/efi32/, ldlinux.e32 menu.c32 libutil.c32) "$${CFGROOT}"/boot/efi32/
+ cp /usr/lib/syslinux/modules/efi32/ldlinux.e32 "$${CFGROOT}/boot/EFI/BOOT/" # workaround
_syslinux_efi64: ${CFGROOT}
mkdir -p "$${CFGROOT}/boot/EFI/BOOT"
cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi "$${CFGROOT}/boot/EFI/BOOT/BOOTX64.EFI"
mkdir -p "$${CFGROOT}/boot/efi64"
- cp $(addprefix /usr/lib/syslinux/modules/efi64/, ldlinux.e64 menu.c32 libutil.c32) "$${CFGROOT}"/boot/efi32/
+ cp $(addprefix /usr/lib/syslinux/modules/efi64/, ldlinux.e64 menu.c32 libutil.c32) "$${CFGROOT}"/boot/efi64/
+ cp /usr/lib/syslinux/modules/efi64/ldlinux.e64 "$${CFGROOT}/boot/EFI/BOOT/" # workaround
+
_syslinux_bios: ${CFGROOT}
mkdir -p "$${CFGROOT}/boot/bios"
_syslinux: ${CFGROOT} _syslinux_efi32 _syslinux_efi64 _syslinux_bios
cp -L "$${CFGROOT}/vmlinuz" "$${CFGROOT}/initrd.img" "$${CFGROOT}/boot/"
cp -ru cfg_syslinux/. "$${CFGROOT}/"
+ # cp "$${CFGROOT}/boot/syslx64.cfg" "$${CFGROOT}/boot/EFI/BOOT/syslinux.cfg" # workaround
_mbr: ${VOLUME}
syslinux -t 2097152 -i "$${VOLUME}"
dd conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of="$${VOLUME}"
_partcopy: ${VOLUME} ${PROOT} ${PBOOT}
- dd bs=1M seek=2 if="$${PBOOT}" of="$${VOLUME}"
- dd bs=1M seek=$$((2 + ${BOOT_MB})) if="$${PROOT}" of="$${VOLUME}"
+ dd conv=notrunc,sparse bs=1M seek=2 if="$${PBOOT}" of="$${VOLUME}"
+ dd conv=notrunc,sparse bs=1M seek=$$((2 + ${BOOT_MB})) if="$${PROOT}" of="$${VOLUME}"
_mount: ${PBOOT} ${PROOT} ${CFG_ROOT}
mount -t ext4 "$${PROOT}" "$${CFGROOT}"
-umount hdd_mount/boot
-umount hdd_mount
-rmdir hdd_mount
- if [ -d "sys_root/" ] && ! mount |grep -qwFe "sys_root/"; then \
- btrfs sub del "sys_root/" || echo rm -r "sys_root/"; \
- fi
- if [ -d "cfg_root/" ] && ! mount |grep -qwFe "cfg_root/"; then \
- btrfs sub del "cfg_root/" || echo rm -r "cfg_root/"; \
- fi
- -rm "$${SQUASH}"
+ if [ -d "sys_root/" ]; then btrfs sub del "sys_root/" || echo rm -r "sys_root/"; fi
+ if [ -d "cfg_root/" ]; then btrfs sub del "cfg_root/" || echo rm -r "cfg_root/"; fi
+ if [ -d "rpi_root/" ]; then btrfs sub del "rpi_root/" || echo rm -r "rpi_root/"; fi
+ -rm part_boot.img
+ -rm part_root.img
+ -rm rpi_boot.img
+ -rm rpi_root.img
+ -[ -f "$${SQUASH}" ] && rm "$${SQUASH}"
-[ -f "$${VOLUME}" ] && rm "$${VOLUME}"