1# $NetBSD: rc.hack,v 1.5 2003/01/06 20:30:42 wiz Exp $
2
3# Hackish /etc/rc to do basic setup for a distribution rz25 image to
4# make it slightly easier to use.
5
6PATH=/sbin:/usr/sbin:/bin:/usr/bin:/alphadist
7export PATH
8
9single_user()
10{
11	echo "Returning to single-user mode..."
12	exit 1
13}
14
15root_dev=`(sysctl -n machdep.root_device) 2> /dev/null`
16#echo "root_dev is '$root_dev'"
17
18if [ X"${root_dev}" = X'' ] || [ X"${root_dev}" = X'??' ]; then
19	echo "Can't figure out root device!"
20	single_user
21fi
22
23root_dev_base=`expr $root_dev : '\([a-z][a-z]*\)[0-9]*[a-z]'`
24root_dev_unit=`expr $root_dev : '[a-z][a-z]*\([0-9]*\)[a-z]'`
25root_dev_part=`expr $root_dev : '[a-z][a-z]*[0-9]*\([a-z]\)'`
26
27#echo $root_dev_base
28#echo $root_dev_unit
29#echo $root_dev_part
30
31usr_dev="${root_dev_base}${root_dev_unit}d"
32#echo usr_dev = $usr_dev
33
34case $root_dev_base in
35cd|sd|wd)
36	;;
37
38*)
39	echo "Unexpected root device type '$root_dev_base'."
40	single_user
41	;;
42esac
43
44# If /tmp is already writable, we've already been run...  punt!
45if [ -w /tmp ]; then
46	echo ""
47	case $root_dev_base in
48	cd)
49		echo "Can't boot multi-user from a CD-ROM, because"
50		echo "the system can't have been configured."
51		echo ""
52		echo "Install on a real disk!"
53		echo ""
54		single_user
55		;;
56
57	sd|wd)
58		echo "If you want to boot multi-user, make sure that you've"
59		echo "configured the system properly, then run the"
60		echo "following:"
61		echo ""
62		echo "        /bin/rm -f /etc/rc"
63		echo "        /bin/cp -p /alphadist/rc.real /etc/rc"
64		echo ""
65		echo "from single-user mode then exit the single-user shell."
66		echo ""
67		single_user
68		;;
69	esac
70fi
71
72case $root_dev_base in
73cd)
74	echo -n "Remounting root device..."
75	mount -u -o ro /dev/$root_dev /
76	echo ""
77
78	echo -n "Mounting /usr..."
79	mount -o ro /dev/$usr_dev /usr
80	echo ""
81
82	echo -n "Preparing temporary file systems..."
83	mount -t mfs -o -s=6144 swap /tmp
84	mount -t mfs -o -s=6144 swap /var/tmp
85	mkdir /var/tmp/vi.recover
86	chmod -R 1777 /tmp /var/tmp
87	echo ""
88	;;
89
90sd|wd)
91	echo "Checking root and /usr..."
92	fsck -n -t ffs /dev/r$root_dev /dev/r$usr_dev > /dev/null 2>&1
93	if [ $? -ne 0 ]; then
94		echo "File system check failed!"
95		single_user
96	fi
97
98	echo -n "Remounting root device..."
99	mount -u /dev/$root_dev /
100	echo ""
101
102	echo -n "Mounting /usr..."
103	mount /dev/$usr_dev /usr
104	echo ""
105	;;
106esac
107
108single_user
109