diff options
| author | wrzosik <mia@miangie.dev> | 2025-11-30 15:21:08 +0100 |
|---|---|---|
| committer | wrzosik <mia@miangie.dev> | 2025-11-30 15:21:08 +0100 |
| commit | 73f39a96c8786cf9491c06e8ba60edd63863dac1 (patch) | |
| tree | 8dd9c6ad689872d88c6b1fcd5cc38cfe73fe575a /experiments/03_20251130_leaving_initramfs/Makefile | |
| parent | 4859194c62140a947a0d60bd3bc557c181139baf (diff) | |
experiment: Leave initramfs
Added experiment on booting past initramfs. It uses Makefile to build initramfs.
Diffstat (limited to 'experiments/03_20251130_leaving_initramfs/Makefile')
| -rw-r--r-- | experiments/03_20251130_leaving_initramfs/Makefile | 52 |
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 |
