source: branches/2.2.5/mindi/rootfs/sbin/init @ 1780

Last change on this file since 1780 was 1780, checked in by Bruno Cornec, 13 years ago

In udev case do not insert modules at all (udev should do it alone)
May avoid the issue with rhel4.5 kernel ? To be tested

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