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

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

More fixes for udev support for Debian

  • Property svn:keywords set to Id
File size: 19.2 KB
RevLine 
[1]1#!/bin/sh
2#
[736]3# $Id: init 1792 2007-11-13 15:31:25Z 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
533
[287]534ExtractDataDisksAndLoadModules() {
535 echo "Installing additional tools ..."
536 install-additional-tools
[1780]537 if [ ! -e "/tmp/USE-UDEV" ] ; then
538 echo "Inserting modules ..."
539 # Keep the kernel silent again
540 PKLVL=`cut -f1 /proc/sys/kernel/printk`
541 echo 0 > /proc/sys/kernel/printk
542 insert-all-my-modules >> $LOGFILE 2>> $LOGFILE
543 echo $PKLVL > /proc/sys/kernel/printk
544 fi
[287]545}
[1]546
547# ------------------------ main -----------------------
548
[1698]549MINDI_VER=PBVER
550MINDI_REV=PBREV
[1]551trap CaughtSoftReset SIGTERM
[1643]552LOGFILE=/var/log/mondorestore.log
[1236]553PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/mondo:/usr/games
[1]554GROOVY=/tmp/groovy-stuff
555USER=root
[1315]556export PATH GROOVY USER LOGFILE
[1]557
[1716]558echo "Welcome to init (from mindi ${MINDI_VER}-r${MINDI_REV})"
[898]559
[1]560mount -o remount rw /
561[ ! "$GROOVY" ] && Die "I'm not groovy!"
562for i in $GROOVY /mnt/floppy /mnt/cdrom /mnt/isodir /var/local/petris /tmp/isodir; do
[1747]563 mkdir -p $i
[1]564done
565#/bin/update
566mount /proc/ /proc -v -t proc
567mkdir /sys 2> /dev/null
568mount /sys/ /sys -v -t sysfs 2>> $LOGFILE
569rm -f /foozero
570
[1787]571StartUSBKbd
572
[1720]573if [ -f /proc/sys/kernel/exec-shield ]; then
574 echo 0 > /proc/sys/kernel/exec-shield 2>> /dev/null
575fi
[1]576
[1729]577if [ -f /proc/modules ]; then
578 echo "/sbin/modprobe" > /proc/sys/kernel/modprobe
579fi
580
[1716]581if [ -e "/tmp/USE-UDEV" ] ; then
[1747]582 RunUdevd
[1720]583else
584 ExtractDevTarballs
[1716]585fi
[1]586LaunchTerminals
[1718]587
[1789]588# Keeping kernel silent for module insertion
589PKLVL=`cut -f1 /proc/sys/kernel/printk`
590echo 0 > /proc/sys/kernel/printk
[1780]591if [ ! -e "/tmp/USE-UDEV" ] ; then
592 InsertEssentialModules
[1789]593else
594 for m in *.ko; do
595 j=`echo $m | sed 's/\.ko$//'`
596 modprobe -q $j
597 done
[1780]598fi
[1789]599echo $PKLVL > /proc/sys/kernel/printk
[1718]600
[1]601EnableCcissIfAppropriate
[1761]602RstHW
[1]603#-------------------------------
604#WHOLIVESINAPINEAPPLEUNDERTHESEA#;# --- don't touch this :)
605#-------------------------------
606UseTmpfs
607if [ ! -e "/tmp/mondo-restore.cfg" ] ; then
[1747]608 LogIt "Warning - /tmp/mondo-restore.cfg not found"
[1]609fi
610
[1698]611if [ "`grep -i 'tape ' /tmp/mondo-restore.cfg`" ] || [ "`grep -i udev /tmp/mondo-restore.cfg`" ]; then
[1747]612 HandleTape
[287]613 ExtractDataDisksAndLoadModules
[737]614elif [ "`grep -i pxe /proc/cmdline`" ]; then
[870]615 # We need to get here exported variables from start-nfs
[1747]616 . /sbin/start-nfs
[737]617
[287]618 # Simulate a local CD
619 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
[1747]620 CD_MOUNTED_OK=yes
[287]621 ExtractDataDisksAndLoadModules
[1698]622elif [ "`grep -i usb= /proc/cmdline`" ] || [ "`grep -i usb /tmp/mondo-restore.cfg | grep media-type`" ]; then
623 # We need to get here exported variables from start-nfs
[1747]624 . /sbin/start-usb
[1698]625
626 # Simulate a local CD
627 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
[1747]628 CD_MOUNTED_OK=yes
[1698]629 ExtractDataDisksAndLoadModules
[1]630else
[287]631 HandleCDROMorFloppies
632 ExtractDataDisksAndLoadModules
[870]633 # We need to get here exported variables from start-nfs
[1747]634 . /sbin/start-nfs
[1]635fi
636res=$?
637ConfigureLoggingDaemons
638if [ -e "/tmp/USE-DEVFS" ] ; then
[1747]639 umount /mnt/cdrom 2> /dev/null
640 mv /dev/cdrom /cdrom.lnk 2> /dev/null
641 CD_MOUNTED_OK=""
642 RunDevfsd
[1]643fi
[232]644echo "Starting potential Raid/LVMs ..."
[1]645PauseForRaids
646StartRaids
647StartLvms
648CopyBootDevEntry
649LoadKeymap
650mkdir -p /tmp/tmpfs
651sleep 2
652#clear
[241]653if [ -e "/dev/md0" ] && [ ! -e "/dev/md/0" ] && [ "`grep /dev/md/ /tmp/mountlist.txt`" != "" ] ; then
[1747]654 LogIt "Creating /dev/md/* softlinks just in case." 1
655 mkdir -p /dev/md
656 cp -af /dev/md0 /dev/md/0 2> /dev/null
657 cp -af /dev/md1 /dev/md/1 2> /dev/null
658 cp -af /dev/md2 /dev/md/2 2> /dev/null
[1]659fi
[220]660export ARCH=`uname -m`
[1]661WelcomeMessage
662# SpaceTests; # Mandrake Linux 8.1 doesn't like this
663[ -e "/tmp/mountlist.txt" ] && cp -f /tmp/mountlist.txt /tmp/mountlist.original
664
[241]665if ! [ "`grep -i "pxe" /proc/cmdline`" ] ; then
[1]666 res="`cat /mnt/cdrom/archives/THIS-CD-NUMBER 2> /dev/null`"
667 [ "$res" != "1" ] && [ "$res" != "" ] && Die "This is CD #$res in the series. Please insert CD #1."
668 [ -e "/cdrom.lnk" ] && mv -f /cdrom.lnk /dev/cdrom && mount /dev/cdrom /mnt/cdrom && CD_MOUNTED_OK=yes
669 [ "$CD_MOUNTED_OK" != "yes" ] && TryAgainToFindCD
670 #mount | grep cdrom > /dev/null 2> /dev/null || mount /dev/cdrom /mnt/cdrom >> $LOGFILE 2>> $LOGFILE
671fi
672hack-cfg-if-necessary || LogIt "Cannot find hack-cfg-if-necessary"
[746]673openvt 8 /usr/bin/tail -f $LOGFILE
[1]674
[1403]675# Log some useful info
[1413]676LogIt "init (from mindi v$MINDI_VER-r${MINDI_REV}"
677LogIt "/proc/cmdline is:"
[1403]678cat /proc/cmdline >> $LOGFILE
[1413]679LogIt "df result:"
680LogIt "----------"
[1403]681df >> $LOGFILE
[1413]682LogIt "-------------"
683LogIt "mount result:"
684LogIt "-------------"
[1403]685mount >> $LOGFILE
[1413]686LogIt "-------------"
687LogIt "lsmod result:"
688LogIt "-------------"
[1403]689lsmod >> $LOGFILE
[1413]690LogIt "-------------"
[1476]691LogIt "dmesg result:"
692LogIt "-------------"
693dmesg >> $LOGFILE
[1403]694
[1]695#-------------------------------
696#ABSORBENTANDYELLOWANDPOROUSISHE#;# --- don't touch this either :)
697#-------------------------------
698
699#ctrlaltdel soft
700for path in /usr.bin /usr/bin ; do
[1747]701 fname=$path/nano
702 [ -e "$fname" ] && ln -sf $fname /usr/bin/pico
[1]703done
704res=`which nano 2> /dev/null`
705[ "$res" ] && ln -sf /usr/bin/
706for i in null stdout stdin stderr ; do
[1747]707 cp -af /dev/$i /tmp
[1]708done
709if grep "backup-media-type" /tmp/mondo-restore.cfg > /dev/null 2> /dev/null ; then
[1747]710 LogIt "backup-media-type is specified in config file - great."
711 LogIt "Calling post-init $mountlist"
712 post-init
[1]713else
[1747]714 LogIt "backup-media-type is not specified in config file."
715 LogIt "I think this CD/floppy has no archives on it."
[1]716fi
[1612]717if grep "RESTORE" /proc/cmdline > /dev/null 2> /dev/null ; then
718 echo "Rebooting in 10 seconds automatically as per reboot order"
719 echo -en "Press ^C to interrupt if you have to ..."
720 for i in 1 2 3 4 5 6 7 8 9 10 ; do
721 sleep 1
722 echo -en "."
723 done
724 echo "Boom."
725 sleep 1
726else
727 echo -en "Type 'exit' to reboot the PC\n"
728 umount /mnt/cdrom 2> /dev/null
729 mount / -o rw,remount > /dev/null 2> /dev/null
730 LogIt "Launching Shell"
731 sh
732fi
[1]733CaughtSoftReset
734# reboot
Note: See TracBrowser for help on using the repository browser.