source: MondoRescue/branches/2.2.5/mindi/rootfs/sbin/init@ 1802

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