parent
b2d5c328ad
commit
e5b89cb8de
@ -1,2 +1,2 @@
|
|||||||
SOURCES/libguestfs.keyring
|
SOURCES/libguestfs.keyring
|
||||||
SOURCES/virt-v2v-2.5.6.tar.gz
|
SOURCES/virt-v2v-2.7.1.tar.gz
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
1bbc40f501a7fef9eef2a39b701a71aee2fea7c4 SOURCES/libguestfs.keyring
|
1bbc40f501a7fef9eef2a39b701a71aee2fea7c4 SOURCES/libguestfs.keyring
|
||||||
7c49844a2ffb54d6fcb58eca1dbf57b110d5d47e SOURCES/virt-v2v-2.5.6.tar.gz
|
e25884dd89561fc32072849c1cbc7b020ce75b34 SOURCES/virt-v2v-2.7.1.tar.gz
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
From 7800049c5612e6ffb30be7f8862d147d82976ae8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Wed, 31 Jul 2024 10:09:50 +0100
|
|
||||||
Subject: [PATCH] docs: Note that --mac len field is now optional
|
|
||||||
|
|
||||||
Reported-by: Ming Xie
|
|
||||||
Updates: commit 159fda411d2f75b087106e7293d273ae142c9fbe
|
|
||||||
---
|
|
||||||
docs/virt-v2v.pod | 6 +++---
|
|
||||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
|
||||||
index b53face6..dfe92d77 100644
|
|
||||||
--- a/docs/virt-v2v.pod
|
|
||||||
+++ b/docs/virt-v2v.pod
|
|
||||||
@@ -394,9 +394,9 @@ Force a particular interface (controlled by its MAC address) to have a
|
|
||||||
static IP address after boot.
|
|
||||||
|
|
||||||
The fields in the parameter are: C<ipaddr> is the IP address. C<gw>
|
|
||||||
-is the optional gateway IP address. C<len> is the subnet mask length
|
|
||||||
-(an integer). The final parameters are zero or more nameserver IP
|
|
||||||
-addresses.
|
|
||||||
+is the optional gateway IP address. C<len> is the optional subnet
|
|
||||||
+mask length (an integer). The final parameters are zero or more
|
|
||||||
+nameserver IP addresses.
|
|
||||||
|
|
||||||
This option can be supplied zero or more times.
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
|||||||
|
From 8dd5577174fe23ace5ecba7a81d2516315a0b301 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Wed, 30 Oct 2024 10:16:35 +0000
|
||||||
|
Subject: [PATCH] lib: OVF: Add preliminary support for Windows Server 2025
|
||||||
|
|
||||||
|
Unfortunately support has not yet been added to oVirt. However I have
|
||||||
|
inferred the correct ostype value based on existing entries.
|
||||||
|
|
||||||
|
Also pull in the following commit from the common submodule:
|
||||||
|
|
||||||
|
Richard W.M. Jones (1):
|
||||||
|
mlcustomize: Add heuristic support for Windows Server 2025
|
||||||
|
|
||||||
|
Related: https://issues.redhat.com/browse/RHEL-65009
|
||||||
|
Related: https://issues.redhat.com/browse/RHEL-65010
|
||||||
|
Reported-by: Ming Xie
|
||||||
|
---
|
||||||
|
common | 2 +-
|
||||||
|
lib/create_ovf.ml | 4 +++-
|
||||||
|
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
Submodule common e9eea65a..2d42128e:
|
||||||
|
diff --git a/common/mlcustomize/inject_virtio_win.ml b/common/mlcustomize/inject_virtio_win.ml
|
||||||
|
index 88c1c8cf..7e46f318 100644
|
||||||
|
--- a/common/mlcustomize/inject_virtio_win.ml
|
||||||
|
+++ b/common/mlcustomize/inject_virtio_win.ml
|
||||||
|
@@ -522,6 +522,8 @@ and virtio_iso_path_matches_guest_os t path =
|
||||||
|
(10, 0, not_client, ((=) "win2k19"))
|
||||||
|
else if pathelem "2k22" || pathelem "win2022" then
|
||||||
|
(10, 0, not_client, ((=) "win2k22"))
|
||||||
|
+ else if pathelem "2k25" || pathelem "win2025" then
|
||||||
|
+ (10, 0, not_client, ((=) "win2k25"))
|
||||||
|
else
|
||||||
|
raise Not_found in
|
||||||
|
|
||||||
|
diff --git a/lib/create_ovf.ml b/lib/create_ovf.ml
|
||||||
|
index f0b32e01..e2c19b08 100644
|
||||||
|
--- a/lib/create_ovf.ml
|
||||||
|
+++ b/lib/create_ovf.ml
|
||||||
|
@@ -242,10 +242,11 @@ and get_ostype = function
|
||||||
|
| "win2k16" -> "windows_2016x64"
|
||||||
|
| "win2k19" -> "windows_2019x64"
|
||||||
|
| "win2k22" -> "windows_2022"
|
||||||
|
+ | "win2k25" -> "windows_2025"
|
||||||
|
| _ ->
|
||||||
|
warning (f_"unknown Windows 10 variant: %s (%s)")
|
||||||
|
osinfo product;
|
||||||
|
- "windows_2022"
|
||||||
|
+ "windows_2025"
|
||||||
|
)
|
||||||
|
|
||||||
|
| { i_type = typ; i_distro = distro;
|
||||||
|
@@ -448,6 +449,7 @@ and get_ovirt_osid = function
|
||||||
|
| "win2k16" -> (* windows_2016x64 *) 29
|
||||||
|
| "win2k19" -> (* windows_2019x64 *) 31
|
||||||
|
| "win2k22" -> (* windows_2022 *) 37
|
||||||
|
+ (*| "win2k25" -> (* windows_2025 *) not yet known - 2024/10 *)
|
||||||
|
| _ ->
|
||||||
|
warning (f_"unknown Windows 10 variant: %s (%s)")
|
||||||
|
osinfo product;
|
@ -1,4 +1,4 @@
|
|||||||
From 73faaa69c32f09436ea8358c507102f2a0a0868e Mon Sep 17 00:00:00 2001
|
From 8d792ee85d5fc188cba79faff477ef5f73d73022 Mon Sep 17 00:00:00 2001
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
Date: Sun, 28 Sep 2014 19:14:43 +0100
|
Date: Sun, 28 Sep 2014 19:14:43 +0100
|
||||||
Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode
|
Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode
|
@ -1,207 +0,0 @@
|
|||||||
From c57ec4fd5d4942d2320aec4a6b01977dabb87f83 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Thu, 1 Aug 2024 09:01:47 +0100
|
|
||||||
Subject: [PATCH] convert: More robust qemu-ga installation, change paths
|
|
||||||
|
|
||||||
Add a commit from the common submodule to attempt to make qemu-ga
|
|
||||||
installation more robust on Windows.
|
|
||||||
|
|
||||||
Rename network configuration Powershell script from "v2vnetcf" to
|
|
||||||
"network-configuration". I also dropped the ".ps1" extension as the
|
|
||||||
modified Firstboot.add_firstboot_powershell function now adds this.
|
|
||||||
|
|
||||||
Update the common submodule to get these changes:
|
|
||||||
|
|
||||||
Richard W.M. Jones (3):
|
|
||||||
mlcustomize: Use Start-Process -Wait to run qemu-ga installer
|
|
||||||
mlcustomize: Add Firstboot.firstboot_dir function
|
|
||||||
mlcustomize: Place powershell scripts into <firstboot_dir>\Temp
|
|
||||||
---
|
|
||||||
common | 2 +-
|
|
||||||
convert/convert_windows.ml | 4 ++--
|
|
||||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
Submodule common ae639ba3..d489469f:
|
|
||||||
diff --git a/common/mlcustomize/firstboot.ml b/common/mlcustomize/firstboot.ml
|
|
||||||
index 4b9b910b..3bbba714 100644
|
|
||||||
--- a/common/mlcustomize/firstboot.ml
|
|
||||||
+++ b/common/mlcustomize/firstboot.ml
|
|
||||||
@@ -239,7 +239,22 @@ WantedBy=%s
|
|
||||||
end
|
|
||||||
|
|
||||||
module Windows = struct
|
|
||||||
- let rec install_service (g : Guestfs.guestfs) root =
|
|
||||||
+ (* Create and return the firstboot directory. *)
|
|
||||||
+ let create_firstboot_dir (g : Guestfs.guestfs) =
|
|
||||||
+ let rec loop firstboot_dir firstboot_dir_win = function
|
|
||||||
+ | [] -> firstboot_dir, firstboot_dir_win
|
|
||||||
+ | dir :: path ->
|
|
||||||
+ let firstboot_dir =
|
|
||||||
+ if firstboot_dir = "" then "/" ^ dir else firstboot_dir // dir in
|
|
||||||
+ let firstboot_dir_win = firstboot_dir_win ^ "\\" ^ dir in
|
|
||||||
+ let firstboot_dir = g#case_sensitive_path firstboot_dir in
|
|
||||||
+ g#mkdir_p firstboot_dir;
|
|
||||||
+ loop firstboot_dir firstboot_dir_win path
|
|
||||||
+ in
|
|
||||||
+ loop "" "C:" ["Program Files"; "Guestfs"; "Firstboot"]
|
|
||||||
+
|
|
||||||
+ let rec install_service (g : Guestfs.guestfs) root
|
|
||||||
+ firstboot_dir firstboot_dir_win =
|
|
||||||
(* Either rhsrvany.exe or pvvxsvc.exe must exist.
|
|
||||||
*
|
|
||||||
* (Check also that it's not a dangling symlink but a real file).
|
|
||||||
@@ -254,20 +269,7 @@ module Windows = struct
|
|
||||||
error (f_"One of rhsrvany.exe or pvvxsvc.exe is missing in %s. One of them is required in order to install Windows firstboot scripts. You can get one by building rhsrvany (https://github.com/rwmjones/rhsrvany)")
|
|
||||||
(virt_tools_data_dir ()) in
|
|
||||||
|
|
||||||
- (* Create a directory for firstboot files in the guest. *)
|
|
||||||
- let firstboot_dir, firstboot_dir_win =
|
|
||||||
- let rec loop firstboot_dir firstboot_dir_win = function
|
|
||||||
- | [] -> firstboot_dir, firstboot_dir_win
|
|
||||||
- | dir :: path ->
|
|
||||||
- let firstboot_dir =
|
|
||||||
- if firstboot_dir = "" then "/" ^ dir else firstboot_dir // dir in
|
|
||||||
- let firstboot_dir_win = firstboot_dir_win ^ "\\" ^ dir in
|
|
||||||
- let firstboot_dir = g#case_sensitive_path firstboot_dir in
|
|
||||||
- g#mkdir_p firstboot_dir;
|
|
||||||
- loop firstboot_dir firstboot_dir_win path
|
|
||||||
- in
|
|
||||||
- loop "" "C:" ["Program Files"; "Guestfs"; "Firstboot"] in
|
|
||||||
-
|
|
||||||
+ (* Create a directory for firstboot scripts in the guest. *)
|
|
||||||
g#mkdir_p (firstboot_dir // "scripts");
|
|
||||||
|
|
||||||
(* Copy pvvxsvc or rhsrvany to the guest. *)
|
|
||||||
@@ -339,11 +341,25 @@ echo uninstalling firstboot service
|
|
||||||
"PWD", REG_SZ firstboot_dir_win ];
|
|
||||||
] in
|
|
||||||
reg_import reg regedits
|
|
||||||
- );
|
|
||||||
-
|
|
||||||
- firstboot_dir
|
|
||||||
+ )
|
|
||||||
end
|
|
||||||
|
|
||||||
+let firstboot_dir (g : Guestfs.guestfs) root =
|
|
||||||
+ let typ = g#inspect_get_type root in
|
|
||||||
+
|
|
||||||
+ match typ with
|
|
||||||
+ | "linux" ->
|
|
||||||
+ let dir = Linux.firstboot_dir in
|
|
||||||
+ g#mkdir_p dir;
|
|
||||||
+ dir, None
|
|
||||||
+
|
|
||||||
+ | "windows" ->
|
|
||||||
+ let dir, dir_win = Windows.create_firstboot_dir g in
|
|
||||||
+ dir, Some dir_win
|
|
||||||
+
|
|
||||||
+ | _ ->
|
|
||||||
+ error (f_"guest type %s is not supported") typ
|
|
||||||
+
|
|
||||||
let script_count = ref 0
|
|
||||||
|
|
||||||
let add_firstboot_script (g : Guestfs.guestfs) root ?(prio = 5000) name
|
|
||||||
@@ -363,7 +379,8 @@ let add_firstboot_script (g : Guestfs.guestfs) root ?(prio = 5000) name
|
|
||||||
g#chmod 0o755 filename
|
|
||||||
|
|
||||||
| "windows", _ ->
|
|
||||||
- let firstboot_dir = Windows.install_service g root in
|
|
||||||
+ let firstboot_dir, firstboot_dir_win = Windows.create_firstboot_dir g in
|
|
||||||
+ Windows.install_service g root firstboot_dir firstboot_dir_win;
|
|
||||||
let filename = firstboot_dir // "scripts" // filename ^ ".bat" in
|
|
||||||
g#write filename (String.unix2dos content)
|
|
||||||
|
|
||||||
@@ -382,15 +399,18 @@ let add_firstboot_powershell g root ?prio name code =
|
|
||||||
*)
|
|
||||||
assert (g#inspect_get_type root = "windows");
|
|
||||||
|
|
||||||
- let windows_systemroot = g#inspect_get_windows_systemroot root in
|
|
||||||
-
|
|
||||||
- (* Create the temporary directory to put the Powershell file. *)
|
|
||||||
- let tempdir = sprintf "%s/Temp" windows_systemroot in
|
|
||||||
+ (* Place the Powershell script into firstboot_dir/Temp *)
|
|
||||||
+ let firstboot_dir, firstboot_dir_win = Windows.create_firstboot_dir g in
|
|
||||||
+ let tempdir = sprintf "%s/Temp" firstboot_dir in
|
|
||||||
g#mkdir_p tempdir;
|
|
||||||
- let ps_path = sprintf "%s/%s" tempdir name in
|
|
||||||
+
|
|
||||||
+ let ps_path = sprintf "%s/%s.ps1" tempdir name in
|
|
||||||
+ let ps_path_win = sprintf "%s\\Temp\\%s.ps1" firstboot_dir_win name in
|
|
||||||
let code = String.concat "\r\n" code ^ "\r\n" in
|
|
||||||
g#write ps_path code;
|
|
||||||
|
|
||||||
- let fb = sprintf "powershell.exe -ExecutionPolicy ByPass -NoProfile -file %s"
|
|
||||||
- ps_path in
|
|
||||||
+ (* Create a regular firstboot bat that just invokes powershell *)
|
|
||||||
+ let fb =
|
|
||||||
+ sprintf "powershell.exe -ExecutionPolicy ByPass -NoProfile -file \"%s\""
|
|
||||||
+ ps_path_win in
|
|
||||||
add_firstboot_script g root ?prio name fb
|
|
||||||
diff --git a/common/mlcustomize/firstboot.mli b/common/mlcustomize/firstboot.mli
|
|
||||||
index 8231af65..34ff0690 100644
|
|
||||||
--- a/common/mlcustomize/firstboot.mli
|
|
||||||
+++ b/common/mlcustomize/firstboot.mli
|
|
||||||
@@ -16,6 +16,23 @@
|
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*)
|
|
||||||
|
|
||||||
+val firstboot_dir : Guestfs.guestfs -> string -> string * string option
|
|
||||||
+(** [firstboot_dir g root]
|
|
||||||
+ returns the path of the firstboot directory, creating it in
|
|
||||||
+ the guest if necessary.
|
|
||||||
+
|
|
||||||
+ This returns the name of the directory as a guestfs path, and
|
|
||||||
+ optionally the name as a Windows path (only for Windows guests).
|
|
||||||
+
|
|
||||||
+ For Linux this could be [/usr/lib/virt-sysprep, None]
|
|
||||||
+
|
|
||||||
+ For Windows this could be ["/Program Files/Guestfs/Firstboot",
|
|
||||||
+ Some "C:\Program Files\Guestfs\Firstboot"]
|
|
||||||
+
|
|
||||||
+ Additional files that are used during firstboot can be placed
|
|
||||||
+ in this directory, but be careful not to conflict with files
|
|
||||||
+ and scripts added by the firstboot process itself. *)
|
|
||||||
+
|
|
||||||
val add_firstboot_script : Guestfs.guestfs -> string -> ?prio:int -> string ->
|
|
||||||
string -> unit
|
|
||||||
(** [add_firstboot_script g root prio name content] adds a firstboot
|
|
||||||
diff --git a/common/mlcustomize/inject_virtio_win.ml b/common/mlcustomize/inject_virtio_win.ml
|
|
||||||
index eee93669..b04a3b38 100644
|
|
||||||
--- a/common/mlcustomize/inject_virtio_win.ml
|
|
||||||
+++ b/common/mlcustomize/inject_virtio_win.ml
|
|
||||||
@@ -592,11 +592,11 @@ and configure_qemu_ga t files =
|
|
||||||
add "# Run qemu-ga installers";
|
|
||||||
List.iter (
|
|
||||||
fun msi_path ->
|
|
||||||
- add (sprintf "C:\\%s /norestart /qn /l+*vx C:\\%s.log"
|
|
||||||
+ add (sprintf "Start-Process -Wait -FilePath \"C:\\%s\" -ArgumentList \"/norestart\",\"/qn\",\"/l+*vx\",\"C:\\%s.log\""
|
|
||||||
msi_path msi_path)
|
|
||||||
) files;
|
|
||||||
|
|
||||||
- Firstboot.add_firstboot_powershell t.g t.root "install-qemu-ga.ps1" !script
|
|
||||||
+ Firstboot.add_firstboot_powershell t.g t.root "install-qemu-ga" !script
|
|
||||||
|
|
||||||
and configure_blnsvr t blnsvr =
|
|
||||||
let cmd = sprintf "\
|
|
||||||
diff --git a/convert/convert_windows.ml b/convert/convert_windows.ml
|
|
||||||
index 2d6e2059..52ca5bbe 100644
|
|
||||||
--- a/convert/convert_windows.ml
|
|
||||||
+++ b/convert/convert_windows.ml
|
|
||||||
@@ -397,7 +397,7 @@ let convert (g : G.guestfs) _ inspect i_firmware block_driver _ static_ips =
|
|
||||||
%systemroot%\\Sysnative\\PnPutil -i -a \
|
|
||||||
%systemroot%\\Drivers\\Virtio\\*.inf" in
|
|
||||||
|
|
||||||
- (* Set priority higher than that of "v2vnetcf.ps1" firstboot script. *)
|
|
||||||
+ (* Set priority higher than that of "network-configure" firstboot script. *)
|
|
||||||
Firstboot.add_firstboot_script g inspect.i_root ~prio:2000
|
|
||||||
"pnputil install drivers" fb_script;
|
|
||||||
|
|
||||||
@@ -674,7 +674,7 @@ let convert (g : G.guestfs) _ inspect i_firmware block_driver _ static_ips =
|
|
||||||
* Powershell script which runs at boot.
|
|
||||||
*)
|
|
||||||
if static_ips <> [] then (
|
|
||||||
- let psh_filename = "v2vnetcf.ps1" in
|
|
||||||
+ let psh_filename = "network-configure" in
|
|
||||||
let psh = ref [] in
|
|
||||||
let add = List.push_back psh in
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From 9b602a74f1cb359a281a80d944921d6d09a38bc8 Mon Sep 17 00:00:00 2001
|
From c9da5056aa7b0d939724b325808a587f79fdb01e Mon Sep 17 00:00:00 2001
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
Date: Fri, 24 Apr 2015 09:45:41 -0400
|
Date: Fri, 24 Apr 2015 09:45:41 -0400
|
||||||
Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu
|
Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu
|
@ -1,45 +0,0 @@
|
|||||||
From c952f310c902e438a8b0b5240a4b486b698bede8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Mon, 5 Aug 2024 10:08:34 +0100
|
|
||||||
Subject: [PATCH] docs: Add a note about removal of VMware Tools on Windows
|
|
||||||
|
|
||||||
We use VMware's recommended method for removal, but we know from
|
|
||||||
experience that this rarely works. The alternate method being
|
|
||||||
proposed involves making very invasive changes to the Registry and
|
|
||||||
filesystem, which are inappropriate for virt-v2v to do and highly
|
|
||||||
risky. Therefore simply document this, with notes for the virt-v2v
|
|
||||||
user if they want to try the risky method.
|
|
||||||
|
|
||||||
Fixes: https://issues.redhat.com/browse/RHEL-51169
|
|
||||||
Thanks: Yan Vugenfirer
|
|
||||||
Reported-by: Ming Xie
|
|
||||||
---
|
|
||||||
docs/virt-v2v.pod | 15 +++++++++++++++
|
|
||||||
1 file changed, 15 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
|
||||||
index dfe92d77..92941026 100644
|
|
||||||
--- a/docs/virt-v2v.pod
|
|
||||||
+++ b/docs/virt-v2v.pod
|
|
||||||
@@ -1299,6 +1299,21 @@ B<N.B.> Take care not to interrupt the automatic driver installation
|
|
||||||
process when logging in to the guest for the first time, as this may
|
|
||||||
prevent the guest from subsequently booting correctly.
|
|
||||||
|
|
||||||
+=head3 Removing VMware Tools from Windows guests
|
|
||||||
+
|
|
||||||
+Virt-v2v attempts to remove VMware Tools. For Windows guests this is
|
|
||||||
+supposed to happen during the first boot after conversion.
|
|
||||||
+
|
|
||||||
+We use VMware's recommended uninstallation method as that is the
|
|
||||||
+safest choice. However our experience has shown that this method
|
|
||||||
+usually fails. If so, VMware Tools must be removed by some other
|
|
||||||
+method.
|
|
||||||
+
|
|
||||||
+One possible method is described here:
|
|
||||||
+L<https://gist.github.com/broestls/f872872a00acee2fca02017160840624>
|
|
||||||
+You should carefully check this script since it makes very invasive
|
|
||||||
+changes to the Windows Registry and filesystem.
|
|
||||||
+
|
|
||||||
=head2 Free space for conversion
|
|
||||||
|
|
||||||
=head3 Free space in the guest
|
|
@ -1,25 +0,0 @@
|
|||||||
From 7bc9b115baba6df2969451cd6907e2d7543ef22d Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Mon, 5 Aug 2024 10:18:31 +0100
|
|
||||||
Subject: [PATCH] Update common submodule
|
|
||||||
|
|
||||||
Richard W.M. Jones (1):
|
|
||||||
mlcustomize: Write qemu-ga log file name to log.txt
|
|
||||||
---
|
|
||||||
common | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Submodule common 04116678..7b84a370:
|
|
||||||
diff --git a/common/mlcustomize/inject_virtio_win.ml b/common/mlcustomize/inject_virtio_win.ml
|
|
||||||
index 2981bff5..afec1e45 100644
|
|
||||||
--- a/common/mlcustomize/inject_virtio_win.ml
|
|
||||||
+++ b/common/mlcustomize/inject_virtio_win.ml
|
|
||||||
@@ -606,6 +606,8 @@ and configure_qemu_ga t tempdir_win files =
|
|
||||||
add "# Run qemu-ga installers";
|
|
||||||
List.iter (
|
|
||||||
fun msi ->
|
|
||||||
+ add (sprintf "Write-Host \"Writing log to %s\\%s.log\""
|
|
||||||
+ tempdir_win 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)
|
|
@ -1,78 +0,0 @@
|
|||||||
From 50f005f8b7034916588855c15b10a0195bf54b23 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Thu, 8 Aug 2024 10:40:24 +0100
|
|
||||||
Subject: [PATCH] Pull in a fix to make Windows firstboot more reliable.
|
|
||||||
|
|
||||||
Update the common submodule to get:
|
|
||||||
|
|
||||||
Richard W.M. Jones (2):
|
|
||||||
mlcustomize: Add some comments to firstboot batch file
|
|
||||||
mlcustomize: Reboot Windows between each firstboot script
|
|
||||||
|
|
||||||
Document that Windows may now reboot several times after conversion.
|
|
||||||
---
|
|
||||||
common | 2 +-
|
|
||||||
docs/virt-v2v.pod | 9 ++++++---
|
|
||||||
2 files changed, 7 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
Submodule common 7b84a370..a7883967:
|
|
||||||
diff --git a/common/mlcustomize/firstboot.ml b/common/mlcustomize/firstboot.ml
|
|
||||||
index 3bbba714..52e76401 100644
|
|
||||||
--- a/common/mlcustomize/firstboot.ml
|
|
||||||
+++ b/common/mlcustomize/firstboot.ml
|
|
||||||
@@ -278,6 +278,9 @@ module Windows = struct
|
|
||||||
(* Write a firstboot.bat control script which just runs the other
|
|
||||||
* scripts in the directory. Note we need to use CRLF line endings
|
|
||||||
* in this script.
|
|
||||||
+ *
|
|
||||||
+ * XXX It would be better to use powershell here. For some ideas see
|
|
||||||
+ * https://github.com/HCK-CI/HLK-Setup-Scripts/
|
|
||||||
*)
|
|
||||||
let firstboot_script = sprintf "\
|
|
||||||
@echo off
|
|
||||||
@@ -299,6 +302,7 @@ if not exist \"%%scripts_done%%\" (
|
|
||||||
mkdir \"%%scripts_done%%\"
|
|
||||||
)
|
|
||||||
|
|
||||||
+:: Pick the next script to run.
|
|
||||||
for %%%%f in (\"%%scripts%%\"\\*.bat) do (
|
|
||||||
echo running \"%%%%f\"
|
|
||||||
move \"%%%%f\" \"%%scripts_done%%\"
|
|
||||||
@@ -307,8 +311,17 @@ for %%%%f in (\"%%scripts%%\"\\*.bat) do (
|
|
||||||
set elvl=!errorlevel!
|
|
||||||
echo .... exit code !elvl!
|
|
||||||
popd
|
|
||||||
+
|
|
||||||
+ :: Reboot the computer. This is necessary to free any locked
|
|
||||||
+ :: files which may prevent later scripts from running.
|
|
||||||
+ shutdown /r /t 0 /y
|
|
||||||
+
|
|
||||||
+ :: Exit the script (in case shutdown returns before rebooting).
|
|
||||||
+ :: On next boot, the whole firstboot service will be called again.
|
|
||||||
+ exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
+:: Fallthrough here if there are no scripts.
|
|
||||||
echo uninstalling firstboot service
|
|
||||||
\"%%firstboot%%\\%s\" -s firstboot uninstall
|
|
||||||
" firstboot_dir_win srvany in
|
|
||||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
|
||||||
index 92941026..587b4604 100644
|
|
||||||
--- a/docs/virt-v2v.pod
|
|
||||||
+++ b/docs/virt-v2v.pod
|
|
||||||
@@ -1295,9 +1295,12 @@ The guest will be bootable after the offline conversion stage, but
|
|
||||||
will not yet have all necessary drivers installed to work correctly.
|
|
||||||
These will be installed automatically the first time the guest boots.
|
|
||||||
|
|
||||||
-B<N.B.> Take care not to interrupt the automatic driver installation
|
|
||||||
-process when logging in to the guest for the first time, as this may
|
|
||||||
-prevent the guest from subsequently booting correctly.
|
|
||||||
+B<N.B.> Windows may reboot 4 or more times the first time after
|
|
||||||
+conversion. This is required to install the required drivers, guest
|
|
||||||
+agents, remove VMware Tools, and configure the network. Take care not
|
|
||||||
+to interrupt the automatic driver installation process when logging in
|
|
||||||
+to the guest for the first time, as this may prevent the guest from
|
|
||||||
+subsequently booting correctly.
|
|
||||||
|
|
||||||
=head3 Removing VMware Tools from Windows guests
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From a3b4f52cd0e74486b13cbb4d0de007c047afe2cd Mon Sep 17 00:00:00 2001
|
From 1c85b582fc38f379b54efe344dc2323db95acc78 Mon Sep 17 00:00:00 2001
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
Date: Thu, 2 Mar 2017 14:21:37 +0100
|
Date: Thu, 2 Mar 2017 14:21:37 +0100
|
||||||
Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671)
|
Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671)
|
@ -1,30 +0,0 @@
|
|||||||
From e9c0d63b22bcb4c31cfaac00fc1271713c8bd3b3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Thu, 8 Aug 2024 10:56:16 +0100
|
|
||||||
Subject: [PATCH] docs: Restate position on removal of VMware Tools
|
|
||||||
|
|
||||||
With the "reboot after every step" change made in the previous commit,
|
|
||||||
it seems removal of VMware Tools is now more reliable. Update the
|
|
||||||
notes about this.
|
|
||||||
|
|
||||||
Updates: commit c952f310c902e438a8b0b5240a4b486b698bede8
|
|
||||||
---
|
|
||||||
docs/virt-v2v.pod | 5 ++---
|
|
||||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
|
||||||
index 587b4604..346be606 100644
|
|
||||||
--- a/docs/virt-v2v.pod
|
|
||||||
+++ b/docs/virt-v2v.pod
|
|
||||||
@@ -1308,9 +1308,8 @@ Virt-v2v attempts to remove VMware Tools. For Windows guests this is
|
|
||||||
supposed to happen during the first boot after conversion.
|
|
||||||
|
|
||||||
We use VMware's recommended uninstallation method as that is the
|
|
||||||
-safest choice. However our experience has shown that this method
|
|
||||||
-usually fails. If so, VMware Tools must be removed by some other
|
|
||||||
-method.
|
|
||||||
+safest choice. If this fails, VMware Tools must be manually removed
|
|
||||||
+by some other method.
|
|
||||||
|
|
||||||
One possible method is described here:
|
|
||||||
L<https://gist.github.com/broestls/f872872a00acee2fca02017160840624>
|
|
@ -1,17 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmapDYsRHHJpY2hAYW5u
|
|
||||||
ZXhpYS5vcmcACgkQkXOPc+G3aKATow//dAt+/eD4WANTgt82gOK5VLuhlp/il6/L
|
|
||||||
IsErVntOsmAlr1Ukag6lAFmrQrxDHbRo1g9w+P3dabEbedqeAy0vlyE7feifbzfn
|
|
||||||
8dAGAYJBPqyhG5w5Y1YKU/ZfJF5OjxuD9kjn5YTBNmNNva2wqrb4vQqLfmfhpMlx
|
|
||||||
hf3xMlqJ3plXvaqPFk69BzSgA1hKP9Z/f522RQs9lRq+aSP00zatLX9DK5oXynas
|
|
||||||
6DbInkrfUjbMaENoYcuUzC1w45DUcTcq6Or36+h86G78yIkQpfwlS82G0/f4wVnv
|
|
||||||
QlD5pC6dCmowuCrr5/xMoYt5ah7L+qcEUIRJ4uB0xQgQtQV32eLIFjpcHsN973ot
|
|
||||||
ji2ievMtoM5Ncu2Hq1R02Hvx5PUvVZamEpEWf+HzqJl2VATw2F63CMALLjxR6mw4
|
|
||||||
WORi90ZLQWtbt7lJgZEI29WOabuBWGG/cn+01gWLh8swqQpAgkGsbJhCxNXLiUfy
|
|
||||||
0PE7K+zoWVZzSiuOVeIh1Gn2p75gSTRQXfY+l+IfPPfOUBOuNN+w1J5HRUaT7ZAk
|
|
||||||
zBbPGFA2Y6x2zR9TD5n87QftXF6LPhf715qh5URI4Wl0pE+C9gxhQk+nf1aMKJ5J
|
|
||||||
/fOAtU8N+PtZPUm95NTaQxpkraspwHmhLRygWzA7wUGANmVUiX0fE3qgxW9NE2bI
|
|
||||||
paYjGigt040=
|
|
||||||
=FGlR
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@ -0,0 +1,17 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmcX1vARHHJpY2hAYW5u
|
||||||
|
ZXhpYS5vcmcACgkQkXOPc+G3aKAx9xAAgHsZ9z7uoEC70+xxZIS3UVVzfSb/4Vik
|
||||||
|
lMgZr1+lTsFRT7cFwog+7xl/KCAfxSpNyBCfmLH3IKSSiKzVJjw4CwfbIDmRsc+5
|
||||||
|
dJeaFJaOFeaANhqxStYWwXwG9WdmPGghM3tLJZhoeYBieZ80ei2wZrh3H+cK3/hl
|
||||||
|
0mzFonLLmKFAR0AhuiLDmITGRg/SCSEZuopLLvL9n8LKQ+v8LCf0pKjZjinD4IGY
|
||||||
|
J0sSbHF9e4hwaHKpOqerEnMZgkKaKG6JtKf9cj5uTdANIT3e5xfCkYjsPIDzhOpg
|
||||||
|
7irOa2zpQJoVzqiYavSdxKdp/Uvw6+Zkb54rjwAxZSlPTSWHMFQfRSs1aY8o+mkQ
|
||||||
|
YkEo2jiDDzB9PdrJre062kiA/J+aSvHwy5AivJxX/N7pMoida5H9ERfV4h79NHgA
|
||||||
|
Vy/jQ237lO0DE/Fn4O1mchxWKozbFuwajo7a+/XocskrJNpOgBhukl8fQiNfqFHp
|
||||||
|
LP1KshvRlXljw2f0yuTm2gb2NNN2axu+1QzBp37V5MmA4WEbJwuMRILn8ntK0979
|
||||||
|
pQjtVGkYdA1aBOAX1ZJaaz6xEjwk2h9eNlY4Uu+eIUdIVgtUk7pfatOMApETmbUf
|
||||||
|
ilLiPhWZrFCqLNHAe9uG+wEbYcf7Glx1jP5wpHXR7DSVl2ZLydNpFC/YHttIXoF5
|
||||||
|
sJbNDeHwEVU=
|
||||||
|
=FH7a
|
||||||
|
-----END PGP SIGNATURE-----
|
Loading…
Reference in new issue