summaryrefslogtreecommitdiff
path: root/mkinitram
blob: 5f95d5a74c78eaffa3ffdb3223c16f6a12916341 (plain) (blame)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/sh

msg() {
	echo "==>" $@
}

die() {
	echo $@
	exit 1
}

unapk() {
	local dest="$1"
	shift
	while [ $# -gt 0 ]; do
		tar -C "$dest" -zxf "$1"
		shift
	done
	rm -f "$dest/.PKGINFO"
}


APKS=../aports/core/*/

image=$PWD/image
dest=$PWD/test.gz
init=init


kernel=$1
# if no kernel specified, then guess...
if [ -z "$kernel" ]; then
	kernel=$(ls /lib/modules 2>/dev/null | tail -n 1)
fi

if [ ! -d /lib/modules/$kernel ]; then
	die "modules dir /lib/modules/$kernel was not found"
fi
msg "mkinitram Using kernel $kernel"

# create empty image dir

rm -rf "$image"
mkdir -p "$image/dev" "$image/etc/rcS.d"

# unpack busybox and deps
unapk $image $APKS/uclibc-[0-9]*.apk \
	$APKS/busybox-[0-9]*.apk \
	$APKS/alpine-baselayout-[0-9]*.apk \
	$APKS/apk-tools-[0-9]*.apk

ln -sf /bin/busybox $image/init

# create misc devs and enable boot scripts
mknod $image/dev/null c 2 2
ln -s ../init.d/mdev $image/etc/rcS.d/S10mdev
ln -s ../init.d/hwdrivers $image/etc/rcS.d/S30hwdrivers
ln -s ../init.d/modutils $image/etc/rcS.d/S40modutils
ln -s ../init.d/modloop $image/etc/rcS.d/S50modloop
ln -s ../init.d/hwdrivers $image/etc/rcS.d/S60hwdrivers

mkdir $image/.modloop

# load those extra drivers
for i in ide-cd usb-storage ide-disk loop; do
	echo $i >> $image/etc/modules
done


# copy kernel modules
kmods=$image/lib/modules/$kernel
mkdir -p $kmods/kernel/drivers $kmods/kernel/fs

for i in ata block ide scsi cdrom usb message; do
	cp -LpR /lib/modules/$kernel/kernel/drivers/$i $kmods/kernel/drivers/
done

for i in isofs vfat nls ext2 cramfs '*.ko'; do
	cp -LpR /lib/modules/$kernel/kernel/fs/$i $kmods/kernel/fs/
done
cp -LpR /lib/modules/$kernel/kernel/lib $kmods/kernel/

depmod $kernel -b $image
	

# generate the image
cd $image
find . | cpio -o -H newc | gzip -9 > $dest