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

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

Adds prliminary supoprt for OBDR at restore time (was partly coded but not really used up to now in fact)

  • Property svn:keywords set to Id
File size: 19.6 KB
Line 
1#!/bin/sh
2#
3# $Id: init 1958 2008-05-28 11:59:55Z bruno $
4#
5# init script launched during the restore process
6#------------------------------------------------------------
7
8
9CaughtSoftReset() {
10 trap SIGTERM
11 reboot
12}
13
14
15ConfigureLoggingDaemons() {
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."
22}
23
24
25
26CopyBootDevEntry() {
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
33 echo "OK."
34 return 0
35 fi
36 mkdir -p $outfile
37 rmdir $outfile
38 cp -pRdf $devfile $outfile
39 if [ "$?" -ne "0" ] ; then
40 echo "Failed."
41 return 1
42 else
43 echo "OK."
44 return 0
45 fi
46}
47
48
49
50Die() {
51 LogIt "Fatal error! $1" 1
52 exit 1
53}
54
55
56
57ExtractDevTarballs() {
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
69}
70
71
72
73LaunchTerminals() {
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
80 openvt 8 /usr/bin/tail -f $LOGFILE
81 # May avoid shell error messages
82 chmod 666 /dev/tty* /dev/console
83}
84
85
86LoadKeymap() {
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
92# loadkmap != loadkeys
93# elif which loadkmap > /dev/null 2> /dev/null ; then
94# loadkmap < $fname
95 else
96 LogIt "Using default keyboard map." 1
97 fi
98}
99
100
101UntarTapeStuff() {
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`
107 mt -f $tapedev fsf 2
108 dd if=$tapedev bs=32k count=1024 | tar -zx
109 res=$?
110 if [ "$res" -eq "0" ] ; then
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
117 fi
118 cd $old_pwd
119 return $res
120}
121
122HandleTape() {
123 local res tapedev
124 tapedev="" ; # will be set by UntarTapeStuff()
125 cd $GROOVY
126 UntarTapeStuff $tapedev
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
131 LogIt "or hit <Enter> to boot from another media." 1
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
141 break
142 fi
143 done
144
145 if [ "$res" -ne "0" ] ; then
146 cd /
147 LogIt "Failed to use tape as extended datadisk. Reverting to another media." 1
148 HandleCDROM
149 res=$?
150 else
151 LogIt "Using tape as extended datadisk. Good." 3
152 echo "Using tape as extd ddisk." > /tmp/TAPEDEV-HAS-DATA-DISKS
153 res=0
154 CD_MOUNTED_OK=yes
155 fi
156 return $res
157}
158
159
160
161HandleCDROM() {
162 # Just in case we have an iLO ensure we will map it correctly
163 echo "$DENY_MODS" | grep -q "usb-storage "
164 if [ $? -eq 0 ]; then
165 return
166 fi
167 echo "Activating a potential USB Storage device"
168 modprobe -q usb-storage
169 for i in 1 2 3 4 5 6 7 8 9 10 ; do
170 sleep 1
171 echo -en "."
172 done
173
174 find-and-mount-cdrom
175 res=$?
176 if [ "$res" -ne "0" ] ; then
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=$?
182 fi
183 if [ "$res" -eq "0" ] ; then
184 LogIt "OK, I am running on a CD-ROM. Good." 3
185 CD_MOUNTED_OK=yes
186 else
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
191 CD_MOUNTED_OK=""
192 fi
193 return 0
194}
195
196
197HowMuchFreeSpaceOnRamdisk() {
198 df -m -P | grep /dev/ram | head -n1 | tr -s '\t' ' ' | cut -d' ' -f4
199}
200
201
202
203PauseForRaids() {
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
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() {
221 loc=`which devfsd 2> /dev/null`
222 if [ "$loc" != "" ] ; then
223 LogIt "Devfs found. Testing kernel support..."
224 if [ ! -e "/dev/.devfsd" ] ; then
225 mount -t devfs devfs /dev 2>> $LOGFILE
226 if [ "$?" -ne "0" ] ; then
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"
236 conffile=`strings $loc | grep -E "devfsd.conf$"`
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
246 fi
247}
248
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 ;;
259 M) mknod /dev/$name $arg1 && chmod 600 /dev/$name;;
260 *) echo "udev-links.conf: unparseable line (%s %s %s)\n" "$type" "$name" "$arg1" ;;
261 esac
262 done
263}
264
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}
272
273RunUdevd() {
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
282 if [ -e /proc/sys/kernel/hotplug ]; then
283 echo > /proc/sys/kernel/hotplug
284 fi
285 PKLVL=`cut -f1 /proc/sys/kernel/printk`
286 echo 0 > /proc/sys/kernel/printk
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 &
292 sleep 5
293 mkdir -p /dev/.udev/queue/
294 if [ -x /sbin/udevtrigger ]; then
295 /sbin/udevtrigger
296 fi
297 create_dev_makedev
298 if [ -x /sbin/udevsettle ]; then
299 /sbin/udevsettle
300 fi
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
309 echo $PKLVL > /proc/sys/kernel/printk
310}
311
312RstHW() {
313
314 # Restore the HW configuration if available (NOT by default)
315 answer="NO"
316
317 grep -q nohw /proc/cmdline
318 if [ "$?" -eq 0 ]; then
319 return
320 fi
321 if [ -x ./mindi-rsthw ]; then
322 grep -q RESTORE /proc/cmdline
323 if [ "$?" -ne 0 ]; then
324 #clear
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
335 if [ "$answer" = "YES" ] ; then
336 ./mindi-rsthw
337 fi
338 fi
339}
340
341
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() {
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
362}
363
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
367echo "$DENY_MODS" | grep -Eq 'uhcd_hci |usbhid |usbcore '
368if [ $? -eq 0 ]; then
369 return
370fi
371modprobe -q uhcd_hci
372modprobe -q usbhid
373}
374
375
376
377StartLvms() {
378 if [ -e "/tmp/i-want-my-lvm" ] ; then
379 LogIt "Scanning LVM's..." 1
380 if which lvm ; then
381 modprobe -q dm-mod
382 modprobe -q dm_mod
383 lvm vgscan --mknodes
384 else
385 vgscan
386 fi
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
392 echo -en "."
393 sleep 1
394 done
395 echo "Done."
396 fi
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.
399 LogIt "LVM's have been started."
400}
401
402
403StartRaids() {
404 local raid_devices i
405
406 raid_devices=`grep /dev/md /tmp/mountlist.txt | cut -d' ' -f1`
407 if which raidstart > /dev/null 2> /dev/null ; then
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
412 LogIt "Running 'raidstart $i'" 1
413 raidstart $i
414 fi
415 done
416 elif which mdrun > /dev/null 2> /dev/null ; then
417 LogIt "Running 'mdrun'" 1
418 mdrun
419 elif which mdadm > /dev/null 2> /dev/null ; then
420 LogIt "Running 'mdadm'" 1
421 for i in $raid_devices ; do
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
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
435 fi
436 done
437 else
438 LogIt "Warning: Neither 'raidstart' nor 'mdrun''found. RAID devices may not have started." 1
439 fi
440
441}
442
443
444TryAgainToFindCD() {
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
457}
458
459
460
461UseTmpfs()
462{
463 local mount_cmd
464 echo -en "Mounting /tmp/tmpfs..."
465 mkdir -p /tmp/tmpfs
466# For technical reasons, some sets are as large as 16MB.
467# I am allowing 32MB because selective restore occupies a lot of space.
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
486 mv /tmp/* /tmp.old/
487 # Try to Deal with a busybox bug on inexistant links
488 cp /tmp/* /tmp.old/
489 rm -f /tmp/*
490 $mount_cmd /tmp
491 mv /tmp.old/* /tmp/
492 # Try to Deal with a busybox bug on inexistant links
493 cp /tmp.old/* /tmp/
494 rm -rf /tmp.old
495 mkdir -p /tmp/tmpfs
496 mkdir -p $GROOVY
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
502 fi
503}
504
505
506WelcomeMessage()
507{
508 export ARCH=`uname -m`
509
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."
513which petris > /dev/null 2> /dev/null && echo "Petris was written by Peter Seidler <p.seidler@mail1.stofanet.dk>."
514 echo "Executables and source code are covered by the GNU GPL. No warranty."
515 echo "running on $ARCH"
516 echo "********************************************************************"
517}
518
519
520EnableCcissIfAppropriate() {
521 local i fname
522 for i in 0 1 2 3 ; do
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
529 done
530}
531
532ModprobeAllModules() {
533
534 for m in `find /lib/modules -name '*\.ko*' -o -name '*\.o*'`; do
535 k=`basename $m | sed 's/\.ko.*$//'`
536 j=`basename $k | sed 's/\.o.*$//'`
537 echo "$DENY_MODS" | grep -q "$j "
538 if [ $? -eq 0 ]; then
539 echo "Denying $j..."
540 continue
541 fi
542 echo "Probing $j..."
543 modprobe -q $j
544 done
545}
546
547ExtractDataDisksAndLoadModules() {
548 echo "Installing additional tools ..."
549 install-additional-tools
550 # Keep the kernel silent again
551 PKLVL=`cut -f1 /proc/sys/kernel/printk`
552 echo 0 > /proc/sys/kernel/printk
553 ModprobeAllModules
554 echo $PKLVL > /proc/sys/kernel/printk
555}
556
557# ------------------------ main -----------------------
558
559MINDI_VER=PBVER
560MINDI_REV=PBREV
561trap CaughtSoftReset SIGTERM
562LOGFILE=/var/log/mondorestore.log
563PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/mondo:/usr/games
564GROOVY=/tmp/groovy-stuff
565USER=root
566export PATH GROOVY USER LOGFILE
567
568echo "Welcome to init (from mindi ${MINDI_VER}-r${MINDI_REV})"
569
570mount -o remount rw /
571[ ! "$GROOVY" ] && Die "I'm not groovy!"
572for i in $GROOVY /mnt/cdrom /mnt/isodir /var/local/petris /tmp/isodir; do
573 mkdir -p $i
574done
575#/bin/update
576mount /proc/ /proc -v -t proc
577mkdir /sys 2> /dev/null
578mount /sys/ /sys -v -t sysfs 2>> $LOGFILE
579# For ESX 3
580[ -d /proc/vmware ] && ! grep -q /vmfs /proc/mounts && mount -t vmfs /vmfs /vmfs
581rm -f /foozero
582
583if [ "`grep -i denymods /proc/cmdline`" ]; then
584 export DENY_MODS="`cat /proc/cmdline | sed 's~.*denymods=\"\(.*\)\".*~\1~'` mondonone"
585else
586 export DENY_MODS=" "
587fi
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 :-(
590 export DENY_MODS="$DENY_MODS usb-storage"
591fi
592if [ "`grep -i forcemods /proc/cmdline`" ]; then
593 export FORCE_MODS="`cat /proc/cmdline | sed 's~.*forcemods=\"\(.*\)\".*~\1~'` mondonone"
594else
595 export FORCE_MODS=" "
596fi
597
598echo "Activating a potential USB keyboard/mouse"
599StartUSBKbd
600
601if [ -f /proc/sys/kernel/exec-shield ]; then
602 echo 0 > /proc/sys/kernel/exec-shield 2>> /dev/null
603fi
604
605if [ -f /proc/modules ]; then
606 echo "/sbin/modprobe" > /proc/sys/kernel/modprobe
607fi
608
609if [ -e "/tmp/USE-UDEV" ] ; then
610 RunUdevd
611fi
612ExtractDevTarballs
613LaunchTerminals
614
615# Keeping kernel silent for module insertion
616PKLVL=`cut -f1 /proc/sys/kernel/printk`
617echo 0 > /proc/sys/kernel/printk
618ModprobeAllModules
619echo $PKLVL > /proc/sys/kernel/printk
620
621EnableCcissIfAppropriate
622#-------------------------------
623#WHOLIVESINAPINEAPPLEUNDERTHESEA#;# --- don't touch this :)
624#-------------------------------
625UseTmpfs
626if [ ! -e "/tmp/mondo-restore.cfg" ] ; then
627 LogIt "Warning - /tmp/mondo-restore.cfg not found"
628fi
629
630if [ "`grep -i 'obdr ' /tmp/mondo-restore.cfg`" ] || [ "`grep -i ' udev' /tmp/mondo-restore.cfg`" ]; then
631 HandleTape
632 ExtractDataDisksAndLoadModules
633elif [ "`grep -i pxe /proc/cmdline`" ]; then
634 # We need to get here exported variables from start-nfs
635 . /sbin/start-nfs
636
637 # Simulate a local CD
638 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
639 CD_MOUNTED_OK=yes
640 ExtractDataDisksAndLoadModules
641elif [ "`grep -i usb= /proc/cmdline`" ] || [ "`grep -i usb /tmp/mondo-restore.cfg | grep media-type`" ]; then
642 # We need to get here exported variables from start-nfs
643 . /sbin/start-usb
644
645 # Simulate a local CD
646 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
647 CD_MOUNTED_OK=yes
648 ExtractDataDisksAndLoadModules
649else
650 HandleCDROM
651 ExtractDataDisksAndLoadModules
652 # We need to get here exported variables from start-nfs
653 . /sbin/start-nfs
654fi
655res=$?
656ConfigureLoggingDaemons
657if [ -e "/tmp/USE-DEVFS" ] ; then
658 umount /mnt/cdrom 2> /dev/null
659 mv /dev/cdrom /cdrom.lnk 2> /dev/null
660 CD_MOUNTED_OK=""
661 RunDevfsd
662fi
663LoadKeymap
664WelcomeMessage
665RstHW
666echo "Starting potential Raid/LVMs ..."
667PauseForRaids
668StartRaids
669StartLvms
670CopyBootDevEntry
671mkdir -p /tmp/tmpfs
672sleep 2
673#clear
674if [ -e "/dev/md0" ] && [ ! -e "/dev/md/0" ] && [ "`grep /dev/md/ /tmp/mountlist.txt`" != "" ] ; then
675 LogIt "Creating /dev/md/* softlinks just in case." 1
676 mkdir -p /dev/md
677 cp -af /dev/md0 /dev/md/0 2> /dev/null
678 cp -af /dev/md1 /dev/md/1 2> /dev/null
679 cp -af /dev/md2 /dev/md/2 2> /dev/null
680fi
681# SpaceTests; # Mandrake Linux 8.1 doesn't like this
682[ -e "/tmp/mountlist.txt" ] && cp -f /tmp/mountlist.txt /tmp/mountlist.original
683
684if ! [ "`grep -i "pxe" /proc/cmdline`" ] ; then
685 res="`cat /mnt/cdrom/archives/THIS-CD-NUMBER 2> /dev/null`"
686 [ "$res" != "1" ] && [ "$res" != "" ] && Die "This is CD #$res in the series. Please insert CD #1."
687 [ -e "/cdrom.lnk" ] && mv -f /cdrom.lnk /dev/cdrom && mount /dev/cdrom /mnt/cdrom && CD_MOUNTED_OK=yes
688 [ "$CD_MOUNTED_OK" != "yes" ] && TryAgainToFindCD
689 #mount | grep cdrom > /dev/null 2> /dev/null || mount /dev/cdrom /mnt/cdrom >> $LOGFILE 2>> $LOGFILE
690fi
691hack-cfg-if-necessary || LogIt "Cannot find hack-cfg-if-necessary"
692
693# Log some useful info
694LogIt "init (from mindi v$MINDI_VER-r${MINDI_REV})"
695LogIt "/proc/cmdline is:"
696cat /proc/cmdline >> $LOGFILE
697LogIt "df result:"
698LogIt "----------"
699df >> $LOGFILE
700LogIt "-------------"
701LogIt "mount result:"
702LogIt "-------------"
703mount >> $LOGFILE
704LogIt "-------------"
705LogIt "lsmod result:"
706LogIt "-------------"
707lsmod >> $LOGFILE
708LogIt "-------------"
709LogIt "dmesg result:"
710LogIt "-------------"
711dmesg >> $LOGFILE
712
713#-------------------------------
714#ABSORBENTANDYELLOWANDPOROUSISHE#;# --- don't touch this either :)
715#-------------------------------
716
717#ctrlaltdel soft
718for path in /usr.bin /usr/bin ; do
719 fname=$path/nano
720 [ -e "$fname" ] && ln -sf $fname /usr/bin/pico
721done
722res=`which nano 2> /dev/null`
723[ "$res" ] && ln -sf /usr/bin/
724for i in null stdout stdin stderr ; do
725 cp -af /dev/$i /tmp
726done
727if grep "backup-media-type" /tmp/mondo-restore.cfg > /dev/null 2> /dev/null ; then
728 LogIt "backup-media-type is specified in config file - great."
729 LogIt "Calling post-init $mountlist"
730 post-init
731else
732 LogIt "backup-media-type is not specified in config file."
733 LogIt "I think this media has no archives on it."
734fi
735if grep "RESTORE" /proc/cmdline > /dev/null 2> /dev/null ; then
736 echo "Rebooting in 10 seconds automatically as per reboot order"
737 echo -en "Press ^C to interrupt if you have to ..."
738 for i in 1 2 3 4 5 6 7 8 9 10 ; do
739 sleep 1
740 echo -en "."
741 done
742 echo "Boom."
743 sleep 1
744else
745 echo -en "Type 'exit' to reboot the PC\n"
746 umount /mnt/cdrom 2> /dev/null
747 mount / -o rw,remount > /dev/null 2> /dev/null
748 LogIt "Launching Shell"
749 sh
750fi
751CaughtSoftReset
752# reboot
Note: See TracBrowser for help on using the repository browser.