makefile: Rework how we generate this thing.
diff --git a/Makefile b/Makefile
index 29fc096..9bad192 100644
--- a/Makefile
+++ b/Makefile
@@ -7,103 +7,85 @@
SDCARD_SIZE ?= 8
SDCARD_DEVICE ?=
-all: rsync
+all: rootfs
+
+sdcard.img:
+ @echo "Usage: make"
+ @echo
+ @echo "Place a copy of the freescale sdcard image in this directory as 'sdcard.img'"
+ @echo "this makefile will convert the sdcard.img rootfs into a debian root and"
+ @echo "preserve the kernel modules on the disk."
help: targets
targets:
@echo "Tagets available for building in this Makefile:"
@echo
@echo "prereqs - installs packages required by this Makefile"
- @echo "fs/root - runs debootstrap to build the rootfs tree"
+ @echo "rootfs - runs debootstrap to build the rootfs tree"
@echo " set DEBOOTSTRAP_EXTRA for additional packages"
- @echo "sdcard.img - makes a blank sdcard.img"
- @echo "rsync - installs the filesystem tree"
@echo "flash - writes the sdcard.img to a card"
@echo " set SDCARD_DEVICE to the device in /dev"
@echo "mount - mounts the sdcard.img to mount/{boot,root}"
@echo "unmount - unmounts a previously mounted sdcard.img"
- @echo "clean - removes generated files"
- @echo "mrclean - removes generated files and the debootstrap root"
ensure-unmounted:
- @if [[ -d mount ]]; then \
+ @if [[ -d rootfs ]]; then \
echo "sdcard.img mounted -- unmount first!" >/dev/stderr; \
exit 1; \
fi
ensure-mounted:
- @if [[ ! -d mount ]]; then \
+ @if [[ ! -d rootfs ]]; then \
echo "sdcard.img not mounted -- mount first!" >/dev/stderr; \
exit 1; \
fi
mount: sdcard.img
- sudo mkdir -p mount/boot mount/root
+ mkdir rootfs
sudo kpartx -as sdcard.img
- sudo mount /dev/mapper/loop0p1 mount/boot
- sudo mount /dev/mapper/loop0p2 mount/root
+ sudo mount /dev/mapper/loop0p2 rootfs
umount: unmount
unmount: ensure-mounted
- -[[ -d mount ]] && sudo umount mount/boot mount/root
+ -[[ -d rootfs ]] && sudo umount rootfs
-sudo kpartx -ds sdcard.img
- sudo rm -rf mount/
+ rmdir rootfs
prereqs:
sudo apt-get install $(REQUIRED_PACKAGES)
-fs/root:
- mkdir -p fs/root
+rootfs: sdcard.img
+ mkdir -p rootfs
+ sudo kpartx -as sdcard.img
+ sudo mount /dev/mapper/loop0p2 rootfs
+ sudo tar cpf modules.tar rootfs/lib/modules/
+ sudo umount rootfs
+ sudo mkfs.ext4 -F -L root -j /dev/mapper/loop0p2
+ sudo mount /dev/mapper/loop0p2 rootfs
sudo qemu-debootstrap \
--arch=arm64 \
--keyring /usr/share/keyrings/debian-archive-keyring.gpg \
--variant=buildd \
--exclude=debfoster \
--include=$(DEBOOTSTRAP_EXTRA) \
- stable fs/root
-
-sdcard.img: ensure-unmounted
- dd if=/dev/zero of=sdcard.img bs=1G count=$(SDCARD_SIZE) status=progress
- parted sdcard.img < partmap.txt
- sudo kpartx -as sdcard.img
- sudo mkdosfs -n BOOT /dev/mapper/loop0p1
- sudo mkfs.ext4 -L root -j /dev/mapper/loop0p2
+ stable rootfs
+ sudo tar xpf modules.tar
+ sudo rsync -ar overlay/ rootfs
+ sudo umount rootfs
sudo kpartx -ds sdcard.img
-
-sdcard.img.xz: sdcard.img
- xz sdcard.img
-
-release: rsync sdcard.img.xz
- mv sdcard.img.xz imx-debian-$$(date +%Y-%m-%d).img.xz
-
-rsync: fs/root sdcard.img
- mkdir -p mount/boot mount/root
- sudo kpartx -as sdcard.img
- sudo mount /dev/mapper/loop0p1 mount/boot
- sudo mount /dev/mapper/loop0p2 mount/root
- sudo rsync -r fs/boot/ mount/boot/
- sudo rsync -ar fs/root/ mount/root/
- sudo rsync -ar overlay/ mount/root/
- sudo umount mount/*
- sudo kpartx -ds sdcard.img
- rm -rf mount/
+ rmdir rootfs
+ rm -f modules.tar
flash: ensure-unmounted sdcard.img
@if [[ -z "$(SDCARD_DEVICE)" ]]; then \
- (
+ {
echo "Error! Specify which SDCARD_DEVICE to write to like so: "; \
echo " make SDCARD_DEVICE=/dev/mmcblk0 flash";
- ) >/dev/stderr; \
+ } >/dev/stderr; \
exit 1; \
fi
@echo "WARNING! This will erase all data on $(SDCARD_DEVICE)! Writing in 5 seconds!"
@for i in $(seq 5 -1 1); do echo -n "$i "; sleep 1; done; echo
- sudo dd if=sdcard.img of=$(SDCARD_DEVICE) bs=1G status=progress
+ sudo dd if=sdcard.img of=$(SDCARD_DEVICE) status=progress
-clean: ensure-unmounted
- sudo rm -rf sdcard.img
-
-mrclean: clean
- sudo rm -rf fs/root
-
-.PHONY: prereqs rsync flash clean mrclean help targets mount unmount umount all
+.PHONY: prereqs rootfs flash clean mrclean help targets mount unmount umount all ensure-unmounted ensure-mounted