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

Last change on this file since 1789 was 1789, checked in by Bruno Cornec, 13 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
Line 
1#!/bin/sh
2#
3# $Id: init 1789 2007-11-12 20:11:14Z 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    if [ -e /proc/sys/kernel/hotplug ]; then
281        echo > /proc/sys/kernel/hotplug
282    fi
283    PKLVL=`cut -f1 /proc/sys/kernel/printk`
284    echo 0 > /proc/sys/kernel/printk
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
291    if [ -x /sbin/udevtrigger ]; then
292        /sbin/udevtrigger
293    fi
294    echo $PKLVL > /proc/sys/kernel/printk
295    # May avoid shell error messages
296    chmod 644 /dev/tty*
297}
298
299RstHW() {
300
301    # Restore the HW configuration if available (NOT by default)
302    answer="NO"
303
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}
323
324
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() {
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
345}
346
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
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
357else
358    if [ -f uhcd_hci.ko ]; then
359        insmod uhcd_hci.ko
360    fi
361    if [ -f usbhid.ko ]; then
362        insmod usbcore.ko
363        insmod usbhid.ko
364    fi
365fi
366}
367
368
369
370StartLvms() {
371    if [ -e "/tmp/i-want-my-lvm" ] ; then
372        LogIt "Scanning LVM's..." 1
373        if which lvm ; then
374            MyInsmod dm-mod
375            MyInsmod dm_mod
376            lvm vgscan --mknodes
377        else
378            vgscan
379        fi
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
385            echo -en "."
386            sleep 1
387        done
388        echo "Done."
389    fi
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.
392    LogIt "LVM's have been started."
393}
394
395
396StartRaids() {
397    local raid_devices i
398
399    raid_devices=`grep /dev/md /tmp/mountlist.txt | cut -d' ' -f1`
400    if which raidstart > /dev/null 2> /dev/null ; then
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
405                LogIt "Running 'raidstart $i'" 1
406                raidstart $i
407            fi
408        done
409    elif which mdrun > /dev/null 2> /dev/null ; then
410        LogIt "Running 'mdrun'" 1
411        mdrun
412    elif which mdadm > /dev/null 2> /dev/null ; then
413        LogIt "Running 'mdadm'" 1
414        for i in $raid_devices ; do
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
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
428            fi
429        done
430    else
431        LogIt "Warning: Neither 'raidstart' nor 'mdrun''found. RAID devices may not have started." 1
432    fi
433
434}
435
436
437TryAgainToFindCD() {
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
450}
451
452
453
454UseTmpfs()
455{
456    local mount_cmd
457    echo -en "Mounting /tmp/tmpfs..."
458    mkdir -p /tmp/tmpfs
459# For technical reasons, some sets are as large as 16MB.
460# I am allowing 32MB because selective restore occupies a lot of space.
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
479        mv /tmp/* /tmp.old/
480        # Try to Deal with a busybox bug on inexistant links
481        cp /tmp/* /tmp.old/
482        rm -f /tmp/*
483        $mount_cmd /tmp
484        mv /tmp.old/* /tmp/
485        # Try to Deal with a busybox bug on inexistant links
486        cp /tmp.old/* /tmp/
487        rm -rf /tmp.old
488        mkdir -p /tmp/tmpfs
489        mkdir -p $GROOVY
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
495    fi
496}
497
498
499WelcomeMessage()
500{
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."
504which petris > /dev/null 2> /dev/null && echo "Petris was written by Peter Seidler <p.seidler@mail1.stofanet.dk>."
505    echo "Executables and source code are covered by the GNU GPL. No warranty."
506    echo "running on $ARCH"
507    echo "********************************************************************"
508}
509
510
511EnableCcissIfAppropriate() {
512    local i fname
513    for i in 0 1 2 3 ; do
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
520    done
521}
522
523
524ExtractDataDisksAndLoadModules() {
525    echo "Installing additional tools ..."
526    install-additional-tools
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
535}
536
537# ------------------------ main -----------------------
538
539MINDI_VER=PBVER
540MINDI_REV=PBREV
541trap CaughtSoftReset SIGTERM
542LOGFILE=/var/log/mondorestore.log
543PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/mondo:/usr/games
544GROOVY=/tmp/groovy-stuff
545USER=root
546export PATH GROOVY USER LOGFILE
547
548echo "Welcome to init (from mindi ${MINDI_VER}-r${MINDI_REV})"
549
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
553    mkdir -p $i
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
561StartUSBKbd
562
563if [ -f /proc/sys/kernel/exec-shield ]; then
564    echo 0 > /proc/sys/kernel/exec-shield 2>> /dev/null
565fi
566
567if [ -f /proc/modules ]; then
568    echo "/sbin/modprobe" > /proc/sys/kernel/modprobe
569fi
570
571if [ -e "/tmp/USE-UDEV" ] ; then
572    RunUdevd
573else
574    ExtractDevTarballs
575fi
576LaunchTerminals
577
578# Keeping kernel silent  for module insertion
579PKLVL=`cut -f1 /proc/sys/kernel/printk`
580echo 0 > /proc/sys/kernel/printk
581if [ ! -e "/tmp/USE-UDEV" ] ; then
582    InsertEssentialModules
583else
584    for m in *.ko; do
585        j=`echo $m | sed 's/\.ko$//'`
586        modprobe -q $j
587    done
588fi
589echo $PKLVL > /proc/sys/kernel/printk
590
591EnableCcissIfAppropriate
592RstHW
593#-------------------------------
594#WHOLIVESINAPINEAPPLEUNDERTHESEA#;# --- don't touch this :)
595#-------------------------------
596UseTmpfs
597if [ ! -e "/tmp/mondo-restore.cfg" ] ; then
598    LogIt "Warning - /tmp/mondo-restore.cfg not found"
599fi
600
601if [ "`grep -i 'tape ' /tmp/mondo-restore.cfg`" ] || [ "`grep -i udev /tmp/mondo-restore.cfg`" ]; then
602    HandleTape
603    ExtractDataDisksAndLoadModules
604elif [ "`grep -i pxe /proc/cmdline`" ]; then
605    # We need to get here exported variables from start-nfs
606    . /sbin/start-nfs
607
608    # Simulate a local CD
609    echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
610    CD_MOUNTED_OK=yes
611    ExtractDataDisksAndLoadModules
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
614    . /sbin/start-usb
615
616    # Simulate a local CD
617    echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
618    CD_MOUNTED_OK=yes
619    ExtractDataDisksAndLoadModules
620else
621    HandleCDROMorFloppies
622    ExtractDataDisksAndLoadModules
623    # We need to get here exported variables from start-nfs
624    . /sbin/start-nfs
625fi
626res=$?
627ConfigureLoggingDaemons
628if [ -e "/tmp/USE-DEVFS" ] ; then
629    umount /mnt/cdrom 2> /dev/null
630    mv /dev/cdrom /cdrom.lnk 2> /dev/null
631    CD_MOUNTED_OK=""
632    RunDevfsd
633fi
634echo "Starting potential Raid/LVMs ..."
635PauseForRaids
636StartRaids
637StartLvms
638CopyBootDevEntry
639LoadKeymap
640mkdir -p /tmp/tmpfs
641sleep 2
642#clear
643if [ -e "/dev/md0" ] && [ ! -e "/dev/md/0" ] && [ "`grep /dev/md/ /tmp/mountlist.txt`" != "" ] ; then
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
649fi
650export ARCH=`uname -m`
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
655if ! [ "`grep -i "pxe" /proc/cmdline`" ] ; then
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"
663openvt 8 /usr/bin/tail -f $LOGFILE
664
665# Log some useful info
666LogIt "init (from mindi v$MINDI_VER-r${MINDI_REV}"
667LogIt "/proc/cmdline is:"
668cat /proc/cmdline  >> $LOGFILE
669LogIt "df result:"
670LogIt "----------"
671df >> $LOGFILE
672LogIt "-------------"
673LogIt "mount result:"
674LogIt "-------------"
675mount >> $LOGFILE
676LogIt "-------------"
677LogIt "lsmod result:"
678LogIt "-------------"
679lsmod >> $LOGFILE
680LogIt "-------------"
681LogIt "dmesg result:"
682LogIt "-------------"
683dmesg >> $LOGFILE
684
685#-------------------------------
686#ABSORBENTANDYELLOWANDPOROUSISHE#;# --- don't touch this either :)
687#-------------------------------
688
689#ctrlaltdel soft
690for path in /usr.bin /usr/bin ; do
691    fname=$path/nano
692    [ -e "$fname" ] && ln -sf $fname /usr/bin/pico
693done
694res=`which nano 2> /dev/null`
695[ "$res" ] && ln -sf /usr/bin/
696for i in null stdout stdin stderr ; do
697    cp -af /dev/$i /tmp
698done
699if grep "backup-media-type" /tmp/mondo-restore.cfg > /dev/null 2> /dev/null ; then
700    LogIt "backup-media-type is specified in config file - great."
701    LogIt "Calling post-init $mountlist"
702    post-init
703else
704    LogIt "backup-media-type is not specified in config file."
705    LogIt "I think this CD/floppy has no archives on it."
706fi
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
723CaughtSoftReset
724# reboot
Note: See TracBrowser for help on using the repository browser.