grub-devel
[Top][All Lists]
Advanced

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

Re: boot directory prefix in grub-install (even with --root-directory)


From: Vladimir 'φ-coder/phcoder' Serbinenko
Subject: Re: boot directory prefix in grub-install (even with --root-directory)
Date: Tue, 22 Dec 2009 13:18:42 +0100
User-agent: Mozilla-Thunderbird 2.0.0.22 (X11/20091109)

Grégoire Sutre wrote:
> Hi,
>
> grub-install copies GRUB images into ${rootdir}/boot/grub (where
> ${rootdir} is empty by default and can be changed with --root-directory).
>
> To install GRUB files on a partition that contains a /boot file, one
> must specify a non-empty --root-directory, and grub files are then
> copied into /DIR/boot/grub.  Or one could mount the partition on a
> mount point of the form DIR/boot and specify --root-directory=DIR to
> force installation into the /grub directory of the partition.  Both
> solutions are not completely satisfactory.  Is there a better one?
>
> The problem arises e.g. with NetBSD which uses /boot for its own
> bootloader.  The script util/grub-install.in contains lines to take
> care of that situation (lines 160-172), but these lines rely on a
> variable ${host_os} that is not set.  This might be deprecated code
> from GRUB Legacy's grub-install, where ${host_os} is set by a
> configure substitution.
>
> An alternative solution would be to have grub-install install in
> ${rootdir}/grub, with ${rootdir} equal to /boot by default.  The
> default behavior (with no --root-directory) would be the same.
The main problem is with scripts already using --root-directory and
relying on existing behaviour. I propose add a new option
--grub-directory=DIR
which defaults to ROOTDIR/boot/grub
What do you think about this?
>
> The following patch implements this alternative.
>
> Thanks for your time,
>
> Grégoire
>
> --- util/grub-install.in.orig    2009-12-22 11:26:01.538833717 +0100
> +++ util/grub-install.in    2009-12-22 12:48:55.979476412 +0100
> @@ -39,8 +39,7 @@
>  fi
>  grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}`
>  grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
> -rootdir=
> -grub_prefix=`echo /boot/grub | sed ${transform}`
> +rootdir=/boot
>  modules=
>
>  install_device=
> @@ -66,7 +65,7 @@
>    -v, --version           print the version information and exit
>    --modules=MODULES       pre-load specified modules MODULES
>    --root-directory=DIR    install GRUB images under the directory DIR
> -                          instead of the root directory
> +                          instead of ${rootdir}
>    --grub-setup=FILE       use FILE as grub-setup
>    --grub-mkimage=FILE     use FILE as grub-mkimage
>    --grub-mkdevicemap=FILE use FILE as grub-mkdevicemap
> @@ -84,7 +83,7 @@
>
>  INSTALL_DEVICE can be a GRUB device name or a system device filename.
>
> -grub-install copies GRUB images into the DIR/boot directory specified by
> +grub-install copies GRUB images into the DIR/`echo grub | sed
> ${transform}` directory specified by
>  --root-directory, and uses grub-setup to install grub into the boot
>  sector.
>
> @@ -157,21 +156,7 @@
>      setup_verbose="--verbose"
>  fi
>
> -# Initialize these directories here, since ROOTDIR was initialized.
> -case "$host_os" in
> -netbsd* | openbsd*)
> -    # Because /boot is used for the boot block in NetBSD and OpenBSD,
> use /grub
> -    # instead of /boot/grub.
> -    grub_prefix=`echo /grub | sed ${transform}`
> -    bootdir=${rootdir}
> -    ;;
> -*)
> -    # Use /boot/grub by default.
> -    bootdir=${rootdir}/boot
> -    ;;
> -esac
> -
> -grubdir=${bootdir}/`echo grub | sed ${transform}`
> +grubdir=${rootdir}/`echo grub | sed ${transform}`
>  device_map=${grubdir}/device.map
>
>  grub_probe="${grub_probe} --device-map=${device_map}"
> @@ -204,8 +189,7 @@
>  fi
>
>  # Create the GRUB directory if it is not present.
> -test -d "$bootdir" || mkdir "$bootdir" || exit 1
> -test -d "$grubdir" || mkdir "$grubdir" || exit 1
> +mkdir -p "$grubdir" || exit 1
>
>  # If --recheck is specified, remove the device map, if present.
>  if test $recheck = yes; then
>
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/grub-devel
>


-- 
Regards
Vladimir 'φ-coder/phcoder' Serbinenko


Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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