Changeset 135 in MondoRescue
- Timestamp:
- Nov 24, 2005, 1:43:32 AM (20 years ago)
- File:
-
- 1 edited
-
trunk/mindi/mindi (modified) (111 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/mindi/mindi
r125 r135 15 15 16 16 RUN_AFTER_INITIAL_BOOT_PHASE="echo \"Who lives in a pineapple under the sea?\" > /tmp/spongebob.squarepants.txt" 17 # after booting from floppy/CD image but before18 # accessing auxiliary data disks (or the rest of19 # the CD), the initscript will run the above command.17 # after booting from floppy/CD image but before 18 # accessing auxiliary data disks (or the rest of 19 # the CD), the initscript will run the above command. 20 20 21 21 RUN_AFTER_BOOT_PHASE_COMPLETE="ide-opt" 22 # after the emergency boot process is complete but23 # before the init script runs mondorestore, it will24 # run this command.22 # after the emergency boot process is complete but 23 # before the init script runs mondorestore, it will 24 # run this command. 25 25 26 26 MINDI_VERSION=1.04_berlios … … 31 31 WRITE_BOOT_FLOPPIES="yes" ; # do you want to be prompted to write floppy images 32 32 PROMPT_WRITE_BOOT_FLOPPIES="yes" 33 # do you want to be prompted to write34 # floppy images out to floppy disks?35 # if 'no', images will not be written to floppies33 # do you want to be prompted to write 34 # floppy images out to floppy disks? 35 # if 'no', images will not be written to floppies 36 36 37 37 PROMPT_MAKE_CD_IMAGE="yes" 38 # Ask if you want to make a CD Image to be written?39 # if this is set to 'no', then the image will be created automatically38 # Ask if you want to make a CD Image to be written? 39 # if this is set to 'no', then the image will be created automatically 40 40 41 41 USE_OWN_KERNEL="no" 42 # If set to "no", you will be prompted for whether or not43 # you want to use your own kernel, or the supplied default.44 # If "yes" mindi will automatically use your own kernel.42 # If set to "no", you will be prompted for whether or not 43 # you want to use your own kernel, or the supplied default. 44 # If "yes" mindi will automatically use your own kernel. 45 45 MINDI_CONFIG="/etc/mindi/mindi.conf" 46 46 if [ -f $MINDI_CONFIG ]; then 47 . $MINDI_CONFIG47 . $MINDI_CONFIG 48 48 fi 49 49 MY_FSTAB=/etc/fstab … … 70 70 To boot to a command-line prompt (expert mode), type 'expert' <enter>.\n\ 71 71 You may add one or more of the following parameters as well:-\n\n\ 72 donteject - mondorestore will not eject the CD; this is useful if, for\n\73 instance, your PC's case has a concealed CD-ROM drive\n\74 noresize - your mountlist will not be adjusted to use your unallocated\n\75 hard disk space\n\76 textonly - do not call any Newt library routines; this is unattractive\n\77 but valuable if you find your Newt library has bugs in it\n\n\72 donteject - mondorestore will not eject the CD; this is useful if, for\n\ 73 instance, your PC's case has a concealed CD-ROM drive\n\ 74 noresize - your mountlist will not be adjusted to use your unallocated\n\ 75 hard disk space\n\ 76 textonly - do not call any Newt library routines; this is unattractive\n\ 77 but valuable if you find your Newt library has bugs in it\n\n\ 78 78 e.g. Type 'nuke donteject textonly' if you have an unstable Newt library and \n\ 79 79 a PC whose CD-ROM drive tray would be damaged if it unexpectedly ejected.\n\ … … 87 87 88 88 AbortHere() { 89 [ "$mountpoint" ] && umount $mountpoint 2>> $LOGFILE90 Die "Program is terminating in response to signal received from OS/user"89 [ "$mountpoint" ] && umount $mountpoint 2>> $LOGFILE 90 Die "Program is terminating in response to signal received from OS/user" 91 91 } 92 92 … … 94 94 95 95 HackSyslinuxFile() { 96 local incoming97 incoming=`ReadLine`98 while [ "$incoming" ] ; do99 echo -en "$incoming" | sed s/24000/$1/100 if [ "`echo "$incoming" | grep append`" ] ; then101 echo -en " $ADDITIONAL_BOOT_PARAMS"102 fi103 echo -en "\n"104 incoming=`ReadLine`105 done106 if [ -e "$MINDI_HOME/memtest.img" ] ; then96 local incoming 97 incoming=`ReadLine` 98 while [ "$incoming" ] ; do 99 echo -en "$incoming" | sed s/24000/$1/ 100 if [ "`echo "$incoming" | grep append`" ] ; then 101 echo -en " $ADDITIONAL_BOOT_PARAMS" 102 fi 103 echo -en "\n" 104 incoming=`ReadLine` 105 done 106 if [ -e "$MINDI_HOME/memtest.img" ] ; then 107 107 # echo -en "label memtest\n kernel memtest.bin\n\n" 108 echo -en "label memtest\n kernel memdisk\n append initrd=memtest.img\n\n"108 echo -en "label memtest\n kernel memdisk\n append initrd=memtest.img\n\n" 109 109 # echo "Yep, this is a multi-function CD" > $2/MULTIFUNC 110 fi110 fi 111 111 } 112 112 … … 114 114 115 115 AbortIfYourDistroIsAPieceOfStercus() { 116 which which > /dev/null 2> /dev/null || Die "Please install 'which'."117 which strings > /dev/null 2> /dev/null || Die "Please install binutils and libbinutils; you have no 'strings' executable."118 which gawk > /dev/null 2> /dev/null || Die "Gawk is missing from your computer. Please install gawk. You may find the package on Debian's website. How did I know you're running Debian? Because only Debian would be stupid enough not to include gawk in your distribution."119 which gawk > /dev/null 2> /dev/null && AWK=`which gawk 2>/dev/null` || AWK="`which awk 2>/dev/null`"120 if which awk &> /dev/null ; then116 which which > /dev/null 2> /dev/null || Die "Please install 'which'." 117 which strings > /dev/null 2> /dev/null || Die "Please install binutils and libbinutils; you have no 'strings' executable." 118 which gawk > /dev/null 2> /dev/null || Die "Gawk is missing from your computer. Please install gawk. You may find the package on Debian's website. How did I know you're running Debian? Because only Debian would be stupid enough not to include gawk in your distribution." 119 which gawk > /dev/null 2> /dev/null && AWK=`which gawk 2>/dev/null` || AWK="`which awk 2>/dev/null`" 120 if which awk &> /dev/null ; then 121 121 if ! which gawk &> /dev/null ; then 122 LogIt "You have awk but not gawk. Please note that mindi works fine with a _sane_ awk binary. If your awk binary misbehaves then please contact your vendor or distribution's mailing list for technical support."123 fi 124 fi125 which mke2fs > /dev/null 2> /dev/null || Die "Please put mke2fs in system path"126 which afio > /dev/null 2> /dev/null || LogIt "afio not found... mindi doesn't need afio but Mondo does... Be aware...\n"127 [ ! -e "/etc/issue.net" ] && > /etc/issue.net128 FDISK=$MINDI_HOME/parted2fdisk.pl129 FDISKLOG=/tmp/parted2fdisk.log130 touch $FDISKLOG122 LogIt "You have awk but not gawk. Please note that mindi works fine with a _sane_ awk binary. If your awk binary misbehaves then please contact your vendor or distribution's mailing list for technical support." 123 fi 124 fi 125 which mke2fs > /dev/null 2> /dev/null || Die "Please put mke2fs in system path" 126 which afio > /dev/null 2> /dev/null || LogIt "afio not found... mindi doesn't need afio but Mondo does... Be aware...\n" 127 [ ! -e "/etc/issue.net" ] && > /etc/issue.net 128 FDISK=$MINDI_HOME/parted2fdisk.pl 129 FDISKLOG=/tmp/parted2fdisk.log 130 touch $FDISKLOG 131 131 # if [ "`cat /etc/issue.net 2> /dev/null | fgrep -i "debian"`" ] ; then 132 # LogIt "Warning !You are a Debian user. If mindi doesn't generate a good mountlist, it's because of a bug in YOUR awk binary. Don't tell me about it. Tell awk.deb's maintainer about it."132 # LogIt "Warning - You are a Debian user. If mindi doesn't generate a good mountlist, it's because of a bug in YOUR awk binary. Don't tell me about it. Tell awk.deb's maintainer about it." 133 133 # fi 134 [ ! -e "$FDISK" ] && Die "Cannot find (s)fdisk"134 [ ! -e "$FDISK" ] && Die "Cannot find (s)fdisk" 135 135 } 136 136 … … 139 139 AbortIfMkfsVfatMissing() { 140 140 #if fgrep "vfat" /etc/fstab &> /dev/null ; then 141 if ! which mkfs.vfat &> /dev/null ; then142 Die "mkfs.vfat missing from your filesystem - please install your dosfstools RPM or DEB package. Perhaps your PATH environmental variable is broken, too?"143 fi141 if ! which mkfs.vfat &> /dev/null ; then 142 Die "mkfs.vfat missing from your filesystem - please install your dosfstools RPM or DEB package. Perhaps your PATH environmental variable is broken, too?" 143 fi 144 144 #fi 145 145 } … … 150 150 151 151 Aborted() { 152 trap SIGHUP SIGTERM SIGTRAP SIGINT153 [ "$imagesdir" != "" ] && rm -f $imagesdir/mindi*img $imagesdir/*gz $imagesdir/mindi.iso154 [ "$minidir_root" != "" ] && rm -Rf $minidir_root/*155 Die "User abort."152 trap SIGHUP SIGTERM SIGTRAP SIGINT 153 [ "$imagesdir" != "" ] && rm -f $imagesdir/mindi*img $imagesdir/*gz $imagesdir/mindi.iso 154 [ "$minidir_root" != "" ] && rm -Rf $minidir_root/* 155 Die "User abort." 156 156 } 157 157 158 158 159 159 AddFileToCfgIfExists() { 160 [ -e "$1" ] && echo -en "$2 `cat $1`\n" >> $3160 [ -e "$1" ] && echo -en "$2 `cat $1`\n" >> $3 161 161 } 162 162 … … 164 164 165 165 AddFileToDir() { 166 local filename minidir_root noof_disks diskno res filesize disksize would_occupy zipsize complevel cutoff compressed_fname siz167 filename=$1168 minidir_root=$2169 noof_disks=$3166 local filename minidir_root noof_disks diskno res filesize disksize would_occupy zipsize complevel cutoff compressed_fname siz 167 filename=$1 168 minidir_root=$2 169 noof_disks=$3 170 170 171 171 # diskno=1 172 diskno=$noof_disks173 mkdir -p $minidir_root/$diskno174 [ "$LAST_COMPRESSED_SIZE" = "" ] && LAST_COMPRESSED_SIZE=0175 if [ ! -e "$filename" ] ; then172 diskno=$noof_disks 173 mkdir -p $minidir_root/$diskno 174 [ "$LAST_COMPRESSED_SIZE" = "" ] && LAST_COMPRESSED_SIZE=0 175 if [ ! -e "$filename" ] ; then 176 176 if [ -h "$filename" ] ; then 177 cp --parents -pRdf $filename $minidir_root/$diskno178 return $noof_disks179 else 180 Die "AddFileToDir asked me to add $filename, which does not exist. Oops! Did you run out of disk space or is your Linux distro severely broken?"181 fi 182 fi177 cp --parents -pRdf $filename $minidir_root/$diskno 178 return $noof_disks 179 else 180 Die "AddFileToDir asked me to add $filename, which does not exist. Oops! Did you run out of disk space or is your Linux distro severely broken?" 181 fi 182 fi 183 183 # move to the disk that has room on it (or end up using the last, if all full) 184 while [ "$diskno" -lt "40" ] ; do184 while [ "$diskno" -lt "40" ] ; do 185 185 mkdir -p $minidir_root/$diskno 186 filesize=`du -sk $filename | cut -f1`186 filesize=`du -sk $filename | cut -f1` 187 187 cp --parents -Rdf $filename $minidir_root/$diskno 188 if [ "$filesize" -le "4" ] ; then189 siz=$filesize190 elif [ ! -f "$filename" ] ; then191 siz=0192 else193 siz=`grep -m 1 "$filename.gz$" $minidir_root/compressed/compressed.txt | cut -f1`194 [ "$siz" = "" ] && Die "FIXME - can't find $filename's size."195 siz=$(($siz-2));# to allow for sectors & the fact that they round up196 fi188 if [ "$filesize" -le "4" ] ; then 189 siz=$filesize 190 elif [ ! -f "$filename" ] ; then 191 siz=0 192 else 193 siz=`grep -m 1 "$filename.gz$" $minidir_root/compressed/compressed.txt | cut -f1` 194 [ "$siz" = "" ] && Die "FIXME - can't find $filename's size." 195 siz=$(($siz-2));# to allow for sectors & the fact that they round up 196 fi 197 197 [ ! "$siz" ] && siz=4 198 198 [ "$siz" -lt "0" ] && siz=0 199 LAST_COMPRESSED_SIZE=$(($LAST_COMPRESSED_SIZE+$siz))199 LAST_COMPRESSED_SIZE=$(($LAST_COMPRESSED_SIZE+$siz)) 200 200 [ "$LAST_COMPRESSED_SIZE" -le "$MAX_COMPRESSED_SIZE" ] &&return $diskno 201 201 echo "disk=$diskno siz=$LAST_COMPRESSED_SIZE" >> $LOGFILE 202 202 LAST_COMPRESSED_SIZE=0 203 203 rm -f $minidir_root/$diskno/$filename 204 diskno=$(($diskno+1))205 done206 return 0 ; # failed204 diskno=$(($diskno+1)) 205 done 206 return 0 ; # failed 207 207 } 208 208 … … 211 211 212 212 AddKeyboardMappingFile() { 213 local mappath r included_list included_item i res ii sss214 mappath=$1215 KBDEPTH=$(($KBDEPTH+1))216 [ "$KBDEPTH" -gt "128" ] && Die "Edit $MINDI_HOME/mindi and disable FindAndAddUserKeyboardMappingFile (line 1170, approx.)"217 if [ -e "$bigdir/$mappath" ] ; then213 local mappath r included_list included_item i res ii sss 214 mappath=$1 215 KBDEPTH=$(($KBDEPTH+1)) 216 [ "$KBDEPTH" -gt "128" ] && Die "Edit $MINDI_HOME/mindi and disable FindAndAddUserKeyboardMappingFile (line 1170, approx.)" 217 if [ -e "$bigdir/$mappath" ] ; then 218 218 echo "$mappath already added" >> $LOGFILE 219 219 return 220 elif [ -d "$bigdir/$mappath" ] ; then221 echo "Cannot add $mappath: it's a directory. Sorry."222 return223 fi224 echo "Added kbd map $mappath" >> $LOGFILE225 if [ ! -e "$mappath" ] ; then226 mappath=`find $KEYDIR/keymaps | grep "i[3-8]86" | grep "$locale[^r][^/]" | grep -vx " *#.*"`227 if [ ! -e "$mappath" ] ; then228 LogIt "Cannot add $mappath: kbd map file not found"229 return230 fi231 else220 elif [ -d "$bigdir/$mappath" ] ; then 221 echo "Cannot add $mappath: it's a directory. Sorry." 222 return 223 fi 224 echo "Added kbd map $mappath" >> $LOGFILE 225 if [ ! -e "$mappath" ] ; then 226 mappath=`find $KEYDIR/keymaps | grep "i[3-8]86" | grep "$locale[^r][^/]" | grep -vx " *#.*"` 227 if [ ! -e "$mappath" ] ; then 228 LogIt "Cannot add $mappath: kbd map file not found" 229 return 230 fi 231 else 232 232 echo -en "`basename $mappath | tr '.' '#' | sed s/#kmap#gz// | sed s/#inc#gz//` " | tr '#' '.' 233 fi234 235 mkdir -p $bigdir/etc236 cp --parents -pRdf $mappath $bigdir || LogIt "AKMF -- Could not copy $mappath to $bigdir"237 if [ "`echo $mappath | fgrep ".gz"`" ] ; then238 included_list=`gzip -dc $mappath | fgrep -i include | sed s/'"'// | sed s/'"'// | cut -d' ' -f2`239 else240 included_list=`cat $mappath | fgrep -i include | sed s/'"'// | sed s/'"'// | cut -d' ' -f2`241 fi242 for included_item in $included_list ; do233 fi 234 235 mkdir -p $bigdir/etc 236 cp --parents -pRdf $mappath $bigdir || LogIt "AKMF -- Could not copy $mappath to $bigdir" 237 if [ "`echo $mappath | fgrep ".gz"`" ] ; then 238 included_list=`gzip -dc $mappath | fgrep -i include | sed s/'"'// | sed s/'"'// | cut -d' ' -f2` 239 else 240 included_list=`cat $mappath | fgrep -i include | sed s/'"'// | sed s/'"'// | cut -d' ' -f2` 241 fi 242 for included_item in $included_list ; do 243 243 if [ ! -e "$included_item" ] ; then 244 sss=`find $KEYDIR/keymaps | fgrep "${included_item}.inc"`245 [ "$sss" = "" ] && sss=`find $KEYDIR/keymaps | fgrep "$included_item"`246 for ii in $sss ; do247 [ -e "$ii" ] && AddKeyboardMappingFile $ii248 done249 else 250 AddKeyboardMappingFile $included_item251 fi 252 done244 sss=`find $KEYDIR/keymaps | fgrep "${included_item}.inc"` 245 [ "$sss" = "" ] && sss=`find $KEYDIR/keymaps | fgrep "$included_item"` 246 for ii in $sss ; do 247 [ -e "$ii" ] && AddKeyboardMappingFile $ii 248 done 249 else 250 AddKeyboardMappingFile $included_item 251 fi 252 done 253 253 } 254 254 … … 260 260 261 261 ChopUpAndCopyFile() { 262 local filename slicesize outdir res biggienumber filesize sliceno noof_slices testfile scratchfile263 filename=$1264 outdir=$2265 slicesize=$3266 biggienumber=$4267 268 [ -d "$filename" ] && Die "Cannot chop up $filename: it's a directory. Please amend deplist.txt accordingly."269 mkdir -p $outdir270 271 sliceno=0272 scratchfile=$TMP_ROOT/blah.$$.dat273 cp -f $filename $scratchfile || Die "CUACF -- cannot copy $filename to $scratchfile - did you run out of disk space?"274 [ "`head $scratchfile -n1 | fgrep "bin/sh"`" != "" ] && StripComments $scratchfile "-$filename-"275 [ "`echo "$filename" | fgrep "etc/termcap"`" != "" ] && StripComments $scratchfile "-$filename-"276 if [ "`echo "$filename" | fgrep "lib/modules/" | grep "\.*o\.gz"`" != "" ] ; then262 local filename slicesize outdir res biggienumber filesize sliceno noof_slices testfile scratchfile 263 filename=$1 264 outdir=$2 265 slicesize=$3 266 biggienumber=$4 267 268 [ -d "$filename" ] && Die "Cannot chop up $filename: it's a directory. Please amend deplist.txt accordingly." 269 mkdir -p $outdir 270 271 sliceno=0 272 scratchfile=$TMP_ROOT/blah.$$.dat 273 cp -f $filename $scratchfile || Die "CUACF -- cannot copy $filename to $scratchfile - did you run out of disk space?" 274 [ "`head $scratchfile -n1 | fgrep "bin/sh"`" != "" ] && StripComments $scratchfile "-$filename-" 275 [ "`echo "$filename" | fgrep "etc/termcap"`" != "" ] && StripComments $scratchfile "-$filename-" 276 if [ "`echo "$filename" | fgrep "lib/modules/" | grep "\.*o\.gz"`" != "" ] ; then 277 277 mv $scratchfile $scratchfile.gz 278 278 gunzip -f $scratchfile || LogIt "Cannot gunzip $scratchfile.gz" 279 279 filename=`echo "$filename" | tr '.' '#' | sed s/#o#gz/#o/ | sed s/#ko#gz/#ko/ | tr '#' '.'` 280 fi281 filesize=`du -sk $scratchfile | cut -f1`282 noof_slices=$(($filesize/$slicesize))283 echo "$filename" > $outdir/slice-$biggienumber.name284 echo "$filesize" > $outdir/slice-$biggienumber.size285 [ -x "$scratchfile" ] && StripExecutable $scratchfile "-$filename-"286 while [ "$sliceno" -le "$noof_slices" ] ; do287 dd if=$scratchfile skip=$(($sliceno*$slicesize)) of=$outdir/slice-$biggienumber.`printf "%03d" $sliceno` bs=1k count=$slicesize 2> /dev/null288 sliceno=$(($sliceno+1))289 done290 rm -f $scratchfile280 fi 281 filesize=`du -sk $scratchfile | cut -f1` 282 noof_slices=$(($filesize/$slicesize)) 283 echo "$filename" > $outdir/slice-$biggienumber.name 284 echo "$filesize" > $outdir/slice-$biggienumber.size 285 [ -x "$scratchfile" ] && StripExecutable $scratchfile "-$filename-" 286 while [ "$sliceno" -le "$noof_slices" ] ; do 287 dd if=$scratchfile skip=$(($sliceno*$slicesize)) of=$outdir/slice-$biggienumber.`printf "%03d" $sliceno` bs=1k count=$slicesize 2> /dev/null 288 sliceno=$(($sliceno+1)) 289 done 290 rm -f $scratchfile 291 291 } 292 292 293 293 294 294 CopyBootBFile() { 295 local copy_to copy_from possible_locations liloc296 copy_to=$1297 copy_from=/boot/boot.b298 liloc=`which lilo.real 2>/dev/null`299 [ $liloc ] || liloc=`which lilo 2>/dev/null`300 if [ $liloc ]; then301 if ! [ `strings $liloc | grep "boot\.b"` ]; then302 LogIt "boot.b files built into lilo; I'll create a dummy."303 > $copy_to304 return 0305 fi306 fi307 if [ ! -f "$copy_from" ] ; then308 LogIt "OK, you don't have a /boot/boot.b file, which is odd because most _good_ Linux distributions come with one, even if it's only a softlink"309 copy_from=`cat /etc/lilo.conf | grep install= | grep "\.b" | cut -d'=' -f2`310 if [ ! -f "$copy_from" ] ; then311 LogIt "Nor can I find it from your /etc/lilo.conf file. This is very odd."312 copy_from=`FindSensibleBootBFile`313 LogIt "I'm going to use '$copy_from'"314 fi315 fi316 cp -f $copy_from $copy_to || LogIt "CBBF -- warning -- cannot find your boot.b file. That's it, I quit... (j/k)"295 local copy_to copy_from possible_locations liloc 296 copy_to=$1 297 copy_from=/boot/boot.b 298 liloc=`which lilo.real 2>/dev/null` 299 [ $liloc ] || liloc=`which lilo 2>/dev/null` 300 if [ $liloc ]; then 301 if ! [ `strings $liloc | grep "boot\.b"` ]; then 302 LogIt "boot.b files built into lilo; I'll create a dummy." 303 > $copy_to 304 return 0 305 fi 306 fi 307 if [ ! -f "$copy_from" ] ; then 308 LogIt "OK, you don't have a /boot/boot.b file, which is odd because most _good_ Linux distributions come with one, even if it's only a softlink" 309 copy_from=`cat /etc/lilo.conf | grep install= | grep "\.b" | cut -d'=' -f2` 310 if [ ! -f "$copy_from" ] ; then 311 LogIt "Nor can I find it from your /etc/lilo.conf file. This is very odd." 312 copy_from=`FindSensibleBootBFile` 313 LogIt "I'm going to use '$copy_from'" 314 fi 315 fi 316 cp -f $copy_from $copy_to || LogIt "CBBF -- warning -- cannot find your boot.b file. That's it, I quit... (j/k)" 317 317 } 318 318 … … 321 321 322 322 CopyDependenciesToDirectory() { 323 local outdir incoming fname filesize counter324 outdir=$1325 mkdir -p $outdir326 incoming=`ReadLine`327 counter=0328 while [ "$incoming" != "" ] ; do323 local outdir incoming fname filesize counter 324 outdir=$1 325 mkdir -p $outdir 326 incoming=`ReadLine` 327 counter=0 328 while [ "$incoming" != "" ] ; do 329 329 if [ -d "$incoming" ] ; then 330 find $incoming/* -maxdepth 0 2> /dev/null | CopyDependenciesToDirectory $outdir331 elif [ -e "$incoming" ] ; then332 filesize=`du -sk $incoming | cut -f1`333 if [ "$filesize" -gt "$(($CHOPSIZE*2))" ] && [ ! -h "$incoming" ] ; then334 ChopUpAndCopyFile $incoming $outdir $CHOPSIZE $BIGNO335 BIGNO=$(($BIGNO+1))336 else337 cp --parents -Rdf $incoming $outdir || Die "Cannot copy $incoming to $outdir - did you run out of disk space?"330 find $incoming/* -maxdepth 0 2> /dev/null | CopyDependenciesToDirectory $outdir 331 elif [ -e "$incoming" ] ; then 332 filesize=`du -sk $incoming | cut -f1` 333 if [ "$filesize" -gt "$(($CHOPSIZE*2))" ] && [ ! -h "$incoming" ] ; then 334 ChopUpAndCopyFile $incoming $outdir $CHOPSIZE $BIGNO 335 BIGNO=$(($BIGNO+1)) 336 else 337 cp --parents -Rdf $incoming $outdir || Die "Cannot copy $incoming to $outdir - did you run out of disk space?" 338 338 if [ "`echo "$incoming" | grep "lib/modules/.*\..*o\.gz"`" != "" ] ; then 339 339 gunzip -f $outdir/$incoming || LogIt "Cannot gunzip $outdir/$incoming" 340 340 fi 341 341 [ -x "$outdir" ] && StripExecutable $outdir "-$filename-" 342 fi343 counter=$(($counter+1))344 if [ "$counter" -ge "5" ] ; then342 fi 343 counter=$(($counter+1)) 344 if [ "$counter" -ge "5" ] ; then 345 345 counter=0 346 echo -en "."347 fi348 fi349 incoming=`ReadLine`350 done346 echo -en "." 347 fi 348 fi 349 incoming=`ReadLine` 350 done 351 351 } 352 352 … … 354 354 355 355 CopyImageToDisk() { 356 local image dev procno res comment357 image=$1358 dev=$2359 comment=$3360 [ ! -f "$image" ] && [ ! -b "$image" ] && Die "Image $image does not exist. Did you run out of disk space?"361 Prompt "About to write $comment. Please press ENTER."362 echo -en "Formatting disk..."363 if which fdformat > /dev/null ; then356 local image dev procno res comment 357 image=$1 358 dev=$2 359 comment=$3 360 [ ! -f "$image" ] && [ ! -b "$image" ] && Die "Image $image does not exist. Did you run out of disk space?" 361 Prompt "About to write $comment. Please press ENTER." 362 echo -en "Formatting disk..." 363 if which fdformat > /dev/null ; then 364 364 fdformat -n $dev > /dev/null 2> /dev/null || Die "Cannot format $dev - is your Linux distro broken?" 365 elif which superformat > /dev/null ; then365 elif which superformat > /dev/null ; then 366 366 superformat $dev > /dev/null 2> /dev/null || Die "Cannot format $dev - is your Linux distro broken?" 367 else367 else 368 368 Die "Please install either fdformat or superformat." 369 fi370 echo -en "\rWriting $comment"371 if echo $image | grep "mindi-[r|b]oot\.1440" &> /dev/null ; then369 fi 370 echo -en "\rWriting $comment" 371 if echo $image | grep "mindi-[r|b]oot\.1440" &> /dev/null ; then 372 372 cat $image > $dev & 373 else373 else 374 374 dd if=$image of=$dev &> /dev/null & 375 fi376 procno=$!377 ps $procno > /dev/null 2> /dev/null378 while [ "$?" -eq "0" ] ; do379 sleep 3380 echo -en "."381 ps $procno > /dev/null 2> /dev/null382 done383 echo -e "$DONE"384 LogIt "$comment has been written."375 fi 376 procno=$! 377 ps $procno > /dev/null 2> /dev/null 378 while [ "$?" -eq "0" ] ; do 379 sleep 3 380 echo -en "." 381 ps $procno > /dev/null 2> /dev/null 382 done 383 echo -e "$DONE" 384 LogIt "$comment has been written." 385 385 } 386 386 … … 390 390 391 391 CountItemsIn() { 392 local r393 r=0394 for q in $1 ; do392 local r 393 r=0 394 for q in $1 ; do 395 395 r=$(($r+1)) 396 done397 echo $r396 done 397 echo $r 398 398 } 399 399 … … 404 404 405 405 CreateDataDiskImagesFromTarballs() { 406 local tardir outdir diskno noof_disks kp407 tardir=$1408 outdir=$2409 noof_disks=$3410 411 mkdir -p $outdir412 diskno=1413 echo -en "Creating data disk "414 while [ "$diskno" -le "$noof_disks" ] ; do406 local tardir outdir diskno noof_disks kp 407 tardir=$1 408 outdir=$2 409 noof_disks=$3 410 411 mkdir -p $outdir 412 diskno=1 413 echo -en "Creating data disk " 414 while [ "$diskno" -le "$noof_disks" ] ; do 415 415 echo -en "#$diskno..." 416 416 cp -f $tardir/$diskno.tar.gz $outdir || LogIt "[line 250] Cannot copy $tardir/$diskno.tar.gz to $outdir" 417 CreateOneDataDiskImage $tardir/$diskno.tar.gz $outdir/mindi-data-$diskno.img $diskno $noof_disks418 diskno=$(($diskno+1))419 done420 mv -f $tardir/all.tar.gz $outdir421 du -sk $outdir/*gz >> $LOGFILE422 echo -e "$DONE"417 CreateOneDataDiskImage $tardir/$diskno.tar.gz $outdir/mindi-data-$diskno.img $diskno $noof_disks 418 diskno=$(($diskno+1)) 419 done 420 mv -f $tardir/all.tar.gz $outdir 421 du -sk $outdir/*gz >> $LOGFILE 422 echo -e "$DONE" 423 423 } 424 424 … … 426 426 427 427 CreateOneDataDiskImage() { 428 local tarball imagefile dev diskno noof_disks mountpoint429 tarball=$1430 imagefile=$2431 diskno=$3432 noof_disks=$4433 434 mountpoint=$TMP_ROOT/mountpoint.$$435 mkdir -p $mountpoint436 dd if=/dev/zero of=$imagefile bs=1k count=1440 &> /dev/null || LogIt "Cannot dd (CODI)\n"437 mke2fs -N 12 -F $imagefile > /tmp/mke2fs.$$ 2>> /tmp/mke2fs.$$438 [ "$?" -ne "0" ] && cat /tmp/mke2fs.$$439 rm -f /tmp/mke2fs.$$440 mount -t ext2 -o loop $imagefile $mountpoint || Die "Can't loopmount $mountpoint; does your kernel support loopfs? If not, please recompile your kernel. Your Linux distro is broken."441 mv $tarball $mountpoint/442 if [ "$?" -ne "0" ] ; then428 local tarball imagefile dev diskno noof_disks mountpoint 429 tarball=$1 430 imagefile=$2 431 diskno=$3 432 noof_disks=$4 433 434 mountpoint=$TMP_ROOT/mountpoint.$$ 435 mkdir -p $mountpoint 436 dd if=/dev/zero of=$imagefile bs=1k count=1440 &> /dev/null || LogIt "Cannot dd (CODI)\n" 437 mke2fs -N 12 -F $imagefile > /tmp/mke2fs.$$ 2>> /tmp/mke2fs.$$ 438 [ "$?" -ne "0" ] && cat /tmp/mke2fs.$$ 439 rm -f /tmp/mke2fs.$$ 440 mount -t ext2 -o loop $imagefile $mountpoint || Die "Can't loopmount $mountpoint; does your kernel support loopfs? If not, please recompile your kernel. Your Linux distro is broken." 441 mv $tarball $mountpoint/ 442 if [ "$?" -ne "0" ] ; then 443 443 umount $mountpoint 444 444 Die "Tarball $tarball is too big for disk! (CODI)\nTell Hugo to adjust MAX_COMPRESSED_SIZE" 445 fi446 [ "$diskno" -eq "$noof_disks" ] && echo "This is the last disk ($diskno=$noof_disks)" >> $mountpoint/LAST-DISK447 umount $mountpoint || LogIt "Cannot umount (CODI)\n"448 rmdir $mountpoint || LogIt "Cannot rmdir (CODI)\n"445 fi 446 [ "$diskno" -eq "$noof_disks" ] && echo "This is the last disk ($diskno=$noof_disks)" >> $mountpoint/LAST-DISK 447 umount $mountpoint || LogIt "Cannot umount (CODI)\n" 448 rmdir $mountpoint || LogIt "Cannot rmdir (CODI)\n" 449 449 } 450 450 … … 452 452 453 453 DidMondoCallMe() { 454 local res455 456 res=0457 [ "`ps ax | fgrep "mondoarchive" | grep -v "grep"`" ] && res=$(($res+1))458 [ -f "/var/run/monitas-mondo.pid" ] && res=$(($res+1))459 [ "$res" -gt "1" ] && echo "yes"454 local res 455 456 res=0 457 [ "`ps ax | fgrep "mondoarchive" | grep -v "grep"`" ] && res=$(($res+1)) 458 [ -f "/var/run/monitas-mondo.pid" ] && res=$(($res+1)) 459 [ "$res" -gt "1" ] && echo "yes" 460 460 } 461 461 … … 464 464 465 465 Die() { 466 local my_partitions i467 echo "MINDI_VERSION is $MINDI_VERSION" >> $LOGFILE468 if [ "$1" = "" ] ; then466 local my_partitions i 467 echo "MINDI_VERSION is $MINDI_VERSION" >> $LOGFILE 468 if [ "$1" = "" ] ; then 469 469 LogIt "Fatal error\n" 470 else470 else 471 471 LogIt "Fatal error. $1\n" 472 fi 473 sync 474 cd / 475 476 my_partitions=`mount | fgrep $$ | cut -f1 -d' '` 477 [ "$my_partitions" != "" ] && umount $my_partitions 478 [ "$TMP_ROOT" != "/tmp" ] && rm -Rf $TMP_ROOT 479 cd /tmp 480 mkdir -p mindi.err 481 for i in /tmp/mindi-needlist.txt /etc/fstab /etc/lilo.conf /etc/raidtab $LOGFILE /var/log/mondo-archive.log /tmp/mountlist.txt.$$ ; do 482 [ -e "$i" ] && cp -f $i mindi.err/ 483 done 484 rm -f mindi.err.*.tgz 485 tar -c mindi.err -f- | gzip -9 > mindi.err.$$.tgz 486 cd / 487 rm -Rf mindi.err /tmp/mountlist.txt.$$ 488 LogIt "Please e-mail a copy of /tmp/mindi.err.$$.tgz to the mailing list." 489 LogIt "See http://www.mondorescue.org for more information." 490 LogIt "WE CANNOT HELP unless you enclose that file." 491 exit 1 472 fi 473 sync 474 cd / 475 476 my_partitions=`mount | fgrep $$ | cut -f1 -d' '` 477 [ "$my_partitions" != "" ] && umount $my_partitions 478 [ "$TMP_ROOT" != "/tmp" ] && rm -Rf $TMP_ROOT 479 cd /tmp 480 mkdir -p mindi.err 481 for i in /etc/fstab /etc/lilo.conf /etc/raidtab $LOGFILE /var/log/mondo-archive.log /tmp/mountlist.txt.$$ $FDISKLOG ; do 482 [ -e "$i" ] && cp -f $i mindi.err/ 483 done 484 rm -f mindi.err.*.tgz 485 tar -cf - mindi.err | gzip -9 > mindi.err.$$.tgz 486 rm -Rf mindi.err /tmp/mountlist.txt.$$ mindilinux $FDISKLOG 487 LogIt "Please e-mail a copy of /tmp/mindi.err.$$.tgz to the mailing list." 488 LogIt "See http://www.mondorescue.org for more information." 489 LogIt "WE CANNOT HELP unless you enclose that file." 490 exit 1 492 491 } 493 492 … … 496 495 497 496 DropOptimizedLibraries() { 498 local outdir filelist list_of_optimized_libraries optimized_lib_name vanilla_lib_name reason msg resolved res499 filelist=$1500 outdir=$2501 502 list_of_optimized_libraries=`cat $filelist | grep "lib/i[5-7]86/"`503 if [ "$list_of_optimized_libraries" = "" ] ; then497 local outdir filelist list_of_optimized_libraries optimized_lib_name vanilla_lib_name reason msg resolved res 498 filelist=$1 499 outdir=$2 500 501 list_of_optimized_libraries=`cat $filelist | grep "lib/i[5-7]86/"` 502 if [ "$list_of_optimized_libraries" = "" ] ; then 504 503 return 0 505 fi506 echo -en "Dropping i686-optimized libraries if appropriate"507 for optimized_lib_name in $list_of_optimized_libraries ; do504 fi 505 echo -en "Dropping i686-optimized libraries if appropriate" 506 for optimized_lib_name in $list_of_optimized_libraries ; do 508 507 echo -en "." 509 508 reason="" … … 513 512 echo "Adding $resolved to filelist" >> $LOGFILE 514 513 while [ -h "$resolved" ] ; do 515 resolved=`ls $resolved -l|tr -s ' ' '\t'|$AWK '{printf $NF;}'`516 LocateFile $resolved >> $filelist517 echo "Adding $resolved to filelist" >> $LOGFILE514 resolved=`ls $resolved -l|tr -s ' ' '\t'|$AWK '{printf $NF;}'` 515 LocateFile $resolved >> $filelist 516 echo "Adding $resolved to filelist" >> $LOGFILE 518 517 done 519 518 mkdir -p $outdir$optimized_lib_name > /dev/null 2> /dev/null … … 525 524 echo "$vanilla_lib_name" >> $filelist.tmp 526 525 mv -f $filelist.tmp $filelist 527 done528 cat $filelist | sort | $AWK '{ print $1; }' | uniq > $filelist.tmp529 mv -f $filelist.tmp $filelist530 echo -e "$DONE"526 done 527 cat $filelist | sort | $AWK '{ print $1; }' | uniq > $filelist.tmp 528 mv -f $filelist.tmp $filelist 529 echo -e "$DONE" 531 530 } 532 531 … … 535 534 536 535 FindAndAddUserKeyboardMappingFile() { 537 local r res mapfile mappath included_item included_list keyfile mp locale538 LogIt "Analyzing your keyboard's configuration."539 KEYDIR=/lib/kbd540 [ ! -e "$KEYDIR" ] && KEYDIR=/usr/share/kbd # Slackware541 [ ! -e "$KEYDIR" ] && KEYDIR=/usr/lib/kbd542 [ ! -e "$KEYDIR" ] && KEYDIR=/usr/share543 if [ ! -e "$KEYDIR" ] ; then536 local r res mapfile mappath included_item included_list keyfile mp locale 537 LogIt "Analyzing your keyboard's configuration." 538 KEYDIR=/lib/kbd 539 [ ! -e "$KEYDIR" ] && KEYDIR=/usr/share/kbd # Slackware 540 [ ! -e "$KEYDIR" ] && KEYDIR=/usr/lib/kbd 541 [ ! -e "$KEYDIR" ] && KEYDIR=/usr/share 542 if [ ! -e "$KEYDIR" ] ; then 544 543 LogIt "Keyboard mapping directory not found. I shall use default map at boot-time." 545 544 return 0 546 fi547 if [ -e "/etc/sysconfig/keyboard" ] ; then545 fi 546 if [ -e "/etc/sysconfig/keyboard" ] ; then 548 547 echo "Red Hat-style config detected." >> $LOGFILE 549 548 keyfile=/etc/sysconfig/keyboard 550 elif [ -e "/etc/rc.d/rc.keymap" ] ; then549 elif [ -e "/etc/rc.d/rc.keymap" ] ; then 551 550 echo "Slackware-style config detected." >> $LOGFILE 552 551 keyfile=/etc/rc.d/rc.keymap 553 elif [ -e "/etc/rc.config" ] ; then554 echo "Debian-style config detected." >> $LOGFILE552 elif [ -e "/etc/rc.config" ] ; then 553 echo "Debian-style config detected." >> $LOGFILE 555 554 keyfile=/etc/rc.config 556 elif [ -e "/etc/console/boottime.kmap.gz" ] ; then557 echo "Debian-style config detected." >> $LOGFILE555 elif [ -e "/etc/console/boottime.kmap.gz" ] ; then 556 echo "Debian-style config detected." >> $LOGFILE 558 557 echo -en "Adding the following keyboard mapping tables: " 559 558 mkdir -p $bigdir/tmp … … 564 563 echo -e "$DONE" 565 564 return 0 566 else565 else 567 566 echo -en "Searching for rc.config ..." 568 567 keyfile=`find /etc -name rc.config | head -n1` 569 568 if [ "$keyfile" = "" ] || [ ! -e "$keyfile" ] ; then 570 LogIt "Unknown config detected. Default keyboard map will be used."571 return572 else 573 echo "Found $keyfile" >> $LOGFILE574 fi 575 fi576 if [ ! -e "$KEYDIR/keymaps" ] ; then577 LogIt "Keyboard mapping directory not found. Default keyboard map will be used."578 return579 fi580 echo "keyfile=$keyfile" >> $LOGFILE581 locale=`cat "$keyfile" |fgrep KEYTABLE | tr -d '"' |cut -d'=' -f2`582 [ ! "$locale" ] && locale=`cat "$keyfile" | grep '.map$' | sed 's/^.* //'` # Slackware583 echo "locale=$locale" >> $LOGFILE584 mp=`find $KEYDIR/keymaps | grep "i[3-8]86" | fgrep "${locale}." | grep -vx " *#.*"`585 [ ! "$mp" ] && mp=`find $KEYDIR/keymaps | grep "i[3-8]86" | grep "$locale[^r][^/]" | grep -vx " *#.*"`586 for i in $mp ; do587 mappath=$i588 [ -e "$i" ] && [ ! -d "$i" ] && break589 done590 if [ ! -e "$mappath" ] || [ -d "$mappath" ] ; then591 mappath=$(locate */kbd/keymaps/*/$locale)592 fi593 echo "mappath = $mappath" >> $LOGFILE594 if [ ! -e "$mappath" ] || [ -d "$mappath" ] ; then569 LogIt "Unknown config detected. Default keyboard map will be used." 570 return 571 else 572 echo "Found $keyfile" >> $LOGFILE 573 fi 574 fi 575 if [ ! -e "$KEYDIR/keymaps" ] ; then 576 LogIt "Keyboard mapping directory not found. Default keyboard map will be used." 577 return 578 fi 579 echo "keyfile=$keyfile" >> $LOGFILE 580 locale=`cat "$keyfile" |fgrep KEYTABLE | tr -d '"' |cut -d'=' -f2` 581 [ ! "$locale" ] && locale=`cat "$keyfile" | grep '.map$' | sed 's/^.* //'` # Slackware 582 echo "locale=$locale" >> $LOGFILE 583 mp=`find $KEYDIR/keymaps | grep "i[3-8]86" | fgrep "${locale}." | grep -vx " *#.*"` 584 [ ! "$mp" ] && mp=`find $KEYDIR/keymaps | grep "i[3-8]86" | grep "$locale[^r][^/]" | grep -vx " *#.*"` 585 for i in $mp ; do 586 mappath=$i 587 [ -e "$i" ] && [ ! -d "$i" ] && break 588 done 589 if [ ! -e "$mappath" ] || [ -d "$mappath" ] ; then 590 mappath=$(locate */kbd/keymaps/*/$locale) 591 fi 592 echo "mappath = $mappath" >> $LOGFILE 593 if [ ! -e "$mappath" ] || [ -d "$mappath" ] ; then 595 594 LogIt "Keyboard mapping file not found. Default keyboard map will be used." 596 595 return 597 fi598 echo -en "Adding the following keyboard mapping tables: "599 mkdir -p $bigdir/tmp600 echo "$mappath" > $bigdir/tmp/KEYMAP-LIVES-HERE601 KBDEPTH=0602 AddKeyboardMappingFile $mappath603 echo -e "$DONE"604 return 0596 fi 597 echo -en "Adding the following keyboard mapping tables: " 598 mkdir -p $bigdir/tmp 599 echo "$mappath" > $bigdir/tmp/KEYMAP-LIVES-HERE 600 KBDEPTH=0 601 AddKeyboardMappingFile $mappath 602 echo -e "$DONE" 603 return 0 605 604 } 606 605 … … 612 611 # nice patch from Martin Fürstenau 613 612 for mh in /usr/lib /usr/opt /usr/share /usr/local /usr/local/share /usr/share/local /opt /opt/share /usr /ramdisk/usr/local/share /ramdisk/usr/share ; do 614 if [ ! -L $mh ] ; then615 MH_PATH=$mh616 SYMLINK=0617 while [ $MH_PATH != "/" ] ; do618 MH_PATH=`dirname $MH_PATH`619 if [ -L $MH_PATH ] ; then613 if [ ! -L $mh ] ; then 614 MH_PATH=$mh 615 SYMLINK=0 616 while [ $MH_PATH != "/" ] ; do 617 MH_PATH=`dirname $MH_PATH` 618 if [ -L $MH_PATH ] ; then 620 619 SYMLINK=1 621 fi622 done623 624 if [ $SYMLINK -ne 1 ] ; then625 if [ -d "$mh/mindi" ] && [ -e "$mh/mindi/aux-tools" ] ; then620 fi 621 done 622 623 if [ $SYMLINK -ne 1 ] ; then 624 if [ -d "$mh/mindi" ] && [ -e "$mh/mindi/aux-tools" ] ; then 626 625 [ "$MINDI_HOME" ] && Die "You have multiple instances of Mindi - one at $MINDI_HOME and one at $mh/mindi" 627 MINDI_HOME=$mh/mindi628 fi626 MINDI_HOME=$mh/mindi 627 fi 629 628 if [ -d "$mh/mondo" ] && [ -e "$mh/mondo/restore-scripts" ] ; then 630 629 [ "$MONDO_HOME" ] && Die "You have multiple instances of Mondo - one at $MONDO_HOME and one at $mh/mondo" 631 630 MONDO_HOME=$mh/mondo 632 631 fi 633 fi634 fi632 fi 633 fi 635 634 done 636 635 # end patch … … 672 671 673 672 FindLiloBinary() { 674 if which lilo &> /dev/null ; then673 if which lilo &> /dev/null ; then 675 674 if which lilo.real > /dev/null 2> /dev/null ; then 676 LILO_EXE=lilo.real677 LogIt "lilo.real found; will be used instead of lilo (*grumble* *mutter*)"678 else 679 LILO_EXE=lilo675 LILO_EXE=lilo.real 676 LogIt "lilo.real found; will be used instead of lilo (*grumble* *mutter*)" 677 else 678 LILO_EXE=lilo 680 679 fi 681 680 $LILO_EXE -V | fgrep "21.6" > /dev/null && Die "Please upgrade LILO. Your verison has a serious bug. If you're not _using_ LILO, fine, uninstall it. :)" 682 else681 else 683 682 LILO_EXE=`which false` 684 fi683 fi 685 684 } 686 685 687 686 FindELiloBinary() { 688 if which elilo &> /dev/null ; then687 if which elilo &> /dev/null ; then 689 688 LILO_EXE=elilo 690 else689 else 691 690 LILO_EXE=`which false` 692 fi691 fi 693 692 } 694 693 695 694 696 695 FixPathIfBroken() { 697 if [ -e "/sbin/mkfs" ] && ! which mkfs &> /dev/null ; then698 PATH=$PATH:/sbin:/usr/sbin699 export PATH700 echo "Your PATH did not include /sbin or /usr/sbin. I have fixed that, temporarily." >> $LOGFILE701 echo "However, you may wish to ask your vendor to provide a permanent fix..." >> $LOGFILE702 echo "You might like to call 'su -' instead of 'su', for example." >> $LOGFILE696 if [ -e "/sbin/mkfs" ] && ! which mkfs &> /dev/null ; then 697 PATH=$PATH:/sbin:/usr/sbin 698 export PATH 699 echo "Your PATH did not include /sbin or /usr/sbin. I have fixed that, temporarily." >> $LOGFILE 700 echo "However, you may wish to ask your vendor to provide a permanent fix..." >> $LOGFILE 701 echo "You might like to call 'su -' instead of 'su', for example." >> $LOGFILE 703 702 fi 704 703 } … … 707 706 708 707 FindSensibleBootBFile() { 709 local i out last710 out=""711 last=""712 for i in `find /boot -type f | grep -v chain | grep -v os2 | sort -u` ; do708 local i out last 709 out="" 710 last="" 711 for i in `find /boot -type f | grep -v chain | grep -v os2 | sort -u` ; do 713 712 if [ "`strings $i 2> /dev/null | head -n1`" = "LILO" ] ; then 714 out="$out $i"715 last="$i"716 fi 717 done718 echo "$last"713 out="$out $i" 714 last="$i" 715 fi 716 done 717 echo "$last" 719 718 } 720 719 … … 722 721 723 722 FindSpecificModuleInPath() { 724 local modpaths pwd line725 pwd=`pwd`726 if [ "$YOUR_KERNEL_SUCKS" ] ; then723 local modpaths pwd line 724 pwd=`pwd` 725 if [ "$YOUR_KERNEL_SUCKS" ] ; then 727 726 cd $TMP_ROOT 728 else727 else 729 728 cd / 730 fi731 if [ ! -e "$1" ] ; then729 fi 730 if [ ! -e "$1" ] ; then 732 731 LogIt "Warning - cannot search specific path '$1'" 733 732 return 1 734 fi735 modpaths=`find $1 -name $2.*o -type f`736 [ "$?" -ne "0" ] && Die "find $1 -name $2.o -type f --- failed"737 [ "$modpaths" = "" ] && modpaths=`find $1 -name $2.o.gz -type f`738 [ "$modpaths" = "" ] && modpaths=`find $1 -name $2.ko.gz -type f`739 [ "$modpaths" = "" ] && modpaths=`find $1 -name $2 -type f`740 echo "$modpaths"741 cd $pwd733 fi 734 modpaths=`find $1 -name $2.*o -type f` 735 [ "$?" -ne "0" ] && Die "find $1 -name $2.o -type f --- failed" 736 [ "$modpaths" = "" ] && modpaths=`find $1 -name $2.o.gz -type f` 737 [ "$modpaths" = "" ] && modpaths=`find $1 -name $2.ko.gz -type f` 738 [ "$modpaths" = "" ] && modpaths=`find $1 -name $2 -type f` 739 echo "$modpaths" 740 cd $pwd 742 741 } 743 742 … … 745 744 746 745 GenerateGiantDependencyList() { 747 local incoming loc fname list_of_files i tempfile outfile progress filelist res r mapfile mappath included_list included_item old_pwd tempdepfile modres noof_lines lvmversion lvmresolved748 749 echo -en "Analyzing dependency requirements"750 outfile=$1751 tempfile=$TMP_ROOT/$$.txt752 incoming=`ReadLine`753 754 > $tempfile755 progress=0756 res=0757 noof_lines=$2758 while [ "$incoming" != "" ] ; do746 local incoming loc fname list_of_files i tempfile outfile progress filelist res r mapfile mappath included_list included_item old_pwd tempdepfile modres noof_lines lvmversion lvmresolved 747 748 echo -en "Analyzing dependency requirements" 749 outfile=$1 750 tempfile=$TMP_ROOT/$$.txt 751 incoming=`ReadLine` 752 753 > $tempfile 754 progress=0 755 res=0 756 noof_lines=$2 757 while [ "$incoming" != "" ] ; do 759 758 if echo "$incoming" | grep -x " *#.*" &> /dev/null ; then 760 759 # echo "Skipping '$incoming'" 761 incoming=`ReadLine`762 continue760 incoming=`ReadLine` 761 continue 763 762 fi 764 763 if [ "$incoming" = "LVMFILES:" ] ; then … … 767 766 # echo "Processing '$incoming'." 768 767 # sleep 1 769 filelist=`GenerateListForFile "$incoming"`770 r=$?771 [ "$r" -ne "0" ] && LogIt "$incoming not found\n"772 res=$(($res+$r))768 filelist=`GenerateListForFile "$incoming"` 769 r=$? 770 [ "$r" -ne "0" ] && LogIt "$incoming not found\n" 771 res=$(($res+$r)) 773 772 # echo "'$incoming' generates filelist '$filelist'" >> $LOGFILE 774 for fname in $filelist ; do775 [ "$fname" != "" ] && echo "$fname" >> $tempfile773 for fname in $filelist ; do 774 [ "$fname" != "" ] && echo "$fname" >> $tempfile 776 775 done 777 776 progress=$(($progress+1)) … … 786 785 [ "$modres" -eq "2" ] && echo -en "\t\\" 787 786 [ "$modres" -eq "3" ] && echo -en "\t|" 788 incoming=`ReadLine`789 done790 if [ "$incoming" = "LVMFILES:" ] ; then787 incoming=`ReadLine` 788 done 789 if [ "$incoming" = "LVMFILES:" ] ; then 791 790 incoming=`ReadLine` 792 791 lvmversion="" 793 792 while [ "$incoming" != "" ] ; do 794 if echo "$incoming" | grep -x " *#.*" &> /dev/null ; then793 if echo "$incoming" | grep -x " *#.*" &> /dev/null ; then 795 794 # echo "Skipping '$incoming'" 796 795 incoming=`ReadLine` 797 796 continue 798 fi799 filelist=`GenerateListForFile "$incoming"`800 for tool in $filelist ; do801 lvmresolved=`ResolveSoftlink $tool`802 if echo "$lvmresolved" | grep "lvmiopversion" &> /dev/null ; then797 fi 798 filelist=`GenerateListForFile "$incoming"` 799 for tool in $filelist ; do 800 lvmresolved=`ResolveSoftlink $tool` 801 if echo "$lvmresolved" | grep "lvmiopversion" &> /dev/null ; then 803 802 if [ "$lvmversion" = "" ] ; then 804 803 lvmversion=`$lvmresolved` … … 822 821 echo "$tool" >> $tempfile 823 822 fi 824 done825 progress=$(($progress+1))826 echo -en "\r\t\t\t\t\t\t\t\t"827 i=$(($progress*100))828 i=$(($i/$noof_lines))829 echo -en "$i"830 echo -en "%"831 modres=$(($progress%4))832 [ "$modres" -eq "0" ] && echo -en "\t/"833 [ "$modres" -eq "1" ] && echo -en "\t-"834 [ "$modres" -eq "2" ] && echo -en "\t\\"835 [ "$modres" -eq "3" ] && echo -en "\t|"836 incoming=`ReadLine`837 done 838 fi839 echo -en "$DONE\nMaking complete dependency list"840 841 cat $tempfile | tr -s '/' '/' | sort | uniq > $tempfile.new842 mv -f $tempfile.new $tempfile843 > $outfile.pre844 progress=0845 noof_lines=`cat $tempfile | wc -l`846 for fname in `cat $tempfile` ; do847 tempdepfile=`mktemp /tmp/mindilinux/tempdepfile.XXXXXX`848 LocateDeps $fname > $tempdepfile823 done 824 progress=$(($progress+1)) 825 echo -en "\r\t\t\t\t\t\t\t\t" 826 i=$(($progress*100)) 827 i=$(($i/$noof_lines)) 828 echo -en "$i" 829 echo -en "%" 830 modres=$(($progress%4)) 831 [ "$modres" -eq "0" ] && echo -en "\t/" 832 [ "$modres" -eq "1" ] && echo -en "\t-" 833 [ "$modres" -eq "2" ] && echo -en "\t\\" 834 [ "$modres" -eq "3" ] && echo -en "\t|" 835 incoming=`ReadLine` 836 done 837 fi 838 echo -en "$DONE\nMaking complete dependency list" 839 840 cat $tempfile | tr -s '/' '/' | sort | uniq > $tempfile.new 841 mv -f $tempfile.new $tempfile 842 > $outfile.pre 843 progress=0 844 noof_lines=`cat $tempfile | wc -l` 845 for fname in `cat $tempfile` ; do 846 tempdepfile=`mktemp /tmp/mindilinux/tempdepfile.XXXXXX` 847 LocateDeps $fname > $tempdepfile 849 848 echo "$fname" >> $outfile.pre 850 cat $tempdepfile >> $outfile.pre849 cat $tempdepfile >> $outfile.pre 851 850 # echo "$fname ----> dependencies:-" >> $LOGFILE 852 851 # cat $tempdepfile | tr -s '/' '/' | sort | uniq >> $LOGFILE 853 852 # echo -en "(end of deplist of $fname)\n\n" >> $LOGFILE 854 rm -f $tempdepfile853 rm -f $tempdepfile 855 854 progress=$(($progress+1)) 856 echo -en "\r\t\t\t\t\t\t\t\t"857 i=$(($progress*100))858 i=$(($i/$noof_lines))859 echo -en "$i"860 echo -en "%"855 echo -en "\r\t\t\t\t\t\t\t\t" 856 i=$(($progress*100)) 857 i=$(($i/$noof_lines)) 858 echo -en "$i" 859 echo -en "%" 861 860 modres=$(($progress%4)) 862 [ "$modres" -eq "0" ] && echo -en "\t/"863 [ "$modres" -eq "1" ] && echo -en "\t-"864 [ "$modres" -eq "2" ] && echo -en "\t\\"865 [ "$modres" -eq "3" ] && echo -en "\t|"866 done867 if [ "`DidMondoCallMe`" ] ; then861 [ "$modres" -eq "0" ] && echo -en "\t/" 862 [ "$modres" -eq "1" ] && echo -en "\t-" 863 [ "$modres" -eq "2" ] && echo -en "\t\\" 864 [ "$modres" -eq "3" ] && echo -en "\t|" 865 done 866 if [ "`DidMondoCallMe`" ] ; then 868 867 mkdir -p $bigdir/tmp 869 868 mkdir -p $bigdir/sbin 870 869 mkdir -p $bigdir/bin 871 870 if [ -e "$MONDO_TMP/post-nuke.tgz" ] ; then 872 LogIt "\nIncorporating post-nuke tarball"873 old_pwd=`pwd`874 cd $bigdir875 tar -zxf $MONDO_TMP/post-nuke.tgz || LogIt "Error occurred when untarring post-nuke tarball"876 cd $old_pwd871 LogIt "\nIncorporating post-nuke tarball" 872 old_pwd=`pwd` 873 cd $bigdir 874 tar -zxf $MONDO_TMP/post-nuke.tgz || LogIt "Error occurred when untarring post-nuke tarball" 875 cd $old_pwd 877 876 fi 878 877 if cp -f $MONDO_TMP/mondo*restore $bigdir/usr/bin ; then 879 LocateDeps $bigdir/usr/bin/mondo*restore >> $outfile.pre880 else 881 LogIt "Cannot find mondo*restore in mondo's tempdir, $MONDO_TMP"882 LogIt "I bet you've got a spare copy of Mondo or Mindi floating around on your system."883 LogIt "If Mindi was called by Mondo then send me a bug report. It not, type 'ps ax' to see which Mondo-related process is still running; then kill it. :-) Finally, run Mindi again."884 Die "Odd."885 fi886 cp -f $MONDO_TMP/BOOTLOADER.* $bigdir 2> /dev/null || LogIt "\nMondo v1.2x defaults to LILO as the bootloader, BTW."878 LocateDeps $bigdir/usr/bin/mondo*restore >> $outfile.pre 879 else 880 LogIt "Cannot find mondo*restore in mondo's tempdir, $MONDO_TMP" 881 LogIt "I bet you've got a spare copy of Mondo or Mindi floating around on your system." 882 LogIt "If Mindi was called by Mondo then send me a bug report. It not, type 'ps ax' to see which Mondo-related process is still running; then kill it. :-) Finally, run Mindi again." 883 Die "Odd." 884 fi 885 cp -f $MONDO_TMP/BOOTLOADER.* $bigdir 2> /dev/null || LogIt "\nMondo v1.2x defaults to LILO as the bootloader, BTW." 887 886 if [ -e "$MONDO_TMP/start-nfs" ] ; then 888 LogIt "Incorporating NFS-related settings"889 cp -f $MONDO_TMP/start-nfs $bigdir/sbin || Die "Cannot find start-nfs"890 for r in NFS-SERVER-MOUNT NFS-SERVER-PATH NFS-DEV NFS-CLIENT-IPADDR NFS-SERVER-IPADDR ; do887 LogIt "Incorporating NFS-related settings" 888 cp -f $MONDO_TMP/start-nfs $bigdir/sbin || Die "Cannot find start-nfs" 889 for r in NFS-SERVER-MOUNT NFS-SERVER-PATH NFS-DEV NFS-CLIENT-IPADDR NFS-SERVER-IPADDR ; do 891 890 cp -f $MONDO_TMP/$r $bigdir/tmp || Die "Cannot copy $r - did you run out of disk space?" 892 echo "Copying $r to ramdisk" >> $LOGFILE893 done894 fi 895 fi896 cat $outfile.pre | tr ' ' '\n' | tr '/' '/' -s| fgrep -vx "" | sort -u | egrep -v "/libX11|/libXext|/libXi|/libgtk|/libgdk" > $outfile897 rm -f $tempfile $outfile.pre898 [ "$res" -eq "0" ] && echo -e "\r\t\t\t\t\t\t\t\t$DONE" || echo "\nFailed."899 return $res891 echo "Copying $r to ramdisk" >> $LOGFILE 892 done 893 fi 894 fi 895 cat $outfile.pre | tr ' ' '\n' | tr -s '/' '/' | fgrep -vx "" | sort -u | egrep -v "/libX11|/libXext|/libXi|/libgtk|/libgdk" > $outfile 896 rm -f $tempfile $outfile.pre 897 [ "$res" -eq "0" ] && echo -e "\r\t\t\t\t\t\t\t\t$DONE" || echo "\nFailed." 898 return $res 900 899 } 901 900 … … 905 904 906 905 GenerateListForFile() { 907 local files_found loc fname incoming i res908 incoming="$1"909 files_found=""910 res=0911 912 for fname in $incoming ; do913 files_found="$files_found `LocateFile $fname`"914 done915 916 echo "$files_found" | tr ' ' '\n' | sort -u | tr '\n' ' '906 local files_found loc fname incoming i res 907 incoming="$1" 908 files_found="" 909 res=0 910 911 for fname in $incoming ; do 912 files_found="$files_found `LocateFile $fname`" 913 done 914 915 echo "$files_found" | tr ' ' '\n' | sort -u | tr '\n' ' ' 917 916 } 918 917 … … 922 921 923 922 GetAllRaidMembers() { 924 $AWK "/^[[:space:]]*#/ {next} /^[[:space:]]*device/ if(\$2) {print \$2}" < /etc/raidtab923 $AWK "/^[[:space:]]*#/ {next} /^[[:space:]]*device/ if(\$2) {print \$2}" < /etc/raidtab 925 924 } 926 925 927 926 928 927 GetFileSizeList() { 929 local i930 for i in `find $1 -type d -o -print` ; do931 du -sk $i932 done928 local i 929 for i in `find $1 -type d -o -print` ; do 930 du -sk $i 931 done 933 932 } 934 933 … … 936 935 937 936 GetHomeDir() { 938 local res loc939 loc=`which $1 2>/dev/null`940 res=`file $loc | $AWK '{print $NF;}'`941 dirname $res937 local res loc 938 loc=`which $1 2>/dev/null` 939 res=`file $loc | $AWK '{print $NF;}'` 940 dirname $res 942 941 } 943 942 … … 950 949 951 950 GetParentRaidDev() { 952 $AWK "/^[[:space:]]*#/ {next} /^[[:space:]]*raiddev/ {dev=\$2} /^[[:space:]]*device/ {if(\$2==\"$1\") {print dev; exit}}" < /etc/raidtab951 $AWK "/^[[:space:]]*#/ {next} /^[[:space:]]*raiddev/ {dev=\$2} /^[[:space:]]*device/ {if(\$2==\"$1\") {print dev; exit}}" < /etc/raidtab 953 952 } 954 953 … … 959 958 960 959 GetRaidDevMembers() { 961 $AWK "/^[[:space:]]*#/ {next} /^[[:space:]]*raiddev/ {if(dev) exit; if(\$2 == \"$1\") dev=\$2} /^[[:space:]]*device/ {if(dev) {print \$2}}" < /etc/raidtab960 $AWK "/^[[:space:]]*#/ {next} /^[[:space:]]*raiddev/ {if(dev) exit; if(\$2 == \"$1\") dev=\$2} /^[[:space:]]*device/ {if(dev) {print \$2}}" < /etc/raidtab 962 961 } 963 962 964 963 965 964 HackAwk() { 966 local pathname filename dir old_pwd new_fname967 pathname=$1968 filename=$2969 dir=`echo "$pathname" | sed s/$filename//`970 old_pwd=`pwd`971 cd $dir972 [ -f "$filename" ] || Die "Can't find $filename at $dir"973 new_fname="an.icky.icky.spider.ewww"974 [ "$filename" = "gawk" ] && new_fname="awk"975 [ "$filename" = "awk" ] && new_fname="gawk"976 ln -s $filename $new_fname977 cd $old_pwd965 local pathname filename dir old_pwd new_fname 966 pathname=$1 967 filename=$2 968 dir=`echo "$pathname" | sed s/$filename//` 969 old_pwd=`pwd` 970 cd $dir 971 [ -f "$filename" ] || Die "Can't find $filename at $dir" 972 new_fname="an.icky.icky.spider.ewww" 973 [ "$filename" = "gawk" ] && new_fname="awk" 974 [ "$filename" = "awk" ] && new_fname="gawk" 975 ln -s $filename $new_fname 976 cd $old_pwd 978 977 } 979 978 … … 982 981 983 982 HackMountlist() { 984 local scratchdir outfile partlist pst partstr \983 local scratchdir outfile partlist pst partstr \ 985 984 res partition swapsize 986 scratchdir=$TMP_ROOT987 outfile=$1988 989 mkdir -p $outfile990 rm -Rf $outfile991 > $outfile992 partlist=$(mount | cut -d' ' -f1,3,5 \985 scratchdir=$TMP_ROOT 986 outfile=$1 987 988 mkdir -p $outfile 989 rm -Rf $outfile 990 > $outfile 991 partlist=$(mount | cut -d' ' -f1,3,5 \ 993 992 | egrep -v "((none|/tmp|/ISOs|/proc|/dev/root) )|/mnt/" \ 994 993 | tr ' ' '|') 995 994 996 echo -n "Modifying mountlist..."997 998 if [ ! -f "/mountlist.hacked" ] ; then999 Die "Can't find modified mountlist.hacked!"1000 else1001 cp /mountlist.hacked "$outfile"1002 LogIt "Done. (Created by auto-archive, I assume?)\n"1003 fi995 echo -n "Modifying mountlist..." 996 997 if [ ! -f "/mountlist.hacked" ] ; then 998 Die "Can't find modified mountlist.hacked!" 999 else 1000 cp /mountlist.hacked "$outfile" 1001 LogIt "Done. (Created by auto-archive, I assume?)\n" 1002 fi 1004 1003 } 1005 1004 … … 1008 1007 1009 1008 HackPathsToFailsafe() { 1010 local incoming newpath kver stub i pwd1011 kver=`uname -r`1012 incoming=`ReadLine`1013 pwd=`pwd`1014 cd $TMP_ROOT1015 while [ "$incoming" != "" ] ; do1009 local incoming newpath kver stub i pwd 1010 kver=`uname -r` 1011 incoming=`ReadLine` 1012 pwd=`pwd` 1013 cd $TMP_ROOT 1014 while [ "$incoming" != "" ] ; do 1016 1015 stub=`basename $incoming` 1017 1016 newpath=`FindSpecificModuleInPath lib/modules/$FAILSAFE_KVER $stub` 1018 1017 for i in $newpath ; do 1019 echo "$i"1018 echo "$i" 1020 1019 done 1021 1020 read incoming 1022 done1023 cd $pwd1021 done 1022 cd $pwd 1024 1023 } 1025 1024 … … 1027 1026 1028 1027 ListAllPartitions() { 1029 local res currline partition all_partitions ap_orig remaining i j1030 1031 cat $MY_FSTAB | grep -vx " *#.*" | grep -vx " *none.*" | $AWK '/^\/dev\/[imhs]d||LABEL\=\// && !/fdd|cdr|zip|floppy/ {print $1}'1028 local res currline partition all_partitions ap_orig remaining i j 1029 1030 cat $MY_FSTAB | grep -vx " *#.*" | grep -vx " *none.*" | $AWK '/^\/dev\/[imhs]d||LABEL\=\// && !/fdd|cdr|zip|floppy/ {print $1}' 1032 1031 # for partition in `$FDISK -l | tr -s ' ' '\n' | grep /dev` ; do 1033 1032 # [ -e "$i" ] && all_partitions=echo "$i" 1034 1033 # done 1035 [ -e "/etc/raidtab" ] && $AWK '/^ *device/ {print $2}' /etc/raidtab1036 return1034 [ -e "/etc/raidtab" ] && $AWK '/^ *device/ {print $2}' /etc/raidtab 1035 return 1037 1036 } 1038 1037 … … 1042 1041 1043 1042 ListImagesForUser() { 1044 local path fname1045 path=$11046 echo -en "In the directory '$path' you will find the images:-\n"1047 for fname in `ls $path | fgrep mindi-` ; do1048 printf "%19s " $fname1049 done1050 echo " "1043 local path fname 1044 path=$1 1045 echo -en "In the directory '$path' you will find the images:-\n" 1046 for fname in `ls $path | fgrep mindi-` ; do 1047 printf "%19s " $fname 1048 done 1049 echo " " 1051 1050 } 1052 1051 … … 1054 1053 1055 1054 ListKernelModulePaths() { 1056 local module_list module fname oss r kern1057 oss="/root/oss/modules"1058 module_list=`ListKernelModules`1055 local module_list module fname oss r kern 1056 oss="/root/oss/modules" 1057 module_list=`ListKernelModules` 1059 1058 ### 1060 1059 ### Sq-Modification ... Use kernelname for module search path if specified 1061 1060 ### 1062 # kern="`uname -r`"1063 if [ "${kernelname}" != "" -a "${kernelname}" != "FAILSAFE" ]1064 then1065 kern=${kernelname}1066 else1067 kern="`uname -r`"1068 fi1061 # kern="`uname -r`" 1062 if [ "${kernelname}" != "" -a "${kernelname}" != "FAILSAFE" ] 1063 then 1064 kern=${kernelname} 1065 else 1066 kern="`uname -r`" 1067 fi 1069 1068 ### 1070 1069 ### Sq-Mod End 1071 1070 ### 1072 for module in $module_list $EXTRA_MODS ; do1073 r=`find /lib/modules/$kern -type f | grep "/${module}\..*o" | tail -n1`1071 for module in $module_list $EXTRA_MODS ; do 1072 r=`find /lib/modules/$kern -type f | grep "/${module}\..*o" | tail -n1` 1074 1073 echo "module $module --> $r" >> $LOGFILE 1075 1074 [ "$r" ] && echo "$r" 1076 1075 [ -f "$oss" ] && find $oss | fgrep $module 1077 done1078 find /lib/modules/$kern/modules.* -type f 2> /dev/null1079 [ -f "$oss" ] && find $oss.* 2> /dev/null1076 done 1077 find /lib/modules/$kern/modules.* -type f 2> /dev/null 1078 [ -f "$oss" ] && find $oss.* 2> /dev/null 1080 1079 } 1081 1080 … … 1083 1082 1084 1083 ListKernelModules() { 1085 local output q1086 output=""1087 for q in `lsmod | sed -n '2,$s/ .*//p'` ; do1084 local output q 1085 output="" 1086 for q in `lsmod | sed -n '2,$s/ .*//p'` ; do 1088 1087 output="$q $output" 1089 done1090 echo "$output"1088 done 1089 echo "$output" 1091 1090 } 1092 1091 … … 1094 1093 1095 1094 LocateDeps() { 1096 local incoming fname deps1097 incoming="$1"1098 for fname in $incoming ; do1099 if [ ! -e "$fname" ] ; then1100 echo "Warning - $fname does not exist; cannot be LDD'd." >> $LOGFILE1101 if echo $fname | grep lvm &> /dev/null ; then1095 local incoming fname deps 1096 incoming="$1" 1097 for fname in $incoming ; do 1098 if [ ! -e "$fname" ] ; then 1099 echo "Warning - $fname does not exist; cannot be LDD'd." >> $LOGFILE 1100 if echo $fname | grep lvm &> /dev/null ; then 1102 1101 echo "This warning only affects you if you are using LVM." >> $LOGFILE 1103 1102 if lsmod | grep lvm &> /dev/null ; then … … 1107 1106 echo "I don't think you are, so don't worry about it." >> $LOGFILE 1108 1107 fi 1109 fi1110 elif [ -h "$fname" ] && [ -x "$fname" ] ; then1111 echo "$fname is softlink" >> $LOGFILE1108 fi 1109 elif [ -h "$fname" ] && [ -x "$fname" ] ; then 1110 echo "$fname is softlink" >> $LOGFILE 1112 1111 # echo "$fname will not be LDD'd. It is a softlink to `WhatSoftlinkPointsTo $fname`, which should already be in queue to be analyzed." >> $LOGFILE 1113 1112 # echo "$fname" 1114 else1115 ldd $fname 2> /dev/null | ProcessLDD $fname1116 fi1117 done1113 else 1114 ldd $fname 2> /dev/null | ProcessLDD $fname 1115 fi 1116 done 1118 1117 } 1119 1118 … … 1121 1120 1122 1121 LocateFile() { 1123 local i path fname_to_find location output resolved tmp stub cache_id loclist1124 fname_to_find="$1"1125 if [ "$FILE_CACHE" ] ; then1126 touch $FILE_CACHE1127 output=""; cache_id=`echo $fname_to_find | md5sum`1128 output=`sed -n -e "s/^$cache_id //p" $FILE_CACHE`1129 if [ ! "$output" = "" ] ; then1130 echo "$output"1131 return 01132 fi1133 fi1134 if echo "$fname_to_find" | grep -x "/.*" ; then1122 local i path fname_to_find location output resolved tmp stub cache_id loclist 1123 fname_to_find="$1" 1124 if [ "$FILE_CACHE" ] ; then 1125 touch $FILE_CACHE 1126 output=""; cache_id=`echo $fname_to_find | md5sum` 1127 output=`sed -n -e "s/^$cache_id //p" $FILE_CACHE` 1128 if [ ! "$output" = "" ] ; then 1129 echo "$output" 1130 return 0 1131 fi 1132 fi 1133 if echo "$fname_to_find" | grep -x "/.*" ; then 1135 1134 output="$fname_to_find" 1136 1135 location="$fname_to_find" 1137 1136 while [ -h "$location" ] ; do 1138 resolved=`WhatSoftlinkPointsTo $location`1139 location=$resolved1140 output="$location $output"1137 resolved=`WhatSoftlinkPointsTo $location` 1138 location=$resolved 1139 output="$location $output" 1141 1140 done 1142 1141 echo "$output" 1143 1142 return 0 1144 fi1145 output=""1146 for path in /etc /usr /usr/bin /usr/sbin /bin /usr/X11R6/bin /sbin /usr/local/bin /usr/local/sbin /usr/lib /usr/lib64 /usr/lib64/* /lib /lib64 /lib64/* /usr/local/lib /usr/local/lib64 /usr/local/lib64/* /usr/X11R6/lib /usr/X11R6/lib64 /usr/X11R6/lib64/* ; do1143 fi 1144 output="" 1145 for path in /etc /usr /usr/bin /usr/sbin /bin /usr/X11R6/bin /sbin /usr/local/bin /usr/local/sbin /usr/lib /usr/lib64 /usr/lib64/* /lib /lib64 /lib64/* /usr/local/lib /usr/local/lib64 /usr/local/lib64/* /usr/X11R6/lib /usr/X11R6/lib64 /usr/X11R6/lib64/* ; do 1147 1146 [ ! -d "$path" ] && continue 1148 1147 location=`echo "$path/$fname_to_find" | tr -s '/' '/'` 1149 1148 if echo "$location" | grep "lib/lib" 2> /dev/null ; then 1150 loclist=`find $path -maxdepth 1 | fgrep "$fname_to_find"`1151 else 1152 loclist=$location1149 loclist=`find $path -maxdepth 1 | fgrep "$fname_to_find"` 1150 else 1151 loclist=$location 1153 1152 fi 1154 1153 for location in $loclist ; do 1155 [ ! -e "$location" ] && continue1156 output="$location $output"1157 copies_found=$(($copies_found+1))1158 while [ -h "$location" ] ; do1159 resolved=`WhatSoftlinkPointsTo $location`1160 location=$resolved1161 output="$location $output"1162 done1154 [ ! -e "$location" ] && continue 1155 output="$location $output" 1156 copies_found=$(($copies_found+1)) 1157 while [ -h "$location" ] ; do 1158 resolved=`WhatSoftlinkPointsTo $location` 1159 location=$resolved 1160 output="$location $output" 1161 done 1163 1162 # resolved=`file $location | $AWK '{print $NF;}'` 1164 1163 # if [ "`echo "$resolved" | fgrep "/"`" = "" ] ; then … … 1168 1167 # fi 1169 1168 done 1170 done1171 if [ "$output" = "" ] ; then1169 done 1170 if [ "$output" = "" ] ; then 1172 1171 # echo "$fname_to_find not found" >> /dev/stderr 1173 1172 return 1 1174 fi1175 echo "$output"1176 [ "$FILE_CACHE" ] && echo -ne "$cache_id $output\n" >> $FILE_CACHE1177 return 01173 fi 1174 echo "$output" 1175 [ "$FILE_CACHE" ] && echo -ne "$cache_id $output\n" >> $FILE_CACHE 1176 return 0 1178 1177 } 1179 1178 … … 1181 1180 1182 1181 LogIt() { 1183 if [ -e /dev/stderr ] ; then1182 if [ -e /dev/stderr ] ; then 1184 1183 echo -e "$1" >> /dev/stderr 1185 elif [ -e /usr/bin/logger ] ; then1184 elif [ -e /usr/bin/logger ] ; then 1186 1185 /usr/bin/logger -s $1 1187 fi1188 echo -en "$1" >> $LOGFILE1186 fi 1187 echo -en "$1" >> $LOGFILE 1189 1188 } 1190 1189 … … 1198 1197 1199 1198 MakeMondoConfigFile() { 1200 local outfile use_lzo use_comp use_star1201 outfile=$11202 > $outfile1203 [ "$TAPESIZE" ] && echo "media-size $TAPESIZE" >> $outfile1204 [ "$TAPEDEV" ] && echo "media-dev $TAPEDEV" >> $outfile1205 [ "$FILES_IN_FILELIST" ] && echo "files-in-filelist $FILES_IN_FILELIST" >> $outfile1206 [ "$LAST_FILELIST_NUMBER" ] && echo "last-filelist-number $LAST_FILELIST_NUMBER" >> $outfile1207 [ "$INTERNAL_TAPE_BLOCK_SIZE" ] && echo "internal-tape-block-size $INTERNAL_TAPE_BLOCK_SIZE" >> $outfile1208 use_lzo=$USE_LZO; [ "$use_lzo" = "" ] && use_lzo="no"1209 use_comp=$USE_COMP; [ "$use_comp" = "" ] && use_comp="yes"1210 use_star=$USE_STAR; [ "$use_star" = "" ] && use_star="no"1211 echo "use-lzo $use_lzo" >> $outfile1212 echo "use-star $use_star" >> $outfile1213 echo "use-comp $use_comp" >> $outfile1214 echo "datestamp `date`" >> $outfile1215 [ "$ESTIMATED_TOTAL_NOOF_SLICES" ] && echo "total-slices $ESTIMATED_TOTAL_NOOF_SLICES" >> $outfile1199 local outfile use_lzo use_comp use_star 1200 outfile=$1 1201 > $outfile 1202 [ "$TAPESIZE" ] && echo "media-size $TAPESIZE" >> $outfile 1203 [ "$TAPEDEV" ] && echo "media-dev $TAPEDEV" >> $outfile 1204 [ "$FILES_IN_FILELIST" ] && echo "files-in-filelist $FILES_IN_FILELIST" >> $outfile 1205 [ "$LAST_FILELIST_NUMBER" ] && echo "last-filelist-number $LAST_FILELIST_NUMBER" >> $outfile 1206 [ "$INTERNAL_TAPE_BLOCK_SIZE" ] && echo "internal-tape-block-size $INTERNAL_TAPE_BLOCK_SIZE" >> $outfile 1207 use_lzo=$USE_LZO; [ "$use_lzo" = "" ] && use_lzo="no" 1208 use_comp=$USE_COMP; [ "$use_comp" = "" ] && use_comp="yes" 1209 use_star=$USE_STAR; [ "$use_star" = "" ] && use_star="no" 1210 echo "use-lzo $use_lzo" >> $outfile 1211 echo "use-star $use_star" >> $outfile 1212 echo "use-comp $use_comp" >> $outfile 1213 echo "datestamp `date`" >> $outfile 1214 [ "$ESTIMATED_TOTAL_NOOF_SLICES" ] && echo "total-slices $ESTIMATED_TOTAL_NOOF_SLICES" >> $outfile 1216 1215 AddFileToCfgIfExists $MONDO_TMP/NFS-CLIENT-IPADDR nfs-client-ipaddr $outfile 1217 1216 AddFileToCfgIfExists $MONDO_TMP/NFS-SERVER-MOUNT nfs-server-mount $outfile … … 1234 1233 1235 1234 MakeModuleLoadingScript() { 1236 local module fname params modpath kver outerloop i modpaths kver searchpath list_to_echo j1237 tmpmodprobe_flag=$11238 outfile=$21239 > $outfile || Die "Cannot create empty $outfile"1240 echo -en "#\041/bin/sh\n\n" >> $outfile1241 echo "echo -en \"Loading your modules...\"" >> $outfile1242 if [ "$YOUR_KERNEL_SUCKS" ] ; then1235 local module fname params modpath kver outerloop i modpaths kver searchpath list_to_echo j 1236 tmpmodprobe_flag=$1 1237 outfile=$2 1238 > $outfile || Die "Cannot create empty $outfile" 1239 echo -en "#\041/bin/sh\n\n" >> $outfile 1240 echo "echo -en \"Loading your modules...\"" >> $outfile 1241 if [ "$YOUR_KERNEL_SUCKS" ] ; then 1243 1242 kver=$FAILSAFE_KVER 1244 1243 cd $TMP_ROOT 1245 1244 searchpath=lib/modules/$kver 1246 else1245 else 1247 1246 ### 1248 1247 ### Sq-Modification ... Use kernelname for module search path if specified 1249 1248 ### 1250 #kver=`uname -r`1251 if [ "${kernelname}" != "" ]1252 then1253 kver=${kernelname}1254 else1255 kver=`uname -r`1256 fi1249 #kver=`uname -r` 1250 if [ "${kernelname}" != "" ] 1251 then 1252 kver=${kernelname} 1253 else 1254 kver=`uname -r` 1255 fi 1257 1256 ### 1258 1257 ### Sq-Modification end 1259 1258 ### 1260 1259 searchpath=/lib/modules/$kver 1261 fi1262 1263 echo -en "for outerloop in 1 2 3 4 5 ; do\necho -en \".\"\n" >> $outfile1264 list_to_echo="`ListKernelModules`"1260 fi 1261 1262 echo -en "for outerloop in 1 2 3 4 5 ; do\necho -en \".\"\n" >> $outfile 1263 list_to_echo="`ListKernelModules`" 1265 1264 # LTE=`echo "$list_to_echo" | tr ' ' '\n' | grep -n "" | cut -d':' -f2,3,4 | tr '\n' ' '` 1266 1265 # lte_old="$LTE" … … 1270 1269 # done 1271 1270 #echo "LTE = '$LTE'" >> $LOGFILE 1272 # Make temporary modprobe.conf file if we are told so1273 if [ $tmpmodprobe_flag == "Y" ] ; then1271 # Make temporary modprobe.conf file if we are told so 1272 if [ $tmpmodprobe_flag == "Y" ] ; then 1274 1273 infile="/tmp/modprobe.conf.mindi.$$" 1275 cat `find /etc/modprobe.d - name "*" -xtype f -maxdepth 1` > $infile1276 else1274 cat `find /etc/modprobe.d -maxdepth 1 -name "*" -xtype f` > $infile 1275 else 1277 1276 infile="/etc/modules.conf" 1278 fi1279 for module in $list_to_echo $EXTRA_MODS ; do1277 fi 1278 for module in $list_to_echo $EXTRA_MODS ; do 1280 1279 params=`sed -n "s/^options \\+$module \\+//p" $infile` 1281 1280 modpaths=`FindSpecificModuleInPath $searchpath $module` 1282 1281 for i in $modpaths ; do 1283 echo "MyInsmod $i $params > /dev/null 2> /dev/null" \1282 echo "MyInsmod $i $params > /dev/null 2> /dev/null" \ 1284 1283 | tr '.' '#' \ 1285 1284 | sed s/#o#gz/#o/ \ … … 1287 1286 | sed s/#ko#gz/#ko/ \ 1288 1287 | sed s/#ko#gz/#ko/ \ 1289 | tr '#' '.' >> $outfile1290 1291 echo -en "$i added to module list.\n" >> $LOGFILE1292 done 1293 done1294 echo -en "done\n" >> $outfile1295 echo "echo \"Done.\"" >> $outfile1296 chmod +x $outfile1288 | tr '#' '.' >> $outfile 1289 1290 echo -en "$i added to module list.\n" >> $LOGFILE 1291 done 1292 done 1293 echo -en "done\n" >> $outfile 1294 echo "echo \"Done.\"" >> $outfile 1295 chmod +x $outfile 1297 1296 # cp $outfile /tmp/out.txt 1298 cd /1299 # Remove temporary modprobe.conf file if we have created one1300 if [ $tmpmodprobe_flag == "Y" ] ; then1297 cd / 1298 # Remove temporary modprobe.conf file if we have created one 1299 if [ $tmpmodprobe_flag == "Y" ] ; then 1301 1300 rm -f $infile 1302 fi1301 fi 1303 1302 } 1304 1303 … … 1308 1307 1309 1308 MakeMountlist() { 1310 local scratchdir mountlist all_partitions current_partition \1309 local scratchdir mountlist all_partitions current_partition \ 1311 1310 partition_size partition_format outstring partition_number \ 1312 1311 partition_mountpt c_p lwm_info psz lvm_dev unofficial_outstring \ 1313 1312 absolute_partition old_partition_fmt 1314 1313 1315 echo "Your raw fstab file looks like this:-" >> $LOGFILE1316 cat $MY_FSTAB >> $LOGFILE1317 echo "Your mountlist will look like this:-"1314 echo "Your raw fstab file looks like this:-" >> $LOGFILE 1315 cat $MY_FSTAB >> $LOGFILE 1316 echo "Your mountlist will look like this:-" 1318 1317 1319 1318 # scratchdir, mountlist(OUT) 1320 scratchdir=$TMP_ROOT1321 mountlist=$11319 scratchdir=$TMP_ROOT 1320 mountlist=$1 1322 1321 1323 1322 # NB: partition = device 1324 1323 # NB: mountpt = where the device is mounted 1325 1324 1326 [ -e "$MY_FSTAB" ] || Die "Cannot find your fstab file ($MY_FSTAB)"1327 1328 rm -f $mountlist1329 mkdir -p $mountlist1330 rm -Rf $mountlist1331 > $mountlist1332 echo -en "\rHang on...\r"1333 all_partitions=""1334 1325 [ -e "$MY_FSTAB" ] || Die "Cannot find your fstab file ($MY_FSTAB)" 1326 1327 rm -f $mountlist 1328 mkdir -p $mountlist 1329 rm -Rf $mountlist 1330 > $mountlist 1331 echo -en "\rHang on...\r" 1332 all_partitions="" 1333 1335 1334 # Workaround until fdisk2parted.pl is fixed 1336 [ "$ARCH" != "ia64" ] && FDISK=`which fdisk`1335 [ "$ARCH" != "ia64" ] && FDISK=`which fdisk` 1337 1336 # End workaround - Hugo, 06/20/2004 1338 1337 1339 if [ -d "/proc/lvm" ] || [ -d "/dev/mapper" ]; then1338 if [ -d "/proc/lvm" ] || [ -d "/dev/mapper" ]; then 1340 1339 echo -en "\rAnalyzing LVM...\r" 1341 1340 all_partitions=`$MINDI_HOME/analyze-my-lvm | fgrep ">>>" | cut -d' ' -f2-32` 1342 fi1343 all_partitions="$all_partitions `ListAllPartitions 2> /dev/null`"1341 fi 1342 all_partitions="$all_partitions `ListAllPartitions 2> /dev/null`" 1344 1343 # echo "all partitions = $all_partitions" > /dev/stderr 1345 for i in $IMAGE_DEVS ; do1346 mount | fgrep "$i " > /dev/null 2> /dev/null && Die "Sorry, $i is already mounted! CANNOT DO IMAGEDEV on it if it's mounted."1347 done1348 [ "$IMAGE_DEVS" != "" ] && all_partitions="`echo "$all_partitions $IMAGE_DEVS" | tr ' ' '\n' | sort | uniq | tr '\n ' ' '`"1349 printf " %-15s %-15s %-15s %-15s\n" DEVICE MOUNTPOINT FORMAT "SIZE (MB)"1350 for c_p in $all_partitions ; do1344 for i in $IMAGE_DEVS ; do 1345 mount | fgrep "$i " > /dev/null 2> /dev/null && Die "Sorry, $i is already mounted! CANNOT DO IMAGEDEV on it if it's mounted." 1346 done 1347 [ "$IMAGE_DEVS" != "" ] && all_partitions="`echo "$all_partitions $IMAGE_DEVS" | tr ' ' '\n' | sort | uniq | tr '\n ' ' '`" 1348 printf " %-15s %-15s %-15s %-15s\n" DEVICE MOUNTPOINT FORMAT "SIZE (MB)" 1349 for c_p in $all_partitions ; do 1351 1350 # echo "c_p = $c_p" > /dev/stderr 1352 1351 [ "`echo "/dev/floppy /dev/fd0h1440 /dev/fd0H1440 /dev/cdrom /dev/cdrom/cdrom /dev/cdrom/cdrom1 /dev/cdrom/cdrom2 /dev/cdrom0 /dev/cdrom1 /dev/cdrom2 /dev/cdrom3 /dev/cdrw" | fgrep "$c_p"`" != "" ] || [ "`echo "$c_p" | fgrep "/dev/scd"`" != "" ] || [ "`echo "$c_p" | fgrep "/dev/ram"`" != "" ] || [ "`echo "$c_p" | grep ":"`" != "" ] || [ "`echo "$c_p" | fgrep ":/"`" != "" ] && continue 1353 [ "`echo "/dev/scd0 /dev/scd1 /dev/sr0 /dev/sr1 /dev/cdrom /dev/cdrom1" | fgrep "$c_p"`" ] && continue1352 [ "`echo "/dev/scd0 /dev/scd1 /dev/sr0 /dev/sr1 /dev/cdrom /dev/cdrom1" | fgrep "$c_p"`" ] && continue 1354 1353 [ "`echo "$c_p" | grep -x "/dev/cdroms.*"`" ] && continue 1355 1354 if [ -h "$c_p" ] && [ "`echo "$c_p" | fgrep "/dev/hd"`" = "" ] && [ "`echo "$c_p" | fgrep "/dev/sd"`" = "" ] && [ "`echo "$c_p" | fgrep "/dev/md"`" = "" ] ; then 1356 current_partition=`ResolveSoftlink $c_p`1357 [ "`echo "$current_partition" | fgrep "/dev/mapper"`" != "" ] && current_partition="$c_p"1358 [ "`echo "/dev/scd0 /dev/scd1 /dev/sr0 /dev/sr1 /dev/cdrom /dev/cdrom1" | fgrep "$current_partition"`" ] && continue1359 else 1360 current_partition="$c_p"1355 current_partition=`ResolveSoftlink $c_p` 1356 [ "`echo "$current_partition" | fgrep "/dev/mapper"`" != "" ] && current_partition="$c_p" 1357 [ "`echo "/dev/scd0 /dev/scd1 /dev/sr0 /dev/sr1 /dev/cdrom /dev/cdrom1" | fgrep "$current_partition"`" ] && continue 1358 else 1359 current_partition="$c_p" 1361 1360 fi 1362 1361 [ "$c_p" = "none" ] && continue 1363 absolute_partition=`ResolveSoftlink $c_p`1362 absolute_partition=`ResolveSoftlink $c_p` 1364 1363 partition_mountpt=`cat $MY_FSTAB | tr -s '\t' ' ' | grep -w "$current_partition" | grep -vx " *#.*" | $AWK '{print $2}' | head -n1` 1365 1364 redhat_label="" 1366 1365 if [ "`echo "$current_partition" | fgrep -i "LABEL="`" != "" ] ; then 1367 str_to_find_fmt_with=$current_partition1368 redhat_label=`echo "$current_partition" | cut -d'=' -f2`1369 actual_dev=`mount -l | fgrep " [$redhat_label]" | cut -d' ' -f1`1366 str_to_find_fmt_with=$current_partition 1367 redhat_label=`echo "$current_partition" | cut -d'=' -f2` 1368 actual_dev=`mount -l | fgrep " [$redhat_label]" | cut -d' ' -f1` 1370 1369 # partition_mountpt=$redhat_label 1371 current_partition=$actual_dev1372 else 1373 str_to_find_fmt_with=$current_partition1370 current_partition=$actual_dev 1371 else 1372 str_to_find_fmt_with=$current_partition 1374 1373 fi 1375 1374 partition_format=`$AWK '$1 == "'"$str_to_find_fmt_with"'" {print $3}' $MY_FSTAB` 1376 1375 if [ -d "/proc/lvm" ] && [ "`lvdisplay $current_partition 2> /dev/null`" ] ; then 1377 partition_size="lvm"1376 partition_size="lvm" 1378 1377 elif [ -d "/dev/mapper" ] && [ "`lvm lvdisplay $current_partition 2> /dev/null`" ] ; then 1379 partition_size="lvm"1380 else 1381 partition_size=`SizeOfPartition $current_partition`1382 [ "`echo "$current_partition" | grep "[0-9]"`" = "" ] && continue1383 [ "`echo "$current_partition" | grep -c "^/"`" -ne "1" ] && continue1384 if [ "$partition_format" = "swap" ] || [ "$partition_mountpt" = "swap" ] ; then1378 partition_size="lvm" 1379 else 1380 partition_size=`SizeOfPartition $current_partition` 1381 [ "`echo "$current_partition" | grep "[0-9]"`" = "" ] && continue 1382 [ "`echo "$current_partition" | grep -c "^/"`" -ne "1" ] && continue 1383 if [ "$partition_format" = "swap" ] || [ "$partition_mountpt" = "swap" ] ; then 1385 1384 partition_size=`fgrep -v "Priority" /proc/swaps | tr -s '\t' ' ' | fgrep "$current_partition" | $AWK '{print $3}'` 1386 1385 [ "$partition_mountpt" != "swap" ] && partition_mountpt="swap" 1387 [ "$partition_format" != "swap" ] && partition_format="swap"1386 [ "$partition_format" != "swap" ] && partition_format="swap" 1388 1387 if [ "$partition_size" = "" ] ; then 1389 1388 totalsize=0 … … 1393 1392 items=$(($items+1)) 1394 1393 done 1395 [ "$items" -gt "0" ] && partition_size=$(($totalsize/$items)) || partition_size=01394 [ "$items" -gt "0" ] && partition_size=$(($totalsize/$items)) || partition_size=0 1396 1395 [ "$partition_size" -lt "125000" ] && partition_size=125000 1397 1396 echo "I'm guessing $c_p is $(($partition_size/1024))MB" >> $LOGFILE 1398 1397 fi 1399 fi1398 fi 1400 1399 fi 1401 1400 [ "$partition_mountpt" = "swap" ] && partition_format="swap" 1402 1401 [ "$partition_format" = "swap" ] && partition_mountpt="swap" 1403 1402 if [ "$partition_mountpt" = "" ] ; then 1404 if [ "`pvdisplay $current_partition 2> /dev/null`" != "" ] || [ "`lvm pvdisplay $current_partition 2> /dev/null`" != "" ] ; then1403 if [ "`pvdisplay $current_partition 2> /dev/null`" != "" ] || [ "`lvm pvdisplay $current_partition 2> /dev/null`" != "" ] ; then 1405 1404 if [ "`fgrep device /etc/raidtab 2> /dev/null | grep -w $current_partition`" ] ; then 1406 1405 partition_mountpt="raid" … … 1411 1410 partition_format="lvm" 1412 1411 fi 1413 fi1412 fi 1414 1413 fi 1415 1414 psz=$partition_size … … 1417 1416 [ "$psz" != "lvm" ] && psz=$(($psz/1024)) 1418 1417 if [ "`echo " $IMAGE_DEVS " | fgrep " $current_partition "`" != "" ] ; then 1419 partition_mountpt="image"1420 old_partition_fmt=$partition_format1418 partition_mountpt="image" 1419 old_partition_fmt=$partition_format 1421 1420 # partition_format="`$FDISK -l 2>> $LOGFILE | tr -s '\t' ' ' | grep -w "$absolute_partition" | $AWK 'x=$(NF-1}'`" 1422 partition_format="`$FDISK -l 2>> $LOGFILE | tr '*' ' ' | tr '+' ' ' | tr -s ' ' '\t' | grep -w "$absolute_partition" | cut -f5`"1423 echo "------- $FDISK -l log ------------" >> $LOGFILE1424 cat $FDISKLOG >> $LOGFILE1425 echo "------- $FDISK log end ------------" >> $LOGFILE1426 partition_size=$(($partition_size+1)); # just in case1427 if [ "$partition_format" = "Linux" ] ; then1428 echo "Are you imaging a mounted swap partition? Silly..." >> $LOGFILE1429 echo "Reverting format from $old_partition_fmt to $partition_format" >> $LOGFILE1430 partition_format=$old_partition_fmt1431 fi1432 fi 1433 if [ "$EXCLUDE_DEVS" ] && [ "`echo " $EXCLUDE_DEVS " | fgrep " $current_partition "`" ] || [ "`echo " $EXCLUDE_DEVS " | grep " $current_partition "`" ] ; then1434 echo "Excluding $current_partition from mountlist" >> $LOGFILE1435 continue1436 fi1437 if [ ! "$partition_mountpt" ] ; then1438 for qq in "" `find /dev/ida/c*d* ! -name '*p*'` ; do1421 partition_format="`$FDISK -l 2>> $LOGFILE | tr '*' ' ' | tr '+' ' ' | tr -s ' ' '\t' | grep -w "$absolute_partition" | cut -f5`" 1422 echo "------- $FDISK -l log ------------" >> $LOGFILE 1423 cat $FDISKLOG >> $LOGFILE 1424 echo "------- $FDISK log end ------------" >> $LOGFILE 1425 partition_size=$(($partition_size+1)); # just in case 1426 if [ "$partition_format" = "Linux" ] ; then 1427 echo "Are you imaging a mounted swap partition? Silly..." >> $LOGFILE 1428 echo "Reverting format from $old_partition_fmt to $partition_format" >> $LOGFILE 1429 partition_format=$old_partition_fmt 1430 fi 1431 fi 1432 if [ "$EXCLUDE_DEVS" ] && [ "`echo " $EXCLUDE_DEVS " | fgrep " $current_partition "`" ] || [ "`echo " $EXCLUDE_DEVS " | grep " $current_partition "`" ] ; then 1433 echo "Excluding $current_partition from mountlist" >> $LOGFILE 1434 continue 1435 fi 1436 if [ ! "$partition_mountpt" ] ; then 1437 for qq in "" `find /dev/ida/c*d* ! -name '*p*'` ; do 1439 1438 partition_format=`$FDISK -l $qq 2>> $LOGFILE | grep -w "$c_p" | sed 's/12/|/' | tr -s '\t' ' ' | cut -d'|' -f2 | cut -d' ' -f2-9` 1440 echo "------- $FDISK -l log ------------" >> $LOGFILE1441 cat $FDISKLOG >> $LOGFILE1442 echo "------- $FDISK log end ------------" >> $LOGFILE1439 echo "------- $FDISK -l log ------------" >> $LOGFILE 1440 cat $FDISKLOG >> $LOGFILE 1441 echo "------- $FDISK log end ------------" >> $LOGFILE 1443 1442 [ "$partition_format" ] && break 1444 done1445 if [ "$partition_format" = "Compaq diagnostics" ] ; then1443 done 1444 if [ "$partition_format" = "Compaq diagnostics" ] ; then 1446 1445 partition_format="compaq" 1447 elif [ ! "`fgrep device /etc/raidtab 2> /dev/null | grep -w $current_partition`" ] ; then1446 elif [ ! "`fgrep device /etc/raidtab 2> /dev/null | grep -w $current_partition`" ] ; then 1448 1447 LogIt "Unable to find mountpoint of $current_partition - ignoring" 1449 1448 continue 1450 fi1449 fi 1451 1450 fi 1452 1451 partition_format="`echo "$partition_format" | cut -d',' -f1`"; # in case user has ext3,ext2 or something dumb like that … … 1454 1453 unofficial_outstring=`printf "\t%-15s %-15s %-15s %7s\n" $current_partition $partition_mountpt $partition_format $psz` 1455 1454 if [ "$current_partition" = "" ] ; then 1456 echo "Unknown partition (outstring = $unofficial_outstring)" >> $LOGFILE1455 echo "Unknown partition (outstring = $unofficial_outstring)" >> $LOGFILE 1457 1456 elif [ "$partition_mountpt" = "" ] && [ -f "/etc/raidtab" ] ; then 1458 if [ "`cat /etc/raidtab 2> /dev/null | fgrep device | fgrep $current_partition`" ] ; then1457 if [ "`cat /etc/raidtab 2> /dev/null | fgrep device | fgrep $current_partition`" ] ; then 1459 1458 partition_mountpt=raid 1460 1459 partition_format=raid 1461 printf "\t%-15s %-15s %-15s %7s %-15s\n" $current_partition $partition_mountpt $partition_format $psz "$redhat_label"1462 printf "%s %s %s %s %s\n" $current_partition $partition_mountpt $partition_format $partition_size "$redhat_label" >> $mountlist1463 else1460 printf "\t%-15s %-15s %-15s %7s %-15s\n" $current_partition $partition_mountpt $partition_format $psz "$redhat_label" 1461 printf "%s %s %s %s %s\n" $current_partition $partition_mountpt $partition_format $partition_size "$redhat_label" >> $mountlist 1462 else 1464 1463 echo "Unknown mountpoint (outstring = $unofficial_outstring)" >> $LOGFILE 1465 fi1466 elif [ "$partition_format" = "" ] ; then1467 echo "Unknown format (outstring = $unofficial_outstring)" >> $LOGFILE1464 fi 1465 elif [ "$partition_format" = "" ] ; then 1466 echo "Unknown format (outstring = $unofficial_outstring)" >> $LOGFILE 1468 1467 elif [ "$partition_size" = "" ] ; then 1469 echo "Unknown partition size (outstring = $unofficial_outstring)" >> $LOGFILE1468 echo "Unknown partition size (outstring = $unofficial_outstring)" >> $LOGFILE 1470 1469 elif [ "$partition_mountpt" = "/proc" ] || [ "$partition_mountpt" = "/dev/pts" ] ; then 1471 continue1472 else 1473 if [ "$partition_format" = "dos" ] || [ "$partition_format" = "msdos" ] ; then1474 echo "Stupid bastard..." >> $LOGFILE1475 partition_format="vfat"1476 fi1477 printf "\t%-15s %-15s %-15s %7s %-15s\n" $current_partition $partition_mountpt $partition_format $psz "$redhat_label"1478 printf "%s %s %s %s %s\n" $current_partition $partition_mountpt $partition_format $partition_size "$redhat_label" >> $mountlist1479 fi 1480 done1470 continue 1471 else 1472 if [ "$partition_format" = "dos" ] || [ "$partition_format" = "msdos" ] ; then 1473 echo "Stupid bastard..." >> $LOGFILE 1474 partition_format="vfat" 1475 fi 1476 printf "\t%-15s %-15s %-15s %7s %-15s\n" $current_partition $partition_mountpt $partition_format $psz "$redhat_label" 1477 printf "%s %s %s %s %s\n" $current_partition $partition_mountpt $partition_format $partition_size "$redhat_label" >> $mountlist 1478 fi 1479 done 1481 1480 } 1482 1481 … … 1487 1486 1488 1487 MakeSureNumberIsInteger() { 1489 res=`echo "$1" | tr -s '\-[0-9]' ' '`1490 if [ "$res" != " " ] && [ "$res" != "" ] ; then1488 res=`echo "$1" | tr -s '\-[0-9]' ' '` 1489 if [ "$res" != " " ] && [ "$res" != "" ] ; then 1491 1490 echo "result = '$res'" 1492 Die "$1 should be an integer"1493 fi1491 Die "$1 should be an integer" 1492 fi 1494 1493 } 1495 1494 … … 1499 1498 1500 1499 MakeSyslinuxMessageFile() { 1501 mkdir -p $11502 rmdir $11503 echo -en " " > $11504 if [ "`cat /etc/issue.net 2> /dev/null | fgrep -i "debian"`" ] ; then1505 cat $MINDI_HOME/msg-txt | sed s/ZZZZZ/$MINDI_VERSION/ | sed s/YYYYY/"Mondo Rescue"/ | sed s/XXXXX/"a cousin of"/ | sed s%DDDDD%"Debian GNU\/`uname -s` `cat /etc/issue.net | cut -d ' ' -f 3` `hostname`"% | sed s/KKKKK/"Kernel `uname -r` on a `uname -m`"/ | sed s/TTTTT/"`LC_TIME=C date`"/ >> $1.tmp1506 else1507 cat $MINDI_HOME/msg-txt | sed s/ZZZZZ/$MINDI_VERSION/ | sed s/YYYYY/"Mondo Rescue"/ | sed s/XXXXX/"a cousin of"/ | sed s/DDDDD/"`cat /etc/issue.net | grep -i "linux" | head -n1 | tr -s ' ' ' '`"/ | sed s/KKKKK/"`cat /etc/issue.net | grep -i "kernel" | head -n1 | tr -s ' ' ' '`"/ | sed s/TTTTT/"`LC_TIME=C date`"/ | sed s/' '\\r' 'on' 'an' '\/' '`uname -r`' 'on' 'an' '`uname -m`/ >> $1.tmp1508 fi1509 cat $1.tmp | sed s/%r/"`uname -r`"/ | sed s/%t/"`hostname`"/ > $11510 rm -f $1.tmp1511 if [ "$CDRECOVERY" != "yes" ] ; then1512 if [ -e "$MONDO_TMP/start-nfs" ] ; then1513 echo -en "Press <enter> to continue.\n" >> $11514 elif [ ! "$MONDO_TMP" ] ; then1515 echo -en "FYI, this is _not_ a Mondo Rescue CD.\n" >> $11516 if [ -e "$MINDI_HOME/memtest.img" ] ; then1517 echo -en "Type 'memtest' <Enter> to test your PC's memory intensively.\nJust press <Enter> to go to the main test menu.\n" >> $11518 fi1519 else1520 echo -en "$BOOT_MEDIA_MESSAGE" >> $11521 fi1522 else1523 echo -en " \1500 mkdir -p $1 1501 rmdir $1 1502 echo -en " " > $1 1503 if [ "`cat /etc/issue.net 2> /dev/null | fgrep -i "debian"`" ] ; then 1504 cat $MINDI_HOME/msg-txt | sed s/ZZZZZ/$MINDI_VERSION/ | sed s/YYYYY/"Mondo Rescue"/ | sed s/XXXXX/"a cousin of"/ | sed s%DDDDD%"Debian GNU\/`uname -s` `cat /etc/issue.net | cut -d ' ' -f 3` `hostname`"% | sed s/KKKKK/"Kernel `uname -r` on a `uname -m`"/ | sed s/TTTTT/"`LC_TIME=C date`"/ >> $1.tmp 1505 else 1506 cat $MINDI_HOME/msg-txt | sed s/ZZZZZ/$MINDI_VERSION/ | sed s/YYYYY/"Mondo Rescue"/ | sed s/XXXXX/"a cousin of"/ | sed s/DDDDD/"`cat /etc/issue.net | grep -i "linux" | head -n1 | tr -s ' ' ' '`"/ | sed s/KKKKK/"`cat /etc/issue.net | grep -i "kernel" | head -n1 | tr -s ' ' ' '`"/ | sed s/TTTTT/"`LC_TIME=C date`"/ | sed s/' '\\r' 'on' 'an' '\/' '`uname -r`' 'on' 'an' '`uname -m`/ >> $1.tmp 1507 fi 1508 cat $1.tmp | sed s/%r/"`uname -r`"/ | sed s/%t/"`hostname`"/ > $1 1509 rm -f $1.tmp 1510 if [ "$CDRECOVERY" != "yes" ] ; then 1511 if [ -e "$MONDO_TMP/start-nfs" ] ; then 1512 echo -en "Press <enter> to continue.\n" >> $1 1513 elif [ ! "$MONDO_TMP" ] ; then 1514 echo -en "FYI, this is _not_ a Mondo Rescue CD.\n" >> $1 1515 if [ -e "$MINDI_HOME/memtest.img" ] ; then 1516 echo -en "Type 'memtest' <Enter> to test your PC's memory intensively.\nJust press <Enter> to go to the main test menu.\n" >> $1 1517 fi 1518 else 1519 echo -en "$BOOT_MEDIA_MESSAGE" >> $1 1520 fi 1521 else 1522 echo -en " \ 1524 1523 To restore your disk to factory defaults, type 'RESTORE' <enter>.\n\ 1525 1524 CAUTION: THIS WILL ERASE YOUR WHOLE DISK !!!\n" >> $1 1526 fi1525 fi 1527 1526 } 1528 1527 … … 1531 1530 1532 1531 MoveHyperlinkSensibly() { 1533 local filename minidir_root resides_on_diskno noof_disks old_diskno d old_pwd1534 filename=$11535 minidir_root=$21536 resides_on_diskno=$31537 noof_disks=$41538 1539 [ -h "$minidir_root/$resides_on_diskno/$filename" ] || Die "$filename isn't a softlink (or doesn't exist): how can I move it sensibly?"1540 1541 old_diskno=$resides_on_diskno1542 d=11543 while [ "$d" -le "$noof_disks" ] ; do1544 if [ "$d" -ne "$old_diskno" ] ; then1545 old_pwd=`pwd`1546 cd $minidir_root/$old_diskno1547 cp --parents -Rdf $filename $minidir_root/$d/ || Die "Can't move $filename (sensibly) from $old_diskno to $d"1548 rm -f $filename1549 cd $old_pwd1550 fi1532 local filename minidir_root resides_on_diskno noof_disks old_diskno d old_pwd 1533 filename=$1 1534 minidir_root=$2 1535 resides_on_diskno=$3 1536 noof_disks=$4 1537 1538 [ -h "$minidir_root/$resides_on_diskno/$filename" ] || Die "$filename isn't a softlink (or doesn't exist): how can I move it sensibly?" 1539 1540 old_diskno=$resides_on_diskno 1541 d=1 1542 while [ "$d" -le "$noof_disks" ] ; do 1543 if [ "$d" -ne "$old_diskno" ] ; then 1544 old_pwd=`pwd` 1545 cd $minidir_root/$old_diskno 1546 cp --parents -Rdf $filename $minidir_root/$d/ || Die "Can't move $filename (sensibly) from $old_diskno to $d" 1547 rm -f $filename 1548 cd $old_pwd 1549 fi 1551 1550 # when the softlink is resolvable, our work here is done 1552 [ -e "$minidir_root/$d/$filename" ] && return 01553 old_diskno=$d1554 d=$(($d+1))1555 done1556 return 11551 [ -e "$minidir_root/$d/$filename" ] && return 0 1552 old_diskno=$d 1553 d=$(($d+1)) 1554 done 1555 return 1 1557 1556 } 1558 1557 … … 1560 1559 1561 1560 OfferToCopyImagesToDisks() { 1562 local imagesdir i imagename dev count boot_dev data_dev1563 imagesdir=$11564 boot_dev=$21565 data_dev=$31566 echo -en "Would you like to create boot+data floppy disks now (y/n) ?"1567 read i1568 [ "$i" != "y" ] && [ "$i" != "Y" ] && return1569 mount | fgrep /dev/fd > /dev/null && Die "Please unmount your floppies first."1570 echo "WARNING! THIS WILL ERASE YOUR FLOPPY DISKS."1571 [ ! -e "$boot_dev" ] && Die "Cannot find $boot_dev - is your Linux distro broken?"1572 [ ! -e "$data_dev" ] && Die "Cannot find $data_dev - is your Linux distro broken?"1573 i=`find $imagesdir -type f | fgrep "/mindi-root.1" 2> /dev/null`1574 j=`find $imagesdir -type f | fgrep "/mindi-boot" | fgrep -v 2880`1561 local imagesdir i imagename dev count boot_dev data_dev 1562 imagesdir=$1 1563 boot_dev=$2 1564 data_dev=$3 1565 echo -en "Would you like to create boot+data floppy disks now (y/n) ?" 1566 read i 1567 [ "$i" != "y" ] && [ "$i" != "Y" ] && return 1568 mount | fgrep /dev/fd > /dev/null && Die "Please unmount your floppies first." 1569 echo "WARNING! THIS WILL ERASE YOUR FLOPPY DISKS." 1570 [ ! -e "$boot_dev" ] && Die "Cannot find $boot_dev - is your Linux distro broken?" 1571 [ ! -e "$data_dev" ] && Die "Cannot find $data_dev - is your Linux distro broken?" 1572 i=`find $imagesdir -type f | fgrep "/mindi-root.1" 2> /dev/null` 1573 j=`find $imagesdir -type f | fgrep "/mindi-boot" | fgrep -v 2880` 1575 1574 # echo "i=$i" 1576 1575 # echo "j=$j" 1577 if [ "$i" ] ; then1578 CopyImageToDisk $j $data_dev "boot disk"1579 CopyImageToDisk $i $data_dev "root disk"1580 else1581 CopyImageToDisk $j $boot_dev "boot/root disk"1582 fi1583 count=11584 for i in `find $imagesdir | fgrep mindi-data` ; do1585 CopyImageToDisk $i $data_dev "data disk #$count"1586 count=$(($count+1))1587 done1576 if [ "$i" ] ; then 1577 CopyImageToDisk $j $data_dev "boot disk" 1578 CopyImageToDisk $i $data_dev "root disk" 1579 else 1580 CopyImageToDisk $j $boot_dev "boot/root disk" 1581 fi 1582 count=1 1583 for i in `find $imagesdir | fgrep mindi-data` ; do 1584 CopyImageToDisk $i $data_dev "data disk #$count" 1585 count=$(($count+1)) 1586 done 1588 1587 } 1589 1588 … … 1591 1590 1592 1591 OfferToMakeBootableISO() { 1593 local i old_pwd1594 if [ "$PROMPT_MAKE_CD_IMAGE" = "yes" ] && [ ! "`DidMondoCallMe`" ] ; then1595 echo -en "Shall I make a bootable CD image? (y/n) "1596 read i1597 [ "$i" != "y" ] && [ "$i" != "Y" ] && return 01598 fi1599 if [ ! "$MONDO_TMP" ] ; then1600 LogIt "NB: Mindi's bootable CD always uses isolinux."1601 LogIt "For a bootable CD w/LILO, please use Mondo."1602 fi1603 rm -Rf $TMP_ROOT/iso1604 mkdir -p $TMP_ROOT/iso/{images,archives,isolinux}1605 cp -f $1/*.img $1/*.gz $TMP_ROOT/iso/images || LogIt "[line 857] cannot copy $i to $TMP_ROOT/iso/images\n"1606 old_pwd=`pwd`1607 cd $TMP_ROOT/iso1608 mkdir -p $MONDO_ROOT/iso/isolinux1609 echo "mindi_home = $MINDI_HOME" >> $LOGFILE1610 cp $MINDI_HOME/mem{test,disk}* $MONDO_ROOT 2>> $LOGFILE1611 for i in memdisk memtest.bin memtest.img ; do1592 local i old_pwd 1593 if [ "$PROMPT_MAKE_CD_IMAGE" = "yes" ] && [ ! "`DidMondoCallMe`" ] ; then 1594 echo -en "Shall I make a bootable CD image? (y/n) " 1595 read i 1596 [ "$i" != "y" ] && [ "$i" != "Y" ] && return 0 1597 fi 1598 if [ ! "$MONDO_TMP" ] ; then 1599 LogIt "NB: Mindi's bootable CD always uses isolinux." 1600 LogIt "For a bootable CD w/LILO, please use Mondo." 1601 fi 1602 rm -Rf $TMP_ROOT/iso 1603 mkdir -p $TMP_ROOT/iso/{images,archives,isolinux} 1604 cp -f $1/*.img $1/*.gz $TMP_ROOT/iso/images || LogIt "OfferToMakeBootableISO: Cannot copy $i to $TMP_ROOT/iso/images\n" 1605 old_pwd=`pwd` 1606 cd $TMP_ROOT/iso 1607 mkdir -p $MONDO_ROOT/iso/isolinux 1608 echo "mindi_home = $MINDI_HOME" >> $LOGFILE 1609 cp $MINDI_HOME/mem{test,disk}* $MONDO_ROOT 2>> $LOGFILE 1610 for i in memdisk memtest.bin memtest.img ; do 1612 1611 j=$MINDI_HOME/$i 1613 1612 k=$TMP_ROOT/iso/isolinux 1614 1613 if [ -e "$j" ] ; then 1615 LogIt "Copying $j to $k"1616 cp -f $j $k || Die "Failed to copy $j to $k"1617 cp -f $j $TMP_ROOT || Die "Failed to copy $j to $k"1618 fi 1619 done1620 MakeSyslinuxMessageFile $TMP_ROOT/iso/isolinux/message.txt1621 cp $kernelpath $TMP_ROOT/iso/isolinux/vmlinuz || Die "Cannot copy vmlinuz ($kernelpath) to mondo root ($MONDO_ROOT/isolinux/vmlinuz). Did you run out of disk space?"1622 cp $TMP_ROOT/mindi.rdz $TMP_ROOT/iso/isolinux/initrd.img1623 cp $TMP_ROOT/mindi.rdz $imagesdir/initrd.img1624 [ -e "$iso_cfg_file" ] || Die "FIXME - unable to find $iso_cfg_file - this should never occur"1625 cd $TMP_ROOT/iso/isolinux1626 cat $iso_cfg_file | HackSyslinuxFile $ramdisk_size $TMP_ROOT/iso > isolinux.cfg || Die "Cannot copy isolinux.cfg from mindi_home to tmp_root - did you run out of disk space?"1627 if [ -e "$MONDO_TMP/start-nfs" ] ; then1614 LogIt "Copying $j to $k" 1615 cp -f $j $k || Die "Failed to copy $j to $k" 1616 cp -f $j $TMP_ROOT || Die "Failed to copy $j to $k" 1617 fi 1618 done 1619 MakeSyslinuxMessageFile $TMP_ROOT/iso/isolinux/message.txt 1620 cp $kernelpath $TMP_ROOT/iso/isolinux/vmlinuz || Die "Cannot copy vmlinuz ($kernelpath) to mondo root ($MONDO_ROOT/isolinux/vmlinuz). Did you run out of disk space?" 1621 cp $TMP_ROOT/mindi.rdz $TMP_ROOT/iso/isolinux/initrd.img 1622 cp $TMP_ROOT/mindi.rdz $imagesdir/initrd.img 1623 [ -e "$iso_cfg_file" ] || Die "FIXME - unable to find $iso_cfg_file - this should never occur" 1624 cd $TMP_ROOT/iso/isolinux 1625 cat $iso_cfg_file | HackSyslinuxFile $ramdisk_size $TMP_ROOT/iso > isolinux.cfg || Die "Cannot copy isolinux.cfg from mindi_home to tmp_root - did you run out of disk space?" 1626 if [ -e "$MONDO_TMP/start-nfs" ] ; then 1628 1627 mv isolinux.cfg isolinux.cfg.old 1629 1628 cat isolinux.cfg.old | sed s/interactive/iso/ > isolinux.cfg 1630 fi1631 if [ "$ARCH" != "ia64" ] ; then1632 cp $ISOLINUX isolinux.bin || Die "Cannot copy isolinux.bin from /usr/libto tmp_root - did you run out of disk space?"1629 fi 1630 if [ "$ARCH" != "ia64" ] ; then 1631 cp $ISOLINUX isolinux.bin || Die "Cannot copy isolinux.bin ($ISOLINUX) to tmp_root - did you run out of disk space?" 1633 1632 cp $ISOLINUX ../ 1634 fi1635 cd $TMP_ROOT/iso1636 if [ "$ARCH" != "ia64" ] ; then1637 cp -f $TMP_ROOT/iso/isolinux/{isolinux.cfg,initrd.img,vmlinuz,isolinux.bin,message.txt} $MONDO_ROOT || Die "Cannot copy core files to ramdisk for boot disk. Did you run out of disk space?"1638 fi1639 [ "$MONDO_HOME" ] && cp -f $MONDO_HOME/autorun .1640 if [ -d "/home/MondoCD" ] ; then1633 fi 1634 cd $TMP_ROOT/iso 1635 if [ "$ARCH" != "ia64" ] ; then 1636 cp -f $TMP_ROOT/iso/isolinux/{isolinux.cfg,initrd.img,vmlinuz,isolinux.bin,message.txt} $MONDO_ROOT || Die "Cannot copy core files to ramdisk for boot disk. Did you run out of disk space?" 1637 fi 1638 [ "$MONDO_HOME" ] && cp -f $MONDO_HOME/autorun . 1639 if [ -d "/home/MondoCD" ] ; then 1641 1640 cp -pRdu /home/MondoCD/* . 1642 fi1643 if [ "$ARCH" != "ia64" ] ; then1644 mkisofs -U -J -r -o $imagesdir/mindi.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table . > /dev/null 2> /tmp/$$.mk1645 else1646 mkisofs -J -r -o $imagesdir/mindi.iso -b images/mindi-bootroot.$IA64_BOOT_SIZE.img -c isolinux/boot.cat -no-emul-boot . > /dev/null 2> /tmp/$$.mk1647 fi1648 if [ "$?" -ne "0" ] ; then1641 fi 1642 if [ "$ARCH" != "ia64" ] ; then 1643 mkisofs -U -J -r -o $imagesdir/mindi.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table . > /dev/null 2> /tmp/$$.mk 1644 else 1645 mkisofs -J -r -o $imagesdir/mindi.iso -b images/mindi-bootroot.$IA64_BOOT_SIZE.img -c isolinux/boot.cat -no-emul-boot . > /dev/null 2> /tmp/$$.mk 1646 fi 1647 if [ "$?" -ne "0" ] ; then 1649 1648 echo "----------- mkisofs's errors --------------" >> $LOGFILE 1650 1649 cat /tmp/$$.mk >> $LOGFILE … … 1652 1651 cat /tmp/$$.mk 1653 1652 LogIt "Failed to create ISO image.\n" 1654 else1653 else 1655 1654 echo "Created bootable ISO image at $imagesdir/mindi.iso" >> $LOGFILE 1656 fi1657 rm -f /tmp/$$.mk1658 cd $old_pwd1655 fi 1656 rm -f /tmp/$$.mk 1657 cd $old_pwd 1659 1658 } 1660 1659 … … 1662 1661 1663 1662 PluralOrNot() { 1664 [ "$1" -gt "1" ] && echo -en "s"1663 [ "$1" -gt "1" ] && echo -en "s" 1665 1664 } 1666 1665 … … 1669 1668 1670 1669 MakeMessageFile() { 1671 local disksize1672 disksize=$11673 if [ "`cat /etc/issue.net 2> /dev/null | fgrep -i "debian"`" ] ; then1674 cat $MINDI_HOME/msg-txt | sed s/ZZZZZ/$MINDI_VERSION/ | sed s/YYYYY/"Mondo Rescue"/ | sed s/XXXXX/"a cousin of"/ | sed s%DDDDD%"Debian GNU\/`uname -s` `cat /etc/issue.net | cut -d ' ' -f 3` `hostname`"% | sed s/KKKKK/"Kernel `uname -r` on a `uname -m`"/ | sed s/TTTTT/"`LC_TIME=C date`"/1675 else1676 cat $MINDI_HOME/msg-txt | sed s/ZZZZZ/$MINDI_VERSION/ | sed s/YYYYY/"Mondo Rescue"/ | sed s/XXXXX/"a cousin of"/ | sed s/DDDDD/"`cat /etc/issue.net | grep -i "linux" | head -n1 | tr -s ' ' ' '`"/ | sed s/KKKKK/"`cat /etc/issue.net | grep -i "kernel" | head -n1 | tr -s ' ' ' '`"/ | sed s/TTTTT/"`LC_TIME=C date`"/ | sed s/' 'r' 'on' 'an' 'm/' '`uname -r`' 'on' 'an' '`uname -m`/1677 fi1678 if [ "$disksize" -gt "2880" ] ; then1670 local disksize 1671 disksize=$1 1672 if [ "`cat /etc/issue.net 2> /dev/null | fgrep -i "debian"`" ] ; then 1673 cat $MINDI_HOME/msg-txt | sed s/ZZZZZ/$MINDI_VERSION/ | sed s/YYYYY/"Mondo Rescue"/ | sed s/XXXXX/"a cousin of"/ | sed s%DDDDD%"Debian GNU\/`uname -s` `cat /etc/issue.net | cut -d ' ' -f 3` `hostname`"% | sed s/KKKKK/"Kernel `uname -r` on a `uname -m`"/ | sed s/TTTTT/"`LC_TIME=C date`"/ 1674 else 1675 cat $MINDI_HOME/msg-txt | sed s/ZZZZZ/$MINDI_VERSION/ | sed s/YYYYY/"Mondo Rescue"/ | sed s/XXXXX/"a cousin of"/ | sed s/DDDDD/"`cat /etc/issue.net | grep -i "linux" | head -n1 | tr -s ' ' ' '`"/ | sed s/KKKKK/"`cat /etc/issue.net | grep -i "kernel" | head -n1 | tr -s ' ' ' '`"/ | sed s/TTTTT/"`LC_TIME=C date`"/ | sed s/' 'r' 'on' 'an' 'm/' '`uname -r`' 'on' 'an' '`uname -m`/ 1676 fi 1677 if [ "$disksize" -gt "2880" ] ; then 1679 1678 if [ "`DidMondoCallMe`" ] ; then 1680 if [ "$CDRECOVERY" != "yes" ] ; then1681 if [ -e "$MONDO_TMP/start-nfs" ] ; then1682 echo -en "Press <enter> to continue.\n"1679 if [ "$CDRECOVERY" != "yes" ] ; then 1680 if [ -e "$MONDO_TMP/start-nfs" ] ; then 1681 echo -en "Press <enter> to continue.\n" 1683 1682 elif [ ! "$MONDO_TMP" ] ; then 1684 1683 echo -en "FYI, this is _not_ a Mondo Rescue CD.\n" 1685 else1686 echo -en "$BOOT_MEDIA_MESSAGE"1687 fi1688 fi1689 fi 1690 fi1691 if [ "$CDRECOVERY" = "yes" ] ; then1692 echo -en "\1684 else 1685 echo -en "$BOOT_MEDIA_MESSAGE" 1686 fi 1687 fi 1688 fi 1689 fi 1690 if [ "$CDRECOVERY" = "yes" ] ; then 1691 echo -en "\ 1693 1692 To restore your disk to factory defaults, type 'RESTORE' <enter>.\n\ 1694 1693 CAUTION: THIS WILL ERASE YOUR WHOLE DISK !!!\n" 1695 fi1696 echo -en "\n\n\n"1694 fi 1695 echo -en "\n\n\n" 1697 1696 } 1698 1697 … … 1701 1700 1702 1701 write_full_floppy_of_kernel() { 1703 local mtpt image old_pwd res disksize 1704 1705 res=0 1706 old_pwd=`pwd` 1707 KERN_DISK_MADE=1 1708 disksize=$3 1709 image=/tmp/$RANDOM.$RANDOM.img 1710 mtpt=/tmp/$RANDOM.$RANDOM.mtpt 1711 dd if=/dev/zero of=$image bs=1k count=$disksize 1712 mke2fs -N 26 -F $image > /dev/null 1713 mkdir -p $mtpt 1714 mount -o loop $image $mtpt 1715 cd $mtpt 1716 mkdir -p {dev,tmp,boot} 1717 cp -f $1 vmlinuz 1718 if [ "$?" -ne "0" ] ; then 1719 LogIt "Failed to copy $1 to ramdisk" 1720 return 1 1721 fi 1722 1723 rdev vmlinuz 2,0 1724 rdev -R vmlinuz 0 1725 rdev -r vmlinuz 49152 1726 1727 tar -zxf $MINDI_HOME/dev.tgz || LogIt "Cannot untar dev.tgz\n" 1728 losetup /dev/loop0 > /dev/null 2> /dev/null 1729 [ "$?" -eq "0" ] || losetup /dev/loop0 -d || Die "Please free up /dev/l\oop0 by typing 'losetup /dev/loop0 -d'.\nReboot if necessary.\n" 1730 CopyBootBFile $mtpt/boot.b 1702 local mtpt image old_pwd res disksize 1703 1704 res=0 1705 old_pwd=`pwd` 1706 KERN_DISK_MADE=1 1707 disksize=$3 1708 rand1=$RANDOM 1709 rand2=$RANDOM 1710 image=/tmp/$rand1.$rand2.img 1711 mtpt=/tmp/$rand1.$rand2.mtpt 1712 dd if=/dev/zero of=$image bs=1k count=$disksize 1713 mke2fs -N 26 -F $image > /dev/null 1714 mkdir -p $mtpt 1715 mount -o loop $image $mtpt 1716 cd $mtpt 1717 mkdir -p {dev,tmp,boot} 1718 cp -f $1 vmlinuz 1719 if [ "$?" -ne "0" ] ; then 1720 LogIt "Failed to copy $1 to ramdisk" 1721 cd $old_pwd 1722 umount $mtpt 1723 rmdir $mtpt 1724 rm $image 1725 return 1 1726 fi 1727 1728 rdev vmlinuz 2,0 1729 rdev -R vmlinuz 0 1730 rdev -r vmlinuz 49152 1731 1732 tar -zxf $MINDI_HOME/dev.tgz || LogIt "Cannot untar dev.tgz\n" 1733 losetup /dev/loop0 > /dev/null 2> /dev/null 1734 [ "$?" -eq "0" ] || losetup /dev/loop0 -d || Die "Please free up /dev/loop0 by typing 'losetup /dev/loop0 -d'.\nReboot if necessary.\n" 1735 CopyBootBFile $mtpt/boot.b 1731 1736 1732 1737 # echo "root=/dev/loop0" > bdlilo.conf 1733 MakeLiloConfFile $disksize >> bdlilo.conf1738 MakeLiloConfFile $disksize >> bdlilo.conf 1734 1739 1735 1740 # cat bdlilo.conf > /tmp/bdlilo.conf … … 1737 1742 # cat /home/mondostuff/bdlc > bdlilo.conf 1738 1743 1739 chmod 644 bdlilo.conf1740 MakeMessageFile $disksize > message1741 lilo -v -C bdlilo.conf -r $mtpt1742 res=$?1744 chmod 644 bdlilo.conf 1745 MakeMessageFile $disksize > message 1746 lilo -v -C bdlilo.conf -r $mtpt 1747 res=$? 1743 1748 1744 1749 #echo "lilo -v -C bdlilo.conf -r $mtpt" 1745 1750 #echo -en "Press enter"; read line 1746 1751 1747 cd $old_pwd1748 umount $mtpt1749 mv -f $image $21750 rmdir $mtpt1751 1752 return $res1752 cd $old_pwd 1753 umount $mtpt 1754 mv -f $image $2 1755 rmdir $mtpt 1756 1757 return $res 1753 1758 1754 1759 # --- the kernel-only method NO LONGER WORKS. Not since Apr 2002. … … 1776 1781 1777 1782 MakeLiloConfFile() { 1778 local disksize options i ooo1779 disksize=$11780 options=""1781 if [ "$ARCH" != "ia64" ] ; then1782 echo -en "boot=/dev/loop0\ndisk=/dev/loop0\n"1783 fi1784 if [ "$disksize" -eq "2880" ] ; then1785 echo -en "bios=0x00\nsectors=36\nheads=2\ncylinders=80\n"1786 elif [ "$disksize" -eq "1722" ] ; then1787 echo -en "bios=0x00\nsectors=21\nheads=2\ncylinders=82\n"1788 elif [ "$disksize" -gt "2880" ] ; then1789 /bin/true1790 else1791 echo -en "bios=0x00\nsectors=18\nheads=2\ncylinders=80\n"1792 fi1793 if [ "$ARCH" != "ia64" ] ; then1794 echo -en "install=/boot.b\nmap=/boot.map\n"1795 fi1796 if [ "$CDRECOVERY" = "yes" ] ; then1797 echo -en "default=RESTORE\n"1798 elif [ "$disksize" -gt "2880" ] && [ "`DidMondoCallMe`" ] ; then1783 local disksize options i ooo 1784 disksize=$1 1785 options="" 1786 if [ "$ARCH" != "ia64" ] ; then 1787 echo -en "boot=/dev/loop0\ndisk=/dev/loop0\n" 1788 fi 1789 if [ "$disksize" -eq "2880" ] ; then 1790 echo -en "bios=0x00\nsectors=36\nheads=2\ncylinders=80\n" 1791 elif [ "$disksize" -eq "1722" ] ; then 1792 echo -en "bios=0x00\nsectors=21\nheads=2\ncylinders=82\n" 1793 elif [ "$disksize" -gt "2880" ] ; then 1794 /bin/true 1795 else 1796 echo -en "bios=0x00\nsectors=18\nheads=2\ncylinders=80\n" 1797 fi 1798 if [ "$ARCH" != "ia64" ] ; then 1799 echo -en "install=/boot.b\nmap=/boot.map\n" 1800 fi 1801 if [ "$CDRECOVERY" = "yes" ] ; then 1802 echo -en "default=RESTORE\n" 1803 elif [ "$disksize" -gt "2880" ] && [ "`DidMondoCallMe`" ] ; then 1799 1804 if [ -e "$MONDO_TMP/start-nfs" ] ; then 1800 echo -en "default=iso\n"1801 else 1802 echo -en "default=interactive\n"1803 fi 1804 else1805 echo -en "default=iso\n" 1806 else 1807 echo -en "default=interactive\n" 1808 fi 1809 else 1805 1810 echo -en "default=expert\n" 1806 fi1807 echo -en "prompt\n"1808 if [ "$ARCH" != "ia64" ] ; then1809 echo -en "vga=normal\nbackup=/dev/null\nmessage=/message\n"1810 fi1811 if [ "$CDRECOVERY" != "yes" ] ; then1811 fi 1812 echo -en "prompt\n" 1813 if [ "$ARCH" != "ia64" ] ; then 1814 echo -en "vga=normal\nbackup=/dev/null\nmessage=/message\n" 1815 fi 1816 if [ "$CDRECOVERY" != "yes" ] ; then 1812 1817 echo -en "timeout=300\n" 1813 fi1814 echo -en "\n"1815 if [ "$CDRECOVERY" = "yes" ] ; then1818 fi 1819 echo -en "\n" 1820 if [ "$CDRECOVERY" = "yes" ] ; then 1816 1821 options="RESTORE expert" 1817 elif [ "$disksize" -gt "2880" ] ; then1818 if [ "`DidMondoCallMe`" ] ; then1819 if [ -e "$MONDO_TMP/start-nfs" ] ; then1820 options="iso"1821 else1822 options="interactive expert compare iso nuke isonuke"1822 elif [ "$disksize" -gt "2880" ] ; then 1823 if [ "`DidMondoCallMe`" ] ; then 1824 if [ -e "$MONDO_TMP/start-nfs" ] ; then 1825 options="iso" 1826 else 1827 options="interactive expert compare iso nuke isonuke" 1823 1828 # hda hdb hdc hdd" 1824 fi1825 else1826 options="expert"1827 fi 1828 else1829 fi 1830 else 1831 options="expert" 1832 fi 1833 else 1829 1834 options="expert" 1830 fi1831 for i in $options ; do1835 fi 1836 for i in $options ; do 1832 1837 ooo=$i 1833 1838 [ "$ooo" = "RESTORE" ] && ooo="nuke" 1834 if [ "$ARCH" = "ia64" ] ; then1839 if [ "$ARCH" = "ia64" ] ; then 1835 1840 rootpart="root=/dev/ram0\n\t" 1836 1841 else … … 1842 1847 outstr=$outstr"\"\n" 1843 1848 if [ "$disksize" = "1440" ] ; then 1844 echo -en "$outstr" | sed s/initrd=.*// | grep -v root=1845 else 1846 echo -en "$outstr"1847 fi 1848 done1849 echo -en "$outstr" | sed s/initrd=.*// | grep -v root= 1850 else 1851 echo -en "$outstr" 1852 fi 1853 done 1849 1854 } 1850 1855 … … 1862 1867 1863 1868 PrepareBootDiskImage_LILO() { 1864 local disksize imagesdir dev imagefile mountpoint fname i kernelpath ramdisksize cfg_file testpath options retval outstr old_pwd ooo max_kernel_size liloconf1865 imagesdir=$11866 disksize=$21867 kernelpath=$31868 ramdisksize=$41869 1870 retval=01871 [ ! -e "$kernelpath" ] && Die "PBDI - cannot find $kernelpath kernel"1872 echo -en "Making "$disksize"KB boot disk..."1873 TurnTgzIntoRdz $MINDI_HOME/rootfs $TMP_ROOT/mindi.rdz $ramdisksize $disksize `du -sk $kernelpath | cut -f1` || Die "Could not turn rootfs into mindi.rdz; are you SURE your kernel supports loopfs?"1874 if [ "$ARCH" != "ia64" ] ; then1875 [ "$disksize" != "1722" ] && [ "$disksize" != "2880" ] && [ "$disksize" != "5760" ] && Die "PDBI - disksize is $disksize - bad size"1876 fi1877 echo -en "..."1878 imagefile=$imagesdir/mindi-bootroot.$disksize.img1879 mountpoint=$TMP_ROOT/mountpoint.$$1880 mkdir -p $mountpoint1881 dd if=/dev/zero of=$imagefile bs=1k count=$disksize &> /dev/null || Die "Cannot dd blank file"1882 if [ "$ARCH" = "ia64" ] ; then1883 mkdosfs $imagefile > /tmp/mke2fs.$$ 2>> /tmp/mke2fs.$$1869 local disksize imagesdir dev imagefile mountpoint fname i kernelpath ramdisksize cfg_file testpath options retval outstr old_pwd ooo max_kernel_size liloconf 1870 imagesdir=$1 1871 disksize=$2 1872 kernelpath=$3 1873 ramdisksize=$4 1874 1875 retval=0 1876 [ ! -e "$kernelpath" ] && Die "PBDI - cannot find $kernelpath kernel" 1877 echo -en "Making "$disksize"KB boot disk..." 1878 TurnTgzIntoRdz $MINDI_HOME/rootfs $TMP_ROOT/mindi.rdz $ramdisksize $disksize `du -sk $kernelpath | cut -f1` || Die "Could not turn rootfs into mindi.rdz; are you SURE your kernel supports loopfs?" 1879 if [ "$ARCH" != "ia64" ] ; then 1880 [ "$disksize" != "1722" ] && [ "$disksize" != "2880" ] && [ "$disksize" != "5760" ] && Die "PDBI - disksize is $disksize - bad size" 1881 fi 1882 echo -en "..." 1883 imagefile=$imagesdir/mindi-bootroot.$disksize.img 1884 mountpoint=$TMP_ROOT/mountpoint.$$ 1885 mkdir -p $mountpoint 1886 dd if=/dev/zero of=$imagefile bs=1k count=$disksize &> /dev/null || Die "Cannot dd blank file" 1887 if [ "$ARCH" = "ia64" ] ; then 1888 mkdosfs $imagefile > /tmp/mke2fs.$$ 2>> /tmp/mke2fs.$$ 1884 1889 t=vfat 1885 else1886 mke2fs -N 26 -m 0 -F $imagefile > /tmp/mke2fs.$$ 2>> /tmp/mke2fs.$$1890 else 1891 mke2fs -N 26 -m 0 -F $imagefile > /tmp/mke2fs.$$ 2>> /tmp/mke2fs.$$ 1887 1892 t=ext2 1888 fi1889 [ "$?" -ne "0" ] && cat /tmp/mke2fs.$$1890 rm -f /tmp/mke2fs.$$1891 mount -t $t -o loop $imagefile $mountpoint || LogIt "Cannot mount (PBDI)\n\n"1893 fi 1894 [ "$?" -ne "0" ] && cat /tmp/mke2fs.$$ 1895 rm -f /tmp/mke2fs.$$ 1896 mount -t $t -o loop $imagefile $mountpoint || LogIt "Cannot mount (PBDI)\n\n" 1892 1897 # copy Mindi's skeleton fs & lilo/syslinux/whatever stuff into it 1893 mkdir -p $mountpoint/etc1894 if [ "$ARCH" != "ia64" ] ; then1895 liloconf=$mountpoint/etc/lilo.conf1896 else1898 mkdir -p $mountpoint/etc 1899 if [ "$ARCH" != "ia64" ] ; then 1900 liloconf=$mountpoint/etc/lilo.conf 1901 else 1897 1902 liloconf=$mountpoint/elilo.conf 1898 fi1899 old_pwd=`pwd`1900 cd $mountpoint1901 if [ "$ARCH" != "ia64" ] ; then1902 tar -zxf $MINDI_HOME/dev.tgz || LogIt "Cannot untar dev.tgz\n"1903 fi1904 cd $old_pwd1905 losetup /dev/loop0 > /dev/null 2> /dev/null1906 [ "$?" -eq "0" ] || losetup /dev/loop0 -d || Die "Please free up /dev/loop0 by typing 'losetup /dev/loop0 -d'.\nReboot if necessary.\n"1907 CopyBootBFile $mountpoint/boot.b1908 1909 MakeLiloConfFile $disksize > $liloconf1910 1911 echo "Copying $TMP_ROOT/mindi.rdz to $mountpoint..." >> $LOGFILE1912 cp -f $TMP_ROOT/mindi.rdz $mountpoint 2>> $LOGFILE1913 if [ "$?" -ne "0" ] ; then1903 fi 1904 old_pwd=`pwd` 1905 cd $mountpoint 1906 if [ "$ARCH" != "ia64" ] ; then 1907 tar -zxf $MINDI_HOME/dev.tgz || LogIt "Cannot untar dev.tgz\n" 1908 fi 1909 cd $old_pwd 1910 losetup /dev/loop0 > /dev/null 2> /dev/null 1911 [ "$?" -eq "0" ] || losetup /dev/loop0 -d || Die "Please free up /dev/loop0 by typing 'losetup /dev/loop0 -d'.\nReboot if necessary.\n" 1912 CopyBootBFile $mountpoint/boot.b 1913 1914 MakeLiloConfFile $disksize > $liloconf 1915 1916 echo "Copying $TMP_ROOT/mindi.rdz to $mountpoint..." >> $LOGFILE 1917 cp -f $TMP_ROOT/mindi.rdz $mountpoint 2>> $LOGFILE 1918 if [ "$?" -ne "0" ] ; then 1914 1919 LogIt "Failed to copy $TMP_ROOT/mindi.rdz to $mountpoint\n" 1915 1920 cat $TMP_ROOT/mtpt.$$ >> $LOGFILE … … 1917 1922 rm -f $TMP_ROOT/mtpt.$$ 1918 1923 LogIt "Cannot incorporate mindi.rdz in bootdisk (kernel / modules too big?)" 1919 retval=$(($retval+1))1920 fi1921 MakeMessageFile $disksize > $mountpoint/message1922 1923 mkdir -p $mountpoint/tmp1924 cp -f $TMP_ROOT/mondo-restore.cfg $mountpoint/tmp &> /dev/null1925 if [ -e "$MINDI_HOME/memtest.img" ] ; then1926 echo -en "image=/memtest.bin\nlabel=memtest\nn" >> $liloconf1927 echo -en "image=/memdisk\nlabel=memtest\nappend=\"initrd=memtest.img\"\n" >> $liloconf1924 retval=$(($retval+1)) 1925 fi 1926 MakeMessageFile $disksize > $mountpoint/message 1927 1928 mkdir -p $mountpoint/tmp 1929 cp -f $TMP_ROOT/mondo-restore.cfg $mountpoint/tmp &> /dev/null 1930 if [ -e "$MINDI_HOME/memtest.img" ] ; then 1931 echo -en "image=/memtest.bin\nlabel=memtest\nn" >> $liloconf 1932 echo -en "image=/memdisk\nlabel=memtest\nappend=\"initrd=memtest.img\"\n" >> $liloconf 1928 1933 # echo "Yep, this is a multi-function CD" > $mountpoint/MULTIFUNC 1929 fi1930 if [ -d "/home/MondoCD" ] ; then1934 fi 1935 if [ -d "/home/MondoCD" ] ; then 1931 1936 cp -pRdu /home/MondoCD/* . || Die "Cannot do kung pow" 1932 fi1937 fi 1933 1938 1934 1939 # copy the kernel across 1935 rm -Rf $mountpoint/lost+found1936 dd if=/dev/zero of=$mountpoint/zero bs=1k count=16 &> /dev/null1937 free_space=`df -k $mountpoint | tail -n1 | tr -s ' ' '\t' | cut -f4`1938 cp -f $kernelpath $mountpoint/vmlinuz > /dev/null 2> /dev/null1939 if [ "$?" -ne "0" ] || [ "$FORCE_DUAL_FLOPPIES" = "yes" ] ; then1940 rm -Rf $mountpoint/lost+found 1941 dd if=/dev/zero of=$mountpoint/zero bs=1k count=16 &> /dev/null 1942 free_space=`df -k $mountpoint | tail -n1 | tr -s ' ' '\t' | cut -f4` 1943 cp -f $kernelpath $mountpoint/vmlinuz > /dev/null 2> /dev/null 1944 if [ "$?" -ne "0" ] || [ "$FORCE_DUAL_FLOPPIES" = "yes" ] ; then 1940 1945 echo "Files at mountpoint ($mountpoint) :-" >> $LOGFILE 1941 1946 du -sk $mountpoint/* >> $LOGFILE … … 1943 1948 echo -en "Kernel size = `du -sk $kernelpath | cut -f1` K\nRamdisk free = $free_space K\n\ 1944 1949 Sorry, your kernel is too big for a boot/root floppy.\nI'll try the new boot/root two-disk thingy.\n" >> $LOGFILE 1945 rm -f $mountpoint/vmlinuz1950 rm -f $mountpoint/vmlinuz 1946 1951 cd $old_pwd 1947 umount $mountpoint || Die "Cannot unmount mountpoint ($mountpoint)"1948 rmdir $mountpoint || LogIt "Cannot rmdir (PBDI)\n"1952 umount $mountpoint || Die "Cannot unmount mountpoint ($mountpoint)" 1953 rmdir $mountpoint || LogIt "Cannot rmdir (PBDI)\n" 1949 1954 # losetup /dev/loop0 -d 1950 1955 res=0 1951 write_full_floppy_of_kernel $kernelpath $imagesdir/mindi-boot.1440.img 14401956 write_full_floppy_of_kernel $kernelpath $imagesdir/mindi-boot.1440.img 1440 1952 1957 res=$(($res+$?)) 1953 cp -f $TMP_ROOT/mindi.rdz $imagesdir/mindi-root.1440.img1958 cp -f $TMP_ROOT/mindi.rdz $imagesdir/mindi-root.1440.img 1954 1959 res=$(($res+$?)) 1955 1960 rm -f $imagefile … … 1957 1962 rm -f $imagesdir/mindi-*.1440.img 1958 1963 return $res 1959 fi1960 free_space=`df -k $mountpoint | tail -n1 | tr -s ' ' '\t' | cut -f4`1961 max_kernel_size=$(($free_space+`du -sk $kernelpath | cut -f1`))1962 echo "Free space left on floppy = $free_space KB" >> $LOGFILE1963 echo "Max kernel size on $disksize KB floppy (est'd) = $max_kernel_size K" >> $LOGFILE1964 fi 1965 free_space=`df -k $mountpoint | tail -n1 | tr -s ' ' '\t' | cut -f4` 1966 max_kernel_size=$(($free_space+`du -sk $kernelpath | cut -f1`)) 1967 echo "Free space left on floppy = $free_space KB" >> $LOGFILE 1968 echo "Max kernel size on $disksize KB floppy (est'd) = $max_kernel_size K" >> $LOGFILE 1964 1969 # make it bootable 1965 rm -f $mountpoint/zero1966 [ -e "$MINDI_HOME/memdisk" ] && cp -f $MINDI_HOME/memdisk $mountpoint1967 if [ "$disksize" -gt "2880" ] && [ ! "$KERN_DISK_MADE" ] ; then1968 if [ "$ARCH" != "ia64" ] ; then1969 $LILO_EXE $LILO_OPTIONS -r $mountpoint >> $LOGFILE 2>> $LOGFILE1970 else1971 /bin/true1972 fi1973 elif [ ! "$KERN_DISK_MADE" ] ; then1970 rm -f $mountpoint/zero 1971 [ -e "$MINDI_HOME/memdisk" ] && cp -f $MINDI_HOME/memdisk $mountpoint 1972 if [ "$disksize" -gt "2880" ] && [ ! "$KERN_DISK_MADE" ] ; then 1973 if [ "$ARCH" != "ia64" ] ; then 1974 $LILO_EXE $LILO_OPTIONS -r $mountpoint >> $LOGFILE 2>> $LOGFILE 1975 else 1976 /bin/true 1977 fi 1978 elif [ ! "$KERN_DISK_MADE" ] ; then 1974 1979 # 12/28/2001 - if 1.72MB floppy then don't use LILO's optimizations at all 1975 1980 $LILO_EXE -r $mountpoint >> $LOGFILE 2>> $LOGFILE 1976 else1981 else 1977 1982 echo "Not running LILO. It's not that kind of disk." >> $LOGFILE 1978 fi1979 if [ $? -ne "0" ] ; then1983 fi 1984 if [ $? -ne "0" ] ; then 1980 1985 if [ "`cat $LOGFILE | fgrep "/tmp/dev.0"`" ] ; then 1981 LogIt "The '/tmp/dev.0' error is NOT Mindi's fault. It is LILO's.\n"1982 LogIt "Please reboot your PC as a workaround.\n"1983 Die "LILO sneezed and Mindi caught a cold. Please read the README / FAQ.\n"1986 LogIt "The '/tmp/dev.0' error is NOT Mindi's fault. It is LILO's.\n" 1987 LogIt "Please reboot your PC as a workaround.\n" 1988 Die "LILO sneezed and Mindi caught a cold. Please read the README / FAQ.\n" 1984 1989 fi 1985 1990 echo "$LILO_EXE -r $mountpoint ...failed." … … 1987 1992 LogIt "Cannot run lilo on $mountpoint\nPlease upgrade/downgrade your version of LILO. It has a bug.\n" 1988 1993 retval=$(($retval+1)) 1989 fi1990 cp -f $liloconf /tmp/lilo.conf1991 if [ "$ARCH" = "ia64" ] ; then1992 cp `dirname $kernelpath`/*.efi $mountpoint1993 fi1994 umount $mountpoint || Die "Cannot unmount mountpoint ($mountpoint)"1995 echo -en "..."1996 rmdir $mountpoint || LogIt "Cannot rmdir (PBDI)\n"1997 if [ "$retval" -eq "0" ] ; then1994 fi 1995 cp -f $liloconf /tmp/lilo.conf 1996 if [ "$ARCH" = "ia64" ] ; then 1997 cp `dirname $kernelpath`/*.efi $mountpoint 1998 fi 1999 umount $mountpoint || Die "Cannot unmount mountpoint ($mountpoint)" 2000 echo -en "..." 2001 rmdir $mountpoint || LogIt "Cannot rmdir (PBDI)\n" 2002 if [ "$retval" -eq "0" ] ; then 1998 2003 echo -en "...$DONE\r" 1999 2004 if [ "$KERN_DISK_MADE" ] && [ "$disksize" != "2880" ] ; then 2000 LogIt "... 1440KB boot+root disks were created OK\r"2001 else 2002 LogIt "... "$disksize"KB boot disk was created OK\r"2003 fi 2004 else2005 LogIt "... 1440KB boot+root disks were created OK\r" 2006 else 2007 LogIt "... "$disksize"KB boot disk was created OK\r" 2008 fi 2009 else 2005 2010 echo -en "...failed\r" 2006 2011 LogIt $disksize"KB boot disk was NOT created\r" 2007 2012 rm -f $imagefile 2008 fi2009 [ "$retval" -ne "0" ] && LogIt "PrepareBootDiskImage() is returning nonzero\n"2013 fi 2014 [ "$retval" -ne "0" ] && LogIt "PrepareBootDiskImage() is returning nonzero\n" 2010 2015 #0421#$imagesdir/mindi-boot.1440.img 2011 return $retval2016 return $retval 2012 2017 } 2013 2018 … … 2016 2021 2017 2022 PrepareBootDiskImage_SYSLINUX() { 2018 local disksize imagesdir dev imagefile mountpoint fname i kernelpath ramdisksize cfg_file testpath options retval outstr old_pwd ooo max_kernel_size bootimage2019 imagesdir=$12020 disksize=$22021 kernelpath=$32022 ramdisksize=$42023 do_boot_root_thingy=""2024 local retval old_pwd2025 retval=02026 [ ! -e "$kernelpath" ] && Die "PBDI - cannot find $kernelpath kernel"2027 echo -en "Making "$disksize"KB boot disk..."2028 TurnTgzIntoRdz $MINDI_HOME/rootfs $TMP_ROOT/mindi.rdz $ramdisksize $disksize `du -sk $kernelpath | cut -f1` || Die "Could not turn rootfs into mindi.rdz; are you SURE your kernel supports loopfs?"2029 [ "$disksize" != "1722" ] && [ "$disksize" != "2880" ] && [ "$disksize" != "5760" ] && Die "PDBI - disksize is $disksize - bad size"2030 echo -en "..."2031 imagefile=$imagesdir/mindi-bootroot.$disksize.img2032 mountpoint=$TMP_ROOT/mountpoint.$$2033 mkdir -p $mountpoint2023 local disksize imagesdir dev imagefile mountpoint fname i kernelpath ramdisksize cfg_file testpath options retval outstr old_pwd ooo max_kernel_size bootimage 2024 imagesdir=$1 2025 disksize=$2 2026 kernelpath=$3 2027 ramdisksize=$4 2028 do_boot_root_thingy="" 2029 local retval old_pwd 2030 retval=0 2031 [ ! -e "$kernelpath" ] && Die "PBDI - cannot find $kernelpath kernel" 2032 echo -en "Making "$disksize"KB boot disk..." 2033 TurnTgzIntoRdz $MINDI_HOME/rootfs $TMP_ROOT/mindi.rdz $ramdisksize $disksize `du -sk $kernelpath | cut -f1` || Die "Could not turn rootfs into mindi.rdz; are you SURE your kernel supports loopfs?" 2034 [ "$disksize" != "1722" ] && [ "$disksize" != "2880" ] && [ "$disksize" != "5760" ] && Die "PDBI - disksize is $disksize - bad size" 2035 echo -en "..." 2036 imagefile=$imagesdir/mindi-bootroot.$disksize.img 2037 mountpoint=$TMP_ROOT/mountpoint.$$ 2038 mkdir -p $mountpoint 2034 2039 # If I format a 1722KB data file & run syslinux on it, the resultant image 2035 2040 # won't boot. So, I have formatted a floppy, called syslinux on/to it, and … … 2038 2043 # image _is_ bootable. I don't know why syslinux and/or mkfs.vfat won't 2039 2044 # play nicely and I don't care. :) I have worked around the problem. -Hugo, 06/27/2002 2040 if [ "$disksize" = "1722" ] ; then2041 gzip -dc $MINDI_HOME/sys-disk.raw.gz > $imagefile || Die "Cannot dd blank file"2042 else2043 dd if=/dev/zero of=$imagefile bs=1k count=$disksize &> /dev/null || Die "Cannot dd blank file"2044 mkfs.vfat $imagefile2045 syslinux $imagefile2046 fi2047 mount -t vfat -o loop $imagefile $mountpoint || LogIt "Cannot mount (PBDI)\n\n"2045 if [ "$disksize" = "1722" ] ; then 2046 gzip -dc $MINDI_HOME/sys-disk.raw.gz > $imagefile || Die "Cannot dd blank file" 2047 else 2048 dd if=/dev/zero of=$imagefile bs=1k count=$disksize &> /dev/null || Die "Cannot dd blank file" 2049 mkfs.vfat $imagefile 2050 syslinux $imagefile 2051 fi 2052 mount -t vfat -o loop $imagefile $mountpoint || LogIt "Cannot mount (PBDI)\n\n" 2048 2053 # copy Mindi's skeleton fs & lilo/syslinux/whatever stuff into it 2049 old_pwd=`pwd`2050 MakeSyslinuxMessageFile $mountpoint/message.txt2051 cd $mountpoint2052 [ -e "$sys_cfg_file" ] || Die "Obi Wan, word up?"2054 old_pwd=`pwd` 2055 MakeSyslinuxMessageFile $mountpoint/message.txt 2056 cd $mountpoint 2057 [ -e "$sys_cfg_file" ] || Die "Obi Wan, word up?" 2053 2058 # tar -zxf $MINDI_HOME/dev.tgz || LogIt "Cannot untar dev.tgz\n" <--- present for LILO; is it nec. for SYSLINUX too? 2054 cat $sys_cfg_file | HackSyslinuxFile $ramdisk_size $mountpoint > syslinux.cfg || Die "Cannot copy syslinux.cfg from mindi_home to tmp_root"2055 if [ -e "$MONDO_TMP/start-nfs" ] ; then2059 cat $sys_cfg_file | HackSyslinuxFile $ramdisk_size $mountpoint > syslinux.cfg || Die "Cannot copy syslinux.cfg from mindi_home to tmp_root" 2060 if [ -e "$MONDO_TMP/start-nfs" ] ; then 2056 2061 mv syslinux.cfg syslinux.cfg.orig 2057 2062 cat syslinux.cfg.orig | sed s/interactive/iso/ > syslinux.cfg 2058 fi2059 cd $old_pwd2060 echo "Copying $TMP_ROOT/mindi.rdz to $mountpoint/initrd.img..." >> $LOGFILE2061 cp -f $TMP_ROOT/mindi.rdz $mountpoint/initrd.img 2>> $LOGFILE2062 if [ "$?" -ne "0" ] ; then2063 fi 2064 cd $old_pwd 2065 echo "Copying $TMP_ROOT/mindi.rdz to $mountpoint/initrd.img..." >> $LOGFILE 2066 cp -f $TMP_ROOT/mindi.rdz $mountpoint/initrd.img 2>> $LOGFILE 2067 if [ "$?" -ne "0" ] ; then 2063 2068 LogIt "Failed to copy $TMP_ROOT/mindi.rdz to $mountpoint\n" 2064 2069 cat $TMP_ROOT/mtpt.$$ >> $LOGFILE … … 2066 2071 rm -f $TMP_ROOT/mtpt.$$ 2067 2072 LogIt "Cannot incorporate mindi.rdz in bootdisk (kernel / modules too big?)" 2068 retval=$(($retval+1))2069 fi2070 2071 mkdir -p $mountpoint/tmp2072 cp -f $TMP_ROOT/mondo-restore.cfg $mountpoint/tmp &> /dev/null2073 retval=$(($retval+1)) 2074 fi 2075 2076 mkdir -p $mountpoint/tmp 2077 cp -f $TMP_ROOT/mondo-restore.cfg $mountpoint/tmp &> /dev/null 2073 2078 2074 2079 # copy the kernel across 2075 rm -Rf $mountpoint/lost+found2076 dd if=/dev/zero of=$mountpoint/zero bs=1k count=16 &> /dev/null2077 free_space=`df -k $mountpoint | tail -n1 | tr -s ' ' '\t' | cut -f4`2078 cp -f $kernelpath $mountpoint/vmlinuz &> /dev/null2079 if [ "$?" -ne "0" ] || [ "$FORCE_DUAL_FLOPPIES" = "yes" ] ; then2080 rm -Rf $mountpoint/lost+found 2081 dd if=/dev/zero of=$mountpoint/zero bs=1k count=16 &> /dev/null 2082 free_space=`df -k $mountpoint | tail -n1 | tr -s ' ' '\t' | cut -f4` 2083 cp -f $kernelpath $mountpoint/vmlinuz &> /dev/null 2084 if [ "$?" -ne "0" ] || [ "$FORCE_DUAL_FLOPPIES" = "yes" ] ; then 2080 2085 echo "Files at mountpoint ($mountpoint) :-" >> $LOGFILE 2081 2086 du -sk $mountpoint/* >> $LOGFILE … … 2083 2088 echo -en "Kernel size = `du -sk $kernelpath | cut -f1` K\nRamdisk free = $free_space K\n\ 2084 2089 Sorry, your kernel is too big for a boot/root floppy.\nI'll try the new boot/root two-disk thingy.\n" >> $LOGFILE 2085 rm -f $mountpoint/vmlinuz2090 rm -f $mountpoint/vmlinuz 2086 2091 cd $old_pwd 2087 umount $mountpoint || Die "Cannot unmount mountpoint ($mountpoint)"2088 rmdir $mountpoint || LogIt "Cannot rmdir (PBDI)\n"2092 umount $mountpoint || Die "Cannot unmount mountpoint ($mountpoint)" 2093 rmdir $mountpoint || LogIt "Cannot rmdir (PBDI)\n" 2089 2094 # losetup /dev/loop0 -d 2090 2095 2091 res=02092 write_full_floppy_of_kernel $kernelpath $imagesdir/mindi-boot.1440.img 14402093 res=$(($res+$?))2094 cp -f $TMP_ROOT/mindi.rdz $imagesdir/mindi-root.1440.img2095 res=$(($res+$?))2096 rm -f $imagefile2097 [ "$res" -ne "0" ] && LogIt "Warning - failed to create 1.44MB boot/root floppies"2098 return $res2099 fi2100 free_space=`df -k $mountpoint | tail -n1 | tr -s ' ' '\t' | cut -f4`2101 max_kernel_size=$(($free_space+`du -sk $kernelpath | cut -f1`))2102 echo "Free space left on floppy = $free_space KB" >> $LOGFILE2103 echo "Max kernel size on $disksize KB floppy (est'd) = $max_kernel_size K" >> $LOGFILE2096 res=0 2097 write_full_floppy_of_kernel $kernelpath $imagesdir/mindi-boot.1440.img 1440 2098 res=$(($res+$?)) 2099 cp -f $TMP_ROOT/mindi.rdz $imagesdir/mindi-root.1440.img 2100 res=$(($res+$?)) 2101 rm -f $imagefile 2102 [ "$res" -ne "0" ] && LogIt "Warning - failed to create 1.44MB boot/root floppies" 2103 return $res 2104 fi 2105 free_space=`df -k $mountpoint | tail -n1 | tr -s ' ' '\t' | cut -f4` 2106 max_kernel_size=$(($free_space+`du -sk $kernelpath | cut -f1`)) 2107 echo "Free space left on floppy = $free_space KB" >> $LOGFILE 2108 echo "Max kernel size on $disksize KB floppy (est'd) = $max_kernel_size K" >> $LOGFILE 2104 2109 # make it bootable 2105 rm -f $mountpoint/zero2106 mkdir -p $mountpoint/etc2107 [ -e "$MINDI_HOME/memdisk" ] && cp -f $MINDI_HOME/memdisk $mountpoint2108 umount $mountpoint || Die "Cannot unmount mountpoint ($mountpoint)"2109 echo -en "..."2110 rmdir $mountpoint || LogIt "Cannot rmdir (PBDI)\n"2111 2112 if [ "$retval" -eq "0" ] ; then2113 echo -en "...$DONE\r"2114 if [ "$KERN_DISK_MADE" ] ; then2115 rm -f $imagefile2116 LogIt "... 1440KB boot+root disks were created OK\r"2117 else2118 LogIt "... "$disksize"KB boot disk was created OK\r"2119 fi2120 else2110 rm -f $mountpoint/zero 2111 mkdir -p $mountpoint/etc 2112 [ -e "$MINDI_HOME/memdisk" ] && cp -f $MINDI_HOME/memdisk $mountpoint 2113 umount $mountpoint || Die "Cannot unmount mountpoint ($mountpoint)" 2114 echo -en "..." 2115 rmdir $mountpoint || LogIt "Cannot rmdir (PBDI)\n" 2116 2117 if [ "$retval" -eq "0" ] ; then 2118 echo -en "...$DONE\r" 2119 if [ "$KERN_DISK_MADE" ] ; then 2120 rm -f $imagefile 2121 LogIt "... 1440KB boot+root disks were created OK\r" 2122 else 2123 LogIt "... "$disksize"KB boot disk was created OK\r" 2124 fi 2125 else 2121 2126 echo -en "...failed\r" 2122 2127 LogIt $disksize"KB boot disk was NOT created\r" 2123 2128 rm -f $imagefile 2124 fi2125 [ "$retval" -ne "0" ] && LogIt "PrepareBootDiskImage() is returning nonzero\n"2126 return $retval2129 fi 2130 [ "$retval" -ne "0" ] && LogIt "PrepareBootDiskImage() is returning nonzero\n" 2131 return $retval 2127 2132 } 2128 2133 … … 2131 2136 2132 2137 PrepareDataDiskImages() { 2133 local needlist bigdir minidir_root tardir diskdir imagesdir res i j k old_pwd lines2134 2135 imagesdir=$12136 rm -f $imagesdir/mindi-*.img $imagesdir/[0-9]*.tar.gz $imagesdir/mindi.iso2137 needlist=$TMP_ROOT/what-we-need.txt2138 bigdir=$TMP_ROOT/bigdir2139 minidir_root=$TMP_ROOT/minidir2140 mkdir -p $minidir_root2141 mkdir -p $bigdir/usr/bin2142 tardir=$TMP_ROOT/tardir2143 2144 lines=`cat $MINDI_CONF/deplist.txt | grep -vx " *#.*" | grep -vx "" |wc -l`2145 cat $MINDI_CONF/deplist.txt | GenerateGiantDependencyList $needlist $lines2146 res=$?2147 if [ "$YOUR_KERNEL_SUCKS" ]; then2138 local needlist bigdir minidir_root tardir diskdir imagesdir res i j k old_pwd lines 2139 2140 imagesdir=$1 2141 rm -f $imagesdir/mindi-*.img $imagesdir/[0-9]*.tar.gz $imagesdir/mindi.iso 2142 needlist=$TMP_ROOT/what-we-need.txt 2143 bigdir=$TMP_ROOT/bigdir 2144 minidir_root=$TMP_ROOT/minidir 2145 mkdir -p $minidir_root 2146 mkdir -p $bigdir/usr/bin 2147 tardir=$TMP_ROOT/tardir 2148 2149 lines=`cat $MINDI_CONF/deplist.txt | grep -vx " *#.*" | grep -vx "" |wc -l` 2150 cat $MINDI_CONF/deplist.txt | GenerateGiantDependencyList $needlist $lines 2151 res=$? 2152 if [ "$YOUR_KERNEL_SUCKS" ]; then 2148 2153 pwd=`pwd` 2149 2154 cd $TMP_ROOT 2150 for i in `ListKernelModulePaths | HackPathsToFailsafe` ; do2151 cp --parents -pRdf ./$i $bigdir || Die "PDDI can't cp $i->$bigdir"2152 if [ "`du -sk $i | cut -f1`" -lt "$(($CHOPSIZE*2))" ] ; then2155 for i in `ListKernelModulePaths | HackPathsToFailsafe` ; do 2156 cp --parents -pRdf ./$i $bigdir || Die "PDDI can't cp $i->$bigdir" 2157 if [ "`du -sk $i | cut -f1`" -lt "$(($CHOPSIZE*2))" ] ; then 2153 2158 cp --parents -pRdf $i $bigdir 2154 else2159 else 2155 2160 ChopUpAndCopyFile $i $bigdir $CHOPSIZE $BIGNO 2156 2161 BIGNO=$(($BIGNO+1)) 2157 fi2162 fi 2158 2163 done 2159 2164 for i in $EXTRA_MODS ; do 2160 j=`find lib/modules/$FAILSAFE_KVER -name $i.*o 2> /dev/null`2161 [ ! "$j" ] && echo "Warning - cannot find failsafe module $i.o" >> $LOGFILE2162 for k in $j ; do2165 j=`find lib/modules/$FAILSAFE_KVER -name $i.*o 2> /dev/null` 2166 [ ! "$j" ] && echo "Warning - cannot find failsafe module $i.o" >> $LOGFILE 2167 for k in $j ; do 2163 2168 if [ "`du -sk $k | cut -f1`" -lt "$CHOPSIZE" ] ; then 2164 2169 cp --parents -pRdf $k $bigdir … … 2168 2173 fi 2169 2174 echo "Added failsafe module $k to ramdisk" >> $LOGFILE 2170 done2175 done 2171 2176 done 2172 2177 cd $pwd 2173 else2178 else 2174 2179 ListKernelModulePaths >> $needlist 2175 fi 2176 if [ "$res" -ne "0" ] ; then 2177 rm -f /tmp/mindi-needlist.txt 2178 Die "You have $res file`PluralOrNot $res` present in dependency list\nbut absent from filesystem." 2179 fi 2180 FindAndAddUserKeyboardMappingFile 2181 mkdir -p $bigdir/tmp 2182 if [ "`DidMondoCallMe`" ] ; then 2183 MakeMondoConfigFile $TMP_ROOT/mondo-restore.cfg 2184 cp -f $TMP_ROOT/mondo-restore.cfg $bigdir/tmp &> /dev/null 2185 cp -f $TMP_ROOT/mondo-restore.cfg $CACHE_LOC &> /dev/null 2186 fi 2187 [ -d "/mnt/.boot.d" ] && echo "Oh Jebus" > $bigdir/tmp/DUMBASS-GENTOO 2188 DropOptimizedLibraries $needlist $bigdir 2189 echo -en "Assembling dependency files" 2190 CopyDependenciesToDirectory < $needlist $bigdir 2180 fi 2181 if [ "$res" -ne "0" ] ; then 2182 Die "You have $res file`PluralOrNot $res` present in dependency list\nbut absent from filesystem." 2183 fi 2184 FindAndAddUserKeyboardMappingFile 2185 mkdir -p $bigdir/tmp 2186 if [ "`DidMondoCallMe`" ] ; then 2187 MakeMondoConfigFile $TMP_ROOT/mondo-restore.cfg 2188 cp -f $TMP_ROOT/mondo-restore.cfg $bigdir/tmp &> /dev/null 2189 cp -f $TMP_ROOT/mondo-restore.cfg $CACHE_LOC &> /dev/null 2190 fi 2191 [ -d "/mnt/.boot.d" ] && echo "Oh Jebus" > $bigdir/tmp/DUMBASS-GENTOO 2192 DropOptimizedLibraries $needlist $bigdir 2193 echo -en "Assembling dependency files" 2194 CopyDependenciesToDirectory < $needlist $bigdir 2191 2195 2192 2196 # also copy io.sys and msdos.sys, if we can find them 2193 for i in `mount | cut -d' ' -f3` ; do2197 for i in `mount | cut -d' ' -f3` ; do 2194 2198 for j in io.sys msdos.sys ; do 2195 [ -e "$i/$j" ] && cp -f $i/$j $bigdir2196 done 2197 done2199 [ -e "$i/$j" ] && cp -f $i/$j $bigdir 2200 done 2201 done 2198 2202 2199 2203 # master boot record, too 2200 i=`cat $MONDO_TMP/BOOTLOADER.DEVICE 2> /dev/null`2201 if [ "$i" ] ; then2204 i=`cat $MONDO_TMP/BOOTLOADER.DEVICE 2> /dev/null` 2205 if [ "$i" ] ; then 2202 2206 LogIt "Backing up $i's MBR" 2203 2207 dd if=$i of=$bigdir/BOOTLOADER.MBR bs=446 count=1 >> $LOGFILE 2>> $LOGFILE … … 2211 2215 mkdir -p $bigdir/dev 2212 2216 cp -pRdf $j $bigdir/dev/boot_device || Die "Unable to create /dev/boot_device on ramdisk" 2213 fi2217 fi 2214 2218 2215 2219 # more stuff 2216 2220 # cp -f $MINDI_HOME/embleer* $bigdir 2217 old_pwd=`pwd`2218 cd $bigdir2219 2220 [ -e "$MINDI_HOME/aux-tools" ] || Die "aux-tools not found in Mindi's home dir. Do you have multiple copies of Mindi lying around? Please delete them. No, don't e-mail me and ask how. ;) Use 'rm'."2221 cp -Rdf $MINDI_HOME/aux-tools/* . 2>> $LOGFILE || LogIt "Warning - error occurred while unzipping aux-tools\n"2222 if [ -e "$MINDI_HOME/x11-tools.tgz" ] ; then2221 old_pwd=`pwd` 2222 cd $bigdir 2223 2224 [ -e "$MINDI_HOME/aux-tools" ] || Die "aux-tools not found in Mindi's home dir. Do you have multiple copies of Mindi lying around? Please delete them. No, don't e-mail me and ask how. ;) Use 'rm'." 2225 cp -Rdf $MINDI_HOME/aux-tools/* . 2>> $LOGFILE || LogIt "Warning - error occurred while unzipping aux-tools\n" 2226 if [ -e "$MINDI_HOME/x11-tools.tgz" ] ; then 2223 2227 tar -zxf $MINDI_HOME/x11-tools.tgz 2>> $LOGFILE || LogIt "Warning - error occurred while unzipping x11-tools.tgz\n" 2224 fi2225 if [ -e "$MONDO_HOME/restore-scripts" ] ; then2226 cp -Rdf $MONDO_HOME/restore-scripts/* . 2>> $LOGFILE2227 [ "$?" -ne "0" ] && [ "`DidMondoCallMe`" ] && Die "Cannot find/install $MINDI_HOME/restore-scripts"2228 fi2229 [ -d "/lib/dev-state" ] && cp --parents -pRdf /lib/dev-state .2230 cd $old_pwd2231 echo -e "$DONE"2232 TOTAL_BIGDIR_SIZE=`du -sk $bigdir | cut -f1`2233 SplitDirectoryIntoMinidirs $bigdir $minidir_root2234 noof_disks=$?2235 [ "$noof_disks" -eq "0" ] && Die "Too much stuff!"2228 fi 2229 if [ -e "$MONDO_HOME/restore-scripts" ] ; then 2230 cp -Rdf $MONDO_HOME/restore-scripts/* . 2>> $LOGFILE 2231 [ "$?" -ne "0" ] && [ "`DidMondoCallMe`" ] && Die "Cannot find/install $MINDI_HOME/restore-scripts" 2232 fi 2233 [ -d "/lib/dev-state" ] && cp --parents -pRdf /lib/dev-state . 2234 cd $old_pwd 2235 echo -e "$DONE" 2236 TOTAL_BIGDIR_SIZE=`du -sk $bigdir | cut -f1` 2237 SplitDirectoryIntoMinidirs $bigdir $minidir_root 2238 noof_disks=$? 2239 [ "$noof_disks" -eq "0" ] && Die "Too much stuff!" 2236 2240 # if [ "$noof_disks" -ge "8" ] ; then 2237 2241 # LogIt "You are putting a ludicrously large amount of data on these disks." … … 2239 2243 # EXTRA_SPACE=$(($EXTRA_SPACE*2)) 2240 2244 # fi 2241 MakeMountlist $TMP_ROOT/mountlist.txt2242 mkdir -p $minidir_root/$noof_disks/tmp2243 cp -f $TMP_ROOT/mountlist.txt $minidir_root/$noof_disks/tmp/mountlist.txt || Die "Cannot copy mountlist.txt from $TMP_ROOT to data disk"2244 cp -f $TMP_ROOT/mountlist.txt $CACHE_LOC2245 [ "`DidMondoCallMe`" ] && cp -f $minidir_root/$noof_disks/tmp/mountlist.txt $MONDO_TMP/.2246 [ -d "/proc/lvm" ] && $MINDI_HOME/analyze-my-lvm > $minidir_root/$noof_disks/tmp/i-want-my-lvm2247 [ -d "/dev/mapper" ] && $MINDI_HOME/analyze-my-lvm > $minidir_root/$noof_disks/tmp/i-want-my-lvm2248 cat $minidir_root/$noof_disks/tmp/mountlist.txt >> $LOGFILE2249 ZipMinidirsIntoTarballs $minidir_root $tardir $noof_disks2250 CreateDataDiskImagesFromTarballs $tardir $imagesdir $noof_disks2251 FRIENDLY_OUTSTRING="Boot and data disk images were created."2245 MakeMountlist $TMP_ROOT/mountlist.txt 2246 mkdir -p $minidir_root/$noof_disks/tmp 2247 cp -f $TMP_ROOT/mountlist.txt $minidir_root/$noof_disks/tmp/mountlist.txt || Die "Cannot copy mountlist.txt from $TMP_ROOT to data disk" 2248 cp -f $TMP_ROOT/mountlist.txt $CACHE_LOC 2249 [ "`DidMondoCallMe`" ] && cp -f $minidir_root/$noof_disks/tmp/mountlist.txt $MONDO_TMP/. 2250 [ -d "/proc/lvm" ] && $MINDI_HOME/analyze-my-lvm > $minidir_root/$noof_disks/tmp/i-want-my-lvm 2251 [ -d "/dev/mapper" ] && $MINDI_HOME/analyze-my-lvm > $minidir_root/$noof_disks/tmp/i-want-my-lvm 2252 cat $minidir_root/$noof_disks/tmp/mountlist.txt >> $LOGFILE 2253 ZipMinidirsIntoTarballs $minidir_root $tardir $noof_disks 2254 CreateDataDiskImagesFromTarballs $tardir $imagesdir $noof_disks 2255 FRIENDLY_OUTSTRING="Boot and data disk images were created." 2252 2256 # One 1.72MB boot disk, one 2.88MB boot disk and $noof_disks data disk images 2253 rmdir $tardir $bigdir2254 rm -f $needlist2255 return $noof_disks2257 rmdir $tardir $bigdir 2258 rm -f $needlist 2259 return $noof_disks 2256 2260 } 2257 2261 2258 2262 2259 2263 ProcessLDD() { 2260 local main_fname incoming j i fname f newf2261 main_fname=$12262 read incoming2263 while [ "$incoming" != "" ] ; do2264 incoming=`echo "$incoming" | sed '/[[:blank:]]*.*[[:blank:]]*=>[[:blank:]]*(.*/d ; s/[[:blank:]]*\(.*\)[[:blank:]]*=>[[:blank:]]*\/.*/\1/ ; s/[[:blank:]]*\(\/.*\)[[:blank:]]*(.*/\1/'`2265 for fname in `echo "$incoming"` ; do2266 fname=`LocateFile $fname`2267 for f in $fname ; do2268 [ -e "$f" ] && echo $f2269 done2270 done2271 read incoming2272 done2264 local main_fname incoming j i fname f newf 2265 main_fname=$1 2266 read incoming 2267 while [ "$incoming" != "" ] ; do 2268 incoming=`echo "$incoming" | sed '/[[:blank:]]*.*[[:blank:]]*=>[[:blank:]]*(.*/d ; s/[[:blank:]]*\(.*\)[[:blank:]]*=>[[:blank:]]*\/.*/\1/ ; s/[[:blank:]]*\(\/.*\)[[:blank:]]*(.*/\1/'` 2269 for fname in `echo "$incoming"` ; do 2270 fname=`LocateFile $fname` 2271 for f in $fname ; do 2272 [ -e "$f" ] && echo $f 2273 done 2274 done 2275 read incoming 2276 done 2273 2277 } 2274 2278 … … 2276 2280 2277 2281 Prompt() { 2278 echo -en "$1"2279 read line2282 echo -en "$1" 2283 read line 2280 2284 } 2281 2285 … … 2283 2287 2284 2288 ReadLine() { 2285 local i incoming2286 read incoming2287 i=02288 while [ "$i" -le "32" ] && [ "$incoming" = "" ] ; do2289 local i incoming 2290 read incoming 2291 i=0 2292 while [ "$i" -le "32" ] && [ "$incoming" = "" ] ; do 2289 2293 i=$(($i+1)) 2290 2294 read incoming 2291 done2292 echo "$incoming"2295 done 2296 echo "$incoming" 2293 2297 } 2294 2298 … … 2296 2300 2297 2301 RejigHyperlinks() { 2298 local minidir_root noof_disks fname path diskno old_pwd awk_loc gawk_loc dir i2299 minidir_root=$12300 noof_disks=$22301 2302 old_pwd=`pwd`2303 diskno=12304 while [ "$diskno" -le "$noof_disks" ] ; do2302 local minidir_root noof_disks fname path diskno old_pwd awk_loc gawk_loc dir i 2303 minidir_root=$1 2304 noof_disks=$2 2305 2306 old_pwd=`pwd` 2307 diskno=1 2308 while [ "$diskno" -le "$noof_disks" ] ; do 2305 2309 mkdir -p $minidir_root/$diskno 2306 cd $minidir_root/$diskno2307 for fname in `find -type d -o -print` ; do2308 [ -h "$minidir_root/$diskno/$fname" ] && MoveHyperlinkSensibly $fname $minidir_root $diskno $noof_disks2309 done2310 cd $minidir_root/$diskno 2311 for fname in `find -type d -o -print` ; do 2312 [ -h "$minidir_root/$diskno/$fname" ] && MoveHyperlinkSensibly $fname $minidir_root $diskno $noof_disks 2313 done 2310 2314 diskno=$(($diskno+1)) 2311 done2312 2313 2314 cd $old_pwd2315 return2315 done 2316 2317 2318 cd $old_pwd 2319 return 2316 2320 2317 2321 2318 2322 2319 2323 # do some awk/gawk stuff 2320 cd $minidir_root2321 awk_loc=`find -name awk`2322 gawk_loc=`find -name gawk`2323 if [ "$awk_loc" = "" ] && [ "$gawk_loc" != "" ] ; then2324 for i in $gawk_loc ; do HackAwk $i gawk ; done2325 elif [ "$gawk_loc" = "" ] && [ "$awk_loc" != "" ] ; then2326 for i in $awk_loc ; do HackAwk $i awk ; done2327 elif [ "$gawk_loc" != "" ] && [ "$awk_loc" != "" ] ; then2328 echo -en "Gawk/awk found. Good.\r"2329 else2330 Die "Look, I don't want to come across as having an attitude, but you need either awk or gawk. Get a distro that doesn't suck, okay? :-)"2331 fi2332 cd $old_pwd2324 cd $minidir_root 2325 awk_loc=`find -name awk` 2326 gawk_loc=`find -name gawk` 2327 if [ "$awk_loc" = "" ] && [ "$gawk_loc" != "" ] ; then 2328 for i in $gawk_loc ; do HackAwk $i gawk ; done 2329 elif [ "$gawk_loc" = "" ] && [ "$awk_loc" != "" ] ; then 2330 for i in $awk_loc ; do HackAwk $i awk ; done 2331 elif [ "$gawk_loc" != "" ] && [ "$awk_loc" != "" ] ; then 2332 echo -en "Gawk/awk found. Good.\r" 2333 else 2334 Die "Look, I don't want to come across as having an attitude, but you need either awk or gawk. Get a distro that doesn't suck, okay? :-)" 2335 fi 2336 cd $old_pwd 2333 2337 } 2334 2338 … … 2337 2341 EliminateRelatives() { 2338 2342 # eliminate /../../..... from path string 2339 local orig i old_i newo2340 newo=$12341 while [ "`echo "$newo" | grep "\.\."`" ] ; do2342 orig="`echo "$newo" | tr -s '/' '/'`"2343 local orig i old_i newo 2344 newo=$1 2345 while [ "`echo "$newo" | grep "\.\."`" ] ; do 2346 orig="`echo "$newo" | tr -s '/' '/'`" 2343 2347 # echo "orig=$orig" 2344 newo="/"2345 old_i=""2346 for i in `echo "$orig" | tr '/' ' '` ; do2347 if [ ! "$old_i" ] ; then2348 old_i=$i2349 continue2350 fi2351 if [ "$old_i" ] && [ "$i" = ".." ] ; then2352 if [ "$old_i" = ".." ] ; then2353 newo="$newo"$old_i/2348 newo="/" 2349 old_i="" 2350 for i in `echo "$orig" | tr '/' ' '` ; do 2351 if [ ! "$old_i" ] ; then 2352 old_i=$i 2353 continue 2354 fi 2355 if [ "$old_i" ] && [ "$i" = ".." ] ; then 2356 if [ "$old_i" = ".." ] ; then 2357 newo="$newo"$old_i/ 2354 2358 # echo "two --- $old_i $i" 2355 old_i="$i"2356 continue2359 old_i="$i" 2360 continue 2357 2361 # else 2358 2362 # echo "swallowing ($old_i $i)" 2359 fi2360 elif [ "$old_i" != ".." ] ; then2361 newo="$newo"$old_i/2362 fi2363 old_i=$i2364 done2365 newo="$newo"$i2366 done2367 echo "$newo"2363 fi 2364 elif [ "$old_i" != ".." ] ; then 2365 newo="$newo"$old_i/ 2366 fi 2367 old_i=$i 2368 done 2369 newo="$newo"$i 2370 done 2371 echo "$newo" 2368 2372 } 2369 2373 2370 2374 2371 2375 WhatSoftlinkPointsTo() { 2372 local orig new resolved2373 orig=$12374 new=`ls -l $orig | tr -s ' ' '\t' | $AWK '{printf $NF;}'`2375 if [ "`echo "$new" | cut -d'/' -f1`" ] ; then2376 resolved=`dirname $orig`/$new2377 else2378 resolved=$new2379 fi2380 EliminateRelatives $resolved2376 local orig new resolved 2377 orig=$1 2378 new=`ls -l $orig | tr -s ' ' '\t' | $AWK '{printf $NF;}'` 2379 if [ "`echo "$new" | cut -d'/' -f1`" ] ; then 2380 resolved=`dirname $orig`/$new 2381 else 2382 resolved=$new 2383 fi 2384 EliminateRelatives $resolved 2381 2385 } 2382 2386 … … 2386 2390 2387 2391 ReplaceIndividualLine() { 2388 local orig_file new_file lino newstring lines_total lines_remaining2389 orig_file=$1.orig2390 mv -f $1 $orig_file || Die "Cannot move $1 to $orig_file"2391 new_file=$12392 lino=$22393 newstring="$3"2394 if [ "$lino" = "" ] || [ "$lino" -lt "1" ] ; then2392 local orig_file new_file lino newstring lines_total lines_remaining 2393 orig_file=$1.orig 2394 mv -f $1 $orig_file || Die "Cannot move $1 to $orig_file" 2395 new_file=$1 2396 lino=$2 2397 newstring="$3" 2398 if [ "$lino" = "" ] || [ "$lino" -lt "1" ] ; then 2395 2399 echo "Can't find string" >> $LOGFILE 2396 2400 return 1 2397 fi2398 lines_total=`wc -l $orig_file | gawk '{print $1;}'`2399 lines_remaining=$(($lines_total-$lino))2400 head -n$(($lino-1)) $orig_file > $new_file2401 echo "$newstring" >> $new_file2402 echo "# The above line was added by Mindi, at the user's instruction" >> $new_file2403 tail -n$lines_remaining $orig_file >> $new_file2404 echo "Replace line $lino of $new_file with user-specified line, '$newstring'" >> $LOGFILE2401 fi 2402 lines_total=`wc -l $orig_file | gawk '{print $1;}'` 2403 lines_remaining=$(($lines_total-$lino)) 2404 head -n$(($lino-1)) $orig_file > $new_file 2405 echo "$newstring" >> $new_file 2406 echo "# The above line was added by Mindi, at the user's instruction" >> $new_file 2407 tail -n$lines_remaining $orig_file >> $new_file 2408 echo "Replace line $lino of $new_file with user-specified line, '$newstring'" >> $LOGFILE 2405 2409 # cp -f $new_file /tmp/init.new 2406 [ -x "$orig_file" ] && chmod +x $new_file2407 rm -f $orig_file2408 return 02410 [ -x "$orig_file" ] && chmod +x $new_file 2411 rm -f $orig_file 2412 return 0 2409 2413 } 2410 2414 … … 2413 2417 2414 2418 ResolveSoftlink() { 2415 local resolved new2416 resolved=$12417 while [ -h "$resolved" ] ; do2418 resolved=`WhatSoftlinkPointsTo $resolved`2419 done2420 echo "$resolved"2419 local resolved new 2420 resolved=$1 2421 while [ -h "$resolved" ] ; do 2422 resolved=`WhatSoftlinkPointsTo $resolved` 2423 done 2424 echo "$resolved" 2421 2425 } 2422 2426 … … 2428 2432 2429 2433 for i in /dev/st0 /dev/ht0 /dev/cdrom /dev/cdrom0 /dev/cdrom 1 ; do 2430 dd if=$i of=/dev/null bs=64k count=1 &> /dev/null2434 dd if=$i of=/dev/null bs=64k count=1 &> /dev/null 2431 2435 done 2432 2436 } … … 2435 2439 2436 2440 SizeOfPartition() { 2437 local devpath drive res stub2438 device=$12439 if [ "`echo "$device" | fgrep "/dev/md"`" != "" ] ; then2441 local devpath drive res stub 2442 device=$1 2443 if [ "`echo "$device" | fgrep "/dev/md"`" != "" ] ; then 2440 2444 res=`SizeOfRaidPartition $device` 2441 2445 [ "$res" = "" ] && Die "Cannot find $device's size - is your /etc/raidtab sane?" 2442 2446 echo "$res" 2443 2447 return 0 2444 fi2448 fi 2445 2449 # res=`$FDISK -l 2>> $LOGFILE | grep -w "$device" | head -n1 | sort -u | tr '*' ' ' | tr -s '\t' '|' | tr -s ' ' ' ' | cut -d' ' -f4 | sed s/+// | sed s/-//` 2446 2450 # patch from Bill <bill@iwizard.biz> - 2003/08/25 2447 res=`$FDISK -s $device`2448 echo "------- $FDISK -l log ------------" >> $LOGFILE2449 cat $FDISKLOG >> $LOGFILE2450 echo "------- $FDISK log end ------------" >> $LOGFILE2451 res=`$FDISK -s $device` 2452 echo "------- $FDISK -l log ------------" >> $LOGFILE 2453 cat $FDISKLOG >> $LOGFILE 2454 echo "------- $FDISK log end ------------" >> $LOGFILE 2451 2455 # end patch 2452 [ "$res" = "" ] && res=`df -k -x supermount | tr -s '\t' ' ' | fgrep "$device " | cut -d' ' -f2`2453 [ "$res" = "" ] && res="-1"2454 echo $res2455 return 02456 [ "$res" = "" ] && res=`df -k -x supermount | tr -s '\t' ' ' | fgrep "$device " | cut -d' ' -f2` 2457 [ "$res" = "" ] && res="-1" 2458 echo $res 2459 return 0 2456 2460 } 2457 2461 2458 2462 2459 2463 SizeOfRaidPartition() { 2460 local real_dev smallest_size silly tmp2461 2462 silly=9999999992463 smallest_size=$silly2464 2465 for real_dev in `GetRaidDevMembers $1` ; do2464 local real_dev smallest_size silly tmp 2465 2466 silly=999999999 2467 smallest_size=$silly 2468 2469 for real_dev in `GetRaidDevMembers $1` ; do 2466 2470 tmp=`SizeOfPartition $real_dev` 2467 2471 [ "$tmp" -lt "$smallest_size" ] && smallest_size=$tmp 2468 done2469 2470 if [ "$smallest_size" = "$silly" ] ; then2472 done 2473 2474 if [ "$smallest_size" = "$silly" ] ; then 2471 2475 echo "-1" 2472 2476 return 1 2473 else2477 else 2474 2478 echo "$smallest_size" 2475 2479 return 0 2476 fi2480 fi 2477 2481 } 2478 2482 … … 2484 2488 StripComments() 2485 2489 { 2486 local tempfile2487 tempfile=$TMP_ROOT/$$.strip.txt2488 cp -f $1 $tempfile2489 cat $tempfile | $AWK '{if (substr($0,0,1)!="#" || substr($0,0,3)=="#!/") {print $0;};}' > $12490 rm -f $tempfile2491 echo "Stripped comments from $2" >> $LOGFILE2490 local tempfile 2491 tempfile=$TMP_ROOT/$$.strip.txt 2492 cp -f $1 $tempfile 2493 cat $tempfile | $AWK '{if (substr($0,0,1)!="#" || substr($0,0,3)=="#!/") {print $0;};}' > $1 2494 rm -f $tempfile 2495 echo "Stripped comments from $2" >> $LOGFILE 2492 2496 } 2493 2497 … … 2498 2502 2499 2503 SplitDirectoryIntoMinidirs() { 2500 local bigdir minidir_root i noof_disks old_pwd res2501 bigdir=$12502 minidir_root=$22503 rm -Rf $minidir_root/*2504 2505 TryToFitDataIntoSeveralDirs $bigdir $minidir_root2506 noof_disks=$?2507 if [ "$noof_disks" -eq "0" ] ; then2504 local bigdir minidir_root i noof_disks old_pwd res 2505 bigdir=$1 2506 minidir_root=$2 2507 rm -Rf $minidir_root/* 2508 2509 TryToFitDataIntoSeveralDirs $bigdir $minidir_root 2510 noof_disks=$? 2511 if [ "$noof_disks" -eq "0" ] ; then 2508 2512 echo "Failed to fit data into several dirs." 2509 return 02510 fi2511 RejigHyperlinks $minidir_root $noof_disks2512 rm -Rf $bigdir/*2513 return 0 2514 fi 2515 RejigHyperlinks $minidir_root $noof_disks 2516 rm -Rf $bigdir/* 2513 2517 return $noof_disks 2514 2518 } … … 2518 2522 StripExecutable() 2519 2523 { 2520 local tmpfile2521 tmpfile=$TMP_ROOT/stripped.$$.dat2522 [ -d "$1" ] || [ -h "$1" ] && return2523 cp -f $1 $tmpfile2524 strip $tmpfile 2> /dev/null2525 if [ "$?" -eq "0" ] ; then2524 local tmpfile 2525 tmpfile=$TMP_ROOT/stripped.$$.dat 2526 [ -d "$1" ] || [ -h "$1" ] && return 2527 cp -f $1 $tmpfile 2528 strip $tmpfile 2> /dev/null 2529 if [ "$?" -eq "0" ] ; then 2526 2530 cp -f $tmpfile $1 2527 2531 echo "Stripped binary $2" >> $LOGFILE 2528 fi2529 rm -f $tmpfile2532 fi 2533 rm -f $tmpfile 2530 2534 } 2531 2535 2532 2536 2533 2537 TemporarilyCompressAllFiles() { 2534 local i orig_fname out_fname out_list2535 2536 i=02537 out_list=$2/compressed/compressed.txt2538 mkdir -p $2/compressed2539 > $out_list2540 for orig_fname in $1 ; do2541 out_fname=$2/compressed/$orig_fname.gz2542 mkdir -p $out_fname 2> /dev/null2543 rmdir $out_fname 2> /dev/null2544 gzip -c6 $orig_fname > $out_fname 2> /dev/null2545 i=$(((($i+1))%15))2546 [ "$i" -eq "0" ] && echo -en "."2547 du -sk $out_fname >> $out_list2548 done2538 local i orig_fname out_fname out_list 2539 2540 i=0 2541 out_list=$2/compressed/compressed.txt 2542 mkdir -p $2/compressed 2543 > $out_list 2544 for orig_fname in $1 ; do 2545 out_fname=$2/compressed/$orig_fname.gz 2546 mkdir -p $out_fname 2> /dev/null 2547 rmdir $out_fname 2> /dev/null 2548 gzip -c6 $orig_fname > $out_fname 2> /dev/null 2549 i=$(((($i+1))%15)) 2550 [ "$i" -eq "0" ] && echo -en "." 2551 du -sk $out_fname >> $out_list 2552 done 2549 2553 } 2550 2554 … … 2552 2556 2553 2557 TryToFindKernelPath() { 2554 local fname incoming res fkern_ver we_want_version possible_kernels noof_kernels kernelpath kdate duff_kernels2555 we_want_version=`uname -r`2556 possible_kernels=""2557 duff_kernels=""2558 local fname incoming res fkern_ver we_want_version possible_kernels noof_kernels kernelpath kdate duff_kernels 2559 we_want_version=`uname -r` 2560 possible_kernels="" 2561 duff_kernels="" 2558 2562 2559 if [ "$ARCH" = "ia64" ] ; then2560 root="/boot/efi/efi"2561 else2562 root="/"2563 fi2564 for fname in `find $root -maxdepth 2 -type f | fgrep lin | fgrep -v /proc/` ; do2563 if [ "$ARCH" = "ia64" ] ; then 2564 root="/boot/efi/efi" 2565 else 2566 root="/" 2567 fi 2568 for fname in `find $root -maxdepth 2 -type f | fgrep lin | fgrep -v /proc/` ; do 2565 2569 [ ! -e "$fname" ] && continue 2566 [ "$fname" = "/boot/vmlinuz.shipped" ] && [ -f "/boot/vmlinuz" ] && continue; # ignore SuSE's extra kernel2570 [ "$fname" = "/boot/vmlinuz.shipped" ] && [ -f "/boot/vmlinuz" ] && continue; # ignore SuSE's extra kernel 2567 2571 file $fname | grep -q gzip 2568 2572 if [ "$?" -eq "0" ] ; then 2569 # Used by ia642570 fkern_ver=`gzip -cd $fname | strings 2> /dev/null | grep "[2-9]+*[.][0-9]+*[.][0-9]+*[^\@]*@"`2571 else 2572 fkern_ver=`strings $fname 2> /dev/null | grep "[2-9]+*[.][0-9]+*[.][0-9]+*[^\@]*@"`2573 fi 2574 [ "$fkern_ver" = "" ] && continue2573 # Used by ia64 2574 fkern_ver=`gzip -cd $fname | strings 2> /dev/null | grep "[2-9]+*[.][0-9]+*[.][0-9]+*[^\@]*@"` 2575 else 2576 fkern_ver=`strings $fname 2> /dev/null | grep "[2-9]+*[.][0-9]+*[.][0-9]+*[^\@]*@"` 2577 fi 2578 [ "$fkern_ver" = "" ] && continue 2575 2579 # echo "$fname --> $fkern_ver (but we want $we_want_version)" >> /dev/stderr 2576 [ "`echo "$fkern_ver" |fgrep "$we_want_version "`" = "" ] && continue2580 [ "`echo "$fkern_ver" |fgrep "$we_want_version "`" = "" ] && continue 2577 2581 [ -f "$fname" ] || continue 2578 2582 [ -h "$fname" ] && continue … … 2580 2584 file $fname | grep -q gzip 2581 2585 if [ "$?" -eq "0" ] ; then 2582 # Used by ia642583 if [ "`gzip -cd $fname | strings 2> /dev/null | fgrep "$kdate"`" = "" ] ; then2584 LogIt "Have you recompiled your kernel \"$fname\" w/o rebooting? Naughty but I'll allow it...\n"2585 duff_kernels="$fname $duff_kernels"2586 else2587 [ "`echo "$fname" | fgrep "vmlinux"`" ] && continue2588 possible_kernels="$fname $possible_kernels"2589 fi2590 else 2591 if [ "`strings $fname 2> /dev/null | fgrep "$kdate"`" = "" ] ; then2592 LogIt "Have you recompiled your kernel \"$fname\" w/o rebooting? Naughty but I'll allow it...\n"2593 duff_kernels="$fname $duff_kernels"2594 else2595 [ "`echo "$fname" | fgrep "vmlinux"`" ] && continue2596 possible_kernels="$fname $possible_kernels"2597 fi2598 fi2599 done2600 if [ ! "$possible_kernels" ] && uname -a | grep Knoppix > /dev/null ; then2586 # Used by ia64 2587 if [ "`gzip -cd $fname | strings 2> /dev/null | fgrep "$kdate"`" = "" ] ; then 2588 LogIt "Have you recompiled your kernel \"$fname\" w/o rebooting? Naughty but I'll allow it...\n" 2589 duff_kernels="$fname $duff_kernels" 2590 else 2591 [ "`echo "$fname" | fgrep "vmlinux"`" ] && continue 2592 possible_kernels="$fname $possible_kernels" 2593 fi 2594 else 2595 if [ "`strings $fname 2> /dev/null | fgrep "$kdate"`" = "" ] ; then 2596 LogIt "Have you recompiled your kernel \"$fname\" w/o rebooting? Naughty but I'll allow it...\n" 2597 duff_kernels="$fname $duff_kernels" 2598 else 2599 [ "`echo "$fname" | fgrep "vmlinux"`" ] && continue 2600 possible_kernels="$fname $possible_kernels" 2601 fi 2602 fi 2603 done 2604 if [ ! "$possible_kernels" ] && uname -a | grep Knoppix > /dev/null ; then 2601 2605 possible_kernels=`find /boot/vmlinuz-2.* | tail -n1` 2602 fi2603 if [ ! "$possible_kernels" ] ; then2604 LogIt "No kernel matches exactly. Are there any duff kernels?"2605 possible_kernels="$duff_kernels"2606 if [ ! "$possible_kernels" ] ; then2607 LogIt "Sorry, no duff kernels either"2608 else2609 LogIt "I bet you're running Debian or Gentoo, aren't you?"2610 LogIt "Your kernel doesn't have a sane builddate. Oh well..."2611 fi2612 fi2613 possible_kernels=`echo "$possible_kernels" | tr -s ' ' '\n' | sort | uniq | tr '\n' ' '`2614 noof_kernels=`CountItemsIn "$possible_kernels"`2615 if [ "$noof_kernels" -eq "0" ] ; then2616 LogIt "Could not find your kernel.\n"2606 fi 2607 if [ ! "$possible_kernels" ] ; then 2608 LogIt "No kernel matches exactly. Are there any duff kernels?" 2609 possible_kernels="$duff_kernels" 2610 if [ ! "$possible_kernels" ] ; then 2611 LogIt "Sorry, no duff kernels either" 2612 else 2613 LogIt "I bet you're running Debian or Gentoo, aren't you?" 2614 LogIt "Your kernel doesn't have a sane builddate. Oh well..." 2615 fi 2616 fi 2617 possible_kernels=`echo "$possible_kernels" | tr -s ' ' '\n' | sort | uniq | tr '\n' ' '` 2618 noof_kernels=`CountItemsIn "$possible_kernels"` 2619 if [ "$noof_kernels" -eq "0" ] ; then 2620 LogIt "Could not find your kernel.\n" 2617 2621 if [ -e "/boot/vmlinuz" ] ; then 2618 LogIt "Using /boot/vmlinuz as a last resort.\n"2619 output=/boot/vmlinuz2620 else2621 output=""2622 fi 2623 elif [ "$noof_kernels" -eq "1" ] ; then2624 kernelpath=`echo "$possible_kernels" | sed s/' '//`2625 echo "Your kernel is $kernelpath (v`uname -r`)" >> $LOGFILE2626 output="$kernelpath"2627 else2628 for i in $possible_kernels ; do2629 if echo $i | grep "`uname -r`" ; then2622 LogIt "Using /boot/vmlinuz as a last resort.\n" 2623 output=/boot/vmlinuz 2624 else 2625 output="" 2626 fi 2627 elif [ "$noof_kernels" -eq "1" ] ; then 2628 kernelpath=`echo "$possible_kernels" | sed s/' '//` 2629 echo "Your kernel is $kernelpath (v`uname -r`)" >> $LOGFILE 2630 output="$kernelpath" 2631 else 2632 for i in $possible_kernels ; do 2633 if echo $i | grep "`uname -r`" ; then 2630 2634 LogIt "OK, I used my initiative and found that " 2631 LogIt "$i is probably your kernel. "2635 LogIt "$i is probably your kernel. " 2632 2636 output="$i" 2633 2637 return 2634 fi2635 done2638 fi 2639 done 2636 2640 if echo " $possible_kernels " | fgrep "/boot/vmlinuz " &> /dev/null ; then 2637 output=/boot/vmlinuz2638 echo "Schlomo, this one's for you." >> $LOGFILE2639 else 2640 LogIt "Two or more possible kernels found. You may specify any one of them and the \n"2641 LogIt "boot disks will still work, probably. If one does not work, try another.\n"2642 LogIt "$possible_kernels\n"2643 echo ""2644 fi 2645 fi2646 echo "$output" | tr -s ' ' '\n' | sort -u | tr '\n' ' '2641 output=/boot/vmlinuz 2642 echo "Schlomo, this one's for you." >> $LOGFILE 2643 else 2644 LogIt "Two or more possible kernels found. You may specify any one of them and the \n" 2645 LogIt "boot disks will still work, probably. If one does not work, try another.\n" 2646 LogIt "$possible_kernels\n" 2647 echo "" 2648 fi 2649 fi 2650 echo "$output" | tr -s ' ' '\n' | sort -u | tr '\n' ' ' 2647 2651 } 2648 2652 … … 2652 2656 2653 2657 TryToFitDataIntoSeveralDirs() { 2654 local bigdir minidir_root noof_disks diskno list_of_files filename old_pwd progress2655 local i retval noof_disks total_files list_of_devs2656 bigdir=$12657 minidir_root=$22658 BIG_CLUNKY_SIZE_COUNTER=02659 retval=02660 noof_disks=12661 2662 echo -en "\r \rDividing data into several groups..."2663 old_pwd=`pwd`2664 cd $bigdir2665 list_of_files=`GetFileSizeList . | sort -nr | cut -f2 | fgrep -v "/dev/"`2666 progress=02667 total_files=`CountItemsIn "$list_of_files"`2668 if [ "`echo "$filename" | grep -x "/dev/.*"`" ] ; then2669 filesize=12670 fi2671 mkdir -p $minidir_root/$noof_disks2672 if [ -e "dev" ] ; then2673 echo "Copying dev/* to $minidir_root/$noof_disks" >> $LOGFILE2674 cp --parents -pRdf dev $minidir_root/$noof_disks2675 fi2676 TemporarilyCompressAllFiles "$list_of_files" $minidir_root2677 for filename in $list_of_files ; do2678 AddFileToDir $filename $minidir_root $noof_disks2658 local bigdir minidir_root noof_disks diskno list_of_files filename old_pwd progress 2659 local i retval noof_disks total_files list_of_devs 2660 bigdir=$1 2661 minidir_root=$2 2662 BIG_CLUNKY_SIZE_COUNTER=0 2663 retval=0 2664 noof_disks=1 2665 2666 echo -en "\r \rDividing data into several groups..." 2667 old_pwd=`pwd` 2668 cd $bigdir 2669 list_of_files=`GetFileSizeList . | sort -nr | cut -f2 | fgrep -v "/dev/"` 2670 progress=0 2671 total_files=`CountItemsIn "$list_of_files"` 2672 if [ "`echo "$filename" | grep -x "/dev/.*"`" ] ; then 2673 filesize=1 2674 fi 2675 mkdir -p $minidir_root/$noof_disks 2676 if [ -e "dev" ] ; then 2677 echo "Copying dev/* to $minidir_root/$noof_disks" >> $LOGFILE 2678 cp --parents -pRdf dev $minidir_root/$noof_disks 2679 fi 2680 TemporarilyCompressAllFiles "$list_of_files" $minidir_root 2681 for filename in $list_of_files ; do 2682 AddFileToDir $filename $minidir_root $noof_disks 2679 2683 i=$? 2680 2684 if [ "$i" -gt "$noof_disks" ] ; then 2681 noof_disks=$i2682 echo -en "\r\t\t\t\t\t\t($noof_disks disks)"2685 noof_disks=$i 2686 echo -en "\r\t\t\t\t\t\t($noof_disks disks)" 2683 2687 fi 2684 2688 if [ "$i" -eq "0" ] ; then 2685 LogIt "Cannot add file $filename to minidir $minidir_root\n"2686 retval=$(($retval+1))2687 fi 2688 progress=$(($progress+1))2689 LogIt "Cannot add file $filename to minidir $minidir_root\n" 2690 retval=$(($retval+1)) 2691 fi 2692 progress=$(($progress+1)) 2689 2693 echo -en "\r\t\t\t\t\t\t\t\t$(($progress*100/$total_files))% complete\r" 2690 done2691 cd $old_pwd2692 echo -en "\rThe files have been subdivided into $noof_disks directories. \r"2693 rm -Rf $minidir_root/compressed2694 if [ "$retval" -gt "0" ] ; then2694 done 2695 cd $old_pwd 2696 echo -en "\rThe files have been subdivided into $noof_disks directories. \r" 2697 rm -Rf $minidir_root/compressed 2698 if [ "$retval" -gt "0" ] ; then 2695 2699 return 0 2696 else2700 else 2697 2701 return $noof_disks 2698 fi2702 fi 2699 2703 } 2700 2704 … … 2702 2706 2703 2707 TurnTgzIntoRdz() { 2704 local tgz_dir_fname rdz_fname ramdisksize tempfile mountpoint old_pwd nodes disksize kernelsize maxsize res currsize not_copied j k floppy_modules s w2705 tgz_dir_fname=$12706 rdz_fname=$22707 ramdisksize=$32708 disksize=$42709 kernelsize=$52710 maxsize=$(($disksize-$kernelsize))2711 maxsize=$(($maxsize*2)); # to allow for compression of 50%2712 tempfile=$TMP_ROOT/temp.rd2713 mountpoint=$TMP_ROOT/mnt12714 res=02715 echo -en "..."2716 dd if=/dev/zero of=$tempfile bs=1k count=$ramdisk_size &> /dev/null || Die "Not enough room for temporary ramdisk (TurnTgzIntoRdz)"2717 echo -en "..."2718 mke2fs -b 1024 -m 1 -i 2048 -F $tempfile >> $LOGFILE 2>> $LOGFILE2719 2720 [ "$?" -ne "0" ] && cat /tmp/mke2fs.$$2721 rm -f /tmp/mke2fs.$$2722 echo -en "..."2723 mkdir -p $mountpoint2724 mount -t ext2 -o loop $tempfile $mountpoint || Die "Cannot loopmount $tempfile to $mountpoint"2725 echo -en "..."2726 old_pwd=`pwd`2727 cd $mountpoint2708 local tgz_dir_fname rdz_fname ramdisksize tempfile mountpoint old_pwd nodes disksize kernelsize maxsize res currsize not_copied j k floppy_modules s w 2709 tgz_dir_fname=$1 2710 rdz_fname=$2 2711 ramdisksize=$3 2712 disksize=$4 2713 kernelsize=$5 2714 maxsize=$(($disksize-$kernelsize)) 2715 maxsize=$(($maxsize*2)); # to allow for compression of 50% 2716 tempfile=$TMP_ROOT/temp.rd 2717 mountpoint=$TMP_ROOT/mnt1 2718 res=0 2719 echo -en "..." 2720 dd if=/dev/zero of=$tempfile bs=1k count=$ramdisk_size &> /dev/null || Die "Not enough room for temporary ramdisk (TurnTgzIntoRdz)" 2721 echo -en "..." 2722 mke2fs -b 1024 -m 1 -i 2048 -F $tempfile >> $LOGFILE 2>> $LOGFILE 2723 2724 [ "$?" -ne "0" ] && cat /tmp/mke2fs.$$ 2725 rm -f /tmp/mke2fs.$$ 2726 echo -en "..." 2727 mkdir -p $mountpoint 2728 mount -t ext2 -o loop $tempfile $mountpoint || Die "Cannot loopmount $tempfile to $mountpoint" 2729 echo -en "..." 2730 old_pwd=`pwd` 2731 cd $mountpoint 2728 2732 # [ -e "$MINDI_HOME/memtest.img" ] && echo "Yep, this is a multi-function CD" > MULTIFUNC 2729 cp -Rdf $tgz_dir_fname/* . 2>> $LOGFILE >> $LOGFILE2730 tar -zxf symlinks.tgz || Die "Cannot untar symlinks.tgz"2731 cd dev || Die "Can't cd to dev"2732 tar -zxf dev-entries.tgz || Die "Cannot untar dev-entries.tgz"2733 rm -f dev-entries.tgz2734 cd ..2733 cp -Rdf $tgz_dir_fname/* . 2>> $LOGFILE >> $LOGFILE 2734 tar -zxf symlinks.tgz || Die "Cannot untar symlinks.tgz" 2735 cd dev || Die "Can't cd to dev" 2736 tar -zxf dev-entries.tgz || Die "Cannot untar dev-entries.tgz" 2737 rm -f dev-entries.tgz 2738 cd .. 2735 2739 2736 2740 # add insmod.static and insmod.static.old if (a) they exist and (b) this is a 64-bit distro 2737 2741 # if [ "`uname -a | grep x86`" ] || [ "`uname -a | grep amd64`" ] ; then 2738 2742 2739 for w in insmod.static insmod.static.old ; do2743 for w in insmod.static insmod.static.old ; do 2740 2744 s=`which $w 2> /dev/null` 2741 2745 if [ -e "$s" ] ; then 2742 cp --parents -af $s .2746 cp --parents -af $s . 2743 2747 # LogIt "Copying $s to initrd" 2744 2748 fi 2745 done2749 done 2746 2750 2747 2751 # fi 2748 2752 2749 mkdir -p tmp2750 [ -e "/dev/.devfsd" ] && echo "/dev/.devfsd found" > tmp/USE-DEVFS2751 for w in cdrom floppy groovy-stuff ; do2752 mkdir -p mnt/$w2753 done2754 if [ "$RUN_AFTER_INITIAL_BOOT_PHASE" ] ; then2753 mkdir -p tmp 2754 [ -e "/dev/.devfsd" ] && echo "/dev/.devfsd found" > tmp/USE-DEVFS 2755 for w in cdrom floppy groovy-stuff ; do 2756 mkdir -p mnt/$w 2757 done 2758 if [ "$RUN_AFTER_INITIAL_BOOT_PHASE" ] ; then 2755 2759 ReplaceIndividualLine sbin/init `grep -n "#WHOLIVESINAPINEAPPLEUNDERTHESEA#" sbin/init | cut -d':' -f1` "$RUN_AFTER_INITIAL_BOOT_PHASE" 2756 fi2757 if [ "$RUN_AFTER_BOOT_PHASE_COMPLETE" ] ; then2760 fi 2761 if [ "$RUN_AFTER_BOOT_PHASE_COMPLETE" ] ; then 2758 2762 ReplaceIndividualLine sbin/init `grep -n "#ABSORBENTANDYELLOWANDPOROUSISHE#" sbin/init | cut -d':' -f1` "$RUN_AFTER_BOOT_PHASE_COMPLETE" 2759 fi2760 2761 lsmod > tmp/original-lsmod.txt2762 2763 cp --parents -Rdf /dev/fd0*[1,2][4,7,8]* . 2> /dev/null2764 cd $old_pwd2765 echo -en "..."2766 MakeModuleLoadingScript $TMPMODPROBE_FLAG $mountpoint/sbin/insert-all-my-modules2767 echo -en "..."2768 old_pwd=`pwd`2769 if [ "$YOUR_KERNEL_SUCKS" ] ; then2763 fi 2764 2765 lsmod > tmp/original-lsmod.txt 2766 2767 cp --parents -Rdf /dev/fd0*[1,2][4,7,8]* . 2> /dev/null 2768 cd $old_pwd 2769 echo -en "..." 2770 MakeModuleLoadingScript $TMPMODPROBE_FLAG $mountpoint/sbin/insert-all-my-modules 2771 echo -en "..." 2772 old_pwd=`pwd` 2773 if [ "$YOUR_KERNEL_SUCKS" ] ; then 2770 2774 cd $TMP_ROOT 2771 2775 floppy_modules_path=lib/modules/$FAILSAFE_KVER 2772 else2776 else 2773 2777 cd / 2774 2778 ### 2775 2779 ### Sq-Modification... Use kernel name in module path if specified. 2776 2780 ### 2777 #floppy_modules_path=lib/modules/`uname -r`2778 if [ "${kernelname}" != "" ]2779 then2780 floppy_modules_path=lib/modules/${kernelname}2781 else2782 floppy_modules_path=lib/modules/`uname -r`2783 fi2781 #floppy_modules_path=lib/modules/`uname -r` 2782 if [ "${kernelname}" != "" ] 2783 then 2784 floppy_modules_path=lib/modules/${kernelname} 2785 else 2786 floppy_modules_path=lib/modules/`uname -r` 2787 fi 2784 2788 ### 2785 2789 ### Sq-Modification end 2786 2790 ### 2787 fi2788 floppy_modules=""2789 if [ "$disksize" -lt "2880" ] ; then2791 fi 2792 floppy_modules="" 2793 if [ "$disksize" -lt "2880" ] ; then 2790 2794 list_of_groovy_mods="$FLOPPY_MODS `WhichOfTheseModulesAreLoaded "$SCSI_MODS"`" 2791 else2795 else 2792 2796 list_of_groovy_mods="$CDROM_MODS `WhichOfTheseModulesAreLoaded "$SCSI_MODS"`" 2793 fi2794 if [ -e "$MONDO_TMP/start-nfs" ] ; then2795 cp -a $MONDO_TMP/start-nfs $mountpoint/sbin2796 # For PXE boot2797 list_of_groovy_mods="$list_of_groovy_mods $NET_MODS"2798 # Here we need the net busybox2799 mv $mountpoint/bin/busybox.net $mountpoint/bin/busybox2800 else2801 rm -f $mountpoint/bin/busybox.net2802 fi2803 [ -e "$floppy_modules_path" ] || LogIt "path $floppy_modules_path does not exist. If you're not using a modular kernel then you're NUTS."2804 for i in $list_of_groovy_mods ; do2797 fi 2798 if [ -e "$MONDO_TMP/start-nfs" ] ; then 2799 cp -a $MONDO_TMP/start-nfs $mountpoint/sbin 2800 # For PXE boot 2801 list_of_groovy_mods="$list_of_groovy_mods $NET_MODS" 2802 # Here we need the net busybox 2803 mv $mountpoint/bin/busybox.net $mountpoint/bin/busybox 2804 else 2805 rm -f $mountpoint/bin/busybox.net 2806 fi 2807 [ -e "$floppy_modules_path" ] || LogIt "path $floppy_modules_path does not exist. If you're not using a modular kernel then you're NUTS." 2808 for i in $list_of_groovy_mods ; do 2805 2809 floppy_modules="$floppy_modules `FindSpecificModuleInPath $floppy_modules_path $i`" 2806 done2807 for i in $floppy_modules ; do2808 [ -e "$i" ] && s=`du -sk $i | cut -f1` || s=""2810 done 2811 for i in $floppy_modules ; do 2812 [ -e "$i" ] && s=`du -sk $i | cut -f1` || s="" 2809 2813 [ "$YOUR_KERNEL_SUCKS" ] && i=$TMP_ROOT/$i 2810 2814 echo "Adding $i ($s KB) to the rootfs" >> $LOGFILE 2811 2815 cp -df $i $mountpoint/ || LogIt "Unable to copy $i to $mountpoint" 2812 2816 [ "`echo "$i" | fgrep ".gz"`" ] && gunzip -f $mountpoint/`basename $i` 2813 done2817 done 2814 2818 # if [ -e "/dev/.devfsd" ] ; then 2815 2819 # echo "Copying devfs stuff to ramdisk" >> $LOGFILE … … 2818 2822 # done 2819 2823 # fi 2820 if [ ! -e "/sbin/devfsd" ] || [ "$disksize" -lt "2880" ] || [ "$kernelpath" = "$MINDI_HOME/vmlinuz" ] ; then2821 echo "Deleting devfsd daemon from ramdisk" >> $LOGFILE2822 [ ! -e "/sbin/devfsd" ] && echo "...because /sbin/devfsd not found" >> $LOGFILE2823 [ "$disksize" -lt "2880" ] && echo "...because disksize = $disksize" >> $LOGFILE2824 [ "$kernelpath" = "$MINDI_HOME/vmlinuz" ] && echo "...because kernel is failsafe" >> $LOGFILE2824 if [ ! -e "/sbin/devfsd" ] || [ "$disksize" -lt "2880" ] || [ "$kernelpath" = "$MINDI_HOME/vmlinuz" ] ; then 2825 echo "Deleting devfsd daemon from ramdisk" >> $LOGFILE 2826 [ ! -e "/sbin/devfsd" ] && echo "...because /sbin/devfsd not found" >> $LOGFILE 2827 [ "$disksize" -lt "2880" ] && echo "...because disksize = $disksize" >> $LOGFILE 2828 [ "$kernelpath" = "$MINDI_HOME/vmlinuz" ] && echo "...because kernel is failsafe" >> $LOGFILE 2825 2829 # ls -l $mountpoint/sbin/devfsd &> /dev/null || Die "Can't find devfsd daemon on ramdisk" 2826 rm -f $mountpoint/sbin/devfsd2827 fi2828 cd $old_pwd2829 [ "$TAPEDEV" ] && echo -en "$TAPEDEV" > $mountpoint/tmp/TAPEDEV-LIVES-HERE2830 dd if=/dev/zero of=$mountpoint/zero &> /dev/null2831 rm -f $mountpoint/zero2832 if [ "`DidMondoCallMe`" ] ; then2833 MakeMondoConfigFile $mountpoint/tmp/mondo-restore.cfg2834 cp -f $mountpoint/tmp/mondo-restore.cfg $MONDO_TMP &> /dev/null2835 cp -f $TMP_ROOT/mountlist.txt $mountpoint/tmp/ || Die "Cannot copy mountlist to ramdisk"2836 echo -en "$FILES_IN_FILELIST" > $mountpoint/tmp/FILES-IN-FILELIST2837 echo -en "$LAST_FILELIST_NUMBER" > $mountpoint/tmp/LAST-FILELIST-NUMBER2838 [ "$USE_LZO" = "yes" ] && echo -en "Pras 4 Pres 2004" >> $mountpoint/tmp/USING-LZO2839 [ "$USE_COMP" = "yes" ] && echo -en "Compression, yep" >> $mountpoint/tmp/USING-COMP2830 rm -f $mountpoint/sbin/devfsd 2831 fi 2832 cd $old_pwd 2833 [ "$TAPEDEV" ] && echo -en "$TAPEDEV" > $mountpoint/tmp/TAPEDEV-LIVES-HERE 2834 dd if=/dev/zero of=$mountpoint/zero &> /dev/null 2835 rm -f $mountpoint/zero 2836 if [ "`DidMondoCallMe`" ] ; then 2837 MakeMondoConfigFile $mountpoint/tmp/mondo-restore.cfg 2838 cp -f $mountpoint/tmp/mondo-restore.cfg $MONDO_TMP &> /dev/null 2839 cp -f $TMP_ROOT/mountlist.txt $mountpoint/tmp/ || Die "Cannot copy mountlist to ramdisk" 2840 echo -en "$FILES_IN_FILELIST" > $mountpoint/tmp/FILES-IN-FILELIST 2841 echo -en "$LAST_FILELIST_NUMBER" > $mountpoint/tmp/LAST-FILELIST-NUMBER 2842 [ "$USE_LZO" = "yes" ] && echo -en "Pras 4 Pres 2004" >> $mountpoint/tmp/USING-LZO 2843 [ "$USE_COMP" = "yes" ] && echo -en "Compression, yep" >> $mountpoint/tmp/USING-COMP 2840 2844 [ "$USE_STAR" = "yes" ] && echo =en "Using star. Hooray." >> $mountpoint/tmp/USING-STAR 2841 fi2842 mkdir -p $mountpoint/tmp2843 mkdir -p $mountpoint/proc2844 echo "$disksize" > $mountpoint/tmp/$disksize.siz2845 find $mountpoint -name CVS -exec rm -rf '{}' \;2846 umount $mountpoint || Die "Cannot unmount $tempfile"2847 dd if=$tempfile bs=1k 2> /dev/null | gzip -v9 > $rdz_fname 2> /dev/null2845 fi 2846 mkdir -p $mountpoint/tmp 2847 mkdir -p $mountpoint/proc 2848 echo "$disksize" > $mountpoint/tmp/$disksize.siz 2849 find $mountpoint -name CVS -exec rm -rf '{}' \; 2850 umount $mountpoint || Die "Cannot unmount $tempfile" 2851 dd if=$tempfile bs=1k 2> /dev/null | gzip -v9 > $rdz_fname 2> /dev/null 2848 2852 # gzip -9 $tempfile 2849 2853 # mv $tempfile.gz $rdz_fname 2850 if [ "$res" -eq "0" ] ; then2851 echo -en "..."2852 else2853 echo -en "\rMade an rdz WITH ERRORS. \n"2854 fi2855 return 02854 if [ "$res" -eq "0" ] ; then 2855 echo -en "..." 2856 else 2857 echo -en "\rMade an rdz WITH ERRORS. \n" 2858 fi 2859 return 0 2856 2860 } 2857 2861 … … 2859 2863 2860 2864 WhichOfTheseModulesAreLoaded() { 2861 local modname loaded_modules2862 loaded_modules=" `lsmod | tr -s ' ' '\t' | cut -f1 | fgrep -vx "Modules" | tr '\n' ' '` "2863 for modname in $1 ; do2865 local modname loaded_modules 2866 loaded_modules=" `lsmod | tr -s ' ' '\t' | cut -f1 | fgrep -vx "Modules" | tr '\n' ' '` " 2867 for modname in $1 ; do 2864 2868 [ "`echo "$loaded_modules" | fgrep " $modname "`" ] && echo "$modname" 2865 done2869 done 2866 2870 } 2867 2871 … … 2870 2874 2871 2875 ZipMinidirsIntoTarballs() { 2872 local minidir_root tardir noof_disks diskno old_pwd i2873 minidir_root=$12874 tardir=$22875 noof_disks=$32876 2877 echo -en "Tarring and zipping the group`PluralOrNot $noof_disks`..."2878 mkdir -p $tardir2879 mkdir -p $minidir_root/all2880 old_pwd=`pwd`2881 diskno=12882 while [ "$diskno" -le "$noof_disks" ] ; do2883 cd $minidir_root/$diskno || LogIt "Warning - cannot cd to $minidir_root/$diskno"2884 tar -c . -f-2>> $LOGFILE | gzip -9 > $tardir/$diskno.tar.gz || Die "Can't tar/gzip disk#$diskno; please tell Hugo -exactly- what the errors where."2885 diskno=$(($diskno+1))2886 echo -n "..."2876 local minidir_root tardir noof_disks diskno old_pwd i 2877 minidir_root=$1 2878 tardir=$2 2879 noof_disks=$3 2880 2881 echo -en "Tarring and zipping the group`PluralOrNot $noof_disks`..." 2882 mkdir -p $tardir 2883 mkdir -p $minidir_root/all 2884 old_pwd=`pwd` 2885 diskno=1 2886 while [ "$diskno" -le "$noof_disks" ] ; do 2887 cd $minidir_root/$diskno || LogIt "Warning - cannot cd to $minidir_root/$diskno" 2888 tar -cf - . 2>> $LOGFILE | gzip -9 > $tardir/$diskno.tar.gz || Die "Can't tar/gzip disk#$diskno; please tell Hugo -exactly- what the errors where." 2889 diskno=$(($diskno+1)) 2890 echo -n "..." 2887 2891 cp -pRdf * $minidir_root/all 2888 done2889 mkdir -p $minidir_root/all/tmp2890 cd $minidir_root/all2891 size_of_all_tools=`du -sk . | cut -f1`2892 if [ "`DidMondoCallMe`" ] ; then2893 for q in filelist.full.gz biggielist.txt ; do2894 [ ! -e "$MONDO_TMP/$q" ] && Die "Cannot find $MONDO_TMP/$q"2895 cp -pRdf $MONDO_TMP/$q tmp/2896 done2897 mkdir -p $minidir_root/all/tmp2898 echo -en "$FILES_IN_FILELIST" > $minidir_root/all/tmp/FILES-IN-FILELIST 2> /dev/null2899 echo -en "$LAST_FILELIST_NUMBER" > $minidir_root/all/tmp/LAST-FILELIST-NUMBER 2> /dev/null2900 fi2901 tar -c * -b 4096 -f-2> /dev/null | gzip -9 > $tardir/all.tar.gz2902 dd if=/dev/zero bs=1k count=64 >> $imagesdir/all.tar.gz 2> /dev/null2903 [ "`du -sm $imagesdir/all.tar.gz | cut -f1`" -ge "30" ] && Die "You have too many tools in your shed"2904 cd $old_pwd2905 rm -Rf $minidir_root2906 echo -e "$DONE"2892 done 2893 mkdir -p $minidir_root/all/tmp 2894 cd $minidir_root/all 2895 size_of_all_tools=`du -sk . | cut -f1` 2896 if [ "`DidMondoCallMe`" ] ; then 2897 for q in filelist.full.gz biggielist.txt ; do 2898 [ ! -e "$MONDO_TMP/$q" ] && Die "Cannot find $MONDO_TMP/$q" 2899 cp -pRdf $MONDO_TMP/$q tmp/ 2900 done 2901 mkdir -p $minidir_root/all/tmp 2902 echo -en "$FILES_IN_FILELIST" > $minidir_root/all/tmp/FILES-IN-FILELIST 2> /dev/null 2903 echo -en "$LAST_FILELIST_NUMBER" > $minidir_root/all/tmp/LAST-FILELIST-NUMBER 2> /dev/null 2904 fi 2905 tar -b 4096 -cf - * 2> /dev/null | gzip -9 > $tardir/all.tar.gz 2906 dd if=/dev/zero bs=1k count=64 >> $imagesdir/all.tar.gz 2> /dev/null 2907 [ "`du -sm $imagesdir/all.tar.gz | cut -f1`" -ge "30" ] && Die "You have too many tools in your shed" 2908 cd $old_pwd 2909 rm -Rf $minidir_root 2910 echo -e "$DONE" 2907 2911 } 2908 2912 … … 2911 2915 2912 2916 ListUnsavedKernelModules() { 2913 local fname modules2914 fname=/tmp/$RANDOM.$$.$RANDOM2915 ListKernelModules > $fname2916 lsmod | cut -d' ' -f1 >> $fname2917 lsmod | cut -d' ' -f1 >> $fname2918 modules=`cat $fname | sort | uniq -d2 | tr '\n' ' '`2919 rm -f $fname2920 [ "$modules" ] && echo "Unsaved kernel modules: $modules" >> $LOGFILE2917 local fname modules 2918 fname=/tmp/$RANDOM.$$.$RANDOM 2919 ListKernelModules > $fname 2920 lsmod | cut -d' ' -f1 >> $fname 2921 lsmod | cut -d' ' -f1 >> $fname 2922 modules=`cat $fname | sort | uniq -d2 | tr '\n' ' '` 2923 rm -f $fname 2924 [ "$modules" ] && echo "Unsaved kernel modules: $modules" >> $LOGFILE 2921 2925 } 2922 2926 … … 2942 2946 2943 2947 if [ "$1" = "-V" ] || [ "$1" = "-v" ] || [ "$1" = "--version" ] || [ "$1" = "-version" ] ; then 2944 echo "mindi v$MINDI_VERSION"2945 exit 02948 echo "mindi v$MINDI_VERSION" 2949 exit 0 2946 2950 fi 2947 2951 … … 2956 2960 2957 2961 if [ -e "/etc/conf.modules" ] && [ ! -e "/etc/modules.conf" ] ; then 2958 LogIt "Warning.Ancient distro detected." 12959 ln -sf /etc/conf.modules /etc/modules.conf2962 LogIt "Warning - Ancient distro detected." 1 2963 ln -sf /etc/conf.modules /etc/modules.conf 2960 2964 fi 2961 2965 [ -e "/sbin/mkdosfs" ] && [ ! -e "/sbin/mkfs.vfat" ] && ln -sf /sbin/mkdosfs /sbin/mkfs.vfat … … 2985 2989 ### Fix as it's not mandatory on ia64 2986 2990 if [ "$ARCH" = "ia64" ] ; then 2987 FindELiloBinary2991 FindELiloBinary 2988 2992 else 2989 FindIsolinuxBinary2990 FindLiloBinary2993 FindIsolinuxBinary 2994 FindLiloBinary 2991 2995 fi 2992 2996 cat /proc/mounts | fgrep " $TMP_ROOT " | fgrep tmpfs > /dev/null 2> /dev/null && TMP_ROOT=/home && LogIt "Changing TMP_ROOT to $TMP_ROOT because you're using tmpfs for /tmp" ; # tmpfs doesn't like Mindi and /tmp, for some reason … … 3004 3008 3005 3009 if [ "$#" -ge "2" ] ; then 3006 if [ "$1" = "--max-compressed-size" ] ; then3007 MAX_COMPRESSED_SIZE=$23008 shift; shift3009 fi3010 if [ "$1" = "--max-compressed-size" ] ; then 3011 MAX_COMPRESSED_SIZE=$2 3012 shift; shift 3013 fi 3010 3014 fi 3011 3015 3012 3016 FLOPPY_WAS_MOUNTED="" 3013 3017 for mtpt in /media/floppy /mnt/floppy /floppy ; do 3014 if mount | grep -w $mtpt &> /dev/null ; then3015 FLOPPY_WAS_MOUNTED="$FLOPPY_WAS_MOUNTED $mtpt"3016 umount $mtpt3017 fi3018 if mount | grep -w $mtpt &> /dev/null ; then 3019 FLOPPY_WAS_MOUNTED="$FLOPPY_WAS_MOUNTED $mtpt" 3020 umount $mtpt 3021 fi 3018 3022 done 3019 3023 3020 3024 if [ "$#" -ne "0" ] ; then 3021 if [ "$1" = "--findkernel" ] ; then3022 res=`TryToFindKernelPath`3025 if [ "$1" = "--findkernel" ] ; then 3026 res=`TryToFindKernelPath` 3023 3027 # 2> /dev/null` 3024 if [ "$res" = "" ] ; then3025 exit 13026 else3027 echo "$res"3028 exit 03029 fi3030 elif [ "$1" = "--makemountlist" ] ; then3031 [ ! "$2" ] && Die "Please specify the output file"3032 MakeMountlist $23033 exit $?3034 elif [ "$1" = " --version" ] || [ "$1" = "-v" ] ; then3028 if [ "$res" = "" ] ; then 3029 exit 1 3030 else 3031 echo "$res" 3032 exit 0 3033 fi 3034 elif [ "$1" = "--makemountlist" ] ; then 3035 [ ! "$2" ] && Die "Please specify the output file" 3036 MakeMountlist $2 3037 exit $? 3038 elif [ "$1" = " --version" ] || [ "$1" = "-v" ] ; then 3035 3039 echo "Mindi v$MINDI_VERSION" 3036 exit 03037 elif [ "$#" -ge "9" ] && [ "$1" = "--custom" ] ; then3040 exit 0 3041 elif [ "$#" -ge "9" ] && [ "$1" = "--custom" ] ; then 3038 3042 TMP_ROOT=$2 3039 3043 MONDO_TMP=$2 … … 3045 3049 ### if module path is found then use it other wise use uname -r to set it... 3046 3050 ### 3047 kernelname=`echo $kernelpath | cut -d'-' -f2-`3051 kernelname=`echo $kernelpath | cut -d'-' -f2-` 3048 3052 LogIt "kernelname = $kernelname" 3049 3053 LogIt "kernelpath = $kernelpath" 3050 if [ ! -d "/lib/modules/$kernelname" ] && [ "$kernelpath" != "FAILSAFE" ]3051 then3052 LogIt "Module path for ${kernelpath} not found...\n"3053 LogIt "using running kernel\'s modules.\n"3054 kernelname=`uname -r`3055 else3056 LogIt "Using modules for kernel: ${kernelname}\n"3057 fi3054 if [ ! -d "/lib/modules/$kernelname" ] && [ "$kernelpath" != "FAILSAFE" ] 3055 then 3056 LogIt "Module path for ${kernelpath} not found...\n" 3057 LogIt "using running kernel\'s modules.\n" 3058 kernelname=`uname -r` 3059 else 3060 LogIt "Using modules for kernel: ${kernelname}\n" 3061 fi 3058 3062 ### 3059 3063 ### end of Sq-Modification … … 3064 3068 USE_LZO=$8 3065 3069 CDRECOVERY=$9 3066 if [ "${10}" = "(null)" ] || [ "${10}" = "" ] ; then3067 IMAGE_DEVS=""3068 else3069 IMAGE_DEVS="`echo "${10}" | tr '|' ' '`"3070 fi3070 if [ "${10}" = "(null)" ] || [ "${10}" = "" ] ; then 3071 IMAGE_DEVS="" 3072 else 3073 IMAGE_DEVS="`echo "${10}" | tr '|' ' '`" 3074 fi 3071 3075 if [ "${11}" ] ; then 3072 LILO_OPTIONS=""3076 LILO_OPTIONS="" 3073 3077 # LogIt "LILO will use conservative settings, to be compatible with older BIOSes." 3074 3078 fi 3075 3079 LAST_FILELIST_NUMBER=${12} 3076 ESTIMATED_TOTAL_NOOF_SLICES=${13}3077 EXCLUDE_DEVS="${14}"3078 USE_COMP="${15}"3079 USE_LILO="${16}"3080 ESTIMATED_TOTAL_NOOF_SLICES=${13} 3081 EXCLUDE_DEVS="${14}" 3082 USE_COMP="${15}" 3083 USE_LILO="${16}" 3080 3084 USE_STAR="${17}" 3081 3085 INTERNAL_TAPE_BLOCK_SIZE="${18}" 3082 DIFFERENTIAL="${19}"3083 NOT_BOOT="${20}"3084 [ "$USE_COMP" = "" ] && USE_COMP=yes3085 [ "$NOT_BOOT" = "" ] && NOT_BOOT=no3086 DIFFERENTIAL="${19}" 3087 NOT_BOOT="${20}" 3088 [ "$USE_COMP" = "" ] && USE_COMP=yes 3089 [ "$NOT_BOOT" = "" ] && NOT_BOOT=no 3086 3090 [ "$TAPEDEV" ] && LogIt "This is a tape-based backup. Fine." 3087 3091 [ "$kernelpath" = "" ] && kernelpath=`TryToFindKernelPath` 3088 kernelname=`echo $kernelpath | cut -d'-' -f2-`3089 if [ ! -d "/lib/modules/$kernelname" ] && [ "$kernelpath" != "FAILSAFE" ]3090 then3091 LogIt "Module path for ${kernelpath} not found...\n"3092 LogIt "using running kernel\'s modules.\n"3093 kernelname=`uname -r`3094 else3095 LogIt "Using modules for kernel: ${kernelname}\n"3096 fi3092 kernelname=`echo $kernelpath | cut -d'-' -f2-` 3093 if [ ! -d "/lib/modules/$kernelname" ] && [ "$kernelpath" != "FAILSAFE" ] 3094 then 3095 LogIt "Module path for ${kernelpath} not found...\n" 3096 LogIt "using running kernel\'s modules.\n" 3097 kernelname=`uname -r` 3098 else 3099 LogIt "Using modules for kernel: ${kernelname}\n" 3100 fi 3097 3101 [ "$CDRECOVERY" = "yes" ] && [ "$TAPEDEV" != "" ] && Die "Sorry, you can't use --cd-recovery and --write-tapes at the same time" 3098 MONDO_ROOT=`echo $imagesdir | sed 's/\(.*\)\/.*/\1/'`3102 MONDO_ROOT=`echo $imagesdir | sed 's/\(.*\)\/.*/\1/'` 3099 3103 [ "$MONDO_ROOT" = "" ] && Die "MONDO_ROOT is undefined" 3100 else3104 else 3101 3105 echo "Syntax: mindi (--custom ....)" >> /dev/stderr 3102 3106 exit 1 3103 fi3107 fi 3104 3108 fi 3105 3109 #ScanCDandTape 3106 3110 [ "$CDRECOVERY" = "yes" ] || CDRECOVERY=no 3107 3111 if [ "$CDRECOVERY" = "yes" ] ; then 3108 iso_cfg_file=$MINDI_HOME/isolinux-H.cfg3109 sys_cfg_file=$MINDI_HOME/syslinux-H.cfg3112 iso_cfg_file=$MINDI_HOME/isolinux-H.cfg 3113 sys_cfg_file=$MINDI_HOME/syslinux-H.cfg 3110 3114 else 3111 iso_cfg_file=$MINDI_HOME/isolinux.cfg3112 sys_cfg_file=$MINDI_HOME/syslinux.cfg3115 iso_cfg_file=$MINDI_HOME/isolinux.cfg 3116 sys_cfg_file=$MINDI_HOME/syslinux.cfg 3113 3117 fi 3114 3118 … … 3132 3136 mkdir -p $imagesdir 3133 3137 if [ ! "`DidMondoCallMe`" ] ; then 3134 LogIt "Mindi Linux mini-distro generator v$MINDI_VERSION by Hugo Rabson"3135 LogIt "Latest Mindi is available from http://www.mondorescue.org"3136 LogIt "BusyBox sources are available from http://www.busybox.net"3137 LogIt "------------------------------------------------------------------------------"3138 LogIt "Mindi Linux mini-distro generator v$MINDI_VERSION by Hugo Rabson" 3139 LogIt "Latest Mindi is available from http://www.mondorescue.org" 3140 LogIt "BusyBox sources are available from http://www.busybox.net" 3141 LogIt "------------------------------------------------------------------------------" 3138 3142 else 3139 echo "You are using Mindi-Linux v$MINDI_VERSION to make boot+data disks" >> /var/log/mondo-archive.log3143 echo "You are using Mindi-Linux v$MINDI_VERSION to make boot+data disks" >> /var/log/mondo-archive.log 3140 3144 fi 3141 3145 … … 3143 3147 insmod /lib/modules/`uname -r`/*/*/misc/aes.*o.gz >> $LOGFILE 2>> $LOGFILE 3144 3148 for i in loop cdrom ide-cd isofs linear raid0 raid1 raid5 ; do 3145 insmod $i >> $LOGFILE 2>> $LOGFILE3149 insmod $i >> $LOGFILE 2>> $LOGFILE 3146 3150 done 3147 3151 … … 3153 3157 echo "NOT_BOOT = '$NOT_BOOT'" >> $LOGFILE 3154 3158 if [ "$NOT_BOOT" != "" ] && [ "$NOT_BOOT" != "0" ] && [ "$NOT_BOOT" != "no" ] ; then 3155 LogIt "Just creating mondo-restore.cfg and a small all.tar.gz for Mondo. Nothing else."3156 MakeMondoConfigFile $MONDO_TMP/mondo-restore.cfg3157 MakeMountlist $MONDO_TMP/mountlist.txt3158 mkdir -p $MONDO_TMP/small-all/tmp3159 cd $MONDO_TMP/small-all3160 cp -f $MONDO_TMP/{mountlist.txt,mondo-restore.cfg,filelist.full.gz,biggielist.txt} tmp || Die "Cannot copy small all.tar.gz"3161 tar -cv tmp | gzip -9 > $MONDO_TMP/all.tar.gz || Die "Cannot make small all.tar.gz"3162 sleep 23163 LogIt "Done. Exiting.\n"3164 exit 03159 LogIt "Just creating mondo-restore.cfg and a small all.tar.gz for Mondo. Nothing else." 3160 MakeMondoConfigFile $MONDO_TMP/mondo-restore.cfg 3161 MakeMountlist $MONDO_TMP/mountlist.txt 3162 mkdir -p $MONDO_TMP/small-all/tmp 3163 cd $MONDO_TMP/small-all 3164 cp -f $MONDO_TMP/{mountlist.txt,mondo-restore.cfg,filelist.full.gz,biggielist.txt} tmp || Die "Cannot copy small all.tar.gz" 3165 tar -cv tmp | gzip -9 > $MONDO_TMP/all.tar.gz || Die "Cannot make small all.tar.gz" 3166 sleep 2 3167 LogIt "Done. Exiting.\n" 3168 exit 0 3165 3169 fi 3166 3170 3167 3171 if [ "$kernelpath" = "" ] ; then 3168 [ "`DidMondoCallMe`" ] && Die "Please use -k <path> to specify kernel."3169 if [ $USE_OWN_KERNEL != "yes" ]; then3170 echo -en "Do you want to use your own kernel to build the boot disk (y/n) ?"3171 read ch3172 if [ "$ch" != "n" ] && [ "$ch" != "N" ] ; then3173 USE_OWN_KERNEL="yes"3174 fi3175 fi3176 if [ "$USE_OWN_KERNEL" = "yes" ]; then3172 [ "`DidMondoCallMe`" ] && Die "Please use -k <path> to specify kernel." 3173 if [ $USE_OWN_KERNEL != "yes" ]; then 3174 echo -en "Do you want to use your own kernel to build the boot disk (y/n) ?" 3175 read ch 3176 if [ "$ch" != "n" ] && [ "$ch" != "N" ] ; then 3177 USE_OWN_KERNEL="yes" 3178 fi 3179 fi 3180 if [ "$USE_OWN_KERNEL" = "yes" ]; then 3177 3181 YOUR_KERNEL_SUCKS="" 3178 3182 kernelpath=`TryToFindKernelPath` 3179 3183 if [ "$kernelpath" = "" ] ; then 3180 echo -n "Please enter kernel path : "3181 read kernelpath3182 fi 3183 else3184 echo -n "Please enter kernel path : " 3185 read kernelpath 3186 fi 3187 else 3184 3188 YOUR_KERNEL_SUCKS="That's why you're using mine, dude. :-)" 3185 fi3189 fi 3186 3190 fi 3187 3191 if [ ! "`DidMondoCallMe`" ] ; then 3188 echo -en "Would you like to use LILO (instead of syslinux)\nfor your boot CD/floppies (y/n) ?"3189 read ch3190 if [ "$ch" != "n" ] && [ "$ch" != "N" ] ; then3191 USE_LILO=yes3192 else3193 USE_LILO=no3194 fi3192 echo -en "Would you like to use LILO (instead of syslinux)\nfor your boot CD/floppies (y/n) ?" 3193 read ch 3194 if [ "$ch" != "n" ] && [ "$ch" != "N" ] ; then 3195 USE_LILO=yes 3196 else 3197 USE_LILO=no 3198 fi 3195 3199 fi 3196 3200 if [ "$YOUR_KERNEL_SUCKS" != "" ] || [ "$kernelpath" = "" ] || [ "$kernelpath" = "SUCKS" ] || [ "$kernelpath" = "FAILSAFE" ] ; then 3197 kernelpath=$MINDI_HOME/vmlinuz3198 LogIt "I shall include Mindi's failsafe kernel, not your kernel, in the boot disks."3199 LogIt "However, you are still running your kernel. If Mindi fails to create your"3200 LogIt "disks then it may still be a result of a problem with your kernel."3201 pwd=`pwd`3202 cd $TMP_ROOT3203 bzip2 -dc $MINDI_HOME/lib.tar.bz2 | tar -x || Die "Cannot unzip lib.tar.bz2"3204 cd $pwd3205 YOUR_KERNEL_SUCKS="Your kernel sucks"3201 kernelpath=$MINDI_HOME/vmlinuz 3202 LogIt "I shall include Mindi's failsafe kernel, not your kernel, in the boot disks." 3203 LogIt "However, you are still running your kernel. If Mindi fails to create your" 3204 LogIt "disks then it may still be a result of a problem with your kernel." 3205 pwd=`pwd` 3206 cd $TMP_ROOT 3207 bzip2 -dc $MINDI_HOME/lib.tar.bz2 | tar -x || Die "Cannot unzip lib.tar.bz2" 3208 cd $pwd 3209 YOUR_KERNEL_SUCKS="Your kernel sucks" 3206 3210 fi 3207 3211 echo -e "Mindi's temp dir = $TMP_ROOT \nMindi's output dir=$imagesdir" >> $LOGFILE … … 3221 3225 echo "Ramdisk will be $ramdisk_size KB" >> $LOGFILE 3222 3226 if [ "$USE_LILO" = "yes" ] ; then 3223 if [ "$ARCH" = "ia64" ] ; then3224 PrepareBootDiskImage_LILO $imagesdir $IA64_BOOT_SIZE $kernelpath $ramdisk_size || Die "Failed to create ia64 floppy disk image."3225 else3226 if ! PrepareBootDiskImage_LILO $imagesdir 1722 $kernelpath $ramdisk_size ; then3227 LogIt "Warning! Failed to create 1.72MB boot image. Please reduce your kernel's size"3228 LogIt "if you want to make a 1.72MB floppyfloppy disk."3229 fi3230 PrepareBootDiskImage_LILO $imagesdir 2880 $kernelpath $ramdisk_size || Die "Failed to create 2.88MB floppy disk image."3231 fi3227 if [ "$ARCH" = "ia64" ] ; then 3228 PrepareBootDiskImage_LILO $imagesdir $IA64_BOOT_SIZE $kernelpath $ramdisk_size || Die "Failed to create ia64 floppy disk image." 3229 else 3230 if ! PrepareBootDiskImage_LILO $imagesdir 1722 $kernelpath $ramdisk_size ; then 3231 LogIt "Warning - failed to create 1.72MB boot image. Please reduce your kernel's size" 3232 LogIt "if you want to make a 1.72MB floppy disk." 3233 fi 3234 PrepareBootDiskImage_LILO $imagesdir 2880 $kernelpath $ramdisk_size || Die "Failed to create 2.88MB floppy disk image." 3235 fi 3232 3236 else 3233 if ! PrepareBootDiskImage_SYSLINUX $imagesdir 1722 $kernelpath $ramdisk_size ; then3234 LogIt "Warning ! Failed to create 1.72MB boot image. Please reduce your kernel's size"3235 LogIt "if you want to make a 1.72MB floppy floppydisk."3236 fi3237 if ! PrepareBootDiskImage_SYSLINUX $imagesdir 2880 $kernelpath $ramdisk_size ; then3238 LogIt "Warning! Failed to create 2.88MB floppy disk image."3239 LogIt "Please reduce your kernel's size"3240 LogIt "if you want to make a 2.88MB floppyfloppy disk."3241 fi3242 PrepareBootDiskImage_SYSLINUX $imagesdir 5760 $kernelpath $ramdisk_size || Die "Failed to create 5.76MB floppy disk image."3237 if ! PrepareBootDiskImage_SYSLINUX $imagesdir 1722 $kernelpath $ramdisk_size ; then 3238 LogIt "Warning - failed to create 1.72MB boot image. Please reduce your kernel's size" 3239 LogIt "if you want to make a 1.72MB floppy disk." 3240 fi 3241 if ! PrepareBootDiskImage_SYSLINUX $imagesdir 2880 $kernelpath $ramdisk_size ; then 3242 LogIt "Warning - failed to create 2.88MB floppy disk image." 3243 LogIt "Please reduce your kernel's size" 3244 LogIt "if you want to make a 2.88MB floppy disk." 3245 fi 3246 PrepareBootDiskImage_SYSLINUX $imagesdir 5760 $kernelpath $ramdisk_size || Die "Failed to create 5.76MB floppy disk image." 3243 3247 fi 3244 3248 … … 3250 3254 3251 3255 if [ ! "`DidMondoCallMe`" ] ; then 3252 ListImagesForUser $imagesdir3253 boot_dev=/dev/fd0u17223254 [ ! -e "$boot_dev" ] && mknod $boot_dev b 2 603255 [ ! -e "$boot_dev" ] && boot_dev=/dev/fd0H17223256 [ ! -e "$boot_dev" ] && Die "Oh Lord, will you PLEASE tell the vendor to create the 1.72MB devices in /dev?"3257 if [ "$PROMPT_WRITE_BOOT_FLOPPIES" = "yes" ]; then3258 OfferToCopyImagesToDisks $imagesdir $boot_dev $FDDEVICE3259 fi3260 OfferToMakeBootableISO $imagesdir3261 LogIt "Finished.\n"3256 ListImagesForUser $imagesdir 3257 boot_dev=/dev/fd0u1722 3258 [ ! -e "$boot_dev" ] && mknod $boot_dev b 2 60 3259 [ ! -e "$boot_dev" ] && boot_dev=/dev/fd0H1722 3260 [ ! -e "$boot_dev" ] && Die "Oh Lord, will you PLEASE tell the vendor to create the 1.72MB devices in /dev?" 3261 if [ "$PROMPT_WRITE_BOOT_FLOPPIES" = "yes" ]; then 3262 OfferToCopyImagesToDisks $imagesdir $boot_dev $FDDEVICE 3263 fi 3264 OfferToMakeBootableISO $imagesdir 3265 LogIt "Finished.\n" 3262 3266 elif [ "$TAPEDEV" ] ; then 3263 mkdir -p /root/images/mindi3264 rm -f /root/images/mindi/{*img,*gz,*iso}3265 OfferToMakeBootableISO $imagesdir3266 if [ -e "$imagesdir/all.tar.gz" ] ; then3267 cp -f $imagesdir/all.tar.gz $MONDO_TMP/3268 else3267 mkdir -p /root/images/mindi 3268 rm -f /root/images/mindi/{*img,*gz,*iso} 3269 OfferToMakeBootableISO $imagesdir 3270 if [ -e "$imagesdir/all.tar.gz" ] ; then 3271 cp -f $imagesdir/all.tar.gz $MONDO_TMP/ 3272 else 3269 3273 Die "Cannot find all.tar.gz, to be written to tape" 3270 fi3274 fi 3271 3275 else 3272 OfferToMakeBootableISO $imagesdir3276 OfferToMakeBootableISO $imagesdir 3273 3277 fi 3274 3278 if [ "$imagesdir" != "/root/images/mindi" ] ; then 3275 for i in `find $imagesdir -maxdepth 1 -name "*.iso" -o -name "*.img"` ; do3279 for i in `find $imagesdir -maxdepth 1 -name "*.iso" -o -name "*.img"` ; do 3276 3280 cp -f $i /root/images/mindi || LogIt "[line 1613] Cannot copy $i to /root/images/mindi" 3277 done3281 done 3278 3282 fi 3279 3283 [ "$TMP_ROOT" != "/tmp" ] && rm -Rf $TMP_ROOT 3280 rm -Rf /tmp/mindi-needlist.txt /tmp/mountlist.txt.$$ 3284 # cleanup 3285 rm -f /tmp/mountlist.txt.$$ $FDISKLOG /tmp/mindilinux 3281 3286 LogIt "$FRIENDLY_OUTSTRING" 3282 3287 ListUnsavedKernelModules 3283 3288 for mtpt in $FLOPPY_WAS_MOUNTED ; do 3284 mount $ptpt3289 mount $mtpt 3285 3290 done 3286 3291 echo "Mindi is exiting" >> $LOGFILE
Note:
See TracChangeset
for help on using the changeset viewer.
