X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=Makefile;h=03a66ae2432f1a1cc738d660c7ec2a7b4c4ff02c;hb=9fd67c85227b727824340a7552eec17fd460bb51;hp=d2493c5c2c201132aa39c51e85378162bda3034f;hpb=a3ea4fb2e4ea5e34ed19515d5af513f62cdc09c1;p=blast diff --git a/Makefile b/Makefile index d2493c5..03a66ae 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,16 @@ 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 _bootloader _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 -BOOT_MB := 126 -ROOT_MB := 1920 +# Partition Table (2M) + Boot Partition (126M)+ Root Partition + Slack Space (1M) = 2048M +BOOT_MB := 62 +ROOT_MB := 959 define SOURCES = deb http://cdn.debian.net/debian stretch main @@ -31,9 +33,9 @@ _mount: _format _bootstrap: _mount _install: _bootstrap _mount _config: _install _mount -_syslinux: _mount -_umount: _mount _config _syslinux -_mbr: _umount _syslinux +_bootloader: _mount +_umount: _mount _config _bootloader +_mbr: _umount _bootloader else ifdef image VOLUME := ${image} @@ -51,11 +53,11 @@ _format: _sparse _mount: _format _copy: _install _mount _config: _copy _mount -_syslinux: _mount -_umount: _mount _config _syslinux +_bootloader: _mount +_umount: _mount _config _bootloader _partition: _partcopy: _partition _umount -_mbr: _partcopy _syslinux +_mbr: _partcopy _bootloader else ifdef squash SQUASH := ${squash} @@ -182,57 +184,94 @@ ${SQUASH}: ${CFGROOT} _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 count=0 of="$${VOLUME}" # truncate + 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 count=0 of="$${PBOOT}" # truncate 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 count=0 of="$${PROOT}" # truncate 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 +.PHONY: _grub_efi32 _grub_efi64 + _syslinux_efi32: ${CFGROOT} mkdir -p "$${CFGROOT}/boot/EFI/BOOT" 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 + printf 'PATH /efi32\nINCLUDE /bootmenu.cfg\nMENU TITLE Syslinux EFI-32\n' >"$${CFGROOT}/boot/syslia32.cfg" _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 + printf 'PATH /efi64\nINCLUDE /bootmenu.cfg\nMENU TITLE Syslinux EFI-64\n' >"$${CFGROOT}/boot/syslx64.cfg" _syslinux_bios: ${CFGROOT} mkdir -p "$${CFGROOT}/boot/bios" cp $(addprefix /usr/lib/syslinux/modules/bios/, menu.c32 libutil.c32) "$${CFGROOT}"/boot/bios/ + printf 'PATH bios\nINCLUDE bootmenu.cfg\nMENU TITLE Syslinux BIOS\n' >"$${CFGROOT}/boot/syslinux.cfg" -_syslinux: ${CFGROOT} _syslinux_efi32 _syslinux_efi64 _syslinux_bios - cp -L "$${CFGROOT}/vmlinuz" "$${CFGROOT}/initrd.img" "$${CFGROOT}/boot/" - cp -ru cfg_syslinux/. "$${CFGROOT}/" +_grub_efi32: ${CFGROOT} + mkdir -p "$${CFGROOT}/boot/EFI/BOOT" + grub-mkimage -p / -O i386-efi fat part_gpt normal linux all_video >"$${CFGROOT}/boot/EFI/BOOT/BOOTIA32.EFI" -_mbr: ${VOLUME} +_grub_efi64: ${CFGROOT} + mkdir -p "$${CFGROOT}/boot/EFI/BOOT" + grub-mkimage -p / -O x86_64-efi fat part_gpt normal linux all_video >"$${CFGROOT}/boot/EFI/BOOT/BOOTX64.EFI" + +_bootloader: ${CFGROOT} _grub_efi32 _grub_efi64 _syslinux_bios #_syslinux_efi32 _syslinux_efi64 + # cp -L "$${CFGROOT}/vmlinuz" "$${CFGROOT}/initrd.img" "$${CFGROOT}/boot/" + # cp -r cfg_syslinux/. "$${CFGROOT}/" + printf 'UI menu.c32\nDEFAULT stretch\nTIMEOUT 30\n' >"$${CFGROOT}/boot/bootmenu.cfg" + printf 'set timeout=3\ndefault=stretch\n\n' >"$${CFGROOT}/boot/grub.cfg" + k="$$(printf ' %s' "$${CFGROOT}/boot/"vmlinuz-*)"; k="$${k##*/}"; \ + i="$$(printf ' %s' "$${CFGROOT}/boot/"initrd.img-*)"; i="$${i##*/}"; \ + printf '\nLABEL stretch\n MENU LABEL Debian Stretch\n KERNEL /%s\n INITRD /%s\n APPEND root=LABEL=FSROOT\n' \ + "$$k" "$$i" >>"$${CFGROOT}/boot/bootmenu.cfg"; \ + printf '\nLABEL rescue\n MENU LABEL Rescue\n KERNEL /%s\n INITRD /%s\n APPEND root=LABEL=FSROOT init=/bin/sh\n' \ + "$$k" "$$i" >>"$${CFGROOT}/boot/bootmenu.cfg"; \ + printf "menuentry 'Debian Stretch' --id 'stretch' {\n linux '/%s' root=LABEL=FSROOT\n initrd '/%s'\n}\n" \ + "$$k" "$$i" >>"$${CFGROOT}/boot/grub.cfg"; \ + printf "menuentry 'Rescue' --id 'rescue' {\n linux '/%s' root=LABEL=FSROOT init=/bin/sh\n initrd '/%s'\n}\n" \ + "$$k" "$$i" >>"$${CFGROOT}/boot/grub.cfg" + +.PHONY: _syslinux_mbr _grub_mbr + +_syslinux_mbr: ${VOLUME} syslinux -t 2097152 -i "$${VOLUME}" dd conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of="$${VOLUME}" +_grub_mbr: ${VOLUME} + # grub-mkimage -p / -O i386-pc fat part_gpt normal linux all_video |dd conv=notrunc of="$${VOLUME}" + +_mbr: _syslinux_mbr # _grub_mbr + _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}" @@ -254,11 +293,12 @@ clean: -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}"