On Thursday, 10 November 2016 14:59:59 CET Richard W.M. Jones wrote:
From: Pavel Butsykin <pbutsykin(a)virtuozzo.com>
This patch improves the search of grub config on EFI partition. This
means that the config will be found not only for rhel but also for
many other distributions. Tests were performed on the following
distributions: centos, fedora, ubuntu, suse. In all cases, the config
path was /boot/efi/EFI/*distname*/grub.cfg
The main purpose of the patch is to improve support for converting of
vm with UEFI for most distributions. Unfortunately this patch does not
solve the problem for all distributions, for example Debian does not
store grub config on the EFI partition, therefore for such
distributions another solution is necessary.
Signed-off-by: Pavel Butsykin <pbutsykin(a)virtuozzo.com>
Signed-off-by: Richard W.M. Jones <rjones(a)redhat.com>
---
Mostly LGTM, just one thing it can be improved.
class bootloader_grub1 (g : G.guestfs) inspect grub_config =
+ let () =
+ if grub_config = "/boot/efi/EFI/redhat/grub.conf" then
+ g#aug_transform "grub" "/boot/efi/EFI/redhat/grub.conf" in
Augeas < 1.7.0 does not like adding a transformation for a file with
the same lens it is handled already [1]. As workaround, we can first
try to list the configuration file: if there are no results, then the
transformation is applied. Something like:
let () =
(* Apply the "grub" lens if it is not handling the file
* already -- Augeas < 1.7.0 will error out otherwise.
*)
if g#aug_ls grub_config = [||] then
g#aug_transform "grub" grub_config in
This way it will:
- pick configuration files for any distro, not just redhat-based ones
(fixing what Pavel reported)
- work fine (by doing nothing) with Augeas >= 1.7.0
[1]
https://www.redhat.com/archives/augeas-devel/2016-November/thread.html
--
Pino Toscano