On Fri, 2005-07-29 at 22:49 +0900, Dave Gutteridge wrote: > How can I reinstall Windows with a clean partition, and preserve my > dual booting? Can make a Grub boot floppy with a copy of the current grub.conf - see script at bottom, [a simpler approach is to use "grub-install /dev/fd0" to create a GRUB floppy, but I like having the config on the floppy - allows modifications for different boot defaults, as well as providing a backup] and/or make a boot CD: # mkbootdisk --iso --device boot`uname -r`.iso `uname -r` On my system this results in file boot2.6.9-11.106.unsupportedsmp.iso which can then be written to CD with # cdrecord -v -dao -eject -data driveropts=burnfree dev=/dev/hda boot2.6.9-11.106.unsupportedsmp.iso (all one line - watch for wraps) Either method will let you boot back to the installed system without going though the rescue gyrations. Can then rewrite grub with # grub-install /dev/hda [ or whatever boot device ] Phil ------------------------ Cut Here --------------------------------- #!/bin/bash # mkgrubdisk # # Written by Phil Schaffner <p.r.schaffner@xxxxxxxx> # based on mkbootdisk by Erik Troan <ewt@xxxxxxxxxx> pause=yes format=yes device=/dev/fd0 unset verbose GRUBDIR=/boot/grub MOUNTDIR=/tmp/mkgrubmenu PATH=/sbin:$PATH export PATH VERSION=0.1 usage () { cat >&2 <<EOF usage: `basename $0` [--version] [--noprompt] [--noformat] [--device <devicefile>] [--grubdir <dir>] [--verbose -v] (ex: `basename $0` --device /dev/fd1) EOF exit $1 } while [ $# -gt 0 ]; do case $1 in --device) shift device=$1 ;; --grubdir) shift GRUBDIR=$1 ;; --help) usage 0 ;; --noprompt) unset pause ;; --noformat) unset format ;; -v) verbose=true ;; --verbose) verbose=true ;; --version) echo "mkgrubdisk: version $VERSION" exit 0 ;; *) usage ;; esac shift done [ -d $GRUBDIR ] || { echo "$GRUBDIR is not a directory!" >&2 exit 1 } if [ -e "$device" ]; then { [ -n "$pause" ] && { echo -n "Insert a" [ -n "$format" ] || echo -n " vfat formatted" echo " disk in $device." echo "Any information on the disk will be lost." echo -n "Press <Enter> to continue or ^C to abort: " read aline } [ -n "$format" ] && { [ -n "$verbose" ] && echo "Formatting $device... " fdformat $device || exit 0 mkfs.msdos $device > /dev/null 2>/dev/null || exit 0 [ -n "$verbose" ] && echo "done." } rm -rf $MOUNTDIR mkdir $MOUNTDIR || { echo "Failed to create $MOUNTDIR" >&2 exit 1 } [ -d $MOUNTDIR ] || { echo "$MOUNTDIR is not a directory!" >&2 exit 1 } mount -wt vfat $device $MOUNTDIR || { rmdir $MOUNTDIR exit 1 } mkdir $MOUNTDIR/grub [ -n "$verbose" ] && echo -n "Copying $GRUBDIR files... " cd $GRUBDIR cp -a stage1 stage2 grub.conf device.map splash.xpm.gz $MOUNTDIR/grub [ -n "$verbose" ] && echo "done." [ -n "$verbose" ] && echo -n "Setting up GRUB... " grub --device-map=$GRUBDIR/device.map --batch <<EOF root (fd0) setup (fd0) quit EOF [ -n "$verbose" ] && echo "done." umount $MOUNTDIR rmdir $MOUNTDIR [ -n "$verbose" ] && echo "done setting up GRUB." echo "Edit (fd0)/grub/grub.conf to customize." echo "May want to use splashimage=(fd0)/grub/splash.xpm.gz" } else echo "$device does not exist" fi