source: MondoRescue/branches/stable/mindi/rootfs/sbin/init@ 1903

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

merge -r 1842:1889 2.2.5

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