projects/aports·blob v2.14.0 · refs

88 lines · 1.7 KiB

1#!/bin/sh
2
3msg() {
4 echo "==>" $@
5}
6
7die() {
8 echo $@
9 exit 1
10}
11
12unapk() {
13 local dest="$1"
14 shift
15 while [ $# -gt 0 ]; do
16 tar -C "$dest" -zxf "$1"
17 shift
18 done
19 rm -f "$dest/.PKGINFO"
20}
21
22
23APKS=../aports/core/*/
24
25image=$PWD/image
26dest=$PWD/test.gz
27init=init
28
29
30kernel=$1
31# if no kernel specified, then guess...
32if [ -z "$kernel" ]; then
33 kernel=$(ls /lib/modules 2>/dev/null | tail -n 1)
34fi
35
36if [ ! -d /lib/modules/$kernel ]; then
37 die "modules dir /lib/modules/$kernel was not found"
38fi
39msg "mkinitram Using kernel $kernel"
40
41# create empty image dir
42
43rm -rf "$image"
44mkdir -p "$image/dev" "$image/etc/rcS.d"
45
46# unpack busybox and deps
47unapk $image $APKS/uclibc-[0-9]*.apk \
48 $APKS/busybox-[0-9]*.apk \
49 $APKS/alpine-baselayout-[0-9]*.apk \
50 $APKS/apk-tools-[0-9]*.apk
51
52ln -sf /bin/busybox $image/init
53
54# create misc devs and enable boot scripts
55mknod $image/dev/null c 2 2
56ln -s ../init.d/mdev $image/etc/rcS.d/S10mdev
57ln -s ../init.d/hwdrivers $image/etc/rcS.d/S30hwdrivers
58ln -s ../init.d/modutils $image/etc/rcS.d/S40modutils
59ln -s ../init.d/modloop $image/etc/rcS.d/S50modloop
60ln -s ../init.d/hwdrivers $image/etc/rcS.d/S60hwdrivers
61
62mkdir $image/.modloop
63
64# load those extra drivers
65for i in ide-cd usb-storage ide-disk loop; do
66 echo $i >> $image/etc/modules
67done
68
69
70# copy kernel modules
71kmods=$image/lib/modules/$kernel
72mkdir -p $kmods/kernel/drivers $kmods/kernel/fs
73
74for i in acpi ata block ide scsi cdrom usb message hid; do
75 cp -LpR /lib/modules/$kernel/kernel/drivers/$i $kmods/kernel/drivers/
76done
77
78for i in isofs vfat nls ext2 cramfs '*.ko'; do
79 cp -LpR /lib/modules/$kernel/kernel/fs/$i $kmods/kernel/fs/
80done
81cp -LpR /lib/modules/$kernel/kernel/lib $kmods/kernel/
82
83depmod $kernel -b $image
84
85
86# generate the image
87cd $image
88find . | cpio -o -H newc | gzip -9 > $dest