#!/bin/sh # --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: package/.../mkinitrd/initrdinit.sh # Copyright (C) 2006 The OpenSDE Project # Copyright (C) 2005 - 2006 The T2 SDE Project # # More information can be found in the files COPYING and README. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. A copy of the # GNU General Public License can be found in the file COPYING. # --- SDE-COPYRIGHT-NOTE-END --- echo "Entering early userspace ..." PATH=/sbin:/bin echo "Mounting /dev, /proc and /sys ..." mount -t tmpfs none /dev mount -t proc none /proc mount -t usbfs none /proc/bus/usb mount -t sysfs none /sys ln -s /proc/self/fd /dev/fd if [ ! -c /dev/console ]; then mknod /dev/console c 5 1 fi if [ ! -c /dev/null ]; then mknod /dev/null c 1 3 fi if [ ! -c /dev/zero ]; then mknod /dev/zero c 1 5 fi echo "Populating /dev (u/dev) ..." udevd --daemon udevtrigger echo "Running hotplug++ ..." /sbin/hotplug++ -synth echo "Loading additional subsystem and filesystem driver ..." # hack to be removed modprobe sbp2 # well some hardcoded help for now ... modprobe ide-generic modprobe ide-disk modprobe ide-cd modprobe sd_mod modprobe sr_mod modprobe sg # the modular filesystems ... for x in /lib/modules/*/kernel/fs/{*/,}*.*o ; do x=${x##*/} ; x=${x%.*o} modprobe $x done echo "Mounting rootfs ..." # get the root device and init root="root= `cat /proc/cmdline`" ; root=${root##*root=} ; root=${root%% *} init="init= `cat /proc/cmdline`" ; init=${init##*init=} ; init=${init%% *} # try best match / detected rootfs first, all the others thereafter filesystems=`disktype $root 2>/dev/null | sed -e '/file system/!d' -e 's/file system.*//' -e 's/ //g' \ -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' \ -e 's/fat32/vfat/' sed '1!G ; $p ; h ; d' /proc/filesystems | sed /^nodev/d` mkdir /rootfs if [ "$root" ]; then i=0 while [ $i -le 9 ]; do for fs in $filesystems ; do if mount -t $fs $root /rootfs -o ro 2> /dev/null; then echo "Successfully mounted rootfs as $fs." # TODO: later on search other places if we want 100% backward compat. [ "$init" ] || init=/sbin/init if [ -f /rootfs/$init ]; then mount -t none /dev -o move /rootfs/dev mount -t none /proc -o move /rootfs/proc mount -t none /sys -o move /rootfs/sys if [ ! -c /rootfs/dev/console ]; then mknod /rootfs/dev/console c 5 1 fi if [ ! -c /rootfs/dev/null ]; then mknod /rootfs/dev/null c 1 3 fi if [ ! -c /rootfs/dev/zero ]; then mknod /rootfs/dev/zero c 1 5 fi if [ ! -c /rootfs/dev/tty ]; then mknod /rootfs/dev/tty c 5 0 fi # Before we switch to the real root # we have to kill udevd ls -1l /rootfs/proc/*/exe 2> /dev/null | \ sed -n -e "s,.*/proc/\([0-9]*\)/.*udevd.*,kill \1,p" | \ /bin/sh # enter the systems root exec switch_root /rootfs $init $* else echo "Specified init ($init) does not exist!" fi fi done [ $(( i++ )) -eq 0 ] && echo "Waiting for root device to become ready ..." sleep 1 done fi echo "Ouhm - some boot problem, but I do not scream. Debug shell:" exec /bin/sh