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

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

Improvement in udev support (do not use cl options not available in busybox)

  • Property svn:keywords set to Id
File size: 17.8 KB
Line 
1#!/bin/sh
2#
3# $Id: init 1719 2007-10-28 11:00:58Z 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 udevd --daemon
281}
282
283
284
285
286#RunDevfsd() {
287# loc=`which devfsd 2> /dev/null`
288# if [ "$loc" != "" ] ; then
289# LogIt "Starting devfsd"
290# devfsd /dev &
291# sleep 5
292# fi
293#}
294
295
296
297SpaceTests() {
298 [ -e "/tmp/filelist.full" ] && cp /tmp/filelist.full /tmp/FLF
299 if [ "`HowMuchFreeSpaceOnRamdisk`" -le "3" ] ; then
300 LogIt "Ramdisk is a bit smaller than I would like." 1
301 LogIt "Please re-run Mondo/Mindi but edit /usr/local/mindi first" 1
302 LogIt "and set EXTRA_SPACE to something high, e.g. 8000" 1
303 Die "Aborting. Please reboot."
304 fi
305 rm -f /tmp/FLF
306}
307
308
309
310StartLvms() {
311 if [ -e "/tmp/i-want-my-lvm" ] ; then
312 LogIt "Scanning LVM's..." 1
313 if which lvm ; then
314 MyInsmod dm-mod
315 MyInsmod dm_mod
316 lvm vgscan --mknodes
317 else
318 vgscan
319 fi
320 grep -E "^#.*vgchange" /tmp/i-want-my-lvm | sed "s/^#[ ]*//" > /tmp/start-lvm
321 chmod +x /tmp/start-lvm
322 echo -en "Starting LVM's..."
323 /tmp/start-lvm &
324 for i in 1 2 3 4 5 ; do
325 echo -en "."
326 sleep 1
327 done
328 echo "Done."
329 fi
330# If necessary, cannibalize 'analyze-my-lvm'; copy some of its code here,
331# pipe vgscan's output, strip it, run 'vgchange' on its output, etc.etc.
332 LogIt "LVM's have been started."
333}
334
335
336StartRaids() {
337 local raid_devices i
338
339 raid_devices=`grep /dev/md /tmp/mountlist.txt | cut -d' ' -f1`
340 if which raidstart > /dev/null 2> /dev/null ; then
341 for i in $raid_devices ; do
342 if grep `basename $i` /proc/mdstat > /dev/null 2> /dev/null ; then
343 LogIt "$i is started already; no need to run 'raidstart $i'" 1
344 else
345 LogIt "Running 'raidstart $i'" 1
346 raidstart $i
347 fi
348 done
349 elif which mdrun > /dev/null 2> /dev/null ; then
350 LogIt "Running 'mdrun'" 1
351 mdrun
352 elif which mdadm > /dev/null 2> /dev/null ; then
353 LogIt "Running 'mdadm'" 1
354 for i in $raid_devices ; do
355 if grep `basename $i` /proc/mdstat > /dev/null 2> /dev/null ; then
356 LogIt "$i is started already; no need to run 'mdadm $i'" 1
357 else
358 if [ -f /etc/mdadm.conf ] ; then
359 LogIt "Running 'mdadm $i' with user supplied /etc/mdadm.conf" 1
360 mdadm -A $i -c /etc/mdadm.conf
361 elif [ -f /etc/mdadm/mdadm.conf ] ; then
362 LogIt "Running 'mdadm $i' with user supplied /etc/mdadm/mdadm.conf" 1
363 mdadm -A $i -c /etc/mdadm/mdadm.conf
364 else
365 LogIt "Running 'mdadm $i'" 1
366 mdadm -Ac partitions -m dev $i
367 fi
368 fi
369 done
370 else
371 LogIt "Warning: Neither 'raidstart' nor 'mdrun''found. RAID devices may not have started." 1
372 fi
373
374}
375
376
377TryAgainToFindCD() {
378 local res
379 mount | grep /mnt/cdrom && return 0
380 [ "`grep "backup_media_type" /tmp/mondo-restore.cfg | grep "cdstream"`" ] && return
381 LogIt "Trying to mount CD-ROM a 2nd time..."
382 find-and-mount-cdrom --second-try
383 res=$?
384 if [ "$res" -eq "0" ] ; then
385 CD_MOUNTED_OK=yes
386 LogIt "CD-ROM drive mounted successfully." 1
387 else
388 LogIt "I still cannot find or mount the CD-ROM drive, by the way."
389 fi
390}
391
392
393
394UseTmpfs()
395{
396 local mount_cmd
397 echo -en "Mounting /tmp/tmpfs..."
398 mkdir -p /tmp/tmpfs
399# For technical reasons, some sets are as large as 16MB.
400# I am allowing 32MB because selective restore occupies a lot of space.
401 for size in 64m 48m 40m 32m ; do
402 mount_cmd="mount /dev/shm -t tmpfs -o size=$size" ; # was 34m until 04/2003
403 LogIt "Trying '$mount_cmd'"
404 $mount_cmd /tmp/tmpfs 2>> $LOGFILE
405 res=$?
406 [ "$res" -eq "0" ] && break
407 done
408 if [ "$res" -ne "0" ] ; then
409 LogIt "Failed. I could not run '$mount_cmd /tmp/tmpfs'. Your kernel is BROKEN or you do not have enough RAM." 1
410 umount /tmp/tmpfs > /dev/null 2> /dev/null
411 rmdir /tmp/tmpfs
412 ln -sf /mnt/RESTORING/tmp /tmp/tmpfs; # used by mondo-restore
413 LogIt "Failed to mount /tmp/tmpfs; using ugly softlink instead"
414 else
415 LogIt "Great. Pivot succeeded w/ size=$size" 1
416 echo -en "Pivoting /tmp..."
417 umount /tmp/tmpfs
418 mkdir -p /tmp.old
419 mv -f /tmp/* /tmp.old/
420 $mount_cmd /tmp
421 mv /tmp.old/* /tmp/
422 rmdir /tmp.old
423 mkdir -p /tmp/tmpfs
424 mkdir -p $GROOVY
425 echo "Done."
426 LogIt "Successfully mounted dynamic /tmp ramdisk"
427# mkdir -p /tmp/tmpfs/var
428# mv -f /var/log /tmp/tmpfs/var/log
429# ln -sf /tmp/tmpfs/var/log /var/log
430 fi
431}
432
433
434WelcomeMessage()
435{
436 echo "********************************************************************"
437 echo "MINDI-LINUX by Mondo Dev Team - web site: http://www.mondorescue.org"
438 echo "Boot disk based on AlfaLinux & Trinux. BusyBox by Erik Andersen."
439which petris > /dev/null 2> /dev/null && echo "Petris was written by Peter Seidler <p.seidler@mail1.stofanet.dk>."
440 echo "Executables and source code are covered by the GNU GPL. No warranty."
441 echo "running on $ARCH"
442 echo "********************************************************************"
443}
444
445
446EnableCcissIfAppropriate() {
447 local i fname
448 for i in 0 1 2 3 ; do
449 fname="/proc/driver/cciss/cciss$i"
450 if [ -e "$fname" ] ; then
451 LogIt "Engaging $fname"
452 echo "engage scsi" > $fname
453 LogIt "...result=$?"
454 fi
455 done
456}
457
458
459ExtractDataDisksAndLoadModules() {
460 echo "Installing additional tools ..."
461 install-additional-tools
462 echo "Inserting modules ..."
463 # Keep the kernel silent again
464 PKLVL=`cut -f1 /proc/sys/kernel/printk`
465 echo 0 > /proc/sys/kernel/printk
466 insert-all-my-modules >> $LOGFILE 2>> $LOGFILE
467 echo $PKLVL > /proc/sys/kernel/printk
468}
469
470# ------------------------ main -----------------------
471
472MINDI_VER=PBVER
473MINDI_REV=PBREV
474trap CaughtSoftReset SIGTERM
475LOGFILE=/var/log/mondorestore.log
476PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/mondo:/usr/games
477GROOVY=/tmp/groovy-stuff
478USER=root
479export PATH GROOVY USER LOGFILE
480
481echo "Welcome to init (from mindi ${MINDI_VER}-r${MINDI_REV})"
482
483mount -o remount rw /
484[ ! "$GROOVY" ] && Die "I'm not groovy!"
485for i in $GROOVY /mnt/floppy /mnt/cdrom /mnt/isodir /var/local/petris /tmp/isodir; do
486 mkdir -p $i
487done
488#/bin/update
489mount /proc/ /proc -v -t proc
490mkdir /sys 2> /dev/null
491mount /sys/ /sys -v -t sysfs 2>> $LOGFILE
492rm -f /foozero
493
494echo 0 > /proc/sys/kernel/exec-shield 2>> /dev/null
495
496if [ -e "/tmp/USE-UDEV" ] ; then
497 RunUdevd
498fi
499ExtractDevTarballs
500LaunchTerminals
501
502# Keeping kernel silent for module insertion
503PKLVL=`cut -f1 /proc/sys/kernel/printk`
504echo 0 > /proc/sys/kernel/printk
505InsertEssentialModules
506echo $PKLVL > /proc/sys/kernel/printk
507
508EnableCcissIfAppropriate
509#-------------------------------
510#WHOLIVESINAPINEAPPLEUNDERTHESEA#;# --- don't touch this :)
511#-------------------------------
512UseTmpfs
513if [ ! -e "/tmp/mondo-restore.cfg" ] ; then
514 LogIt "Warning - /tmp/mondo-restore.cfg not found"
515fi
516
517if [ "`grep -i 'tape ' /tmp/mondo-restore.cfg`" ] || [ "`grep -i udev /tmp/mondo-restore.cfg`" ]; then
518 HandleTape
519 ExtractDataDisksAndLoadModules
520elif [ "`grep -i pxe /proc/cmdline`" ]; then
521 # We need to get here exported variables from start-nfs
522 . /sbin/start-nfs
523
524 # Simulate a local CD
525 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
526 CD_MOUNTED_OK=yes
527 ExtractDataDisksAndLoadModules
528elif [ "`grep -i usb= /proc/cmdline`" ] || [ "`grep -i usb /tmp/mondo-restore.cfg | grep media-type`" ]; then
529 # We need to get here exported variables from start-nfs
530 . /sbin/start-usb
531
532 # Simulate a local CD
533 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
534 CD_MOUNTED_OK=yes
535 ExtractDataDisksAndLoadModules
536else
537 HandleCDROMorFloppies
538 ExtractDataDisksAndLoadModules
539 # We need to get here exported variables from start-nfs
540 . /sbin/start-nfs
541fi
542res=$?
543ConfigureLoggingDaemons
544if [ -e "/tmp/USE-DEVFS" ] ; then
545 umount /mnt/cdrom 2> /dev/null
546 mv /dev/cdrom /cdrom.lnk 2> /dev/null
547 CD_MOUNTED_OK=""
548 RunDevfsd
549fi
550echo "Starting potential Raid/LVMs ..."
551PauseForRaids
552StartRaids
553StartLvms
554CopyBootDevEntry
555LoadKeymap
556mkdir -p /tmp/tmpfs
557sleep 2
558#clear
559if [ -e "/dev/md0" ] && [ ! -e "/dev/md/0" ] && [ "`grep /dev/md/ /tmp/mountlist.txt`" != "" ] ; then
560 LogIt "Creating /dev/md/* softlinks just in case." 1
561 mkdir -p /dev/md
562 cp -af /dev/md0 /dev/md/0 2> /dev/null
563 cp -af /dev/md1 /dev/md/1 2> /dev/null
564 cp -af /dev/md2 /dev/md/2 2> /dev/null
565fi
566export ARCH=`uname -m`
567WelcomeMessage
568# SpaceTests; # Mandrake Linux 8.1 doesn't like this
569[ -e "/tmp/mountlist.txt" ] && cp -f /tmp/mountlist.txt /tmp/mountlist.original
570
571if ! [ "`grep -i "pxe" /proc/cmdline`" ] ; then
572 res="`cat /mnt/cdrom/archives/THIS-CD-NUMBER 2> /dev/null`"
573 [ "$res" != "1" ] && [ "$res" != "" ] && Die "This is CD #$res in the series. Please insert CD #1."
574 [ -e "/cdrom.lnk" ] && mv -f /cdrom.lnk /dev/cdrom && mount /dev/cdrom /mnt/cdrom && CD_MOUNTED_OK=yes
575 [ "$CD_MOUNTED_OK" != "yes" ] && TryAgainToFindCD
576 #mount | grep cdrom > /dev/null 2> /dev/null || mount /dev/cdrom /mnt/cdrom >> $LOGFILE 2>> $LOGFILE
577fi
578hack-cfg-if-necessary || LogIt "Cannot find hack-cfg-if-necessary"
579openvt 8 /usr/bin/tail -f $LOGFILE
580
581# Log some useful info
582LogIt "init (from mindi v$MINDI_VER-r${MINDI_REV}"
583LogIt "/proc/cmdline is:"
584cat /proc/cmdline >> $LOGFILE
585LogIt "df result:"
586LogIt "----------"
587df >> $LOGFILE
588LogIt "-------------"
589LogIt "mount result:"
590LogIt "-------------"
591mount >> $LOGFILE
592LogIt "-------------"
593LogIt "lsmod result:"
594LogIt "-------------"
595lsmod >> $LOGFILE
596LogIt "-------------"
597LogIt "dmesg result:"
598LogIt "-------------"
599dmesg >> $LOGFILE
600
601#-------------------------------
602#ABSORBENTANDYELLOWANDPOROUSISHE#;# --- don't touch this either :)
603#-------------------------------
604
605#ctrlaltdel soft
606for path in /usr.bin /usr/bin ; do
607 fname=$path/nano
608 [ -e "$fname" ] && ln -sf $fname /usr/bin/pico
609done
610res=`which nano 2> /dev/null`
611[ "$res" ] && ln -sf /usr/bin/
612for i in null stdout stdin stderr ; do
613 cp -af /dev/$i /tmp
614done
615if grep "backup-media-type" /tmp/mondo-restore.cfg > /dev/null 2> /dev/null ; then
616 LogIt "backup-media-type is specified in config file - great."
617 LogIt "Calling post-init $mountlist"
618 post-init
619else
620 LogIt "backup-media-type is not specified in config file."
621 LogIt "I think this CD/floppy has no archives on it."
622fi
623if grep "RESTORE" /proc/cmdline > /dev/null 2> /dev/null ; then
624 echo "Rebooting in 10 seconds automatically as per reboot order"
625 echo -en "Press ^C to interrupt if you have to ..."
626 for i in 1 2 3 4 5 6 7 8 9 10 ; do
627 sleep 1
628 echo -en "."
629 done
630 echo "Boom."
631 sleep 1
632else
633 echo -en "Type 'exit' to reboot the PC\n"
634 umount /mnt/cdrom 2> /dev/null
635 mount / -o rw,remount > /dev/null 2> /dev/null
636 LogIt "Launching Shell"
637 sh
638fi
639CaughtSoftReset
640# reboot
Note: See TracBrowser for help on using the repository browser.