Hi, On Wed, Jan 06, 2010 at 05:10:04PM +0800, Zhu Yi wrote: > diff --git a/util/i386/pc/grub-install.in b/util/i386/pc/grub-install.in > index 8a06213..4d0043e 100644 > --- a/util/i386/pc/grub-install.in > +++ b/util/i386/pc/grub-install.in > @@ -51,6 +51,7 @@ no_floppy= > force_lba= > recheck=no > debug=no > +restore= > > if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then > disk_module=biosdisk > @@ -77,6 +78,7 @@ Install GRUB on your drive. > --no-floppy do not probe any floppy drive > --recheck probe a device map even if it already exists > --force install even if problems are detected > + --restore restore the previous boot sectors > EOF > if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then > cat <<EOF > @@ -129,6 +131,10 @@ for option in "$@"; do > debug=yes ;; > -f | --force) > setup_force="--force" ;; > + --restore) > + restore="$grub_prefix/bootsectors.bak" ;; > + --restore=*) > + restore=`echo "$option" | sed 's/--restore=//'` ;; > -*) > echo "Unrecognized option \`$option'" 1>&2 > usage > @@ -203,6 +209,29 @@ else > exit 1 > fi > > +if test -f "$restore"; then > + if test `stat -c%s $restore` -eq 512; then > + dd if=$restore of=$install_device bs=512 count=1 > + exit 0 > + fi > + start=`od -j92 -N8 -An -td8 $grubdir/boot.img` > + > + # Synaty check > + if test $((`stat -c%s $restore` - $start * 512)) -ne \ > + `stat -c%s $grubdir/core.img`; then > + echo "Error: $restore doesn't match core.img, restore aborted." > + exit 1 > + fi > + > + # Restore > + dd if=$restore of=$install_device bs=512 count=1 > /dev/null 2>&1 > + dd if=$restore of=$install_device skip=512 seek=`expr $start \* 512` \ > + bs=1 > /dev/null 2>&1 > + rm -f $restore > + echo "Restore boot sectors from $restore successfully" > + exit 0 > +fi
Please don't add this to grub-install. This kind of highly BIOS-specific logic would suit much better in grub-setup. -- Robert Millan "Be the change you want to see in the world" -- Gandhi _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel