[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/2] Add grub-install --restore option
From: |
Robert Millan |
Subject: |
Re: [PATCH 2/2] Add grub-install --restore option |
Date: |
Wed, 6 Jan 2010 14:50:24 +0100 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
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