7 : start=8192, size=114688, type=1, type=c\n\
8 : start=122880, type=83\n
12 deb http://raspbian.raspberrypi.org/raspbian stretch main non-free firmware rpi\n\
13 deb http://archive.raspberrypi.org/debian stretch main\n
15 BOOTSTRAP := http://raspbian.raspberrypi.org/raspbian
18 deb http://localhost/raspbian stretch main non-free firmware rpi\n
20 BOOTSTRAP := http://localhost/raspbian
22 PACKAGES := apt apt-transport-https bluez bluez-firmware btrfs-tools busybox-static bzip2 ca-certificates cron deborphan firmware-atheros firmware-brcm80211 firmware-libertas firmware-linux-free firmware-misc-nonfree firmware-realtek gzip htop ifupdown init iptables iputils-ping irqbalance isc-dhcp-client less libraspberrypi-bin libraspberrypi0 make net-tools nmap ntpdate openssh-client openssh-server p7zip-full raspberrypi-bootloader raspberrypi-kernel rpi-update rsync ssh sshfs sudo systemd traceroute unace unrar-free unzip vim wget wireless-tools wpasupplicant xz-utils zip
24 raspi_root: /usr/bin/qemu-arm-static
25 btrfs subvolume create "$@" || mkdir "$@"
28 cp -p "$<" "$@/usr/bin/"
29 debootstrap --keyring=./raspbian-archive-keyring.gpg \
30 --arch=armhf --variant=minbase \
31 stretch "$@/" "${BOOTSTRAP}"
33 raspi_root/: raspi_root .FORCE
34 printf '${SOURCES}' >$@/etc/apt/sources.list
35 -chroot "$@" apt-key add - <./raspberrypi-archive-keyring.gpg
36 -cp /etc/resolv.conf "$@etc/"
37 # for tree in ${CONFIG}; do for file in apt default timezone; do cp -av "$$tree/etc/$$file" "$@/etc/" || true; done; done
38 -chroot "$@" sh -c 'apt-mark showmanual |xargs apt-mark auto'
39 -chroot "$@" apt-get update
40 chroot "$@" ln -sf /bin/true /usr/local/sbin/invoke-rc.d
41 chroot "$@" apt-get --yes install ${PACKAGES}
42 chroot "$@" apt-get --yes --auto-remove purge
43 chroot "$@" apt-get --yes --auto-remove upgrade
44 chroot "$@" rm /usr/local/sbin/invoke-rc.d
45 chroot "$@" apt-get clean
48 raspi.img: raspi_root/
51 dd bs=1M count=0 seek=1024 of="$@"
52 printf '${PARTITIONS}' |sfdisk "$@"
53 lo=$$(losetup -f); image='$@'; \
54 start=$$(sfdisk --dump "$$image" |sed -rn 's;^.*start= *([0-9]+),.*type=83;\1;p'); \
55 size=$$(sfdisk --dump "$$image" |sed -rn 's;^.*size= *([0-9]+),.*type=83;\1;p'); \
56 losetup -o $$((start * 512)) --sizelimit $$((size * 512)) "$${lo}" "$$image" && \
57 mkfs.ext4 "$$lo" && mount -t ext4 "$$lo" "$@.mnt/";
59 lo=$$(losetup -f); image='$@'; \
60 start=$$(sfdisk --dump "$$image" |sed -rn 's;^.*start= *([0-9]+),.*type=c;\1;p'); \
61 size=$$(sfdisk --dump "$$image" |sed -rn 's;^.*size= *([0-9]+),.*type=c;\1;p'); \
62 losetup -o $$((start * 512)) --sizelimit $$((size * 512)) "$${lo}" "$$image" && \
63 mkfs.vfat "$$lo" && mount -t vfat "$$lo" "$@.mnt/boot";
64 rsync -av "$<" "$@.mnt/"
65 umount "$@.mnt/boot/" "$@.mnt/"
66 losetup -a |sed -rn '/$@/{s;^([^:]+):.*$$;\1;p;q}' |xargs losetup -d
67 losetup -a |sed -rn '/$@/{s;^([^:]+):.*$$;\1;p;q}' |xargs losetup -d