]> git.plutz.net Git - bootimage/blobdiff - Makefile
adaptions from Zirkus Zack branch
[bootimage] / Makefile
index a80a8a73fac6f26b11b3c992c99d400f97fcd6df..00c2c4ea7474a634ebb593b701e8d4f22bb7b76f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -7,20 +7,22 @@ GROUPS := sudo
 ARCH := amd64
 CONFIG := config_base/
 
-PACKAGES := apt bilibop-lockfs btrfs-tools busybox-static bzip2 ca-certificates cron deborphan extlinux gzip htop ifupdown init iputils-ping irqbalance isc-dhcp-client less live-boot live-boot-initramfs-tools make man-db nbd-client net-tools nmap ntpdate openssh-client openssh-server p7zip-full pciutils rsync squashfs-tools sshfs sudo systemd unace unrar-free unzip vim wget wireless-tools wpasupplicant xz-utils zip
+PACKAGES := apt bilibop-lockfs btrfs-tools busybox-static bzip2 ca-certificates cron deborphan efibootmgr firmware-linux-free gzip htop ifupdown init iputils-ping irqbalance isc-dhcp-client less live-boot live-boot-initramfs-tools make man-db nbd-client net-tools nmap ntpdate openssh-client openssh-server p7zip-full pciutils rsync squashfs-tools sshfs sudo syslinux syslinux-common syslinux-efi systemd unace unrar-free unzip vim wget wireless-tools wpasupplicant xz-utils zip
 
-Include *.mk
+include *.mk
+
+.PRECIOUS: stretch_%_root/bin/sh
 
 stretch_%_root/bin/sh:
        btrfs subvolume create "$(subst bin/sh,,$@)" || mkdir "$(subst bin/sh,,$@)"
        chmod 755 "$(subst bin/sh,,$@)"
        debootstrap --arch=${ARCH} --variant=minbase stretch "$(subst bin/sh,,$@)"
 
-stretch_%_root/: stretch_%_root/bin/sh ${CONFIG} .FORCE
+stretch_%_root/: stretch_%_root/bin/sh ${CONFIG} permissions .FORCE
        for tree in ${CONFIG}; do for file in apt default timezone; do cp -av "$$tree/etc/$$file" "$@/etc/" || true; done; done
        chroot "$@" ln -sf /bin/true /usr/local/sbin/invoke-rc.d
        chroot "$@" sh -c 'apt-mark showmanual |xargs apt-mark auto || true'
-       chroot "$@" apt-get update
+       -chroot "$@" apt-get update
        chroot "$@" umount /proc /dev || true
        chroot "$@" mount -t devtmpfs udev /dev
        chroot "$@" mount -t proc proc /proc
@@ -32,16 +34,59 @@ stretch_%_root/: stretch_%_root/bin/sh ${CONFIG} .FORCE
        chroot "$@" apt-get clean
        touch "$@"
 
-stretch_%_config/: stretch_%_root/ ${CONFIG} .FORCE
-       btrfs subvolume delete "$@" || rm -r "$@" || true
+stretch_%_config/: stretch_%_root/ ${CONFIG} permissions .FORCE
+       if [ -d "$@" ]; then btrfs subvolume delete "$@" || rm -r "$@"; else true; fi
        btrfs subvolume snapshot "$<" "$@" || cp -rlv "$<" "$@"
        cp -av $(addsuffix /*, ${CONFIG}) "$@"
-       chroot "$@" locale-gen
-       chroot "$@" update-locale
-       chroot "$@" useradd -M -p "$$(printf %s\\n '${PASS}' |mkpasswd -m sha-256 -s)" '${USER}'
-       for g in ${GROUPS}; do chroot "$@" adduser '${USER}' "$$g"; done
+       -chroot "$@" locale-gen
+       -chroot "$@" update-locale
+       -chroot "$@" useradd -M -p "$$(printf %s\\n '${PASS}' |mkpasswd -m sha-256 -s)" '${USER}'
+       -for g in ${GROUPS}; do chroot "$@" adduser '${USER}' "$$g"; done
        touch "$@"
 
 stretch_%.squashfs: stretch_%_config/
        rm "$@" || true
        mksquashfs "$<" "$@" -comp xz
+       chmod a+r "$@"
+
+vmlinuz: stretch_*_root/
+       ln -fs '$<$@' ./
+
+initrd.img: stretch_*_root/
+       ln -fs '$<$@' ./
+
+/dev/sd%: partitions .FORCE
+       sfdisk ${@} <partitions
+       dd of=${@} if=/usr/lib/syslinux/mbr/gptmbr.bin
+
+/dev/sd%1: /dev/sd% vmlinuz initrd.img syslinux.cfg syslia32.cfg syslx64.cfg bootmenu.cfg .FORCE
+       mkdir -p mount
+       mkfs.vfat -n SQUASHBOOT ${@}
+       syslinux -i ${@}
+       mount -t vfat ${@} mount
+       mkdir -p $(addprefix mount/, EFI/BOOT efi32 efi64 bios)
+       cp /usr/lib/SYSLINUX.EFI/efi32/syslinux.efi mount/EFI/BOOT/BOOTIA32.EFI
+       cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi mount/EFI/BOOT/BOOTX64.EFI
+       cp $(addprefix /usr/lib/syslinux/modules/efi32/, ldlinux.e32 menu.c32 libutil.c32) mount/efi32/
+       cp $(addprefix /usr/lib/syslinux/modules/efi64/, ldlinux.e64 menu.c32 libutil.c32) mount/efi64/
+       cp $(addprefix /usr/lib/syslinux/modules/bios/, menu.c32 libutil.c32) mount/bios/
+       cp -L vmlinuz initrd.img *.squashfs Makefile partitions mount/
+       cp syslia32.cfg syslx64.cfg syslinux.cfg bootmenu.cfg mount/
+       # Temporary workaround, Uncomment for syslinux 6.04+
+       cp $(addprefix /usr/lib/syslinux/modules/, efi32/ldlinux.e32 efi64/ldlinux.e64) mount/EFI/BOOT/
+       cp syslx64.cfg mount/EFI/BOOT/syslinux.cfg
+       umount mount/
+       sync
+
+/dev/sd%2: /dev/sd% .FORCE
+       mkswap -L SWAP ${@}
+       sync
+
+/dev/sd%3: /dev/sd% .FORCE
+       mkdir -p mount
+       mkfs.btrfs -fL SQUASHCLIENT ${@}
+       mount -t btrfs ${@} mount
+       btrfs subvolume create mount/home
+       chmod 0755 mount/home
+       umount mount/
+       sync