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

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

Attempt to fix the lack of modules loaded at restore time - especially fs device drivers

  • Property svn:keywords set to Id
File size: 19.6 KB
RevLine 
[1]1#!/bin/sh
2#
[736]3# $Id: init 1820 2007-11-23 18:30:56Z bruno $
[1]4#
[736]5# init script launched during the restore process
[1]6#------------------------------------------------------------
7
8
9CaughtSoftReset() {
[1747]10 trap SIGTERM
11 reboot
[1]12}
13
14
15ConfigureLoggingDaemons() {
[1747]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."
[1]22}
23
24
25
26CopyBootDevEntry() {
[1747]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
[1410]33 echo "OK."
34 return 0
[1747]35 fi
36 mkdir -p $outfile
37 rmdir $outfile
38 cp -pRdf $devfile $outfile
39 if [ "$?" -ne "0" ] ; then
[1410]40 echo "Failed."
41 return 1
[1747]42 else
[1410]43 echo "OK."
44 return 0
[1747]45 fi
[1]46}
47
48
49
50Die() {
[1747]51 LogIt "Fatal error! $1" 1
52 exit 1
[1]53}
54
55
56
57ExtractDevTarballs() {
[1747]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
[1]69}
70
71
72
73LaunchTerminals() {
[1747]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
[1804]80 openvt 8 /usr/bin/tail -f $LOGFILE
[1]81}
82
83
84LoadKeymap() {
[1747]85 local fname
86 fname=`cat /tmp/KEYMAP-LIVES-HERE 2> /dev/null`
87 [ "$fname" = "" ] && return
88 if which loadkeys > /dev/null 2> /dev/null ; then
89 loadkeys $fname
[1]90# loadkmap != loadkeys
91# elif which loadkmap > /dev/null 2> /dev/null ; then
92# loadkmap < $fname
[1747]93 else
94 LogIt "Using default keyboard map." 1
95 fi
[1]96}
97
98
99UntarTapeStuff() {
[1747]100 local old_pwd res
101 old_pwd=`pwd`
102 cd $GROOVY
103 [ "$1" != "" ] && tapedev=$1
104 [ ! "$tapedev" ] && tapedev=`grep media-dev /tmp/mondo-restore.cfg | tr -s ' ' ' ' | cut -d' ' -f2`
[1]105# tar -zxf $tapedev
[1747]106 dd if=$tapedev bs=32k count=1024 | tar -zx
107 res=$?
108 if [ "$res" -eq "0" ] ; then
[1410]109 grep -v media-dev /tmp/mondo-restore.cfg > /tmp/mr.cfg
110 echo "media-dev $tapedev" >> /tmp/mr.cfg
[1747]111 cp -f /tmp/mr.cfg /tmp/mondo-restore.cfg
112 fi
113 cd $old_pwd
114 return $res
[1]115}
116
117HandleTape() {
[1747]118 local res tapedev
119 tapedev="" ; # will be set by UntarTapeStuff()
120 cd $GROOVY
121 UntarTapeStuff $tapedev || UntarTapeStuff /dev/st0 || UntarTapeStuff /dev/osst0 || UntarTapeStuff /dev/ht0
122 res=$?
123 while [ "$res" -ne "0" ] ; do
124 LogIt "$tapedev failed to act as extended data disk for booting." 1
125 LogIt "Please specify an alternate tape device," 1
126 LogIt "or hit <Enter> to boot from CD/floppies." 1
127 echo -en "---> "
128 read tapedev
129 if [ "$tapedev" ] ; then
130 LogIt "User specified $tapedev instead"
131 UntarTapeStuff $tapedev
132 res=$?
133 else
134 LogIt "User opted not to specify an alternate tapedev"
135 res=1
[1]136 break
[1747]137 fi
138 done
[1]139
[1747]140 if [ "$res" -ne "0" ] ; then
[1410]141 cd /
142 LogIt "Failed to use tape as extended datadisk. Reverting to floppies." 1
143 HandleCDROMorFloppies
144 res=$?
[1747]145 else
[1410]146# clear
147 LogIt "Using tape as extended datadisk. Good." 3
148 echo "Using tape as extd ddisk." > /tmp/TAPEDEV-HAS-DATA-DISKS
149 res=0
[1747]150 CD_MOUNTED_OK=yes
151 fi
152 return $res
[1]153}
154
155
156
157HandleCDROMorFloppies() {
[1747]158 find-and-mount-cdrom
159 res=$?
160 if [ "$res" -ne "0" ] ; then
[898]161 LogIt "First call to find-and-mount-cdrom failed." 1
162 LogIt "Sleeping for 3 seconds and trying again." 1
163 sleep 3
164 find-and-mount-cdrom
165 res=$?
[1747]166 fi
167 if [ "$res" -eq "0" ] ; then
[898]168 LogIt "OK, I am running on a CD-ROM. Good." 3
[1747]169 CD_MOUNTED_OK=yes
170 elif [ "$res" -eq "1" ] ; then
[898]171 LogIt "OK, I am running on floppies. Good." 3
172 CD_MOUNTED_OK=""
[1747]173 else
[898]174 LogIt "OK, I am falling back to floppy mode." 3
[1816]175 LogIt "(You lay not have the right drivers" 3
176 LogIt "to support the hardware on which we are running)" 3
[1747]177 LogIt "That means you'll have to copy the data disk images from" 3
178 LogIt "the CD/hard disk/whatever to physical 1.44MB disks and" 3
179 LogIt "insert them, one after the other. Please see the manual." 3
180 LogIt "The images are in /images on the CD, or /root/images/mindi" 3
181 LogIt "on your hard disk. Your archives are probably fine but" 3
182 LogIt "your tape streamer and/or CD-ROM drive are eccentric. :-)" 3
[898]183 CD_MOUNTED_OK=""
[1747]184 fi
185 return 0
[1]186}
187
188
189HowMuchFreeSpaceOnRamdisk() {
[305]190 df -m -P | grep /dev/ram | head -n1 | tr -s '\t' ' ' | cut -d' ' -f4
[1]191}
192
193
194
195InsertEssentialModules() {
[429]196# Load the VIA IDE module first thing if it exists (requires ide-core).
197# This is to ensure that DMA is working for VIA chipsets with 2.6 kernels.
[1815]198 for module in /ide-core.ko* /via82cxxx.ko*; do
[1747]199 [ -f "$module" ] && MyInsmod $module > /dev/null 2> /dev/null
200 done
[429]201# Then load the remaining modules in normal (i.e. arbitrary) order.
[1747]202 for j in 1 2 3 4 5 ; do
203 for i in `ls /*.*o* 2> /dev/null` ; do
204 [ -f "$i" ] && MyInsmod $i > /dev/null 2> /dev/null
205 done
206 done
[1]207}
208
209
210
211PauseForRaids() {
[1747]212 if [ "`dmesg | grep -i "RAID Controller"`" != "" ] || [ "`dmesg | grep -i "Vendor: 3ware"`" != "" ] ; then
213 LogIt "RAID controller(s) detected. Pausing 10 seconds to let them warm up." 1
214 echo -en "Pausing..."
215 for i in 1 2 3 4 5 6 7 8 9 10 ; do
216 sleep 1
217 echo -en "$(($i*10))%..."
218 done
219 echo "Done."
220 fi
[1]221}
222
223
224# 06/13/2002 --- DuckX's & Hugo's new routine
225# 10/11/2003 --- added a simple devfsd.conf file
226# 01/24/2005 --- cater for arbitrary locations of devfsd.conf by using the
227# config file path compiled into devfsd
228RunDevfsd() {
[1747]229 loc=`which devfsd 2> /dev/null`
230 if [ "$loc" != "" ] ; then
[1]231 LogIt "Devfs found. Testing kernel support..."
232 if [ ! -e "/dev/.devfsd" ] ; then
[746]233 mount -t devfs devfs /dev 2>> $LOGFILE
[1747]234 if [ "$?" -ne "0" ] ; then
[1]235 LogIt "Error while trying to mount devfs"
236 else
237 LogIt "Devfs mounted OK"
238 fi
239 fi
240 #check if the kernel supports devfs
241 if [ -e "/dev/.devfsd" ] ; then
242 [ -d "/proc/1" ] || mount -n /proc
243 LogIt "Kernel support found. Creating config file and starting devfsd"
[911]244 conffile=`strings $loc | grep -E "devfsd.conf$"`
[1]245 [ "$conffile" ] || conffile="/etc/devfsd.conf"
246 confpath=`echo $conffile | sed "s/\/devfsd\.conf$//"`
247 [ -d "$confpath" ] || mkdir -p $confpath
248 echo -en "REGISTER .* MKOLDCOMPAT\nUNREGISTER .* RMOLDCOMPAT\n" > $conffile
249 devfsd /dev &
250 sleep 5
251 else
252 LogIt "No devfs kernel support."
253 fi
[1747]254 fi
[1]255}
256
[1718]257# Taken from udev management in Mandriva 2008.0. Kudos guys
258make_extra_nodes () {
259 # there are a few things that sysfs does not export for us.
260 # these things are listed in /etc/udev/links.conf
261 grep '^[^#]' /etc/udev-links.conf | \
262 while read type name arg1; do
263 [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] ||continue
264 case "$type" in
265 L) ln -s $arg1 /dev/$name ;;
266 D) mkdir -p /dev/$name ;;
[1719]267 M) mknod /dev/$name $arg1 && chmod 600 /dev/$name;;
268 *) echo "udev-links.conf: unparseable line (%s %s %s)\n" "$type" "$name" "$arg1" ;;
[1718]269 esac
270 done
271}
272
[1792]273create_dev_makedev() {
274 if [ -e /sbin/MAKEDEV ]; then
275 ln -sf /sbin/MAKEDEV /dev/MAKEDEV
276 else
277 ln -sf /bin/true /dev/MAKEDEV
278 fi
279}
[1718]280
[1716]281RunUdevd() {
[1718]282 # Inspiration from Mandriva 2008.0 startup script
283 echo "Preparing udev environment..."
284 mv /dev /dev.static
285 mkdir /dev
286 mount -n -o size=5M,mode=0755 -t tmpfs none /dev
287 make_extra_nodes
288 mount -n -t devpts -o mode=620 none /dev/pts
289 mount -n -t tmpfs none /dev/shm
[1789]290 if [ -e /proc/sys/kernel/hotplug ]; then
291 echo > /proc/sys/kernel/hotplug
292 fi
[1734]293 PKLVL=`cut -f1 /proc/sys/kernel/printk`
294 echo 0 > /proc/sys/kernel/printk
[1759]295 if [ -x /sbin/startudev ]; then
296 /sbin/startudev
297 fi
298 # Depending on udevd version it gives back the hand or not :-(
299 /sbin/udevd --daemon &
300 sleep 2
[1792]301 mkdir -p /dev/.udev/queue/
[1789]302 if [ -x /sbin/udevtrigger ]; then
303 /sbin/udevtrigger
304 fi
[1792]305 create_dev_makedev
[1759]306 # May avoid shell error messages
[1741]307 chmod 644 /dev/tty*
[1816]308 if [ -x /sbin/udevsettle ]; then
309 /sbin/udevsettle
310 fi
311 echo $PKLVL > /proc/sys/kernel/printk
[1716]312}
[1]313
[1761]314RstHW() {
[1]315
[1761]316 # Restore the HW configuration if available (NOT by default)
317 answer="NO"
[1]318
[1815]319 grep -q nohw /proc/cmdline
320 if [ "$?" -eq 0 ]; then
321 return
322 fi
[1761]323 if [ -x ./mindi-rsthw ]; then
324 grep -q RESTORE /proc/cmdline
325 if [ "$?" -ne 0 ]; then
[1815]326 #clear
[1761]327 echo "*********************************************************************"
328 echo "Do you want to restore the HW configuration of the original machine ?"
329 echo "(This may dammage your hardware so be sure to check twice before saying yes)"
330 echo "*********************************************************************"
331 echo "Please confirm by typing YES exactly as written here (NO by default)"
332 echo -n "--> "
333 read answer
334 else
335 answer="YES"
336 fi
337 if [ "$answer" -eq "YES" ] ; then
338 ./mindi-rsthw
339 fi
340 fi
341}
[1]342
[1761]343
[1]344#RunDevfsd() {
345# loc=`which devfsd 2> /dev/null`
346# if [ "$loc" != "" ] ; then
347# LogIt "Starting devfsd"
348# devfsd /dev &
349# sleep 5
350# fi
351#}
352
353
354
355SpaceTests() {
[1747]356 [ -e "/tmp/filelist.full" ] && cp /tmp/filelist.full /tmp/FLF
357 if [ "`HowMuchFreeSpaceOnRamdisk`" -le "3" ] ; then
358 LogIt "Ramdisk is a bit smaller than I would like." 1
359 LogIt "Please re-run Mondo/Mindi but edit /usr/local/mindi first" 1
360 LogIt "and set EXTRA_SPACE to something high, e.g. 8000" 1
361 Die "Aborting. Please reboot."
362 fi
363 rm -f /tmp/FLF
[1]364}
365
[1787]366StartUSBKbd() {
367# Prepare minimal USB env in case we have USB kbd such as with iLO
368[ -d /proc/bus/usb ] && ! grep -q /proc/bus/usb /proc/mounts && mount -t usbfs none /proc/bus/usb
369if [ -e "/tmp/USE-UDEV" ] ; then
[1816]370 if [ -f usbhid.ko ] || [ -f usbhid.ko.gz ]; then
[1789]371 modprobe -q usbhid
372 fi
[1816]373 if [ -f uhcd_hci.ko ] || [ -f uhcd_hci.ko.gz ]; then
[1789]374 modprobe -q uhcd_hci
375 fi
[1787]376else
377 if [ -f uhcd_hci.ko ]; then
[1816]378 insmod uhcd_hci.ko
[1787]379 fi
380 if [ -f usbhid.ko ]; then
[1816]381 insmod usbcore.ko
382 insmod usbhid.ko
[1787]383 fi
384fi
385}
[1]386
387
[1787]388
[1]389StartLvms() {
[1747]390 if [ -e "/tmp/i-want-my-lvm" ] ; then
391 LogIt "Scanning LVM's..." 1
[739]392 if which lvm ; then
393 MyInsmod dm-mod
394 MyInsmod dm_mod
395 lvm vgscan --mknodes
396 else
397 vgscan
398 fi
[1747]399 grep -E "^#.*vgchange" /tmp/i-want-my-lvm | sed "s/^#[ ]*//" > /tmp/start-lvm
400 chmod +x /tmp/start-lvm
401 echo -en "Starting LVM's..."
402 /tmp/start-lvm &
403 for i in 1 2 3 4 5 ; do
[1410]404 echo -en "."
405 sleep 1
[1747]406 done
407 echo "Done."
408 fi
[1]409# If necessary, cannibalize 'analyze-my-lvm'; copy some of its code here,
410# pipe vgscan's output, strip it, run 'vgchange' on its output, etc.etc.
[1747]411 LogIt "LVM's have been started."
[1]412}
413
414
415StartRaids() {
[1747]416 local raid_devices i
[1273]417
[1747]418 raid_devices=`grep /dev/md /tmp/mountlist.txt | cut -d' ' -f1`
[623]419 if which raidstart > /dev/null 2> /dev/null ; then
[1747]420 for i in $raid_devices ; do
421 if grep `basename $i` /proc/mdstat > /dev/null 2> /dev/null ; then
422 LogIt "$i is started already; no need to run 'raidstart $i'" 1
423 else
[623]424 LogIt "Running 'raidstart $i'" 1
425 raidstart $i
[1747]426 fi
427 done
[623]428 elif which mdrun > /dev/null 2> /dev/null ; then
429 LogIt "Running 'mdrun'" 1
430 mdrun
[1273]431 elif which mdadm > /dev/null 2> /dev/null ; then
432 LogIt "Running 'mdadm'" 1
433 for i in $raid_devices ; do
[1747]434 if grep `basename $i` /proc/mdstat > /dev/null 2> /dev/null ; then
435 LogIt "$i is started already; no need to run 'mdadm $i'" 1
436 else
[1610]437 if [ -f /etc/mdadm.conf ] ; then
438 LogIt "Running 'mdadm $i' with user supplied /etc/mdadm.conf" 1
439 mdadm -A $i -c /etc/mdadm.conf
440 elif [ -f /etc/mdadm/mdadm.conf ] ; then
441 LogIt "Running 'mdadm $i' with user supplied /etc/mdadm/mdadm.conf" 1
442 mdadm -A $i -c /etc/mdadm/mdadm.conf
443 else
444 LogIt "Running 'mdadm $i'" 1
445 mdadm -Ac partitions -m dev $i
446 fi
[1747]447 fi
448 done
[623]449 else
450 LogIt "Warning: Neither 'raidstart' nor 'mdrun''found. RAID devices may not have started." 1
451 fi
452
[1]453}
454
455
456TryAgainToFindCD() {
[1747]457 local res
458 mount | grep /mnt/cdrom && return 0
459 [ "`grep "backup_media_type" /tmp/mondo-restore.cfg | grep "cdstream"`" ] && return
460 LogIt "Trying to mount CD-ROM a 2nd time..."
461 find-and-mount-cdrom --second-try
462 res=$?
463 if [ "$res" -eq "0" ] ; then
464 CD_MOUNTED_OK=yes
465 LogIt "CD-ROM drive mounted successfully." 1
466 else
467 LogIt "I still cannot find or mount the CD-ROM drive, by the way."
468 fi
[1]469}
470
471
472
473UseTmpfs()
474{
[1747]475 local mount_cmd
476 echo -en "Mounting /tmp/tmpfs..."
477 mkdir -p /tmp/tmpfs
[1]478# For technical reasons, some sets are as large as 16MB.
479# I am allowing 32MB because selective restore occupies a lot of space.
[1747]480 for size in 64m 48m 40m 32m ; do
481 mount_cmd="mount /dev/shm -t tmpfs -o size=$size" ; # was 34m until 04/2003
482 LogIt "Trying '$mount_cmd'"
483 $mount_cmd /tmp/tmpfs 2>> $LOGFILE
484 res=$?
485 [ "$res" -eq "0" ] && break
486 done
487 if [ "$res" -ne "0" ] ; then
488 LogIt "Failed. I could not run '$mount_cmd /tmp/tmpfs'. Your kernel is BROKEN or you do not have enough RAM." 1
489 umount /tmp/tmpfs > /dev/null 2> /dev/null
490 rmdir /tmp/tmpfs
491 ln -sf /mnt/RESTORING/tmp /tmp/tmpfs; # used by mondo-restore
492 LogIt "Failed to mount /tmp/tmpfs; using ugly softlink instead"
493 else
494 LogIt "Great. Pivot succeeded w/ size=$size" 1
495 echo -en "Pivoting /tmp..."
496 umount /tmp/tmpfs
497 mkdir -p /tmp.old
[1752]498 mv /tmp/* /tmp.old/
499 # Try to Deal with a busybox bug on inexistant links
[1747]500 cp /tmp/* /tmp.old/
501 rm -f /tmp/*
502 $mount_cmd /tmp
[1752]503 mv /tmp.old/* /tmp/
504 # Try to Deal with a busybox bug on inexistant links
[1747]505 cp /tmp.old/* /tmp/
506 rm -rf /tmp.old
507 mkdir -p /tmp/tmpfs
508 mkdir -p $GROOVY
[1]509 echo "Done."
510 LogIt "Successfully mounted dynamic /tmp ramdisk"
511# mkdir -p /tmp/tmpfs/var
512# mv -f /var/log /tmp/tmpfs/var/log
513# ln -sf /tmp/tmpfs/var/log /var/log
[1747]514 fi
[1]515}
516
517
518WelcomeMessage()
519{
[1813]520 export ARCH=`uname -m`
521
[1747]522 echo "********************************************************************"
523 echo "MINDI-LINUX by Mondo Dev Team - web site: http://www.mondorescue.org"
524 echo "Boot disk based on AlfaLinux & Trinux. BusyBox by Erik Andersen."
[1]525which petris > /dev/null 2> /dev/null && echo "Petris was written by Peter Seidler <p.seidler@mail1.stofanet.dk>."
[1747]526 echo "Executables and source code are covered by the GNU GPL. No warranty."
527 echo "running on $ARCH"
528 echo "********************************************************************"
[1]529}
530
531
532EnableCcissIfAppropriate() {
[1747]533 local i fname
534 for i in 0 1 2 3 ; do
[1410]535 fname="/proc/driver/cciss/cciss$i"
536 if [ -e "$fname" ] ; then
537 LogIt "Engaging $fname"
538 echo "engage scsi" > $fname
539 LogIt "...result=$?"
540 fi
[1747]541 done
[1]542}
543
[1802]544ModprobeAllModules() {
[1]545
[1820]546 for m in `find /lib/modules -name '*.ko*'`; do
547 j=`basename $m | sed 's/\.ko.*$//'`
[1815]548 modprobe -q $j
[1802]549 done
550}
551
[287]552ExtractDataDisksAndLoadModules() {
553 echo "Installing additional tools ..."
554 install-additional-tools
[1800]555 # Keep the kernel silent again
556 PKLVL=`cut -f1 /proc/sys/kernel/printk`
[1802]557 echo 0 > /proc/sys/kernel/printk
[1780]558 if [ ! -e "/tmp/USE-UDEV" ] ; then
559 echo "Inserting modules ..."
560 insert-all-my-modules >> $LOGFILE 2>> $LOGFILE
[1800]561 else
[1802]562 ModprobeAllModules
[1780]563 fi
[1800]564 echo $PKLVL > /proc/sys/kernel/printk
[287]565}
[1]566
567# ------------------------ main -----------------------
568
[1698]569MINDI_VER=PBVER
570MINDI_REV=PBREV
[1]571trap CaughtSoftReset SIGTERM
[1643]572LOGFILE=/var/log/mondorestore.log
[1236]573PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/mondo:/usr/games
[1]574GROOVY=/tmp/groovy-stuff
575USER=root
[1315]576export PATH GROOVY USER LOGFILE
[1]577
[1716]578echo "Welcome to init (from mindi ${MINDI_VER}-r${MINDI_REV})"
[898]579
[1]580mount -o remount rw /
581[ ! "$GROOVY" ] && Die "I'm not groovy!"
582for i in $GROOVY /mnt/floppy /mnt/cdrom /mnt/isodir /var/local/petris /tmp/isodir; do
[1747]583 mkdir -p $i
[1]584done
585#/bin/update
586mount /proc/ /proc -v -t proc
587mkdir /sys 2> /dev/null
588mount /sys/ /sys -v -t sysfs 2>> $LOGFILE
589rm -f /foozero
590
[1787]591StartUSBKbd
592
[1720]593if [ -f /proc/sys/kernel/exec-shield ]; then
594 echo 0 > /proc/sys/kernel/exec-shield 2>> /dev/null
595fi
[1]596
[1729]597if [ -f /proc/modules ]; then
598 echo "/sbin/modprobe" > /proc/sys/kernel/modprobe
599fi
600
[1716]601if [ -e "/tmp/USE-UDEV" ] ; then
[1747]602 RunUdevd
[1716]603fi
[1798]604ExtractDevTarballs
[1]605LaunchTerminals
[1718]606
[1789]607# Keeping kernel silent for module insertion
608PKLVL=`cut -f1 /proc/sys/kernel/printk`
609echo 0 > /proc/sys/kernel/printk
[1780]610if [ ! -e "/tmp/USE-UDEV" ] ; then
611 InsertEssentialModules
[1789]612else
[1802]613 ModprobeAllModules
[1780]614fi
[1789]615echo $PKLVL > /proc/sys/kernel/printk
[1718]616
[1]617EnableCcissIfAppropriate
618#-------------------------------
619#WHOLIVESINAPINEAPPLEUNDERTHESEA#;# --- don't touch this :)
620#-------------------------------
621UseTmpfs
622if [ ! -e "/tmp/mondo-restore.cfg" ] ; then
[1747]623 LogIt "Warning - /tmp/mondo-restore.cfg not found"
[1]624fi
625
[1698]626if [ "`grep -i 'tape ' /tmp/mondo-restore.cfg`" ] || [ "`grep -i udev /tmp/mondo-restore.cfg`" ]; then
[1747]627 HandleTape
[287]628 ExtractDataDisksAndLoadModules
[737]629elif [ "`grep -i pxe /proc/cmdline`" ]; then
[870]630 # We need to get here exported variables from start-nfs
[1747]631 . /sbin/start-nfs
[737]632
[287]633 # Simulate a local CD
634 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
[1747]635 CD_MOUNTED_OK=yes
[287]636 ExtractDataDisksAndLoadModules
[1698]637elif [ "`grep -i usb= /proc/cmdline`" ] || [ "`grep -i usb /tmp/mondo-restore.cfg | grep media-type`" ]; then
638 # We need to get here exported variables from start-nfs
[1747]639 . /sbin/start-usb
[1698]640
641 # Simulate a local CD
642 echo "/mnt/cdrom" > /tmp/CDROM-LIVES-HERE
[1747]643 CD_MOUNTED_OK=yes
[1698]644 ExtractDataDisksAndLoadModules
[1]645else
[287]646 HandleCDROMorFloppies
647 ExtractDataDisksAndLoadModules
[870]648 # We need to get here exported variables from start-nfs
[1747]649 . /sbin/start-nfs
[1]650fi
651res=$?
652ConfigureLoggingDaemons
653if [ -e "/tmp/USE-DEVFS" ] ; then
[1747]654 umount /mnt/cdrom 2> /dev/null
655 mv /dev/cdrom /cdrom.lnk 2> /dev/null
656 CD_MOUNTED_OK=""
657 RunDevfsd
[1]658fi
[1813]659LoadKeymap
660WelcomeMessage
661RstHW
[232]662echo "Starting potential Raid/LVMs ..."
[1]663PauseForRaids
664StartRaids
665StartLvms
666CopyBootDevEntry
667mkdir -p /tmp/tmpfs
668sleep 2
669#clear
[241]670if [ -e "/dev/md0" ] && [ ! -e "/dev/md/0" ] && [ "`grep /dev/md/ /tmp/mountlist.txt`" != "" ] ; then
[1747]671 LogIt "Creating /dev/md/* softlinks just in case." 1
672 mkdir -p /dev/md
673 cp -af /dev/md0 /dev/md/0 2> /dev/null
674 cp -af /dev/md1 /dev/md/1 2> /dev/null
675 cp -af /dev/md2 /dev/md/2 2> /dev/null
[1]676fi
677# SpaceTests; # Mandrake Linux 8.1 doesn't like this
678[ -e "/tmp/mountlist.txt" ] && cp -f /tmp/mountlist.txt /tmp/mountlist.original
679
[241]680if ! [ "`grep -i "pxe" /proc/cmdline`" ] ; then
[1]681 res="`cat /mnt/cdrom/archives/THIS-CD-NUMBER 2> /dev/null`"
682 [ "$res" != "1" ] && [ "$res" != "" ] && Die "This is CD #$res in the series. Please insert CD #1."
683 [ -e "/cdrom.lnk" ] && mv -f /cdrom.lnk /dev/cdrom && mount /dev/cdrom /mnt/cdrom && CD_MOUNTED_OK=yes
684 [ "$CD_MOUNTED_OK" != "yes" ] && TryAgainToFindCD
685 #mount | grep cdrom > /dev/null 2> /dev/null || mount /dev/cdrom /mnt/cdrom >> $LOGFILE 2>> $LOGFILE
686fi
687hack-cfg-if-necessary || LogIt "Cannot find hack-cfg-if-necessary"
688
[1403]689# Log some useful info
[1413]690LogIt "init (from mindi v$MINDI_VER-r${MINDI_REV}"
691LogIt "/proc/cmdline is:"
[1403]692cat /proc/cmdline >> $LOGFILE
[1413]693LogIt "df result:"
694LogIt "----------"
[1403]695df >> $LOGFILE
[1413]696LogIt "-------------"
697LogIt "mount result:"
698LogIt "-------------"
[1403]699mount >> $LOGFILE
[1413]700LogIt "-------------"
701LogIt "lsmod result:"
702LogIt "-------------"
[1403]703lsmod >> $LOGFILE
[1413]704LogIt "-------------"
[1476]705LogIt "dmesg result:"
706LogIt "-------------"
707dmesg >> $LOGFILE
[1403]708
[1]709#-------------------------------
710#ABSORBENTANDYELLOWANDPOROUSISHE#;# --- don't touch this either :)
711#-------------------------------
712
713#ctrlaltdel soft
714for path in /usr.bin /usr/bin ; do
[1747]715 fname=$path/nano
716 [ -e "$fname" ] && ln -sf $fname /usr/bin/pico
[1]717done
718res=`which nano 2> /dev/null`
719[ "$res" ] && ln -sf /usr/bin/
720for i in null stdout stdin stderr ; do
[1747]721 cp -af /dev/$i /tmp
[1]722done
723if grep "backup-media-type" /tmp/mondo-restore.cfg > /dev/null 2> /dev/null ; then
[1747]724 LogIt "backup-media-type is specified in config file - great."
725 LogIt "Calling post-init $mountlist"
726 post-init
[1]727else
[1747]728 LogIt "backup-media-type is not specified in config file."
729 LogIt "I think this CD/floppy has no archives on it."
[1]730fi
[1612]731if grep "RESTORE" /proc/cmdline > /dev/null 2> /dev/null ; then
732 echo "Rebooting in 10 seconds automatically as per reboot order"
733 echo -en "Press ^C to interrupt if you have to ..."
734 for i in 1 2 3 4 5 6 7 8 9 10 ; do
735 sleep 1
736 echo -en "."
737 done
738 echo "Boom."
739 sleep 1
740else
741 echo -en "Type 'exit' to reboot the PC\n"
742 umount /mnt/cdrom 2> /dev/null
743 mount / -o rw,remount > /dev/null 2> /dev/null
744 LogIt "Launching Shell"
745 sh
746fi
[1]747CaughtSoftReset
748# reboot
Note: See TracBrowser for help on using the repository browser.