grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/2] Add grub-install --restore option


From: Zhu Yi
Subject: Re: [PATCH 2/2] Add grub-install --restore option
Date: Thu, 07 Jan 2010 09:10:05 +0800

On Wed, 2010-01-06 at 21:50 +0800, Robert Millan wrote:
> 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.

Do you prefer to implement above in C code and add a "--restore" option
to grub-setup or create a separate script for doing this?

Thanks,
-yi





reply via email to

[Prev in Thread] Current Thread [Next in Thread]