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@ieee.org # based on mkbootdisk by Erik Troan ewt@redhat.com
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