blob: c55cc00a6d0c7dbfceffe09eec16b567de61fcf7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
|