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 > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel >
-- Regards Vladimir 'φ-coder/phcoder' Serbinenko
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel