On Debian family of OSes Grub2 tools are prefixed with 'grub-', not with
'grub2-'. We have to detect the correct name of the tool to use it.
Signed-off-by: Tomáš Golembiovský <tgolembi(a)redhat.com>
---
v2v/convert_linux.ml | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/v2v/convert_linux.ml b/v2v/convert_linux.ml
index 103728b..1f5f12c 100644
--- a/v2v/convert_linux.ml
+++ b/v2v/convert_linux.ml
@@ -109,6 +109,23 @@ let rec convert ~keep_serial_console (g : G.guestfs) inspect source
rcaps =
Not_found ->
error (f_"no grub1/grub-legacy or grub2 configuration file was found")
in
+ let grub2_mkconfig_cmd =
+ if grub = `Grub2 then
+ try
+ (* Red Hat and Suse families *)
+ ignore (g#command [| "grub2-mkconfig"; "--version" |]);
+ "grub2-mkconfig"
+ with G.Error _ ->
+ try
+ (* Debian family *)
+ ignore (g#command [| "grub-mkconfig"; "--version" |]);
+ "grub-mkconfig"
+ with G.Error _ ->
+ error (f_"failed to find grub2-mkconfig binary (but Grub2 was detected on
guest)")
+ else
+ ""
+ in
+
(* Grub prefix? Usually "/boot". *)
let grub_prefix =
match grub with
@@ -1109,7 +1126,7 @@ let rec convert ~keep_serial_console (g : G.guestfs) inspect source
rcaps =
g#aug_save ();
try
- ignore (g#command [| "grub2-mkconfig"; "-o"; grub_config
|])
+ ignore (g#command [| grub2_mkconfig_cmd; "-o"; grub_config |])
with
G.Error msg ->
warning (f_"could not rebuild grub2 configuration file (%s). This may
mean that grub output will not be sent to the serial port, but otherwise should be
harmless. Original error message: %s")
@@ -1431,7 +1448,7 @@ let rec convert ~keep_serial_console (g : G.guestfs) inspect source
rcaps =
(* If it's grub2, we have to regenerate the config files. *)
if grub = `Grub2 then
- ignore (g#command [| "grub2-mkconfig"; "-o"; grub_config
|]);
+ ignore (g#command [| grub2_mkconfig_cmd; "-o"; grub_config |]);
Linux.augeas_reload g
);
--
2.9.2