initrd - Update for LVM root support
[dragonfly.git] / share / initrd / rc
1 #!/bin/sh
2
3 # echo "Starting shell from md boot"
4 # exec sh
5
6 /sbin/mount_tmpfs tmpfs /tmp
7 /sbin/mount_tmpfs tmpfs /var
8 mkdir /var/tmp
9
10 rescue_shell() {
11         echo "Starting recovery shell!"
12         exec sh
13         exit 0
14 }
15
16 for rcs in /etc/rc.*; do
17         if [ -x $rcs ]; then
18                 . $rcs
19         fi
20 done
21
22 echo "Mounting new root"
23
24 IFS=':'
25 REAL_ROOT=`sysctl -n vfs.real_root`
26 if [ "$?" -ne "0" ]; then
27         echo "Kernel does not have vfs.real_root sysctl. Please update your" \
28                 "kernel if you intend to use initrd"
29         rescue_shell
30 fi
31 set -- $REAL_ROOT
32 TYPE=$1
33 unset IFS
34
35 if [ "$TYPE" = "local" ]; then
36         FSTYPE=$2
37         MOUNTFROM=$3
38         echo "executing /sbin/mount -t $FSTYPE $4 $MOUNTFROM /new_root"
39         /sbin/mount -t $FSTYPE $4 $MOUNTFROM /new_root
40         if [ "$?" -ne "0" ]; then
41                 rescue_shell
42         fi
43 else
44         if [ -x "/etc/rcmount_${TYPE}" ]; then
45                 . /etc/rcmount_${TYPE} $@
46                 if [ "$?" -ne "0" ]; then
47                         rescue_shell
48                 fi
49         else
50                 rescue_shell
51         fi
52 fi
53
54 rm -rf /var/*
55 rm -rf /tmp/*
56 /sbin/umount /var
57 /sbin/umount /tmp
58
59 echo "Mounting devfs on new root"
60 #/sbin/mount_devfs /new_root/dev
61 /sbin/mount_null /dev /new_root/dev