]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/commitdiff
Enhanded mkinitramfs.
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 4 Feb 2009 16:33:25 +0000 (17:33 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 4 Feb 2009 16:33:25 +0000 (17:33 +0100)
src/mkinitramfs/functions
src/mkinitramfs/mkinitramfs
src/mkinitramfs/mkliveramfs

index 7811cedde58e390b31c2c4cc02429a78beb062a2..23b59cd49a859dd52ee78e3daa0e2d58f3bba2a6 100644 (file)
@@ -281,12 +281,23 @@ function locatemodule() {
 
 function installmodule() {
        local module
+       local load
        for module in $@; do
+               [ "$module" = "--load" ] && load=1
                module=$(locatemodule $module)
                [ -z "$module" ] && continue
 
                install $module
        done
+       if [ "$load" = "1" ]; then
+               for module in $@; do
+                       [ "$module" = "--load" ] && continue
+                       cat >> $TMPDIR/sbin/real-init <<EOF
+vecho "Loading module $i..."
+modprobe $i
+EOF
+               done
+       fi
 }
 
 resolve_device_name() {
@@ -384,17 +395,17 @@ findstoragedriverinsys () {
        done
        cd $(read_link ./device)
        if echo $PWD | grep -q /virtio-pci/ ; then
-               installmodule virtio_pci
+               installmodule --load virtio_pci
        fi
        while [ "$PWD" != "/sys/devices" ]; do
                deps=
                if [ -f modalias ]; then
-                       installmodule $(cat modalias)
+                       installmodule --load $(cat modalias)
                fi
 
                [ -z "$deps" -a -L driver/module ] && \
                        deps=$(basename $(read_link driver/module))
-               installmodule $deps
+               installmodule --load $deps
                cd ..
        done
 }
@@ -480,7 +491,7 @@ mkdir -p bin sbin dev sys proc sysroot \
 
 # Install some essential binaries
 install bash chmod cat cut dd dmesg env grep kbd_mode kill killall5 ln ls lsmod mkdir \
-       mknod modprobe mount mountpoint openvt pidof rm sed setfont sh sleep switchroot \
+       mknod modprobe mount mountpoint openvt pidof ps rm sed setfont sh sleep switchroot \
        udevadm udevd umount /lib/udev/console_init /lib/udev/vol_id
 
 # Copy modprobe.conf and friends over
@@ -489,6 +500,9 @@ for f in $(find /etc/modprobe.d -type f); do
        install $f
 done
 
+# Install an empty fstab
+touch $TMPDIR/etc/fstab
+
 # terminfo bits make things work better if you fall into interactive mode
 [ -d "/usr/lib/terminfo" ] && \
        for f in $(find /usr/lib/terminfo -type f); do
index 6a195fd2e22c38754464e2fbcaf87ee0c13d7fab..6b14fab3c9f195ff5bea6fa2d253c596330b998b 100644 (file)
 #                                                                             #
 ###############################################################################
 
-if [ -e "new-functions" ]; then
-       . new-functions
-else
-       . /usr/lib/mkinitramfs/functions
-fi
+. /usr/lib/mkinitramfs/functions
 
 # Add usb support
 MODULES="$MODULES ehci-hcd ohci-hcd uhci-hcd"
@@ -58,6 +54,22 @@ fi
 findstoragedriver ${rootdev##/dev/}
 
 cat >> sbin/real-init <<'EOF'
+
+# Users can override rootfs target on the kernel commandline
+for o in $(cat /proc/cmdline); do
+       case $o in
+       root=*)
+               rootdev=${o#root=}
+               ;;
+       rootflags=*)
+               rootflags=${o#rootflags=}
+               ;;
+       rootfstype=*)
+               rootfstype=${o#rootfstype=}
+               ;;
+       esac
+done
+
 vecho "Starting udevd..."
 udevd --daemon
 
@@ -67,7 +79,7 @@ udevadm trigger
 vecho "Waiting for system to settle..."
 udevadm settle --timeout=30 || :
 
-vecho "Mounting root filesystem..."
+vecho "Mounting root filesystem $rootdev..."
 mount $rootdev /sysroot $rootfs $rootopts
 
 kill $(pidof udevd)
index 53cdcacabe2901c1a8f912aed4ac9942158f46c4..6bdc82d4bff388c38b2f15327524221fd89104b9 100644 (file)
 #                                                                             #
 ###############################################################################
 
-if [ -e "new-functions" ]; then
-       . new-functions
-else
-       . /usr/lib/mkinitramfs/functions
-fi
+. /usr/lib/mkinitramfs/functions
 
 # Modules needed by the live system
 MODULES="$MODULES aufs squashfs loop"