[Thincrust-devel] [PATCH] Install grub in chroot to ensure correct ld-linux libs used.

Marek Goldmann mgoldman at redhat.com
Wed Aug 8 06:56:02 UTC 2012


Hi Marc,

This patch looks good for me. One question - why do you umount /dev 
twice if rc != 0?

--Marek

On 03.08.2012 16:16, Marc Savy wrote:
> Install Grub using chroot so that it uses the ld-linux.so downloaded for
> the *appliance* rather than using the *host's* ld-linux.so which may be
> invalid (the wrong arch type, etc).
>
>   From ce06bb9c95be57b4a3b4c88442e911d2404e5cee Mon Sep 17 00:00:00 2001
> From: Marc Savy <msavy at redhat.com>
> Date: Tue, 31 Jul 2012 16:03:18 +0100
> Subject: [PATCH] Install grub in chroot to ensure correct ld-linux libs
> used.
> To: thincrust-devel at redhat.com
>
> ---
>    appcreate/appliance.py | 9 +++++++--
>    1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/appcreate/appliance.py b/appcreate/appliance.py
> index f9fc784..1a13182 100644
> --- a/appcreate/appliance.py
> +++ b/appcreate/appliance.py
> @@ -287,7 +287,7 @@ class ApplianceImageCreator(ImageCreator):
>            # Ensure all data is flushed to disk before doing grub install
>            subprocess.call(["sync"])
>
> -        stage2 = self._instroot + "/boot/grub/stage2"
> +        stage2 = "/boot/grub/stage2"
>            setup = ""
>
>            i = 0
> @@ -301,15 +301,20 @@ class ApplianceImageCreator(ImageCreator):
>
>            logging.debug("Installing grub to %s" % loopdev)
>
> -        grub = subprocess.Popen([self._instroot + "/sbin/grub",
> "--batch", "--no-floppy"],
> +        subprocess.call(["mount", "--bind", "/dev", self._instroot +
> "/dev"])
> +
> +        grub = subprocess.Popen(["chroot", self._instroot,
> "/sbin/grub", "--batch", "--no-floppy"],
>                                    stdin=subprocess.PIPE)
>
>            grub.communicate(setup)
>            rc = grub.wait()
>
>            if rc != 0:
> +            subprocess.call(["umount", self._instroot + "/dev"])
>                raise MountError("Unable to install grub bootloader")
>
> +        subprocess.call(["umount", self._instroot + "/dev"])
> +
>            logging.debug("Grub installed.")
>
>        def _install_grub2(self):
>
>
> _______________________________________________
> Thincrust-devel mailing list
> Thincrust-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/thincrust-devel
>




More information about the Thincrust-devel mailing list