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

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

Udev startup improvement to support iLO + NFS so modprobing all modules seems required as of now

  • Property svn:keywords set to Id
File size: 19.0 KB
RevLine 
[1]1#!/bin/sh
2#
[736]3# $Id: init 1789 2007-11-12 20:11:14Z 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
270
[1716]271RunUdevd() {
[1718]272 # Inspiration from Mandriva 2008.0 startup script
273 echo "Preparing udev environment..."
274 mv /dev /dev.static
275 mkdir /dev
276 mount -n -o size=5M,mode=0755 -t tmpfs none /dev
277 make_extra_nodes
278 mount -n -t devpts -o mode=620 none /dev/pts
279 mount -n -t tmpfs none /dev/shm
[1789]280 if [ -e /proc/sys/kernel/hotplug ]; then
281 echo > /proc/sys/kernel/hotplug
282 fi
[1734]283 PKLVL=`cut -f1 /proc/sys/kernel/printk`
284 echo 0 > /proc/sys/kernel/printk
[1759]285 if [ -x /sbin/startudev ]; then
286 /sbin/startudev
287 fi
288 # Depending on udevd version it gives back the hand or not :-(
289 /sbin/udevd --daemon &
290 sleep 2
[1789]291 if [ -x /sbin/udevtrigger ]; then
292 /sbin/udevtrigger
293 fi
[1734]294 echo $PKLVL > /proc/sys/kernel/printk
[1759]295 # May avoid shell error messages
[1741]296 chmod 644 /dev/tty*
[1716]297}
[1]298
[1761]299RstHW() {
[1]300
[1761]301 # Restore the HW configuration if available (NOT by default)
302 answer="NO"
[1]303
[1761]304 if [ -x ./mindi-rsthw ]; then
305 grep -q RESTORE /proc/cmdline
306 if [ "$?" -ne 0 ]; then
307 clear
308 echo "*********************************************************************"
309 echo "Do you want to restore the HW configuration of the original machine ?"
310 echo "(This may dammage your hardware so be sure to check twice before saying yes)"
311 echo "*********************************************************************"
312 echo "Please confirm by typing YES exactly as written here (NO by default)"
313 echo -n "--> "
314 read answer
315 else
316 answer="YES"
317 fi
318 if [ "$answer" -eq "YES" ] ; then
319 ./mindi-rsthw
320 fi
321 fi
322}
[1]323
[1761]324
[1]325#RunDevfsd() {
326# loc=`which devfsd 2> /dev/null`
327# if [ "$loc" != "" ] ; then
328# LogIt "Starting devfsd"
329# devfsd /dev &
330# sleep 5
331# fi
332#}
333
334
335
336SpaceTests() {
[1747]337 [ -e "/tmp/filelist.full" ] && cp /tmp/filelist.full /tmp/FLF
338 if [ "`HowMuchFreeSpaceOnRamdisk`" -le "3" ] ; then
339 LogIt "Ramdisk is a bit smaller than I would like." 1
340 LogIt "Please re-run Mondo/Mindi but edit /usr/local/mindi first" 1
341 LogIt "and set EXTRA_SPACE to something high, e.g. 8000" 1
342 Die "Aborting. Please reboot."
343 fi
344 rm -f /tmp/FLF
[1]345}
346
[1787]347StartUSBKbd() {
348# Prepare minimal USB env in case we have USB kbd such as with iLO
349[ -d /proc/bus/usb ] && ! grep -q /proc/bus/usb /proc/mounts && mount -t usbfs none /proc/bus/usb
350if [ -e "/tmp/USE-UDEV" ] ; then
[1789]351 if [ -f usbhid.ko ]; then
352 modprobe -q usbhid
353 fi
354 if [ -f uhcd_hci.ko ]; then
355 modprobe -q uhcd_hci
356 fi
[1787]357else
358 if [ -f uhcd_hci.ko ]; then
359 insmod uhcd_hci.ko
360 fi
361 if [ -f usbhid.ko ]; then
[1789]362 insmod usbcore.ko
[1787]363 insmod usbhid.ko
364 fi
365fi
366}
[1]367
368
[1787]369
[1]370StartLvms() {
[1747]371 if [ -e "/tmp/i-want-my-lvm" ] ; then
372 LogIt "Scanning LVM's..." 1
[739]373 if which lvm ; then
374 MyInsmod dm-mod
375 MyInsmod dm_mod
376 lvm vgscan --mknodes
377 else
378 vgscan
379 fi
[1747]380 grep -E "^#.*vgchange" /tmp/i-want-my-lvm | sed "s/^#[ ]*//" > /tmp/start-lvm
381 chmod +x /tmp/start-lvm
382 echo -en "Starting LVM's..."
383 /tmp/start-lvm &
384 for i in 1 2 3 4 5 ; do
[1410]385 echo -en "."
386 sleep 1
[1747]387 done
388 echo "Done."
389 fi
[1]390# If necessary, cannibalize 'analyze-my-lvm'; copy some of its code here,
391# pipe vgscan's output, strip it, run 'vgchange' on its output, etc.etc.
[1747]392 LogIt "LVM's have been started."
[1]393}
394
395
396StartRaids() {
[1747]397 local raid_devices i
[1273]398
[1747]399 raid_devices=`grep /dev/md /tmp/mountlist.txt | cut -d' ' -f1`
[623]400 if which raidstart > /dev/null 2> /dev/null ; then
[1747]401 for i in $raid_devices ; do
402 if grep `basename $i` /proc/mdstat > /dev/null 2> /dev/null ; then
403 LogIt "$i is started already; no need to run 'raidstart $i'" 1
404 else
[623]405 LogIt "Running 'raidstart $i'" 1
406 raidstart $i
[1747]407 fi
408 done
[623]409 elif which mdrun > /dev/null 2> /dev/null ; then
410 LogIt "Running 'mdrun'" 1
411 mdrun
[1273]412 elif which mdadm > /dev/null 2> /dev/null ; then
413 LogIt "Running 'mdadm'" 1
414 for i in $raid_devices ; do
[1747]415 if grep `basename $i` /proc/mdstat > /dev/null 2> /dev/null ; then
416 LogIt "$i is started already; no need to run 'mdadm $i'" 1
417 else
[1610]418 if [ -f /etc/mdadm.conf ] ; then
419 LogIt "Running 'mdadm $i' with user supplied /etc/mdadm.conf" 1
420 mdadm -A $i -c /etc/mdadm.conf
421 elif [ -f /etc/mdadm/mdadm.conf ] ; then
422 LogIt "Running 'mdadm $i' with user supplied /etc/mdadm/mdadm.conf" 1
423 mdadm -A $i -c /etc/mdadm/mdadm.conf
424 else
425 LogIt "Running 'mdadm $i'" 1
426 mdadm -Ac partitions -m dev $i
427 fi
[1747]428 fi
429 done
[623]430 else
431 LogIt "Warning: Neither 'raidstart' nor 'mdrun''found. RAID devices may not have started." 1
432 fi
433
[1]434}
435
436
437TryAgainToFindCD() {
[1747]438 local res
439 mount | grep /mnt/cdrom && return 0
440 [ "`grep "backup_media_type" /tmp/mondo-restore.cfg | grep "cdstream"`" ] && return
441 LogIt "Trying to mount CD-ROM a 2nd time..."
442 find-and-mount-cdrom --second-try
443 res=$?
444 if [ "$res" -eq "0" ] ; then
445 CD_MOUNTED_OK=yes
446 LogIt "CD-ROM drive mounted successfully." 1
447 else
448 LogIt "I still cannot find or mount the CD-ROM drive, by the way."
449 fi
[1]450}
451
452
453
454UseTmpfs()
455{
[1747]456 local mount_cmd
457 echo -en "Mounting /tmp/tmpfs..."
458 mkdir -p /tmp/tmpfs
[1]459# For technical reasons, some sets are as large as 16MB.
460# I am allowing 32MB because selective restore occupies a lot of space.
[1747]461 for size in 64m 48m 40m 32m ; do
462 mount_cmd="mount /dev/shm -t tmpfs -o size=$size" ; # was 34m until 04/2003
463 LogIt "Trying '$mount_cmd'"
464 $mount_cmd /tmp/tmpfs 2>> $LOGFILE
465 res=$?
466 [ "$res" -eq "0" ] && break
467 done
468 if [ "$res" -ne "0" ] ; then
469 LogIt "Failed. I could not run '$mount_cmd /tmp/tmpfs'. Your kernel is BROKEN or you do not have enough RAM." 1
470 umount /tmp/tmpfs > /dev/null 2> /dev/null
471 rmdir /tmp/tmpfs
472 ln -sf /mnt/RESTORING/tmp /tmp/tmpfs; # used by mondo-restore
473 LogIt "Failed to mount /tmp/tmpfs; using ugly softlink instead"
474 else
475 LogIt "Great. Pivot succeeded w/ size=$size" 1
476 echo -en "Pivoting /tmp..."
477 umount /tmp/tmpfs
478 mkdir -p /tmp.old
[1752]479 mv /tmp/* /tmp.old/
480 # Try to Deal with a busybox bug on inexistant links
[1747]481 cp /tmp/* /tmp.old/
482 rm -f /tmp/*
483 $mount_cmd /tmp
[1752]484 mv /tmp.old/* /tmp/
485 # Try to Deal with a busybox bug on inexistant links
[1747]486 cp /tmp.old/* /tmp/
487 rm -rf /tmp.old
488 mkdir -p /tmp/tmpfs
489 mkdir -p $GROOVY
[1]490 echo "Done."
491 LogIt "Successfully mounted dynamic /tmp ramdisk"
492# mkdir -p /tmp/tmpfs/var
493# mv -f /var/log /tmp/tmpfs/var/log
494# ln -sf /tmp/tmpfs/var/log /var/log
[1747]495 fi
[1]496}
497
498
499WelcomeMessage()
500{
[1747]501 echo "********************************************************************"
502 echo "MINDI-LINUX by Mondo Dev Team - web site: http://www.mondorescue.org"
503 echo "Boot disk based on AlfaLinux & Trinux. BusyBox by Erik Andersen."
[1]504which petris > /dev/null 2> /dev/null && echo "Petris was written by Peter Seidler <p.seidler@mail1.stofanet.dk>."
[1747]505 echo "Executables and source code are covered by the GNU GPL. No warranty."
506 echo "running on $ARCH"
507 echo "********************************************************************"
[1]508}
509
510
511EnableCcissIfAppropriate() {
[1747]512 local i fname
513 for i in 0 1 2 3 ; do
[1410]514 fname="/proc/driver/cciss/cciss$i"
515 if [ -e "$fname" ] ; then
516 LogIt "Engaging $fname"
517 echo "engage scsi" > $fname
518 LogIt "...result=$?"
519 fi
[1747]520 done
[1]521}
522
523
[287]524ExtractDataDisksAndLoadModules() {
525 echo "Installing additional tools ..."
526 install-additional-tools
[1780]527 if [ ! -e "/tmp/USE-UDEV" ] ; then
528 echo "Inserting modules ..."
529 # Keep the kernel silent again
530 PKLVL=`cut -f1 /proc/sys/kernel/printk`
531 echo 0 > /proc/sys/kernel/printk
532 insert-all-my-modules >> $LOGFILE 2>> $LOGFILE
533 echo $PKLVL > /proc/sys/kernel/printk
534 fi
[287]535}
[1]536
537# ------------------------ main -----------------------
538
[1698]539MINDI_VER=PBVER
540MINDI_REV=PBREV
[1]541trap CaughtSoftReset SIGTERM
[1643]542LOGFILE=/var/log/mondorestore.log
[1236]543PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/mondo:/usr/games
[1]544GROOVY=/tmp/groovy-stuff
545USER=root
[1315]546export PATH GROOVY USER LOGFILE
[1]547
[1716]548echo "Welcome to init (from mindi ${MINDI_VER}-r${MINDI_REV})"
[898]549
[1]550mount -o remount rw /
551[ ! "$GROOVY" ] && Die "I'm not groovy!"
552for i in $GROOVY /mnt/floppy /mnt/cdrom /mnt/isodir /var/local/petris /tmp/isodir; do
[1747]553 mkdir -p $i
[1]554done
555#/bin/update
556mount /proc/ /proc -v -t proc
557mkdir /sys 2> /dev/null
558mount /sys/ /sys -v -t sysfs 2>> $LOGFILE
559rm -f /foozero
560
[1787]561StartUSBKbd
562
[1720]563if [ -f /proc/sys/kernel/exec-shield ]; then
564 echo 0 > /proc/sys/kernel/exec-shield 2>> /dev/null
565fi
[1]566
[1729]567if [ -f /proc/modules ]; then
568 echo "/sbin/modprobe" > /proc/sys/kernel/modprobe
569fi
570
[1716]571if [ -e "/tmp/USE-UDEV" ] ; then
[1747]572 RunUdevd
[1720]573else
574 ExtractDevTarballs
[1716]575fi
[1]576LaunchTerminals
[1718]577
[1789]578# Keeping kernel silent for module insertion
579PKLVL=`cut -f1 /proc/sys/kernel/printk`
580echo 0 > /proc/sys/kernel/printk
[1780]581if [ ! -e "/tmp/USE-UDEV" ] ; then
582 InsertEssentialModules
[1789]583else
584 for m in *.ko; do
585 j=`echo $m | sed 's/\.ko$//'`
586 modprobe -q $j
587 done
[1780]588fi
[1789]589echo $PKLVL > /proc/sys/kernel/printk
[1718]590
[1]591EnableCcissIfAppropriate
[1761]592RstHW
[1]593#-------------------------------
594#WHOLIVESINAPINEAPPLEUNDERTHESEA#;# --- don't touch this :)
595#-------------------------------
596UseTmpfs
597if [ ! -e "/tmp/mondo-restore.cfg" ] ; then
[1747]598 LogIt "Warning - /tmp/mondo-restore.cfg not found"
[1]599fi
600
[1698]601if [ "`grep -i 'tape ' /tmp/mondo-restore.cfg`" ] || [ "`grep -i udev /tmp/mondo-restore.cfg`" ]; then
[1747]602 HandleTape
[287]603 ExtractDataDisksAndLoadModules
[737]604elif [ "`grep -i pxe /proc/cmdline`" ]; then
[870]605 # We need to get here exported variables from start-nfs
[1747]606 . /sbin/start-nfs
[737]607
[287]608 # Simulate a local CD
609 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
[1747]610 CD_MOUNTED_OK=yes
[287]611 ExtractDataDisksAndLoadModules
[1698]612elif [ "`grep -i usb= /proc/cmdline`" ] || [ "`grep -i usb /tmp/mondo-restore.cfg | grep media-type`" ]; then
613 # We need to get here exported variables from start-nfs
[1747]614 . /sbin/start-usb
[1698]615
616 # Simulate a local CD
617 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
[1747]618 CD_MOUNTED_OK=yes
[1698]619 ExtractDataDisksAndLoadModules
[1]620else
[287]621 HandleCDROMorFloppies
622 ExtractDataDisksAndLoadModules
[870]623 # We need to get here exported variables from start-nfs
[1747]624 . /sbin/start-nfs
[1]625fi
626res=$?
627ConfigureLoggingDaemons
628if [ -e "/tmp/USE-DEVFS" ] ; then
[1747]629 umount /mnt/cdrom 2> /dev/null
630 mv /dev/cdrom /cdrom.lnk 2> /dev/null
631 CD_MOUNTED_OK=""
632 RunDevfsd
[1]633fi
[232]634echo "Starting potential Raid/LVMs ..."
[1]635PauseForRaids
636StartRaids
637StartLvms
638CopyBootDevEntry
639LoadKeymap
640mkdir -p /tmp/tmpfs
641sleep 2
642#clear
[241]643if [ -e "/dev/md0" ] && [ ! -e "/dev/md/0" ] && [ "`grep /dev/md/ /tmp/mountlist.txt`" != "" ] ; then
[1747]644 LogIt "Creating /dev/md/* softlinks just in case." 1
645 mkdir -p /dev/md
646 cp -af /dev/md0 /dev/md/0 2> /dev/null
647 cp -af /dev/md1 /dev/md/1 2> /dev/null
648 cp -af /dev/md2 /dev/md/2 2> /dev/null
[1]649fi
[220]650export ARCH=`uname -m`
[1]651WelcomeMessage
652# SpaceTests; # Mandrake Linux 8.1 doesn't like this
653[ -e "/tmp/mountlist.txt" ] && cp -f /tmp/mountlist.txt /tmp/mountlist.original
654
[241]655if ! [ "`grep -i "pxe" /proc/cmdline`" ] ; then
[1]656 res="`cat /mnt/cdrom/archives/THIS-CD-NUMBER 2> /dev/null`"
657 [ "$res" != "1" ] && [ "$res" != "" ] && Die "This is CD #$res in the series. Please insert CD #1."
658 [ -e "/cdrom.lnk" ] && mv -f /cdrom.lnk /dev/cdrom && mount /dev/cdrom /mnt/cdrom && CD_MOUNTED_OK=yes
659 [ "$CD_MOUNTED_OK" != "yes" ] && TryAgainToFindCD
660 #mount | grep cdrom > /dev/null 2> /dev/null || mount /dev/cdrom /mnt/cdrom >> $LOGFILE 2>> $LOGFILE
661fi
662hack-cfg-if-necessary || LogIt "Cannot find hack-cfg-if-necessary"
[746]663openvt 8 /usr/bin/tail -f $LOGFILE
[1]664
[1403]665# Log some useful info
[1413]666LogIt "init (from mindi v$MINDI_VER-r${MINDI_REV}"
667LogIt "/proc/cmdline is:"
[1403]668cat /proc/cmdline >> $LOGFILE
[1413]669LogIt "df result:"
670LogIt "----------"
[1403]671df >> $LOGFILE
[1413]672LogIt "-------------"
673LogIt "mount result:"
674LogIt "-------------"
[1403]675mount >> $LOGFILE
[1413]676LogIt "-------------"
677LogIt "lsmod result:"
678LogIt "-------------"
[1403]679lsmod >> $LOGFILE
[1413]680LogIt "-------------"
[1476]681LogIt "dmesg result:"
682LogIt "-------------"
683dmesg >> $LOGFILE
[1403]684
[1]685#-------------------------------
686#ABSORBENTANDYELLOWANDPOROUSISHE#;# --- don't touch this either :)
687#-------------------------------
688
689#ctrlaltdel soft
690for path in /usr.bin /usr/bin ; do
[1747]691 fname=$path/nano
692 [ -e "$fname" ] && ln -sf $fname /usr/bin/pico
[1]693done
694res=`which nano 2> /dev/null`
695[ "$res" ] && ln -sf /usr/bin/
696for i in null stdout stdin stderr ; do
[1747]697 cp -af /dev/$i /tmp
[1]698done
699if grep "backup-media-type" /tmp/mondo-restore.cfg > /dev/null 2> /dev/null ; then
[1747]700 LogIt "backup-media-type is specified in config file - great."
701 LogIt "Calling post-init $mountlist"
702 post-init
[1]703else
[1747]704 LogIt "backup-media-type is not specified in config file."
705 LogIt "I think this CD/floppy has no archives on it."
[1]706fi
[1612]707if grep "RESTORE" /proc/cmdline > /dev/null 2> /dev/null ; then
708 echo "Rebooting in 10 seconds automatically as per reboot order"
709 echo -en "Press ^C to interrupt if you have to ..."
710 for i in 1 2 3 4 5 6 7 8 9 10 ; do
711 sleep 1
712 echo -en "."
713 done
714 echo "Boom."
715 sleep 1
716else
717 echo -en "Type 'exit' to reboot the PC\n"
718 umount /mnt/cdrom 2> /dev/null
719 mount / -o rw,remount > /dev/null 2> /dev/null
720 LogIt "Launching Shell"
721 sh
722fi
[1]723CaughtSoftReset
724# reboot
Note: See TracBrowser for help on using the repository browser.