3 # fstab: lists filesystems, this file is not changed from it's usual
4 # format, and is used as such
6 # rc.sysinit: done once at start time. responsible for performing any
7 # necessary early system initialization. This reads rc.conf for some
10 #PATH=/sbin:/usr/sbin:/bin:/usr/bin
12 . /etc/rc.d/functions.rc
15 # * load any kernel modules needed
17 # TODO check for /etc/fstab
18 # write one if missing?
20 # need to mount sys because fsck might use it
21 # try to mount them directly if they fail from fstab?
22 # TODO bail to emergency shell if these fail?
23 # TODO set NOVIRTFS='/var/run' and the like to skip some of these?
25 status_begin mounting virtual filesystems
26 mountpoint -q /proc || mount -t proc proc /proc -o nosuid,noexec,nodev
27 mountpoint -q /sys || mount -t sysfs sys /sys -o nosuid,noexec,nodev
28 mountpoint -q /var/run || mount -t tmpfs run /var/run -o mode=0755,nosuid,nodev
29 mountpoint -q /dev || mount -t devtmpfs dev /dev -o mode=0755,nosuid
30 mkdir /dev/pts /dev/shm
31 mountpoint -q /dev/pts || mount -t devpts devpts /dev/pts -o mode=0620,gid=5,nosuid,noexec
32 mountpoint -q /dev/shm || mount -t tmpfs shm /dev/shm -o mode=1777,nosuid,nodev
33 # and make sure they all passed
34 mountpoint -q /proc &&
36 mountpoint -q /var/run &&
38 mountpoint -q /dev/pts &&
39 mountpoint -q /dev/shm
42 # bash seems to rely on this
43 ln -s /proc/self/fd /dev/fd
46 status_begin Setting hostname
47 hostname ${HOSTNAME:=$(uname -s)}
50 # TODO should probably bail out if the /sys mount fails
52 # TODO decide if the loopback network interface should be done here or later
53 # I think later, it's not actually necessary
57 status_begin loading sysctl.conf
61 # * fsck and mount filesystems
63 #status_starting fsck of /
64 #mount -o remount,ro /
66 # TODO actually check the return value
67 status_begin remounting root filesystem rw
71 status_begin running depmod
77 if [ -x /sbin/mdev ] && ! is_true "$USE_UDEV" ; then
78 status_begin setting up mdev
80 echo /sbin/mdev > /proc/sys/kernel/hotplug
83 elif [ -x /sbin/udevd ]; then
85 ## begin voodoo scripting from lfs-initscripts
88 # udev will handle hotplugs
89 echo > /proc/sys/kernel/hotplug
92 # this should probably be moved to inittab or started via
93 # something that could monitor it
94 status_starting udevd daemon
98 # Now traverse /sys in order to "coldplug" devices that have
99 # already been discovered
100 # this is going to fail if sys isn't mounted
101 status_begin populating udevadm triggers
102 udevadm trigger --action=add --type=subsystems &&
103 udevadm trigger --action=add --type=devices &&
104 udevadm trigger --action=change --type=devices
107 # Now wait for udevd to process the uevents we triggered
108 # if ! is_true "$OMIT_UDEV_SETTLE"; then
110 # quoted here so 'for' doesn't confuse syntax highlighting
111 status_begin 'waiting for udevadm to settle'
116 # If any LVM based partitions are on the system, ensure they
117 # are activated so they can be used.
118 # if [ -x /sbin/vgchange ]; then /sbin/vgchange -a y >/dev/null; fi
120 ## end voodoo scripting
128 # mount any remaining filesystems
129 status_begin mounting remaining filesystems
130 mount -a -t noproc,sysfs,devtmpfs,devpts,tmpfs
137 # * do any boot time /tmp cleanup or similar
139 # * do any utmp/wtmp initialization needed
144 # * configure the console
146 # * set timezone and clock
148 status_begin setting system clock from hardware clock