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, 12 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.