source: MondoRescue/branches/2.2.6/mindi/rootfs/sbin/init@ 1961

Last change on this file since 1961 was 1960, checked in by Bruno Cornec, 16 years ago

with DENY_MODS, modules needs to be followed by a space

  • Property svn:keywords set to Id
File size: 19.6 KB
RevLine 
[1]1#!/bin/sh
2#
[736]3# $Id: init 1960 2008-05-28 12:30:28Z bruno $
[1]4#
[736]5# init script launched during the restore process
[1]6#------------------------------------------------------------
7
8
9CaughtSoftReset() {
[1747]10 trap SIGTERM
11 reboot
[1]12}
13
14
15ConfigureLoggingDaemons() {
[1747]16 echo -en "Running klogd..."
17 klogd -c 2 > /dev/null 2> /dev/null
18 echo -en "Done.\nRunning syslogd..."
19 syslogd > /dev/null 2> /dev/null
20 echo "Done."
21 LogIt "klogd and syslogd have been started."
[1]22}
23
24
25
26CopyBootDevEntry() {
[1747]27 local outfile devfile
28 devfile=/dev/boot_device
29 outfile=`cat /BOOTLOADER.DEVICE 2> /dev/null`
30 [ ! "$outfile" ] && return 0
31 echo -en "Copying boot device to $outfile..."
32 if [ -e "$outfile" ] ; then
[1410]33 echo "OK."
34 return 0
[1747]35 fi
36 mkdir -p $outfile
37 rmdir $outfile
38 cp -pRdf $devfile $outfile
39 if [ "$?" -ne "0" ] ; then
[1410]40 echo "Failed."
41 return 1
[1747]42 else
[1410]43 echo "OK."
44 return 0
[1747]45 fi
[1]46}
47
48
49
50Die() {
[1747]51 LogIt "Fatal error! $1" 1
52 exit 1
[1]53}
54
55
56
57ExtractDevTarballs() {
[1747]58 cd /
59 for fname in ataraid.tgz ida.tgz i2o.tgz rd.tgz raw.tgz cciss.tgz nst.tgz dm.tgz vc.tgz ; do
60 if [ ! -e "/$fname" ] ; then
61 LogIt "/$fname not found; cannot extract to /." 1
62 else
63 echo -en "\rExtracting /$fname... "
64 tar -zxf /$fname || LogIt "Error occurred while extracting /$fname"
65 fi
66 done
67 echo -en "\r"
68 LogIt "Extracted additional /dev entries OK. " 1
[1]69}
70
71
72
73LaunchTerminals() {
[1747]74 openvt 2 /bin/sh
75 openvt 3 /bin/sh
76 openvt 4 /bin/sh
77 openvt 5 /bin/sh
78 openvt 6 /bin/sh
79 openvt 7 /bin/sh /sbin/wait-for-petris
[1804]80 openvt 8 /usr/bin/tail -f $LOGFILE
[1922]81 # May avoid shell error messages
82 chmod 666 /dev/tty* /dev/console
[1]83}
84
85
86LoadKeymap() {
[1747]87 local fname
88 fname=`cat /tmp/KEYMAP-LIVES-HERE 2> /dev/null`
89 [ "$fname" = "" ] && return
90 if which loadkeys > /dev/null 2> /dev/null ; then
91 loadkeys $fname
[1]92# loadkmap != loadkeys
93# elif which loadkmap > /dev/null 2> /dev/null ; then
94# loadkmap < $fname
[1747]95 else
96 LogIt "Using default keyboard map." 1
97 fi
[1]98}
99
100
101UntarTapeStuff() {
[1747]102 local old_pwd res
103 old_pwd=`pwd`
104 cd $GROOVY
105 [ "$1" != "" ] && tapedev=$1
106 [ ! "$tapedev" ] && tapedev=`grep media-dev /tmp/mondo-restore.cfg | tr -s ' ' ' ' | cut -d' ' -f2`
[1958]107 mt -f $tapedev fsf 2
[1747]108 dd if=$tapedev bs=32k count=1024 | tar -zx
109 res=$?
110 if [ "$res" -eq "0" ] ; then
[1958]111 # Store the dev name in case we changed it interactively
112 sed -i "s/^media-dev .*$/media-dev $tapedev/" /tmp/mondo-restore.cfg
113
114 #grep -v media-dev /tmp/mondo-restore.cfg > /tmp/mr.cfg
115 #echo "media-dev $tapedev" >> /tmp/mr.cfg
116 #cp -f /tmp/mr.cfg /tmp/mondo-restore.cfg
[1747]117 fi
118 cd $old_pwd
119 return $res
[1]120}
121
122HandleTape() {
[1747]123 local res tapedev
124 tapedev="" ; # will be set by UntarTapeStuff()
125 cd $GROOVY
[1958]126 UntarTapeStuff $tapedev
[1747]127 res=$?
128 while [ "$res" -ne "0" ] ; do
129 LogIt "$tapedev failed to act as extended data disk for booting." 1
130 LogIt "Please specify an alternate tape device," 1
[1885]131 LogIt "or hit <Enter> to boot from another media." 1
[1747]132 echo -en "---> "
133 read tapedev
134 if [ "$tapedev" ] ; then
135 LogIt "User specified $tapedev instead"
136 UntarTapeStuff $tapedev
137 res=$?
138 else
139 LogIt "User opted not to specify an alternate tapedev"
140 res=1
[1]141 break
[1747]142 fi
143 done
[1]144
[1747]145 if [ "$res" -ne "0" ] ; then
[1410]146 cd /
[1885]147 LogIt "Failed to use tape as extended datadisk. Reverting to another media." 1
148 HandleCDROM
[1410]149 res=$?
[1747]150 else
[1410]151 LogIt "Using tape as extended datadisk. Good." 3
152 echo "Using tape as extd ddisk." > /tmp/TAPEDEV-HAS-DATA-DISKS
153 res=0
[1747]154 CD_MOUNTED_OK=yes
155 fi
156 return $res
[1]157}
158
159
160
[1885]161HandleCDROM() {
[1825]162 # Just in case we have an iLO ensure we will map it correctly
[1830]163 echo "$DENY_MODS" | grep -q "usb-storage "
[1829]164 if [ $? -eq 0 ]; then
165 return
166 fi
[1826]167 echo "Activating a potential USB Storage device"
[1922]168 modprobe -q usb-storage
[1826]169 for i in 1 2 3 4 5 6 7 8 9 10 ; do
170 sleep 1
171 echo -en "."
172 done
[1825]173
[1747]174 find-and-mount-cdrom
175 res=$?
176 if [ "$res" -ne "0" ] ; then
[898]177 LogIt "First call to find-and-mount-cdrom failed." 1
178 LogIt "Sleeping for 3 seconds and trying again." 1
179 sleep 3
180 find-and-mount-cdrom
181 res=$?
[1747]182 fi
183 if [ "$res" -eq "0" ] ; then
[898]184 LogIt "OK, I am running on a CD-ROM. Good." 3
[1747]185 CD_MOUNTED_OK=yes
186 else
[1885]187 LogIt "You probably not have the right drivers" 3
188 LogIt "to support the hardware on which we are running" 3
189 LogIt "Your archives are probably fine but" 3
190 LogIt "your tape streamer and/or CD-ROM drive are unsupported at that point." 3
[898]191 CD_MOUNTED_OK=""
[1747]192 fi
193 return 0
[1]194}
195
196
197HowMuchFreeSpaceOnRamdisk() {
[305]198 df -m -P | grep /dev/ram | head -n1 | tr -s '\t' ' ' | cut -d' ' -f4
[1]199}
200
201
202
203PauseForRaids() {
[1747]204 if [ "`dmesg | grep -i "RAID Controller"`" != "" ] || [ "`dmesg | grep -i "Vendor: 3ware"`" != "" ] ; then
205 LogIt "RAID controller(s) detected. Pausing 10 seconds to let them warm up." 1
206 echo -en "Pausing..."
207 for i in 1 2 3 4 5 6 7 8 9 10 ; do
208 sleep 1
209 echo -en "$(($i*10))%..."
210 done
211 echo "Done."
212 fi
[1]213}
214
215
216# 06/13/2002 --- DuckX's & Hugo's new routine
217# 10/11/2003 --- added a simple devfsd.conf file
218# 01/24/2005 --- cater for arbitrary locations of devfsd.conf by using the
219# config file path compiled into devfsd
220RunDevfsd() {
[1747]221 loc=`which devfsd 2> /dev/null`
222 if [ "$loc" != "" ] ; then
[1]223 LogIt "Devfs found. Testing kernel support..."
224 if [ ! -e "/dev/.devfsd" ] ; then
[746]225 mount -t devfs devfs /dev 2>> $LOGFILE
[1747]226 if [ "$?" -ne "0" ] ; then
[1]227 LogIt "Error while trying to mount devfs"
228 else
229 LogIt "Devfs mounted OK"
230 fi
231 fi
232 #check if the kernel supports devfs
233 if [ -e "/dev/.devfsd" ] ; then
234 [ -d "/proc/1" ] || mount -n /proc
235 LogIt "Kernel support found. Creating config file and starting devfsd"
[911]236 conffile=`strings $loc | grep -E "devfsd.conf$"`
[1]237 [ "$conffile" ] || conffile="/etc/devfsd.conf"
238 confpath=`echo $conffile | sed "s/\/devfsd\.conf$//"`
239 [ -d "$confpath" ] || mkdir -p $confpath
240 echo -en "REGISTER .* MKOLDCOMPAT\nUNREGISTER .* RMOLDCOMPAT\n" > $conffile
241 devfsd /dev &
242 sleep 5
243 else
244 LogIt "No devfs kernel support."
245 fi
[1747]246 fi
[1]247}
248
[1718]249# Taken from udev management in Mandriva 2008.0. Kudos guys
250make_extra_nodes () {
251 # there are a few things that sysfs does not export for us.
252 # these things are listed in /etc/udev/links.conf
253 grep '^[^#]' /etc/udev-links.conf | \
254 while read type name arg1; do
255 [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] ||continue
256 case "$type" in
257 L) ln -s $arg1 /dev/$name ;;
258 D) mkdir -p /dev/$name ;;
[1719]259 M) mknod /dev/$name $arg1 && chmod 600 /dev/$name;;
260 *) echo "udev-links.conf: unparseable line (%s %s %s)\n" "$type" "$name" "$arg1" ;;
[1718]261 esac
262 done
263}
264
[1792]265create_dev_makedev() {
266 if [ -e /sbin/MAKEDEV ]; then
267 ln -sf /sbin/MAKEDEV /dev/MAKEDEV
268 else
269 ln -sf /bin/true /dev/MAKEDEV
270 fi
271}
[1718]272
[1716]273RunUdevd() {
[1718]274 # Inspiration from Mandriva 2008.0 startup script
275 echo "Preparing udev environment..."
276 mv /dev /dev.static
277 mkdir /dev
278 mount -n -o size=5M,mode=0755 -t tmpfs none /dev
279 make_extra_nodes
280 mount -n -t devpts -o mode=620 none /dev/pts
281 mount -n -t tmpfs none /dev/shm
[1789]282 if [ -e /proc/sys/kernel/hotplug ]; then
283 echo > /proc/sys/kernel/hotplug
284 fi
[1734]285 PKLVL=`cut -f1 /proc/sys/kernel/printk`
286 echo 0 > /proc/sys/kernel/printk
[1759]287 if [ -x /sbin/startudev ]; then
288 /sbin/startudev
289 fi
290 # Depending on udevd version it gives back the hand or not :-(
291 /sbin/udevd --daemon &
[1863]292 sleep 5
[1792]293 mkdir -p /dev/.udev/queue/
[1789]294 if [ -x /sbin/udevtrigger ]; then
295 /sbin/udevtrigger
296 fi
[1792]297 create_dev_makedev
[1816]298 if [ -x /sbin/udevsettle ]; then
299 /sbin/udevsettle
300 fi
[1824]301 # It seems we need to have more static devs on some distro were
302 # udev as some other requirements to be covered later on.
303 # So in the mean time:
304 for d in `ls /dev.static`; do
305 if [ ! -e /dev/$d ]; then
306 mv /dev.static/$d /dev
307 fi
308 done
[1816]309 echo $PKLVL > /proc/sys/kernel/printk
[1716]310}
[1]311
[1761]312RstHW() {
[1]313
[1761]314 # Restore the HW configuration if available (NOT by default)
315 answer="NO"
[1]316
[1815]317 grep -q nohw /proc/cmdline
318 if [ "$?" -eq 0 ]; then
319 return
320 fi
[1761]321 if [ -x ./mindi-rsthw ]; then
322 grep -q RESTORE /proc/cmdline
323 if [ "$?" -ne 0 ]; then
[1815]324 #clear
[1761]325 echo "*********************************************************************"
326 echo "Do you want to restore the HW configuration of the original machine ?"
327 echo "(This may dammage your hardware so be sure to check twice before saying yes)"
328 echo "*********************************************************************"
329 echo "Please confirm by typing YES exactly as written here (NO by default)"
330 echo -n "--> "
331 read answer
332 else
333 answer="YES"
334 fi
[1910]335 if [ "$answer" = "YES" ] ; then
[1761]336 ./mindi-rsthw
337 fi
338 fi
339}
[1]340
[1761]341
[1]342#RunDevfsd() {
343# loc=`which devfsd 2> /dev/null`
344# if [ "$loc" != "" ] ; then
345# LogIt "Starting devfsd"
346# devfsd /dev &
347# sleep 5
348# fi
349#}
350
351
352
353SpaceTests() {
[1747]354 [ -e "/tmp/filelist.full" ] && cp /tmp/filelist.full /tmp/FLF
355 if [ "`HowMuchFreeSpaceOnRamdisk`" -le "3" ] ; then
356 LogIt "Ramdisk is a bit smaller than I would like." 1
357 LogIt "Please re-run Mondo/Mindi but edit /usr/local/mindi first" 1
358 LogIt "and set EXTRA_SPACE to something high, e.g. 8000" 1
359 Die "Aborting. Please reboot."
360 fi
361 rm -f /tmp/FLF
[1]362}
363
[1787]364StartUSBKbd() {
365# Prepare minimal USB env in case we have USB kbd such as with iLO
366[ -d /proc/bus/usb ] && ! grep -q /proc/bus/usb /proc/mounts && mount -t usbfs none /proc/bus/usb
[1830]367echo "$DENY_MODS" | grep -Eq 'uhcd_hci |usbhid |usbcore '
[1829]368if [ $? -eq 0 ]; then
369 return
370fi
[1922]371modprobe -q uhcd_hci
372modprobe -q usbhid
[1787]373}
[1]374
375
[1787]376
[1]377StartLvms() {
[1747]378 if [ -e "/tmp/i-want-my-lvm" ] ; then
379 LogIt "Scanning LVM's..." 1
[739]380 if which lvm ; then
[1922]381 modprobe -q dm-mod
382 modprobe -q dm_mod
[739]383 lvm vgscan --mknodes
384 else
385 vgscan
386 fi
[1747]387 grep -E "^#.*vgchange" /tmp/i-want-my-lvm | sed "s/^#[ ]*//" > /tmp/start-lvm
388 chmod +x /tmp/start-lvm
389 echo -en "Starting LVM's..."
390 /tmp/start-lvm &
391 for i in 1 2 3 4 5 ; do
[1410]392 echo -en "."
393 sleep 1
[1747]394 done
395 echo "Done."
396 fi
[1]397# If necessary, cannibalize 'analyze-my-lvm'; copy some of its code here,
398# pipe vgscan's output, strip it, run 'vgchange' on its output, etc.etc.
[1747]399 LogIt "LVM's have been started."
[1]400}
401
402
403StartRaids() {
[1747]404 local raid_devices i
[1273]405
[1747]406 raid_devices=`grep /dev/md /tmp/mountlist.txt | cut -d' ' -f1`
[623]407 if which raidstart > /dev/null 2> /dev/null ; then
[1747]408 for i in $raid_devices ; do
409 if grep `basename $i` /proc/mdstat > /dev/null 2> /dev/null ; then
410 LogIt "$i is started already; no need to run 'raidstart $i'" 1
411 else
[623]412 LogIt "Running 'raidstart $i'" 1
413 raidstart $i
[1747]414 fi
415 done
[623]416 elif which mdrun > /dev/null 2> /dev/null ; then
417 LogIt "Running 'mdrun'" 1
418 mdrun
[1273]419 elif which mdadm > /dev/null 2> /dev/null ; then
420 LogIt "Running 'mdadm'" 1
421 for i in $raid_devices ; do
[1747]422 if grep `basename $i` /proc/mdstat > /dev/null 2> /dev/null ; then
423 LogIt "$i is started already; no need to run 'mdadm $i'" 1
424 else
[1610]425 if [ -f /etc/mdadm.conf ] ; then
426 LogIt "Running 'mdadm $i' with user supplied /etc/mdadm.conf" 1
427 mdadm -A $i -c /etc/mdadm.conf
428 elif [ -f /etc/mdadm/mdadm.conf ] ; then
429 LogIt "Running 'mdadm $i' with user supplied /etc/mdadm/mdadm.conf" 1
430 mdadm -A $i -c /etc/mdadm/mdadm.conf
431 else
432 LogIt "Running 'mdadm $i'" 1
433 mdadm -Ac partitions -m dev $i
434 fi
[1747]435 fi
436 done
[623]437 else
438 LogIt "Warning: Neither 'raidstart' nor 'mdrun''found. RAID devices may not have started." 1
439 fi
440
[1]441}
442
443
444TryAgainToFindCD() {
[1747]445 local res
446 mount | grep /mnt/cdrom && return 0
447 [ "`grep "backup_media_type" /tmp/mondo-restore.cfg | grep "cdstream"`" ] && return
448 LogIt "Trying to mount CD-ROM a 2nd time..."
449 find-and-mount-cdrom --second-try
450 res=$?
451 if [ "$res" -eq "0" ] ; then
452 CD_MOUNTED_OK=yes
453 LogIt "CD-ROM drive mounted successfully." 1
454 else
455 LogIt "I still cannot find or mount the CD-ROM drive, by the way."
456 fi
[1]457}
458
459
460
461UseTmpfs()
462{
[1747]463 local mount_cmd
464 echo -en "Mounting /tmp/tmpfs..."
465 mkdir -p /tmp/tmpfs
[1]466# For technical reasons, some sets are as large as 16MB.
467# I am allowing 32MB because selective restore occupies a lot of space.
[1747]468 for size in 64m 48m 40m 32m ; do
469 mount_cmd="mount /dev/shm -t tmpfs -o size=$size" ; # was 34m until 04/2003
470 LogIt "Trying '$mount_cmd'"
471 $mount_cmd /tmp/tmpfs 2>> $LOGFILE
472 res=$?
473 [ "$res" -eq "0" ] && break
474 done
475 if [ "$res" -ne "0" ] ; then
476 LogIt "Failed. I could not run '$mount_cmd /tmp/tmpfs'. Your kernel is BROKEN or you do not have enough RAM." 1
477 umount /tmp/tmpfs > /dev/null 2> /dev/null
478 rmdir /tmp/tmpfs
479 ln -sf /mnt/RESTORING/tmp /tmp/tmpfs; # used by mondo-restore
480 LogIt "Failed to mount /tmp/tmpfs; using ugly softlink instead"
481 else
482 LogIt "Great. Pivot succeeded w/ size=$size" 1
483 echo -en "Pivoting /tmp..."
484 umount /tmp/tmpfs
485 mkdir -p /tmp.old
[1752]486 mv /tmp/* /tmp.old/
487 # Try to Deal with a busybox bug on inexistant links
[1747]488 cp /tmp/* /tmp.old/
489 rm -f /tmp/*
490 $mount_cmd /tmp
[1752]491 mv /tmp.old/* /tmp/
492 # Try to Deal with a busybox bug on inexistant links
[1747]493 cp /tmp.old/* /tmp/
494 rm -rf /tmp.old
495 mkdir -p /tmp/tmpfs
496 mkdir -p $GROOVY
[1]497 echo "Done."
498 LogIt "Successfully mounted dynamic /tmp ramdisk"
499# mkdir -p /tmp/tmpfs/var
500# mv -f /var/log /tmp/tmpfs/var/log
501# ln -sf /tmp/tmpfs/var/log /var/log
[1747]502 fi
[1]503}
504
505
506WelcomeMessage()
507{
[1813]508 export ARCH=`uname -m`
509
[1747]510 echo "********************************************************************"
511 echo "MINDI-LINUX by Mondo Dev Team - web site: http://www.mondorescue.org"
512 echo "Boot disk based on AlfaLinux & Trinux. BusyBox by Erik Andersen."
[1]513which petris > /dev/null 2> /dev/null && echo "Petris was written by Peter Seidler <p.seidler@mail1.stofanet.dk>."
[1747]514 echo "Executables and source code are covered by the GNU GPL. No warranty."
515 echo "running on $ARCH"
516 echo "********************************************************************"
[1]517}
518
519
520EnableCcissIfAppropriate() {
[1747]521 local i fname
522 for i in 0 1 2 3 ; do
[1410]523 fname="/proc/driver/cciss/cciss$i"
524 if [ -e "$fname" ] ; then
525 LogIt "Engaging $fname"
526 echo "engage scsi" > $fname
527 LogIt "...result=$?"
528 fi
[1747]529 done
[1]530}
531
[1802]532ModprobeAllModules() {
[1]533
[1922]534 for m in `find /lib/modules -name '*\.ko*' -o -name '*\.o*'`; do
[1927]535 k=`basename $m | sed 's/\.ko.*$//'`
536 j=`basename $k | sed 's/\.o.*$//'`
[1830]537 echo "$DENY_MODS" | grep -q "$j "
[1829]538 if [ $? -eq 0 ]; then
[1830]539 echo "Denying $j..."
[1829]540 continue
541 fi
542 echo "Probing $j..."
[1815]543 modprobe -q $j
[1802]544 done
545}
546
[287]547ExtractDataDisksAndLoadModules() {
548 echo "Installing additional tools ..."
549 install-additional-tools
[1800]550 # Keep the kernel silent again
551 PKLVL=`cut -f1 /proc/sys/kernel/printk`
[1802]552 echo 0 > /proc/sys/kernel/printk
[1922]553 ModprobeAllModules
[1800]554 echo $PKLVL > /proc/sys/kernel/printk
[287]555}
[1]556
557# ------------------------ main -----------------------
558
[1698]559MINDI_VER=PBVER
560MINDI_REV=PBREV
[1]561trap CaughtSoftReset SIGTERM
[1643]562LOGFILE=/var/log/mondorestore.log
[1236]563PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/mondo:/usr/games
[1]564GROOVY=/tmp/groovy-stuff
565USER=root
[1315]566export PATH GROOVY USER LOGFILE
[1]567
[1716]568echo "Welcome to init (from mindi ${MINDI_VER}-r${MINDI_REV})"
[898]569
[1]570mount -o remount rw /
571[ ! "$GROOVY" ] && Die "I'm not groovy!"
[1885]572for i in $GROOVY /mnt/cdrom /mnt/isodir /var/local/petris /tmp/isodir; do
[1747]573 mkdir -p $i
[1]574done
575#/bin/update
576mount /proc/ /proc -v -t proc
577mkdir /sys 2> /dev/null
578mount /sys/ /sys -v -t sysfs 2>> $LOGFILE
[1824]579# For ESX 3
580[ -d /proc/vmware ] && ! grep -q /vmfs /proc/mounts && mount -t vmfs /vmfs /vmfs
[1]581rm -f /foozero
582
[1829]583if [ "`grep -i denymods /proc/cmdline`" ]; then
584 export DENY_MODS="`cat /proc/cmdline | sed 's~.*denymods=\"\(.*\)\".*~\1~'` mondonone"
[1830]585else
586 export DENY_MODS=" "
[1829]587fi
[1958]588if [ "`grep -i 'obdr ' /tmp/mondo-restore.cfg`" ]; then
589 # Do not try to load usb storage when dealing with OBDR it makes the modprobe hang :-(
[1960]590 export DENY_MODS="usb-storage $DENY_MODS"
[1958]591fi
[1829]592if [ "`grep -i forcemods /proc/cmdline`" ]; then
593 export FORCE_MODS="`cat /proc/cmdline | sed 's~.*forcemods=\"\(.*\)\".*~\1~'` mondonone"
[1830]594else
595 export FORCE_MODS=" "
[1829]596fi
597
[1826]598echo "Activating a potential USB keyboard/mouse"
[1787]599StartUSBKbd
600
[1720]601if [ -f /proc/sys/kernel/exec-shield ]; then
602 echo 0 > /proc/sys/kernel/exec-shield 2>> /dev/null
603fi
[1]604
[1729]605if [ -f /proc/modules ]; then
606 echo "/sbin/modprobe" > /proc/sys/kernel/modprobe
607fi
608
[1716]609if [ -e "/tmp/USE-UDEV" ] ; then
[1747]610 RunUdevd
[1716]611fi
[1798]612ExtractDevTarballs
[1]613LaunchTerminals
[1718]614
[1789]615# Keeping kernel silent for module insertion
616PKLVL=`cut -f1 /proc/sys/kernel/printk`
617echo 0 > /proc/sys/kernel/printk
[1922]618ModprobeAllModules
[1789]619echo $PKLVL > /proc/sys/kernel/printk
[1718]620
[1]621EnableCcissIfAppropriate
622#-------------------------------
623#WHOLIVESINAPINEAPPLEUNDERTHESEA#;# --- don't touch this :)
624#-------------------------------
625UseTmpfs
626if [ ! -e "/tmp/mondo-restore.cfg" ] ; then
[1747]627 LogIt "Warning - /tmp/mondo-restore.cfg not found"
[1]628fi
629
[1958]630if [ "`grep -i 'obdr ' /tmp/mondo-restore.cfg`" ] || [ "`grep -i ' udev' /tmp/mondo-restore.cfg`" ]; then
[1747]631 HandleTape
[287]632 ExtractDataDisksAndLoadModules
[737]633elif [ "`grep -i pxe /proc/cmdline`" ]; then
[870]634 # We need to get here exported variables from start-nfs
[1747]635 . /sbin/start-nfs
[737]636
[287]637 # Simulate a local CD
638 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
[1747]639 CD_MOUNTED_OK=yes
[287]640 ExtractDataDisksAndLoadModules
[1698]641elif [ "`grep -i usb= /proc/cmdline`" ] || [ "`grep -i usb /tmp/mondo-restore.cfg | grep media-type`" ]; then
[1747]642 . /sbin/start-usb
[1698]643
644 # Simulate a local CD
645 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
[1747]646 CD_MOUNTED_OK=yes
[1698]647 ExtractDataDisksAndLoadModules
[1]648else
[1885]649 HandleCDROM
[287]650 ExtractDataDisksAndLoadModules
[870]651 # We need to get here exported variables from start-nfs
[1747]652 . /sbin/start-nfs
[1]653fi
654res=$?
655ConfigureLoggingDaemons
656if [ -e "/tmp/USE-DEVFS" ] ; then
[1747]657 umount /mnt/cdrom 2> /dev/null
658 mv /dev/cdrom /cdrom.lnk 2> /dev/null
659 CD_MOUNTED_OK=""
660 RunDevfsd
[1]661fi
[1813]662LoadKeymap
663WelcomeMessage
664RstHW
[232]665echo "Starting potential Raid/LVMs ..."
[1]666PauseForRaids
667StartRaids
668StartLvms
669CopyBootDevEntry
670mkdir -p /tmp/tmpfs
671sleep 2
672#clear
[241]673if [ -e "/dev/md0" ] && [ ! -e "/dev/md/0" ] && [ "`grep /dev/md/ /tmp/mountlist.txt`" != "" ] ; then
[1747]674 LogIt "Creating /dev/md/* softlinks just in case." 1
675 mkdir -p /dev/md
676 cp -af /dev/md0 /dev/md/0 2> /dev/null
677 cp -af /dev/md1 /dev/md/1 2> /dev/null
678 cp -af /dev/md2 /dev/md/2 2> /dev/null
[1]679fi
680# SpaceTests; # Mandrake Linux 8.1 doesn't like this
681[ -e "/tmp/mountlist.txt" ] && cp -f /tmp/mountlist.txt /tmp/mountlist.original
682
[241]683if ! [ "`grep -i "pxe" /proc/cmdline`" ] ; then
[1]684 res="`cat /mnt/cdrom/archives/THIS-CD-NUMBER 2> /dev/null`"
685 [ "$res" != "1" ] && [ "$res" != "" ] && Die "This is CD #$res in the series. Please insert CD #1."
686 [ -e "/cdrom.lnk" ] && mv -f /cdrom.lnk /dev/cdrom && mount /dev/cdrom /mnt/cdrom && CD_MOUNTED_OK=yes
687 [ "$CD_MOUNTED_OK" != "yes" ] && TryAgainToFindCD
688 #mount | grep cdrom > /dev/null 2> /dev/null || mount /dev/cdrom /mnt/cdrom >> $LOGFILE 2>> $LOGFILE
689fi
690hack-cfg-if-necessary || LogIt "Cannot find hack-cfg-if-necessary"
691
[1403]692# Log some useful info
[1837]693LogIt "init (from mindi v$MINDI_VER-r${MINDI_REV})"
[1413]694LogIt "/proc/cmdline is:"
[1403]695cat /proc/cmdline >> $LOGFILE
[1413]696LogIt "df result:"
697LogIt "----------"
[1403]698df >> $LOGFILE
[1413]699LogIt "-------------"
700LogIt "mount result:"
701LogIt "-------------"
[1403]702mount >> $LOGFILE
[1413]703LogIt "-------------"
704LogIt "lsmod result:"
705LogIt "-------------"
[1403]706lsmod >> $LOGFILE
[1413]707LogIt "-------------"
[1476]708LogIt "dmesg result:"
709LogIt "-------------"
710dmesg >> $LOGFILE
[1403]711
[1]712#-------------------------------
713#ABSORBENTANDYELLOWANDPOROUSISHE#;# --- don't touch this either :)
714#-------------------------------
715
716#ctrlaltdel soft
717for path in /usr.bin /usr/bin ; do
[1747]718 fname=$path/nano
719 [ -e "$fname" ] && ln -sf $fname /usr/bin/pico
[1]720done
721res=`which nano 2> /dev/null`
722[ "$res" ] && ln -sf /usr/bin/
723for i in null stdout stdin stderr ; do
[1747]724 cp -af /dev/$i /tmp
[1]725done
726if grep "backup-media-type" /tmp/mondo-restore.cfg > /dev/null 2> /dev/null ; then
[1747]727 LogIt "backup-media-type is specified in config file - great."
728 LogIt "Calling post-init $mountlist"
729 post-init
[1]730else
[1747]731 LogIt "backup-media-type is not specified in config file."
[1885]732 LogIt "I think this media has no archives on it."
[1]733fi
[1612]734if grep "RESTORE" /proc/cmdline > /dev/null 2> /dev/null ; then
735 echo "Rebooting in 10 seconds automatically as per reboot order"
736 echo -en "Press ^C to interrupt if you have to ..."
737 for i in 1 2 3 4 5 6 7 8 9 10 ; do
738 sleep 1
739 echo -en "."
740 done
741 echo "Boom."
742 sleep 1
743else
744 echo -en "Type 'exit' to reboot the PC\n"
745 umount /mnt/cdrom 2> /dev/null
746 mount / -o rw,remount > /dev/null 2> /dev/null
747 LogIt "Launching Shell"
748 sh
749fi
[1]750CaughtSoftReset
751# reboot
Note: See TracBrowser for help on using the repository browser.