summaryrefslogtreecommitdiff
path: root/experiments/03_20251130_leaving_initramfs/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'experiments/03_20251130_leaving_initramfs/Makefile')
-rw-r--r--experiments/03_20251130_leaving_initramfs/Makefile52
1 files changed, 52 insertions, 0 deletions
diff --git a/experiments/03_20251130_leaving_initramfs/Makefile b/experiments/03_20251130_leaving_initramfs/Makefile
new file mode 100644
index 0000000..c55cc00
--- /dev/null
+++ b/experiments/03_20251130_leaving_initramfs/Makefile
@@ -0,0 +1,52 @@
+special_dirs := proc sys
+_special_dirs := $(patsubst %,initramfs/%,$(special_dirs))
+
+pkgs := $(wildcard pkgs/*.deb)
+pkgs_dirs := $(patsubst %.deb,%,$(pkgs))
+pkgs_content := $(patsubst %.deb,%/data.tar.xz,$(pkgs))
+pkgs_unpacked := $(patsubst pkgs/%/data.tar.xz,initramfs/%.unpack,$(pkgs_content))
+
+all : initrd.cpio.gz
+
+initrd.cpio.gz : clean_initramfs initramfs unpack $(_special_dirs) links initramfs/init
+ cd initramfs && find . | cpio -o -H newc | gzip > ../initrd.cpio.gz
+
+initramfs :
+ mkdir initramfs
+
+initramfs/init : init
+ cp $< $@
+ chmod 0755 $@
+
+unpack : $(pkgs_unpacked)
+
+initramfs/%.unpack : pkgs/%/data.tar.xz initramfs
+ tar xf $< -C initramfs
+
+$(_special_dirs) :
+ mkdir -p $@
+
+%/data.tar.xz : %.deb %
+ ar x $< --output "$(@D)"
+
+pkgs/% : pkgs/%.deb
+ mkdir $@
+
+links :
+ ln -s usr/bin initramfs/bin
+ ln -s usr/sbin initramfs/sbin
+ ln -s usr/lib initramfs/lib
+ ln -s usr/lib64 initramfs/lib64
+# ln -s bin/sh initramfs/init
+ ln -s /proc/mounts initramfs/etc/mtab
+
+clean_initramfs :
+ rm -rf initramfs
+
+clean : clean_initramfs
+ rm -rf $(pkgs_dirs)
+ rm initrd.cpio.gz
+
+.PHONY : all clean clean_initramfs unpack links
+.SECONDARY :
+.DEFAULT : all