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

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

Load USB earlier in order to support KBD such as with iLO

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