aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2009-04-30 11:20:47 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2009-04-30 11:20:47 +0000
commit113677b55f77537f08491a92ee3ac4bdcc9f05f9 (patch)
tree2bf93686af11edfd620942fa319f981352b3ebb1
parentab60dcf3194c847cb6b05b64e3e505ad042c36d4 (diff)
downloadmkinitfs-113677b55f77537f08491a92ee3ac4bdcc9f05f9.tar.bz2
mkinitfs-113677b55f77537f08491a92ee3ac4bdcc9f05f9.tar.xz
install fstab. fix module dep tracing. make sure iso boots
-rw-r--r--Makefile4
-rwxr-xr-xmkinitfs.in55
-rw-r--r--modules.d/base1
3 files changed, 39 insertions, 21 deletions
diff --git a/Makefile b/Makefile
index 4e1d33f..02d6342 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,7 @@ datarootdir ?= /usr/share
datadir ?= $(datarootdir)/mkinitfs
SBIN_FILES := mkinitfs bootchartd
-SHARE_FILES := initramfs-init
+SHARE_FILES := initramfs-init fstab
CONF_FILES := mkinitfs.conf \
modules.d/ata \
modules.d/ide \
@@ -19,7 +19,7 @@ CONF_FILES := mkinitfs.conf \
files.d/bootchart \
files.d/base
-SCRIPTS := $(SBIN_FILES) $(SHARE_FILES)
+SCRIPTS := $(SBIN_FILES) initramfs-init
IN_FILES := $(addsuffix .in,$(SCRIPTS))
GIT_REV := $(shell git describe || echo exported)
diff --git a/mkinitfs.in b/mkinitfs.in
index 3024c46..2e2dce6 100755
--- a/mkinitfs.in
+++ b/mkinitfs.in
@@ -4,8 +4,9 @@ VERSION=@VERSION@
sysconfdir=@sysconfdir@
datadir=@datadir@
-config="$sysconfidir"/mkinitfs.conf
+config="$sysconfdir"/mkinitfs.conf
init="$datadir"/initramfs-init
+fstab="$datadir"/fstab
startdir=$PWD
_cp() {
@@ -33,7 +34,11 @@ feature_files() {
fi
for glob in $(cat "$dir/$f"); do
for file in $glob; do
- echo $glob
+ if [ -d $file ]; then
+ find $file -type f
+ else
+ echo $file
+ fi
done
done
done
@@ -43,7 +48,7 @@ initfs_base() {
local i= dirs= glob= file=
echo "==> initramfs: copying base files" >&2
for i in dev proc sys sbin bin .modloop lib/modules media/cdrom \
- media/floppy media/usb newroot; do
+ etc/apk media/floppy media/usb newroot; do
dirs="$dirs $tmpdir/$i"
done
[ -z "$list_sources" ] && mkdir -p $dirs
@@ -55,7 +60,8 @@ initfs_base() {
# copy init
if [ -z "$list_sources" ]; then
cd $startdir
- install -m755 "$init" "$tmpdir"/init
+ install -m755 "$init" "$tmpdir"/init || return 1
+ install -Dm644 "$fstab" "$tmpdir"/etc/fstab || return 1
else
echo "$init"
fi
@@ -83,7 +89,7 @@ BEGIN {
}
{
- mod["/"$0] = 1;
+ mod[$0] = 1;
}
END {
@@ -92,22 +98,26 @@ END {
}' -v modulesdep="$basedir/lib/modules/$kernel/modules.dep"
}
-initfs_kmods() {
- local glob= file= files= dirs=
- [ -z "$list_soruces" ] && rm -rf "$tmpdir"/lib/modules
+find_kmods() {
cd "$kerneldir" || return 1
- echo "==> initramfs: copying kernel $kernel modules" >&2
- files=$(
for file in $(feature_files $modulelists_dir); do
if ! [ -e ${file} ]; then
echo "$file: No such file or directory" >&2
continue
fi
- echo $file
- done | find_kmod_deps)
+ echo /lib/modules/$kernel/$file
+ done | find_kmod_deps
+}
+
+initfs_kmods() {
+ local glob= file= files= dirs=
+ [ -z "$list_sources" ] && rm -rf "$tmpdir"/lib/modules
+ echo "==> initramfs: copying kernel $kernel modules" >&2
+ files=$(find_kmods)
for file in $files; do
- _cp "$basedir"/lib/modules/$kernel/$file
+ _cp "$basedir"/$file
done
+ [ -z "$list_sources" ] && depmod $kernel -b "$tmpdir"
}
initfs_cpio() {
@@ -118,11 +128,12 @@ initfs_cpio() {
usage() {
cat <<EOF
-usage: mkinitfs [-hkLl] [-b basedir] [-c configfile] [-f features]
+usage: mkinitfs [-hkLl] [-b basedir] [-c configfile] [-F features] [-f fstab]
[-i initfile ] [-o outfile] [-t tempdir] [kernelversion]"
options:
-b prefix files and kernel modules with basedir
-c use configfile instead of $config
+ -F use fstab instead of $fstab
-f use specified features
-h print this help
-i use initfile as init instead of $init
@@ -139,11 +150,12 @@ EOF
# main
-while getopts "b:c:hi:kLlo:t:" opt; do
+while getopts "b:c:f:F:hi:kLlo:t:" opt; do
case "$opt" in
b) basedir="$OPTARG";;
c) config="$OPTARG";;
- f) myfeatures="$OPTARG";;
+ F) myfeatures="$OPTARG";;
+ f) fstab="$OPTARG";;
h) usage;;
i) init=$OPTARG;;
k) keeptmp=1;;
@@ -180,6 +192,11 @@ if [ ! -d "$kerneldir" ]; then
exit 1
fi
+if [ -n "$DEBUG_KMOD" ]; then
+ find_kmods
+ exit 0
+fi
+
if [ -z "$tmpdir" ]; then
tmpdir=$(mktemp -d /tmp/mkinitfs.XXXXXX)
else
@@ -190,9 +207,9 @@ if [ -z "$keeptmp" ]; then
[ -d "$tmpdir" ] && rm -rf "$tmpdir"/*
fi
-initfs_base
-initfs_kmods
-initfs_cpio
+initfs_base || exit 1
+initfs_kmods || exit 1
+initfs_cpio || exit 1
# cleanup
if [ -z "$keeptmp" ]; then
diff --git a/modules.d/base b/modules.d/base
index 9d39ba0..56c0314 100644
--- a/modules.d/base
+++ b/modules.d/base
@@ -1 +1,2 @@
+kernel/drivers/block/loop.ko
kernel/drivers/hid/*