source: pkg/viola/main/initramfs-tools/trunk/init @ 3697

Revision 3697, 4.1 KB checked in by alanbach-guest, 6 years ago (diff)
  • Sync'd with Debian 0.92a
  • Property svn:executable set to *
Line 
1#!/bin/sh
2
3echo "Loading, please wait..."
4
5[ -d /dev ] || mkdir -m 0755 /dev
6[ -d /root ] || mkdir -m 0700 /root
7[ -d /sys ] || mkdir /sys
8[ -d /proc ] || mkdir /proc
9[ -d /tmp ] || mkdir /tmp
10mkdir -p /var/lock
11mount -t sysfs -o nodev,noexec,nosuid none /sys
12mount -t proc -o nodev,noexec,nosuid none /proc
13
14# Suspend2 resume fix
15if [ -d /sys/power/suspend2/ ]; then
16   echo > /sys/power/suspend2/do_resume
17fi
18
19if [ -d /sys/power/tuxonice/ ]; then
20   echo > /sys/power/tuxonice/do_resume
21fi
22
23# Note that this only becomes /dev on the real filesystem if udev's scripts
24# are used; which they will be, but it's worth pointing out
25tmpfs_size="10M"
26if [ -e /etc/udev/udev.conf ]; then
27        . /etc/udev/udev.conf
28fi
29mount -t tmpfs -o size=$tmpfs_size,mode=0755 udev /dev
30[ -e /dev/console ] || mknod -m 0600 /dev/console c 5 1
31[ -e /dev/null ] || mknod /dev/null c 1 3
32> /dev/.initramfs-tools
33mkdir /dev/.initramfs
34
35# Export the dpkg architecture
36export DPKG_ARCH=
37. /conf/arch.conf
38
39# Set modprobe env
40export MODPROBE_OPTIONS="-qb"
41
42# Export relevant variables
43export ROOT=
44export ROOTDELAY=
45export ROOTFLAGS=
46export ROOTFSTYPE=
47export break=
48export init=/sbin/init
49export quiet=n
50export readonly=y
51export rootmnt=/root
52export debug=
53export panic=
54export blacklist=
55export resume_offset=
56
57# Bring in the main config
58. /conf/initramfs.conf
59for conf in conf/conf.d/*; do
60        [ -f ${conf} ] && . ${conf}
61done
62. /scripts/functions
63
64# Parse command line options
65for x in $(cat /proc/cmdline); do
66        case $x in
67        init=*)
68                init=${x#init=}
69                ;;
70        root=*)
71                ROOT=${x#root=}
72                case $ROOT in
73                LABEL=*)
74                        ROOT="/dev/disk/by-label/${ROOT#LABEL=}"
75                        ;;
76                UUID=*)
77                        ROOT="/dev/disk/by-uuid/${ROOT#UUID=}"
78                        ;;
79                /dev/nfs)
80                        [ -z "${BOOT}" ] && BOOT=nfs
81                        ;;
82                esac
83                ;;
84        rootflags=*)
85                ROOTFLAGS="-o ${x#rootflags=}"
86                ;;
87        rootfstype=*)
88                ROOTFSTYPE="${x#rootfstype=}"
89                ;;
90        rootdelay=*)
91                ROOTDELAY="${x#rootdelay=}"
92                case ${ROOTDELAY} in
93                *[![:digit:].]*)
94                        ROOTDELAY=
95                        ;;
96                esac
97                ;;
98        nfsroot=*)
99                NFSROOT="${x#nfsroot=}"
100                ;;
101        ip=*)
102                IPOPTS="${x#ip=}"
103                ;;
104        boot=*)
105                BOOT=${x#boot=}
106                ;;
107        resume=*)
108                RESUME="${x#resume=}"
109                ;;
110        resume_offset=*)
111                resume_offset="${x#resume_offset=}"
112                ;;
113        noresume)
114                noresume=y
115                ;;
116        panic=*)
117                panic="${x#panic=}"
118                case ${panic} in
119                *[![:digit:].]*)
120                        panic=
121                        ;;
122                esac
123                ;;
124        quiet)
125                quiet=y
126                ;;
127        ro)
128                readonly=y
129                ;;
130        rw)
131                readonly=n
132                ;;
133        debug)
134                debug=y
135                quiet=n
136                exec >/tmp/initramfs.debug 2>&1
137                set -x
138                ;;
139        debug=*)
140                debug=y
141                quiet=n
142                set -x
143                ;;
144        break=*)
145                break=${x#break=}
146                ;;
147        break)
148                break=premount
149                ;;
150        blacklist=*)
151                blacklist=${x#blacklist=}
152                ;;
153        esac
154done
155
156if [ -z "${noresume}" ]; then
157        export resume=${RESUME}
158else
159        export noresume
160fi
161
162depmod -a
163maybe_break top
164
165# Don't do log messages here to avoid confusing usplash
166run_scripts /scripts/init-top
167
168maybe_break modules
169log_begin_msg "Loading essential drivers..."
170load_modules
171log_end_msg
172
173maybe_break premount
174[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-premount"
175run_scripts /scripts/init-premount
176[ "$quiet" != "y" ] && log_end_msg
177
178maybe_break mount
179log_begin_msg "Mounting root file system..."
180. /scripts/${BOOT}
181parse_numeric ${ROOT}
182mountroot
183log_end_msg
184
185maybe_break bottom
186[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-bottom"
187run_scripts /scripts/init-bottom
188[ "$quiet" != "y" ] && log_end_msg
189
190# Move virtual filesystems over to the real filesystem
191mount -n -o move /sys ${rootmnt}/sys
192mount -n -o move /proc ${rootmnt}/proc
193
194# Check init bootarg
195if [ -n "${init}" ] && [ ! -x "${rootmnt}${init}" ]; then
196        echo "Target filesystem doesn't have ${init}."
197        init=
198fi
199
200# Search for valid init
201if [ -z "${init}" ] ; then
202        for init in /sbin/init /etc/init /bin/init /bin/sh; do
203                if [ ! -x "${rootmnt}${init}" ]; then
204                        continue
205                fi
206                break
207        done
208fi
209
210# No init on rootmount
211if [ ! -x "${rootmnt}${init}" ]; then
212        panic "No init found. Try passing init= bootarg."
213fi
214
215# Confuses /etc/init.d/rc
216if [ -n ${debug} ]; then
217        unset debug
218fi
219
220# Chain to real filesystem
221maybe_break init
222exec run-init ${rootmnt} ${init} "$@" <${rootmnt}/dev/console >${rootmnt}/dev/console
223panic "Could not execute run-init."
Note: See TracBrowser for help on using the repository browser.