xref: /minix/minix/drivers/storage/ramdisk/rc (revision e3b78ef1)
1#!/bin/sh
2set -e
3
4exec >/dev/log
5exec 2>/dev/log
6exec </dev/null
7
8FSCK=/bin/fsck_mfs
9ACPI=/service/acpi
10
11if [ X`/bin/sysenv arch` = Xi386 ]
12then	if [ -e $ACPI -a -n "`sysenv acpi`" ]
13	then
14		/bin/service -c up $ACPI
15	fi
16	/bin/service -c up /service/pci -dev /dev/pci
17
18	/bin/service -c up /service/input -dev /dev/kbdmux
19	/bin/service -c up /service/pckbd
20
21	# Start procfs so we can access /proc/pci
22	mount -t procfs none /proc >/dev/null
23
24	# Do we want to use the virtio block device?
25	# If not specified, default to yes if the device is found.
26	if /bin/sysenv virtio_blk >/dev/null
27	then	virtio_blk="`/bin/sysenv virtio_blk`"
28        elif	grep '^[^ ]* [^ ]* 1AF4:1001[^ ]* ' /proc/pci >/dev/null
29	then	echo "virtio_blk not set, defaulting to using found virtio device."
30		virtio_blk=yes
31        fi
32
33	/bin/service -cn up /service/floppy -dev /dev/fd0
34	if [ X`/bin/sysenv ahci` = Xyes ]
35	then
36		# this is here temporarily, for testing purposes
37		/bin/service -c up /service/ahci -dev /dev/c0d0 -label ahci_0 -args instance=0
38	elif [ X"$virtio_blk" = Xyes ]
39	then
40		/bin/service -c up /service/virtio_blk -dev /dev/c0d0 -label virtio_blk_0 -args instance=0
41	else
42		/bin/service -c up /service/at_wini -dev /dev/c0d0 -label at_wini_0
43		/bin/service -cr up /service/at_wini -dev /dev/c1d0 -label at_wini_1 -args instance=1 2>/dev/null || :
44	fi
45	/bin/umount /proc >/dev/null
46fi
47
48if [ X`/bin/sysenv arch` = Xearm ]
49then	echo Starting the mmc driver
50	/bin/service -c up /service/mmc -dev /dev/c0d0
51fi
52
53/bin/service up /service/procfs || echo "WARNING: couldn't start procfs"
54
55if /bin/sysenv rootdevname >/dev/null
56then	rootdevname=/dev/`/bin/sysenv rootdevname`
57else	echo "rootdevname not set"
58	exit 1
59fi
60
61if [ "`sysenv bin_img`" = 1 ]
62then
63    bin_img="-i "
64fi
65
66if sysenv cdproberoot >/dev/null
67then
68	echo
69	echo 'Looking for boot CD. This may take a minute.'
70	echo 'Please ignore any error messages.'
71	echo
72	cddev=`cdprobe` || { echo 'No CD found'; exit 1; }
73	export cddev
74	echo "Loading ramdisk from ${cddev}p1"
75	loadramdisk "$cddev"p1
76elif [ "$rootdevname" = "/dev/ram" ]
77then
78	ramimagename=/dev/`/bin/sysenv ramimagename`
79	echo "Loading ramdisk from $ramimagename"
80	loadramdisk "$ramimagename" || echo "WARNING: loadramdisk failed"
81fi
82
83echo "Root device name is $rootdevname"
84if [ -e $FSCK ]
85then	$FSCK -p $rootdevname
86fi
87
88# Change root from temporary boot ramdisk to the configure
89# root device
90/bin/mount -n $bin_img"$rootdevname" /
91
92/bin/mount -e -n -t procfs none /proc || echo "WARNING: couldn't mount procfs"
93
94exec /bin/sh /etc/rc `sysenv bootopts` "$@"
95