119 lines
4.9 KiB
Diff
119 lines
4.9 KiB
Diff
From 692354df0bf2915955d8c66705685f66f5f44844 Mon Sep 17 00:00:00 2001
|
||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||
Date: Thu, 1 Aug 2024 10:36:52 +0100
|
||
Subject: [PATCH] common: mlcustomize: Inject qemu-ga & blnsvr into
|
||
<firstboot_dir>/Temp
|
||
|
||
Update common submodule to pick up this further change which should
|
||
mean that for all Windows conversions, everything is confined to
|
||
C:\Program Files\Guestfs\Firstboot (except the virtio drivers
|
||
themselves).
|
||
|
||
Richard W.M. Jones (1):
|
||
mlcustomize: Inject qemu-ga & blnsvr into <firstboot_dir>/Temp
|
||
|
||
(cherry picked from commit 168eacf977ca49e96bc63ddc4109c27515ac0277)
|
||
---
|
||
common | 2 +-
|
||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
||
Submodule common d489469f..04116678:
|
||
diff --git a/common/mlcustomize/inject_virtio_win.ml b/common/mlcustomize/inject_virtio_win.ml
|
||
index b04a3b38..2981bff5 100644
|
||
--- a/common/mlcustomize/inject_virtio_win.ml
|
||
+++ b/common/mlcustomize/inject_virtio_win.ml
|
||
@@ -263,14 +263,28 @@ let rec inject_virtio_win_drivers ({ g } as t) reg =
|
||
}
|
||
)
|
||
|
||
-and inject_qemu_ga t =
|
||
- let msi_files = copy_qemu_ga t in
|
||
+and inject_qemu_ga ({ g; root } as t) =
|
||
+ (* Copy the qemu-ga MSI(s) to the guest. *)
|
||
+ let dir, dir_win = Firstboot.firstboot_dir g root in
|
||
+ let dir_win = Option.value dir_win ~default:dir in
|
||
+ let tempdir = sprintf "%s/Temp" dir in
|
||
+ let tempdir_win = sprintf "%s\\Temp" dir_win in
|
||
+ g#mkdir_p tempdir;
|
||
+
|
||
+ let msi_files = copy_qemu_ga t tempdir in
|
||
if msi_files <> [] then
|
||
- configure_qemu_ga t msi_files;
|
||
+ configure_qemu_ga t tempdir_win msi_files;
|
||
msi_files <> [] (* return true if we found some qemu-ga MSI files *)
|
||
|
||
-and inject_blnsvr t =
|
||
- let files = copy_blnsvr t in
|
||
+and inject_blnsvr ({ g; root } as t) =
|
||
+ (* Copy the files to the guest. *)
|
||
+ let dir, dir_win = Firstboot.firstboot_dir g root in
|
||
+ let dir_win = Option.value dir_win ~default:dir in
|
||
+ let tempdir = sprintf "%s/Temp" dir in
|
||
+ let tempdir_win = sprintf "%s\\Temp" dir_win in
|
||
+ g#mkdir_p tempdir;
|
||
+
|
||
+ let files = copy_blnsvr t tempdir in
|
||
match files with
|
||
| [] -> false (* Didn't find or install anything. *)
|
||
|
||
@@ -278,7 +292,7 @@ and inject_blnsvr t =
|
||
* drivers/by-driver). Pick the first.
|
||
*)
|
||
| blnsvr :: _ ->
|
||
- configure_blnsvr t blnsvr;
|
||
+ configure_blnsvr t tempdir_win blnsvr;
|
||
true
|
||
|
||
and add_guestor_to_registry t ((g, root) as reg) drv_name drv_pciid =
|
||
@@ -360,13 +374,13 @@ and copy_drivers t driverdir =
|
||
(fun () ->
|
||
error (f_"root directory ‘/’ is missing from the virtio-win directory or ISO.\n\nThis should not happen and may indicate that virtio-win or virt-v2v is broken in some way. Please report this as a bug with a full debug log."))
|
||
|
||
-and copy_qemu_ga t =
|
||
- copy_from_virtio_win t "/" "/" (virtio_iso_path_matches_qemu_ga t)
|
||
+and copy_qemu_ga t tempdir =
|
||
+ copy_from_virtio_win t "/" tempdir (virtio_iso_path_matches_qemu_ga t)
|
||
(fun () ->
|
||
error (f_"root directory ‘/’ is missing from the virtio-win directory or ISO.\n\nThis should not happen and may indicate that virtio-win or virt-v2v is broken in some way. Please report this as a bug with a full debug log."))
|
||
|
||
-and copy_blnsvr t =
|
||
- copy_from_virtio_win t "/" "/" (virtio_iso_path_matches_blnsvr t)
|
||
+and copy_blnsvr t tempdir =
|
||
+ copy_from_virtio_win t "/" tempdir (virtio_iso_path_matches_blnsvr t)
|
||
(fun () ->
|
||
error (f_"root directory ‘/’ is missing from the virtio-win directory or ISO.\n\nThis should not happen and may indicate that virtio-win or virt-v2v is broken in some way. Please report this as a bug with a full debug log."))
|
||
|
||
@@ -578,7 +592,7 @@ and copy_from_libosinfo { g; i_osinfo; i_arch } destdir =
|
||
(* Install qemu-ga. [files] is the non-empty list of possible qemu-ga
|
||
* installers we detected.
|
||
*)
|
||
-and configure_qemu_ga t files =
|
||
+and configure_qemu_ga t tempdir_win files =
|
||
let script = ref [] in
|
||
let add = List.push_back script in
|
||
|
||
@@ -591,16 +605,17 @@ and configure_qemu_ga t files =
|
||
add "";
|
||
add "# Run qemu-ga installers";
|
||
List.iter (
|
||
- fun msi_path ->
|
||
- add (sprintf "Start-Process -Wait -FilePath \"C:\\%s\" -ArgumentList \"/norestart\",\"/qn\",\"/l+*vx\",\"C:\\%s.log\""
|
||
- msi_path msi_path)
|
||
+ fun msi ->
|
||
+ (* [`] is an escape char for quotes *)
|
||
+ add (sprintf "Start-Process -Wait -FilePath \"%s\\%s\" -ArgumentList \"/norestart\",\"/qn\",\"/l+*vx\",\"`\"%s\\%s.log`\"\""
|
||
+ tempdir_win msi tempdir_win msi)
|
||
) files;
|
||
|
||
Firstboot.add_firstboot_powershell t.g t.root "install-qemu-ga" !script
|
||
|
||
-and configure_blnsvr t blnsvr =
|
||
+and configure_blnsvr t tempdir_win blnsvr =
|
||
let cmd = sprintf "\
|
||
@echo off\n\
|
||
echo Installing %s\n\
|
||
- c:\\%s -i\n" blnsvr blnsvr in
|
||
- Firstboot.add_firstboot_script t.g t.root (sprintf "install-%s" blnsvr) cmd
|
||
+ \"%s\\%s\" -i\n" blnsvr tempdir_win blnsvr in
|
||
+ Firstboot.add_firstboot_script t.g t.root "install-blnsvr" cmd
|