Fix ESP conversion if C:\Windows\Temp has alternate case

resolves: RHEL-124569
This commit is contained in:
Richard W.M. Jones 2025-10-29 09:23:02 +00:00
parent a061604cbe
commit fb087ef595
13 changed files with 771 additions and 21 deletions

View File

@ -0,0 +1,52 @@
From 1cb7a3018456771ed60b77943989f6dfb0555467 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 28 Oct 2025 08:55:55 +0000
Subject: [PATCH] test-data/phony-guests/make-windows-img.sh: Minor tweaks
Since we know we're running bash, we can use [[ =~ ]] rather than
running an external grep command.
Also format everything with 4 space indents as standard.
---
test-data/phony-guests/make-windows-img.sh | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/test-data/phony-guests/make-windows-img.sh b/test-data/phony-guests/make-windows-img.sh
index b52d2522..475d8d14 100755
--- a/test-data/phony-guests/make-windows-img.sh
+++ b/test-data/phony-guests/make-windows-img.sh
@@ -27,10 +27,10 @@ OSNAME=${IMAGENAME%".img"}
SOFTWARE_REG="$SRCDIR/$OSNAME-software.reg.bin"
SYSTEM_REG="$SRCDIR/windows-system.reg.bin"
-if echo "$IMAGENAME" | grep -q "\-32"; then
- CMD_EXE="$SRCDIR/../binaries/bin-win32.exe"
+if [[ "$IMAGENAME" =~ -32 ]]; then
+ CMD_EXE="$SRCDIR/../binaries/bin-win32.exe"
else
- CMD_EXE="$SRCDIR/../binaries/bin-win64.exe"
+ CMD_EXE="$SRCDIR/../binaries/bin-win64.exe"
fi
# If the currently compiled libguestfs doesn't support
@@ -38,13 +38,13 @@ fi
# Nothing actually uses these images in the standard build so we can
# just 'touch' it and emit a warning.
if ! guestfish -a /dev/null run : available "ntfs3g ntfsprogs"; then
- echo "***"
- echo "Warning: cannot create $IMAGENAME because there is no NTFS"
- echo "support in this build of libguestfs. Just touching the output"
- echo "file instead."
- echo "***"
- touch $IMAGENAME
- exit 0
+ echo "***"
+ echo "Warning: cannot create $IMAGENAME because there is no NTFS"
+ echo "support in this build of libguestfs. Just touching the output"
+ echo "file instead."
+ echo "***"
+ touch $IMAGENAME
+ exit 0
fi
# Create a disk image.

View File

@ -0,0 +1,540 @@
From ec57b5f69204711db54b39bc42852a2f921d1fe1 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 28 Oct 2025 09:05:42 +0000
Subject: [PATCH] test-data/phony-guests: Create one Windows UEFI image for
testing
Our existing script only created (phony) BIOS images. However it's
useful to have at least one UEFI image around for testing, since the
code path within virt-v2v is different.
The specifics of the changes needed are:
- Use GPT instead of MBR (do this even for BIOS)
- Set the first partition type to either BIOS or ESP, latter for UEFI
- Use VFAT instead of NTFS for the first partition
- For UEFI only, put a BCD hive on the first partition, since
virt-v2v attempts to edit it
---
test-data/phony-guests/Makefile.am | 19 +-
test-data/phony-guests/make-windows-img.sh | 46 ++-
test-data/phony-guests/windows-bcd.reg | 365 +++++++++++++++++++++
3 files changed, 423 insertions(+), 7 deletions(-)
create mode 100644 test-data/phony-guests/windows-bcd.reg
diff --git a/test-data/phony-guests/Makefile.am b/test-data/phony-guests/Makefile.am
index 47b9ddf8..9ccf10ba 100644
--- a/test-data/phony-guests/Makefile.am
+++ b/test-data/phony-guests/Makefile.am
@@ -45,6 +45,8 @@ EXTRA_DIST = \
windows-software-all.reg \
windows-system.reg \
windows-system.reg.bin \
+ windows-bcd.reg \
+ windows-bcd.reg.bin \
minimal-hive \
make-guests-all-good.pl \
guests.xml.in
@@ -68,6 +70,7 @@ disk_images = \
win10.img \
win11.img \
win2k22.img \
+ win2k22-uefi.img \
win2k25.img \
win7-32.img \
winxp-32.img \
@@ -153,6 +156,13 @@ win%.img: make-windows-img.sh \
windows-system.reg.bin
SRCDIR=$(srcdir) $(top_builddir)/run --test ./$< $@
+# Make a (dummy) Windows UEFI image.
+win2k22-uefi.img: make-windows-img.sh \
+ win2k22-software.reg.bin \
+ windows-system.reg.bin \
+ windows-bcd.reg.bin
+ SRCDIR=$(srcdir) $(top_builddir)/run --test ./$< $@
+
# This is the 'latest` windows image used by most test cases
windows.img: win2k22.img
ln -f $< $@
@@ -191,10 +201,17 @@ windows-system.reg.bin: windows-system.reg
hivexregedit --merge $@-t --prefix 'HKEY_LOCAL_MACHINE\SYSTEM' $<
mv $@-t $@
+windows-bcd.reg.bin: windows-bcd.reg
+ rm -f $@ $@-t
+ cp $(srcdir)/minimal-hive $@-t
+ hivexregedit --merge $@-t $<
+ mv $@-t $@
+
DISTCLEANFILES += \
fedora.db \
windows-software.reg.bin \
- windows-system.reg.bin
+ windows-system.reg.bin \
+ windows-bcd.reg.bin
# Don't construct the guests in parallel. In automake 1.13, check_DATA
# was changed so it can now run in parallel, but this causes everything
diff --git a/test-data/phony-guests/make-windows-img.sh b/test-data/phony-guests/make-windows-img.sh
index 475d8d14..5b3f7912 100755
--- a/test-data/phony-guests/make-windows-img.sh
+++ b/test-data/phony-guests/make-windows-img.sh
@@ -23,7 +23,14 @@ set -e
IMAGENAME="$1"
test -z "$IMAGENAME" && (echo "Must pass image name" ; exit 1)
-OSNAME=${IMAGENAME%".img"}
+
+if [[ "$IMAGENAME" =~ -uefi ]]; then
+ EFI=1
+ OSNAME=${IMAGENAME%"-uefi.img"}
+else
+ OSNAME=${IMAGENAME%".img"}
+fi
+
SOFTWARE_REG="$SRCDIR/$OSNAME-software.reg.bin"
SYSTEM_REG="$SRCDIR/windows-system.reg.bin"
@@ -47,21 +54,44 @@ if ! guestfish -a /dev/null run : available "ntfs3g ntfsprogs"; then
exit 0
fi
+# Extra initialization required for UEFI.
+if test "$EFI" = "1"; then
+ BCD="$SRCDIR/windows-bcd.reg.bin"
+ EFI_COMMANDS="
+# Set /dev/sda1 as the EFI system partition (ESP)
+part_set_gpt_type /dev/sda 1 C12A7328-F81F-11D2-BA4B-00A0C93EC93B
+
+# Create a boot ESP similar to Windows 11
+mount /dev/sda1 /Windows/TEMP
+
+mkdir /Windows/TEMP/EFI
+mkdir /Windows/TEMP/EFI/Boot
+touch /Windows/TEMP/EFI/Boot/bootx64.efi
+
+mkdir /Windows/TEMP/EFI/Microsoft
+mkdir /Windows/TEMP/EFI/Microsoft/Boot
+touch /Windows/TEMP/EFI/Microsoft/Boot/bootmgf.efi
+touch /Windows/TEMP/EFI/Microsoft/Boot/bootmgfw.efi
+upload $BCD /Windows/TEMP/EFI/Microsoft/Boot/BCD
+"
+fi
+
# Create a disk image.
guestfish <<EOF
sparse $IMAGENAME-t 512M
run
# Format the disk.
-part-init /dev/sda mbr
+part-init /dev/sda gpt
part-add /dev/sda p 64 524287
part-add /dev/sda p 524288 -64
-# Disk ID.
-pwrite-device /dev/sda "1234" 0x01b8 | cat >/dev/null
-
# Phony boot loader filesystem.
-mkfs ntfs /dev/sda1
+mkfs vfat /dev/sda1
+
+# Mark this as a BIOS boot partition. UEFI commands below
+# may override this.
+part_set_gpt_type /dev/sda 1 21686148-6449-6E6F-744E-656564454649
# Phony root filesystem.
mkfs ntfs /dev/sda2
@@ -70,6 +100,7 @@ mkfs ntfs /dev/sda2
mount /dev/sda2 /
mkdir-p /Windows/System32/Config
mkdir-p /Windows/System32/Drivers
+mkdir-p /Windows/TEMP
upload $SOFTWARE_REG /Windows/System32/Config/SOFTWARE
upload $SYSTEM_REG /Windows/System32/Config/SYSTEM
@@ -79,6 +110,9 @@ upload $CMD_EXE /Windows/System32/cmd.exe
mkdir "/Program Files"
touch /autoexec.bat
+# If UEFI, put a BCD on here.
+$EFI_COMMANDS
+
EOF
mv $IMAGENAME-t $IMAGENAME
diff --git a/test-data/phony-guests/windows-bcd.reg b/test-data/phony-guests/windows-bcd.reg
new file mode 100644
index 00000000..92b47e64
--- /dev/null
+++ b/test-data/phony-guests/windows-bcd.reg
@@ -0,0 +1,365 @@
+Windows Registry Editor Version 5.00
+
+[\]
+
+[\Description]
+"GuidCache"=hex(3):9e,aa,92,5f,f7,0a,d9,01,08,27,00,00,7c,8c,de,4e,19,0a,0e,e1,e0,00,00,00
+"KeyName"=hex(1):42,00,43,00,44,00,30,00,30,00,30,00,30,00,30,00,30,00,30,00,30,00,00,00
+"System"=dword:00000001
+"TreatAsSystem"=dword:00000001
+
+[\Objects]
+
+[\Objects\{0ce4991b-e6b3-4b16-b23c-5e0d9250e5d9}]
+
+[\Objects\{0ce4991b-e6b3-4b16-b23c-5e0d9250e5d9}\Description]
+"Type"=dword:20100000
+
+[\Objects\{0ce4991b-e6b3-4b16-b23c-5e0d9250e5d9}\Elements]
+
+[\Objects\{0ce4991b-e6b3-4b16-b23c-5e0d9250e5d9}\Elements\16000020]
+"Element"=hex(3):00
+
+[\Objects\{1afa9c49-16ab-4a5c-901b-212802da9460}]
+
+[\Objects\{1afa9c49-16ab-4a5c-901b-212802da9460}\Description]
+"Type"=dword:20200004
+
+[\Objects\{1afa9c49-16ab-4a5c-901b-212802da9460}\Elements]
+
+[\Objects\{1afa9c49-16ab-4a5c-901b-212802da9460}\Elements\14000006]
+"Element"=hex(7):7b,00,37,00,65,00,61,00,32,00,65,00,31,00,61,00,63,00,2d,00,32,00,65,00,36,00,31,00,2d,00,34,00,37,00,32,00,38,00,2d,00,61,00,61,00,61,00,33,00,2d,00,38,00,39,00,36,00,64,00,39,00,64,00,30,00,61,00,39,00,66,00,30,00,65,00,7d,00,00,00,00,00
+
+[\Objects\{4636856e-540f-4170-a130-a84776f4c654}]
+
+[\Objects\{4636856e-540f-4170-a130-a84776f4c654}\Description]
+"Type"=dword:20100000
+
+[\Objects\{4636856e-540f-4170-a130-a84776f4c654}\Elements]
+
+[\Objects\{4636856e-540f-4170-a130-a84776f4c654}\Elements\15000011]
+"Element"=hex(3):04,00,00,00,00,00,00,00
+
+[\Objects\{5189b25c-5558-4bf2-bca4-289b11bd29e2}]
+
+[\Objects\{5189b25c-5558-4bf2-bca4-289b11bd29e2}\Description]
+"Type"=dword:20100000
+
+[\Objects\{5189b25c-5558-4bf2-bca4-289b11bd29e2}\Elements]
+
+[\Objects\{6efb52bf-1766-41db-a6b3-0ee5eff72bd7}]
+
+[\Objects\{6efb52bf-1766-41db-a6b3-0ee5eff72bd7}\Description]
+"Type"=dword:20200003
+
+[\Objects\{6efb52bf-1766-41db-a6b3-0ee5eff72bd7}\Elements]
+
+[\Objects\{6efb52bf-1766-41db-a6b3-0ee5eff72bd7}\Elements\14000006]
+"Element"=hex(7):7b,00,37,00,65,00,61,00,32,00,65,00,31,00,61,00,63,00,2d,00,32,00,65,00,36,00,31,00,2d,00,34,00,37,00,32,00,38,00,2d,00,61,00,61,00,61,00,33,00,2d,00,38,00,39,00,36,00,64,00,39,00,64,00,30,00,61,00,39,00,66,00,30,00,65,00,7d,00,00,00,7b,00,37,00,66,00,66,00,36,00,30,00,37,00,65,00,30,00,2d,00,34,00,33,00,39,00,35,00,2d,00,31,00,31,00,64,00,62,00,2d,00,62,00,30,00,64,00,65,00,2d,00,30,00,38,00,30,00,30,00,32,00,30,00,30,00,63,00,39,00,61,00,36,00,36,00,7d,00,00,00,00,00
+
+[\Objects\{7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}]
+
+[\Objects\{7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}\Description]
+"Type"=dword:20100000
+
+[\Objects\{7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}\Elements]
+
+[\Objects\{7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}\Elements\14000006]
+"Element"=hex(7):7b,00,34,00,36,00,33,00,36,00,38,00,35,00,36,00,65,00,2d,00,35,00,34,00,30,00,66,00,2d,00,34,00,31,00,37,00,30,00,2d,00,61,00,31,00,33,00,30,00,2d,00,61,00,38,00,34,00,37,00,37,00,36,00,66,00,34,00,63,00,36,00,35,00,34,00,7d,00,00,00,7b,00,30,00,63,00,65,00,34,00,39,00,39,00,31,00,62,00,2d,00,65,00,36,00,62,00,33,00,2d,00,34,00,62,00,31,00,36,00,2d,00,62,00,32,00,33,00,63,00,2d,00,35,00,65,00,30,00,64,00,39,00,32,00,35,00,30,00,65,00,35,00,64,00,39,00,7d,00,00,00,7b,00,35,00,31,00,38,00,39,00,62,00,32,00,35,00,63,00,2d,00,35,00,35,00,35,00,38,00,2d,00,34,00,62,00,66,00,32,00,2d,00,62,00,63,00,61,00,34,00,2d,00,32,00,38,00,39,00,62,00,31,00,31,00,62,00,64,00,32,00,39,00,65,00,32,00,7d,00,00,00,00,00
+
+[\Objects\{7ff607e0-4395-11db-b0de-0800200c9a66}]
+
+[\Objects\{7ff607e0-4395-11db-b0de-0800200c9a66}\Description]
+"Type"=dword:20200003
+
+[\Objects\{7ff607e0-4395-11db-b0de-0800200c9a66}\Elements]
+
+[\Objects\{7ff607e0-4395-11db-b0de-0800200c9a66}\Elements\250000f3]
+"Element"=hex(3):00,00,00,00,00,00,00,00
+
+[\Objects\{7ff607e0-4395-11db-b0de-0800200c9a66}\Elements\250000f4]
+"Element"=hex(3):01,00,00,00,00,00,00,00
+
+[\Objects\{7ff607e0-4395-11db-b0de-0800200c9a66}\Elements\250000f5]
+"Element"=hex(3):00,c2,01,00,00,00,00,00
+
+[\Objects\{9dd5438e-76ea-11ed-8c7c-de4e190a0ee1}]
+
+[\Objects\{9dd5438e-76ea-11ed-8c7c-de4e190a0ee1}\Description]
+"FirmwareVariable"=hex(3):01,00,00,00,76,00,00,00,00,00,00,00,01,00,00,00,1c,00,00,00,4c,00,00,00,00,00,00,00,45,00,46,00,49,00,20,00,56,00,69,00,72,00,74,00,75,00,61,00,6c,00,20,00,64,00,69,00,73,00,6b,00,20,00,28,00,30,00,2e,00,30,00,29,00,00,00,00,00,01,00,00,00,2a,00,00,00,04,00,00,00,02,01,0c,00,d0,41,08,0a,08,00,00,00,01,01,06,00,00,00,03,02,08,00,00,00,00,00,7f,ff,04,00
+"Type"=dword:101fffff
+
+[\Objects\{9dd5438e-76ea-11ed-8c7c-de4e190a0ee1}\Elements]
+
+[\Objects\{9dd5438e-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000004]
+"Element"=hex(1):45,00,46,00,49,00,20,00,56,00,69,00,72,00,74,00,75,00,61,00,6c,00,20,00,64,00,69,00,73,00,6b,00,20,00,28,00,30,00,2e,00,30,00,29,00,00,00
+
+[\Objects\{9dd5438f-76ea-11ed-8c7c-de4e190a0ee1}]
+
+[\Objects\{9dd5438f-76ea-11ed-8c7c-de4e190a0ee1}\Description]
+"FirmwareVariable"=hex(3):01,00,00,00,9c,00,00,00,01,00,00,00,01,00,00,00,1c,00,00,00,70,00,00,00,00,00,00,00,45,00,46,00,49,00,20,00,56,00,4d,00,77,00,61,00,72,00,65,00,20,00,56,00,69,00,72,00,74,00,75,00,61,00,6c,00,20,00,53,00,41,00,54,00,41,00,20,00,43,00,44,00,52,00,4f,00,4d,00,20,00,44,00,72,00,69,00,76,00,65,00,20,00,28,00,30,00,2e,00,30,00,29,00,00,00,01,00,00,00,2c,00,00,00,04,00,00,00,02,01,0c,00,d0,41,08,0a,08,00,00,00,01,01,06,00,00,03,03,12,0a,00,00,00,00,00,00,00,7f,ff,04,00
+"Type"=dword:101fffff
+
+[\Objects\{9dd5438f-76ea-11ed-8c7c-de4e190a0ee1}\Elements]
+
+[\Objects\{9dd5438f-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000004]
+"Element"=hex(1):45,00,46,00,49,00,20,00,56,00,4d,00,77,00,61,00,72,00,65,00,20,00,56,00,69,00,72,00,74,00,75,00,61,00,6c,00,20,00,53,00,41,00,54,00,41,00,20,00,43,00,44,00,52,00,4f,00,4d,00,20,00,44,00,72,00,69,00,76,00,65,00,20,00,28,00,30,00,2e,00,30,00,29,00,00,00
+
+[\Objects\{9dd54390-76ea-11ed-8c7c-de4e190a0ee1}]
+
+[\Objects\{9dd54390-76ea-11ed-8c7c-de4e190a0ee1}\Description]
+"FirmwareVariable"=hex(3):01,00,00,00,7b,00,00,00,02,00,00,00,01,00,00,00,1c,00,00,00,34,00,00,00,00,00,00,00,45,00,46,00,49,00,20,00,4e,00,65,00,74,00,77,00,6f,00,72,00,6b,00,00,00,01,00,00,00,47,00,00,00,04,00,00,00,02,01,0c,00,d0,41,08,0a,08,00,00,00,01,01,06,00,00,01,03,0b,25,00,00,50,56,af,ca,05,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,7f,ff,04,00
+"Type"=dword:101fffff
+
+[\Objects\{9dd54390-76ea-11ed-8c7c-de4e190a0ee1}\Elements]
+
+[\Objects\{9dd54390-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000004]
+"Element"=hex(1):45,00,46,00,49,00,20,00,4e,00,65,00,74,00,77,00,6f,00,72,00,6b,00,00,00
+
+[\Objects\{9dd54391-76ea-11ed-8c7c-de4e190a0ee1}]
+
+[\Objects\{9dd54391-76ea-11ed-8c7c-de4e190a0ee1}\Description]
+"FirmwareVariable"=hex(3):01,00,00,00,a8,00,00,00,03,00,00,00,01,00,00,00,1c,00,00,00,6c,00,00,00,00,00,00,00,45,00,46,00,49,00,20,00,49,00,6e,00,74,00,65,00,72,00,6e,00,61,00,6c,00,20,00,53,00,68,00,65,00,6c,00,6c,00,20,00,28,00,55,00,6e,00,73,00,75,00,70,00,70,00,6f,00,72,00,74,00,65,00,64,00,20,00,6f,00,70,00,74,00,69,00,6f,00,6e,00,29,00,00,00,01,00,00,00,3c,00,00,00,04,00,00,00,01,03,18,00,0b,00,00,00,18,00,a7,0e,00,00,00,00,17,e0,07,0f,00,00,00,00,04,06,14,00,b7,d6,7a,c5,15,05,a8,40,9d,21,55,16,52,85,4e,37,7f,ff,04,00
+"Type"=dword:101fffff
+
+[\Objects\{9dd54391-76ea-11ed-8c7c-de4e190a0ee1}\Elements]
+
+[\Objects\{9dd54391-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000004]
+"Element"=hex(1):45,00,46,00,49,00,20,00,49,00,6e,00,74,00,65,00,72,00,6e,00,61,00,6c,00,20,00,53,00,68,00,65,00,6c,00,6c,00,20,00,28,00,55,00,6e,00,73,00,75,00,70,00,70,00,6f,00,72,00,74,00,65,00,64,00,20,00,6f,00,70,00,74,00,69,00,6f,00,6e,00,29,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}]
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Description]
+"Type"=dword:10200004
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements]
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\11000001]
+"Element"=hex(3):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,00,00,00,48,00,00,00,00,00,00,00,a0,ce,81,15,ee,12,7d,4f,89,67,a2,b7,30,24,aa,e2,00,00,00,00,00,00,00,00,43,0d,dc,ad,a9,17,26,4e,a1,6c,dc,71,e6,73,93,f7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000002]
+"Element"=hex(1):5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,77,00,69,00,6e,00,72,00,65,00,73,00,75,00,6d,00,65,00,2e,00,65,00,66,00,69,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000004]
+"Element"=hex(1):57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,52,00,65,00,73,00,75,00,6d,00,65,00,20,00,41,00,70,00,70,00,6c,00,69,00,63,00,61,00,74,00,69,00,6f,00,6e,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000005]
+"Element"=hex(1):65,00,6e,00,2d,00,55,00,53,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\14000006]
+"Element"=hex(7):7b,00,31,00,61,00,66,00,61,00,39,00,63,00,34,00,39,00,2d,00,31,00,36,00,61,00,62,00,2d,00,34,00,61,00,35,00,63,00,2d,00,39,00,30,00,31,00,62,00,2d,00,32,00,31,00,32,00,38,00,30,00,32,00,64,00,61,00,39,00,34,00,36,00,30,00,7d,00,00,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\14000008]
+"Element"=hex(7):7b,00,39,00,64,00,64,00,35,00,34,00,33,00,39,00,34,00,2d,00,37,00,36,00,65,00,61,00,2d,00,31,00,31,00,65,00,64,00,2d,00,38,00,63,00,37,00,63,00,2d,00,64,00,65,00,34,00,65,00,31,00,39,00,30,00,61,00,30,00,65,00,65,00,31,00,7d,00,00,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\16000009]
+"Element"=hex(3):01
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\16000060]
+"Element"=hex(3):01
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\17000077]
+"Element"=hex(3):75,00,00,15,00,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\21000001]
+"Element"=hex(3):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,00,00,00,48,00,00,00,00,00,00,00,a0,ce,81,15,ee,12,7d,4f,89,67,a2,b7,30,24,aa,e2,00,00,00,00,00,00,00,00,43,0d,dc,ad,a9,17,26,4e,a1,6c,dc,71,e6,73,93,f7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\21000026]
+"Element"=hex(3):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,00,00,00,48,00,00,00,00,00,00,00,a0,ce,81,15,ee,12,7d,4f,89,67,a2,b7,30,24,aa,e2,00,00,00,00,00,00,00,00,43,0d,dc,ad,a9,17,26,4e,a1,6c,dc,71,e6,73,93,f7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\22000002]
+"Element"=hex(1):5c,00,68,00,69,00,62,00,65,00,72,00,66,00,69,00,6c,00,2e,00,73,00,79,00,73,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\25000008]
+"Element"=hex(3):01,00,00,00,00,00,00,00
+
+[\Objects\{9dd54392-76ea-11ed-8c7c-de4e190a0ee1}\Elements\26000006]
+"Element"=hex(3):00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}]
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Description]
+"Type"=dword:10200003
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements]
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\11000001]
+"Element"=hex(3):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,00,00,00,48,00,00,00,00,00,00,00,a0,ce,81,15,ee,12,7d,4f,89,67,a2,b7,30,24,aa,e2,00,00,00,00,00,00,00,00,43,0d,dc,ad,a9,17,26,4e,a1,6c,dc,71,e6,73,93,f7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000002]
+"Element"=hex(1):5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,77,00,69,00,6e,00,6c,00,6f,00,61,00,64,00,2e,00,65,00,66,00,69,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000004]
+"Element"=hex(1):57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,31,00,31,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000005]
+"Element"=hex(1):65,00,6e,00,2d,00,55,00,53,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\14000006]
+"Element"=hex(7):7b,00,36,00,65,00,66,00,62,00,35,00,32,00,62,00,66,00,2d,00,31,00,37,00,36,00,36,00,2d,00,34,00,31,00,64,00,62,00,2d,00,61,00,36,00,62,00,33,00,2d,00,30,00,65,00,65,00,35,00,65,00,66,00,66,00,37,00,32,00,62,00,64,00,37,00,7d,00,00,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\14000008]
+"Element"=hex(7):7b,00,39,00,64,00,64,00,35,00,34,00,33,00,39,00,34,00,2d,00,37,00,36,00,65,00,61,00,2d,00,31,00,31,00,65,00,64,00,2d,00,38,00,63,00,37,00,63,00,2d,00,64,00,65,00,34,00,65,00,31,00,39,00,30,00,61,00,30,00,65,00,65,00,31,00,7d,00,00,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\15000066]
+"Element"=hex(3):03,00,00,00,00,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\16000009]
+"Element"=hex(3):01
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\16000060]
+"Element"=hex(3):01
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\17000077]
+"Element"=hex(3):75,00,00,15,00,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\21000001]
+"Element"=hex(3):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,00,00,00,48,00,00,00,00,00,00,00,a0,ce,81,15,ee,12,7d,4f,89,67,a2,b7,30,24,aa,e2,00,00,00,00,00,00,00,00,43,0d,dc,ad,a9,17,26,4e,a1,6c,dc,71,e6,73,93,f7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\22000002]
+"Element"=hex(1):5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\23000003]
+"Element"=hex(1):7b,00,39,00,64,00,64,00,35,00,34,00,33,00,39,00,32,00,2d,00,37,00,36,00,65,00,61,00,2d,00,31,00,31,00,65,00,64,00,2d,00,38,00,63,00,37,00,63,00,2d,00,64,00,65,00,34,00,65,00,31,00,39,00,30,00,61,00,30,00,65,00,65,00,31,00,7d,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\25000020]
+"Element"=hex(3):00,00,00,00,00,00,00,00
+
+[\Objects\{9dd54393-76ea-11ed-8c7c-de4e190a0ee1}\Elements\250000c2]
+"Element"=hex(3):01,00,00,00,00,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}]
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Description]
+"Type"=dword:10200003
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements]
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\11000001]
+"Element"=hex(3):95,43,d5,9d,ea,76,ed,11,8c,7c,de,4e,19,0a,0e,e1,00,00,00,00,01,00,00,00,b8,00,00,00,00,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,90,00,00,00,05,00,00,00,06,00,00,00,00,00,00,00,48,00,00,00,00,00,00,00,91,1d,b9,0e,98,0c,96,45,ac,34,97,75,03,5e,e4,a6,00,00,00,00,00,00,00,00,43,0d,dc,ad,a9,17,26,4e,a1,6c,dc,71,e6,73,93,f7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,5c,00,52,00,65,00,63,00,6f,00,76,00,65,00,72,00,79,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,52,00,45,00,5c,00,57,00,69,00,6e,00,72,00,65,00,2e,00,77,00,69,00,6d,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000002]
+"Element"=hex(1):5c,00,77,00,69,00,6e,00,64,00,6f,00,77,00,73,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,77,00,69,00,6e,00,6c,00,6f,00,61,00,64,00,2e,00,65,00,66,00,69,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000004]
+"Element"=hex(1):57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,52,00,65,00,63,00,6f,00,76,00,65,00,72,00,79,00,20,00,45,00,6e,00,76,00,69,00,72,00,6f,00,6e,00,6d,00,65,00,6e,00,74,00,00,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000005]
+"Element"=hex(1):65,00,6e,00,2d,00,75,00,73,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\14000006]
+"Element"=hex(7):7b,00,36,00,65,00,66,00,62,00,35,00,32,00,62,00,66,00,2d,00,31,00,37,00,36,00,36,00,2d,00,34,00,31,00,64,00,62,00,2d,00,61,00,36,00,62,00,33,00,2d,00,30,00,65,00,65,00,35,00,65,00,66,00,66,00,37,00,32,00,62,00,64,00,37,00,7d,00,00,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\15000065]
+"Element"=hex(3):03,00,00,00,00,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\21000001]
+"Element"=hex(3):95,43,d5,9d,ea,76,ed,11,8c,7c,de,4e,19,0a,0e,e1,00,00,00,00,01,00,00,00,b8,00,00,00,00,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,90,00,00,00,05,00,00,00,06,00,00,00,00,00,00,00,48,00,00,00,00,00,00,00,91,1d,b9,0e,98,0c,96,45,ac,34,97,75,03,5e,e4,a6,00,00,00,00,00,00,00,00,43,0d,dc,ad,a9,17,26,4e,a1,6c,dc,71,e6,73,93,f7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,5c,00,52,00,65,00,63,00,6f,00,76,00,65,00,72,00,79,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,52,00,45,00,5c,00,57,00,69,00,6e,00,72,00,65,00,2e,00,77,00,69,00,6d,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\22000002]
+"Element"=hex(1):5c,00,77,00,69,00,6e,00,64,00,6f,00,77,00,73,00,00,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\25000020]
+"Element"=hex(3):00,00,00,00,00,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\250000c2]
+"Element"=hex(3):01,00,00,00,00,00,00,00
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\26000022]
+"Element"=hex(3):01
+
+[\Objects\{9dd54394-76ea-11ed-8c7c-de4e190a0ee1}\Elements\46000010]
+"Element"=hex(3):01
+
+[\Objects\{9dd54395-76ea-11ed-8c7c-de4e190a0ee1}]
+
+[\Objects\{9dd54395-76ea-11ed-8c7c-de4e190a0ee1}\Description]
+"Type"=dword:30000000
+
+[\Objects\{9dd54395-76ea-11ed-8c7c-de4e190a0ee1}\Elements]
+
+[\Objects\{9dd54395-76ea-11ed-8c7c-de4e190a0ee1}\Elements\12000004]
+"Element"=hex(1):57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,52,00,65,00,63,00,6f,00,76,00,65,00,72,00,79,00,00,00,00,00
+
+[\Objects\{9dd54395-76ea-11ed-8c7c-de4e190a0ee1}\Elements\31000003]
+"Element"=hex(3):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,00,00,00,48,00,00,00,00,00,00,00,91,1d,b9,0e,98,0c,96,45,ac,34,97,75,03,5e,e4,a6,00,00,00,00,00,00,00,00,43,0d,dc,ad,a9,17,26,4e,a1,6c,dc,71,e6,73,93,f7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+
+[\Objects\{9dd54395-76ea-11ed-8c7c-de4e190a0ee1}\Elements\32000004]
+"Element"=hex(1):5c,00,52,00,65,00,63,00,6f,00,76,00,65,00,72,00,79,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,52,00,45,00,5c,00,62,00,6f,00,6f,00,74,00,2e,00,73,00,64,00,69,00,00,00
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}]
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Description]
+"FirmwareVariable"=hex(3):01,00,00,00,50,01,00,00,04,00,00,00,05,00,00,00,a4,00,00,00,d0,00,00,00,88,00,00,00,57,49,4e,44,4f,57,53,00,01,00,00,00,88,00,00,00,78,00,00,00,42,00,43,00,44,00,4f,00,42,00,4a,00,45,00,43,00,54,00,3d,00,7b,00,39,00,64,00,65,00,61,00,38,00,36,00,32,00,63,00,2d,00,35,00,63,00,64,00,64,00,2d,00,34,00,65,00,37,00,30,00,2d,00,61,00,63,00,63,00,31,00,2d,00,66,00,33,00,32,00,62,00,33,00,34,00,34,00,64,00,34,00,37,00,39,00,35,00,7d,00,00,00,33,00,01,00,00,00,10,00,00,00,04,00,00,00,7f,ff,04,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,42,00,6f,00,6f,00,74,00,20,00,4d,00,61,00,6e,00,61,00,67,00,65,00,72,00,00,00,00,00,01,00,00,00,80,00,00,00,04,00,00,00,04,01,2a,00,01,00,00,00,00,08,00,00,00,00,00,00,00,20,03,00,00,00,00,00,33,9a,cc,a9,16,a5,21,4c,88,eb,ee,d5,d2,b6,58,a3,02,02,04,04,46,00,5c,00,45,00,46,00,49,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,42,00,6f,00,6f,00,74,00,5c,00,62,00,6f,00,6f,00,74,00,6d,00,67,00,66,00,77,00,2e,00,65,00,66,00,69,00,00,00,7f,ff,04,00
+"Type"=dword:10100002
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements]
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\11000001]
+"Element"=hex(3):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,00,00,00,48,00,00,00,00,00,00,00,33,9a,cc,a9,16,a5,21,4c,88,eb,ee,d5,d2,b6,58,a3,00,00,00,00,00,00,00,00,43,0d,dc,ad,a9,17,26,4e,a1,6c,dc,71,e6,73,93,f7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\12000002]
+"Element"=hex(1):5c,00,45,00,46,00,49,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,42,00,6f,00,6f,00,74,00,5c,00,62,00,6f,00,6f,00,74,00,6d,00,67,00,66,00,77,00,2e,00,65,00,66,00,69,00,00,00,00,00
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\12000004]
+"Element"=hex(1):57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,42,00,6f,00,6f,00,74,00,20,00,4d,00,61,00,6e,00,61,00,67,00,65,00,72,00,00,00
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\12000005]
+"Element"=hex(1):65,00,6e,00,2d,00,55,00,53,00,00,00
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\14000006]
+"Element"=hex(7):7b,00,37,00,65,00,61,00,32,00,65,00,31,00,61,00,63,00,2d,00,32,00,65,00,36,00,31,00,2d,00,34,00,37,00,32,00,38,00,2d,00,61,00,61,00,61,00,33,00,2d,00,38,00,39,00,36,00,64,00,39,00,64,00,30,00,61,00,39,00,66,00,30,00,65,00,7d,00,00,00,00,00
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\23000003]
+"Element"=hex(1):7b,00,39,00,64,00,64,00,35,00,34,00,33,00,39,00,33,00,2d,00,37,00,36,00,65,00,61,00,2d,00,31,00,31,00,65,00,64,00,2d,00,38,00,63,00,37,00,63,00,2d,00,64,00,65,00,34,00,65,00,31,00,39,00,30,00,61,00,30,00,65,00,65,00,31,00,7d,00,00,00
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\23000006]
+"Element"=hex(1):7b,00,39,00,64,00,64,00,35,00,34,00,33,00,39,00,32,00,2d,00,37,00,36,00,65,00,61,00,2d,00,31,00,31,00,65,00,64,00,2d,00,38,00,63,00,37,00,63,00,2d,00,64,00,65,00,34,00,65,00,31,00,39,00,30,00,61,00,30,00,65,00,65,00,31,00,7d,00,00,00
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\24000001]
+"Element"=hex(7):7b,00,39,00,64,00,64,00,35,00,34,00,33,00,39,00,33,00,2d,00,37,00,36,00,65,00,61,00,2d,00,31,00,31,00,65,00,64,00,2d,00,38,00,63,00,37,00,63,00,2d,00,64,00,65,00,34,00,65,00,31,00,39,00,30,00,61,00,30,00,65,00,65,00,31,00,7d,00,00,00,00,00
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\24000010]
+"Element"=hex(7):7b,00,62,00,32,00,37,00,32,00,31,00,64,00,37,00,33,00,2d,00,31,00,64,00,62,00,34,00,2d,00,34,00,63,00,36,00,32,00,2d,00,62,00,66,00,37,00,38,00,2d,00,63,00,35,00,34,00,38,00,61,00,38,00,38,00,30,00,31,00,34,00,32,00,64,00,7d,00,00,00,00,00
+
+[\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\25000004]
+"Element"=hex(3):1e,00,00,00,00,00,00,00
+
+[\Objects\{a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba}]
+
+[\Objects\{a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba}\Description]
+"Type"=dword:10100001
+
+[\Objects\{a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba}\Elements]
+
+[\Objects\{a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba}\Elements\24000001]
+"Element"=hex(7):7b,00,39,00,64,00,65,00,61,00,38,00,36,00,32,00,63,00,2d,00,35,00,63,00,64,00,64,00,2d,00,34,00,65,00,37,00,30,00,2d,00,61,00,63,00,63,00,31,00,2d,00,66,00,33,00,32,00,62,00,33,00,34,00,34,00,64,00,34,00,37,00,39,00,35,00,7d,00,00,00,7b,00,39,00,64,00,64,00,35,00,34,00,33,00,38,00,65,00,2d,00,37,00,36,00,65,00,61,00,2d,00,31,00,31,00,65,00,64,00,2d,00,38,00,63,00,37,00,63,00,2d,00,64,00,65,00,34,00,65,00,31,00,39,00,30,00,61,00,30,00,65,00,65,00,31,00,7d,00,00,00,7b,00,39,00,64,00,64,00,35,00,34,00,33,00,38,00,66,00,2d,00,37,00,36,00,65,00,61,00,2d,00,31,00,31,00,65,00,64,00,2d,00,38,00,63,00,37,00,63,00,2d,00,64,00,65,00,34,00,65,00,31,00,39,00,30,00,61,00,30,00,65,00,65,00,31,00,7d,00,00,00,7b,00,39,00,64,00,64,00,35,00,34,00,33,00,39,00,30,00,2d,00,37,00,36,00,65,00,61,00,2d,00,31,00,31,00,65,00,64,00,2d,00,38,00,63,00,37,00,63,00,2d,00,64,00,65,00,34,00,65,00,31,00,39,00,30,00,61,00,30,00,65,00,65,00,31,00,7d,00,00,00,7b,00,39,00,64,00,64,00,35,00,34,00,33,00,39,00,31,00,2d,00,37,00,36,00,65,00,61,00,2d,00,31,00,31,00,65,00,64,00,2d,00,38,00,63,00,37,00,63,00,2d,00,64,00,65,00,34,00,65,00,31,00,39,00,30,00,61,00,30,00,65,00,65,00,31,00,7d,00,00,00,00,00
+
+[\Objects\{a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba}\Elements\25000004]
+"Element"=hex(3):02,00,00,00,00,00,00,00
+
+[\Objects\{b2721d73-1db4-4c62-bf78-c548a880142d}]
+
+[\Objects\{b2721d73-1db4-4c62-bf78-c548a880142d}\Description]
+"Type"=dword:10200005
+
+[\Objects\{b2721d73-1db4-4c62-bf78-c548a880142d}\Elements]
+
+[\Objects\{b2721d73-1db4-4c62-bf78-c548a880142d}\Elements\11000001]
+"Element"=hex(3):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,00,00,00,48,00,00,00,00,00,00,00,33,9a,cc,a9,16,a5,21,4c,88,eb,ee,d5,d2,b6,58,a3,00,00,00,00,00,00,00,00,43,0d,dc,ad,a9,17,26,4e,a1,6c,dc,71,e6,73,93,f7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+
+[\Objects\{b2721d73-1db4-4c62-bf78-c548a880142d}\Elements\12000002]
+"Element"=hex(1):5c,00,45,00,46,00,49,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,42,00,6f,00,6f,00,74,00,5c,00,6d,00,65,00,6d,00,74,00,65,00,73,00,74,00,2e,00,65,00,66,00,69,00,00,00
+
+[\Objects\{b2721d73-1db4-4c62-bf78-c548a880142d}\Elements\12000004]
+"Element"=hex(1):57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,4d,00,65,00,6d,00,6f,00,72,00,79,00,20,00,44,00,69,00,61,00,67,00,6e,00,6f,00,73,00,74,00,69,00,63,00,00,00
+
+[\Objects\{b2721d73-1db4-4c62-bf78-c548a880142d}\Elements\12000005]
+"Element"=hex(1):65,00,6e,00,2d,00,55,00,53,00,00,00
+
+[\Objects\{b2721d73-1db4-4c62-bf78-c548a880142d}\Elements\14000006]
+"Element"=hex(7):7b,00,37,00,65,00,61,00,32,00,65,00,31,00,61,00,63,00,2d,00,32,00,65,00,36,00,31,00,2d,00,34,00,37,00,32,00,38,00,2d,00,61,00,61,00,61,00,33,00,2d,00,38,00,39,00,36,00,64,00,39,00,64,00,30,00,61,00,39,00,66,00,30,00,65,00,7d,00,00,00,00,00
+
+[\Objects\{b2721d73-1db4-4c62-bf78-c548a880142d}\Elements\1600000b]
+"Element"=hex(3):01
+

View File

@ -0,0 +1,68 @@
From 277ddd1a9b84d9c1b1fa93ef9a2e7f52b68d7930 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 28 Oct 2025 11:34:22 +0000
Subject: [PATCH] convert: windows: Fix ESP conversion if C:\Windows\Temp has
alternate case
We found a Windows guest which had the expected C:\Windows\Temp path,
but the actual name was TEMP rather than Temp. It's unclear if this
had been renamed, or if Windows can create this normally. In any
case, the unexpected casing caused this failure:
virt-v2v: error: libguestfs error: mkdtemp: /Windows/Temp/ESP_XXXXXX: No such file or directory
We have to use g#case_sensitive_path here since the directory is on
NTFS.
I also removed the hard-coded "\Windows" in favour of %systemroot%,
and fixed the indentation.
Fixes: https://issues.redhat.com/browse/RHEL-124569
Reported-by: Ulhas Surse
---
convert/convert_windows.ml | 30 +++++++++++++++++-------------
1 file changed, 17 insertions(+), 13 deletions(-)
diff --git a/convert/convert_windows.ml b/convert/convert_windows.ml
index 207d68f7..03c886f0 100644
--- a/convert/convert_windows.ml
+++ b/convert/convert_windows.ml
@@ -966,21 +966,25 @@ if errorlevel 3010 exit /b 0
match i_firmware with
| Firmware.I_BIOS -> ()
| I_UEFI esp_list ->
- let esp_temp_path = g#mkdtemp "/Windows/Temp/ESP_XXXXXX" in
- let uefi_arch = get_uefi_arch_suffix inspect.i_arch in
+ let esp_temp_path =
+ let temp = inspect.i_windows_systemroot ^ "/Temp" in
+ let mp = g#case_sensitive_path temp in
+ let template = mp ^ "/ESP_XXXXXX" in
+ g#mkdtemp template in
+ let uefi_arch = get_uefi_arch_suffix inspect.i_arch in
- List.iter (
- fun dev_path ->
- g#mount dev_path esp_temp_path;
- fix_win_uefi_bcd esp_temp_path;
- (match uefi_arch with
- | Some uefi_arch -> fix_win_uefi_fallback esp_temp_path uefi_arch
- | None -> ()
- );
- g#umount esp_temp_path;
- ) esp_list;
+ List.iter (
+ fun dev_path ->
+ g#mount dev_path esp_temp_path;
+ fix_win_uefi_bcd esp_temp_path;
+ (match uefi_arch with
+ | Some uefi_arch -> fix_win_uefi_fallback esp_temp_path uefi_arch
+ | None -> ()
+ );
+ g#umount esp_temp_path;
+ ) esp_list;
- g#rmdir esp_temp_path
+ g#rmdir esp_temp_path
in
do_convert ()

View File

@ -0,0 +1,84 @@
From 79eb7fb939fe6a9121f43b71875625d9b3d546b2 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 28 Oct 2025 10:20:48 +0000
Subject: [PATCH] tests: Add a test of Windows UEFI conversion
---
tests/Makefile.am | 2 ++
tests/test-windows-uefi-conversion.sh | 49 +++++++++++++++++++++++++++
2 files changed, 51 insertions(+)
create mode 100755 tests/test-windows-uefi-conversion.sh
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 26e41cc5..54cfd124 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -119,6 +119,7 @@ TESTS = \
test-sound.sh \
test-virtio-win-iso.sh \
test-windows-conversion.sh \
+ test-windows-uefi-conversion.sh \
$(phony_windows_scripts) \
$(SLOW_TESTS) \
$(ROOT_TESTS)
@@ -333,4 +334,5 @@ EXTRA_DIST += \
test-virtio-win-iso.sh \
test-windows-conversion.sh \
test-windows-conversion-ls.txt \
+ test-windows-uefi-conversion.sh \
test-windows-phony.sh
diff --git a/tests/test-windows-uefi-conversion.sh b/tests/test-windows-uefi-conversion.sh
new file mode 100755
index 00000000..ec8f7218
--- /dev/null
+++ b/tests/test-windows-uefi-conversion.sh
@@ -0,0 +1,49 @@
+#!/bin/bash -
+# libguestfs virt-v2v test script
+# Copyright (C) 2014-2025 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+# Test virt-v2v (Phony) Windows conversion with UEFI.
+
+source ./functions.sh
+set -e
+set -x
+
+skip_if_skipped
+f=../test-data/phony-guests/win2k22-uefi.img
+requires test -s $f
+
+export VIRT_TOOLS_DATA_DIR="$srcdir/../test-data/fake-virt-tools"
+export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win/drivers"
+
+d=test-windows-conversion-uefi.d
+rm -rf $d
+cleanup_fn rm -r $d
+mkdir $d
+
+$VG virt-v2v --debug-gc -vx \
+ -i disk $f \
+ -o local -os $d
+
+# Test the libvirt XML metadata and a disk was created.
+xml=$d/win2k22-uefi.xml
+test -f $xml
+test -f $d/win2k22-uefi-sda
+
+cat $xml
+
+# Check that it's really UEFI.
+grep 'firmware.*efi' $xml

View File

@ -1,4 +1,4 @@
From f90cc6573d05c4041e71d9182924934089a8c6f0 Mon Sep 17 00:00:00 2001
From c3e533d76715766c90be4204b3badb2044e1abc7 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sun, 30 Aug 2015 03:21:57 -0400
Subject: [PATCH] RHEL: Fixes for libguestfs-winsupport.
@ -31,10 +31,10 @@ index e3fd41b8..eb51e9b9 100644
match options.memsize with
| None ->
diff --git a/test-data/phony-guests/make-windows-img.sh b/test-data/phony-guests/make-windows-img.sh
index b52d2522..8d036ee6 100755
index 5b3f7912..137bae2f 100755
--- a/test-data/phony-guests/make-windows-img.sh
+++ b/test-data/phony-guests/make-windows-img.sh
@@ -49,6 +49,7 @@ fi
@@ -78,6 +78,7 @@ fi
# Create a disk image.
guestfish <<EOF

View File

@ -1,4 +1,4 @@
From 8b7abb8fc12dd52c08f6d09de77b35fd017f4aa1 Mon Sep 17 00:00:00 2001
From 32038f4b47a8d016e0197a11671065cb65d69ab7 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sun, 28 Sep 2014 19:14:43 +0100
Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode

View File

@ -1,4 +1,4 @@
From cdab9e112c9ffd25a81879a9c32542938253cb4f Mon Sep 17 00:00:00 2001
From af2d46307e9f1f70379fd500744d1017d93ffd03 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 30 Sep 2014 10:50:27 +0100
Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option

View File

@ -1,4 +1,4 @@
From caaf340c9664f542a3fd57642154b98625045702 Mon Sep 17 00:00:00 2001
From 0b85940bcb3a70bd3bfb04211e4dcdc48e2e6d8e Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 24 Apr 2015 09:45:41 -0400
Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu

View File

@ -1,4 +1,4 @@
From 21a3b3bbcb4be65b27afbce710f502b46e3b9636 Mon Sep 17 00:00:00 2001
From 2b9b33d5fa0fc6ef7dd242bd53f611332c5cd5f8 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 2 Mar 2017 14:21:37 +0100
Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671)

View File

@ -1,4 +1,4 @@
From 108b193dfcbc6c4d15c073697960bb11ff6ff207 Mon Sep 17 00:00:00 2001
From 7133f0ae77f3238e2f7cc406edcc79857a949e32 Mon Sep 17 00:00:00 2001
From: Pino Toscano <ptoscano@redhat.com>
Date: Tue, 26 Mar 2019 09:42:25 +0100
Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests

View File

@ -1,4 +1,4 @@
From e86f8ab93c534db030ebdc48bac2f5ca4f555047 Mon Sep 17 00:00:00 2001
From 634d606d09ecff6543ed03f25f8535d8eda5c186 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 5 Jul 2022 11:58:09 +0100
Subject: [PATCH] RHEL: tests: Remove btrfs test
@ -9,7 +9,7 @@ RHEL does not have btrfs so this test always fails.
1 file changed, 1 deletion(-)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 26e41cc5..00d6eed5 100644
index 54cfd124..8e142b09 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -64,7 +64,6 @@ TESTS = \

View File

@ -1,4 +1,4 @@
From a3a48a741a87d29532152b5e1c4407df9b42d62b Mon Sep 17 00:00:00 2001
From dc9fff82294985a89b0f17637cdf4ca4e730a071 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 9 Jul 2024 11:30:09 +0100
Subject: [PATCH] RHEL: Add warning about virt-v2v-in-place not being supported

View File

@ -45,7 +45,7 @@ ExclusiveArch: x86_64
Name: virt-v2v
Epoch: 1
Version: 2.9.9
Release: 2%{?dist}
Release: 3%{?dist}
Summary: Convert a virtual machine to run on KVM
License: GPL-2.0-or-later AND LGPL-2.0-or-later
@ -67,14 +67,18 @@ Source3: copy-patches.sh
# Patches.
Patch0001: 0001-convert-windows-Warn-about-Trend-Micro-anti-virus.patch
Patch0002: 0002-input-input_vddk.ml-Pass-only-longest-prefix-to-vddk.patch
Patch0003: 0003-RHEL-Fixes-for-libguestfs-winsupport.patch
Patch0004: 0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch
Patch0005: 0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch
Patch0006: 0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch
Patch0007: 0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch
Patch0008: 0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch
Patch0009: 0009-RHEL-tests-Remove-btrfs-test.patch
Patch0010: 0010-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch
Patch0003: 0003-test-data-phony-guests-make-windows-img.sh-Minor-twe.patch
Patch0004: 0004-test-data-phony-guests-Create-one-Windows-UEFI-image.patch
Patch0005: 0005-convert-windows-Fix-ESP-conversion-if-C-Windows-Temp.patch
Patch0006: 0006-tests-Add-a-test-of-Windows-UEFI-conversion.patch
Patch0007: 0007-RHEL-Fixes-for-libguestfs-winsupport.patch
Patch0008: 0008-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch
Patch0009: 0009-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch
Patch0010: 0010-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch
Patch0011: 0011-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch
Patch0012: 0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch
Patch0013: 0013-RHEL-tests-Remove-btrfs-test.patch
Patch0014: 0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch
BuildRequires: autoconf, automake, libtool
BuildRequires: make
@ -384,7 +388,7 @@ done
%changelog
* Tue Oct 21 2025 Richard W.M. Jones <rjones@redhat.com> - 1:2.9.9-2
* Tue Oct 28 2025 Richard W.M. Jones <rjones@redhat.com> - 1:2.9.9-3
- Rebase to virt-v2v 2.9.9
resolves: RHEL-111241
- Tighten permissions on windows C:\Program Files\Guestfs
@ -403,6 +407,8 @@ done
resolves: RHEL-121728
- Further fixes for nbdkit vddk export wildcard
resolves: RHEL-122753
- Fix ESP conversion if C:\Windows\Temp has alternate case
resolves: RHEL-124569
* Thu Aug 21 2025 Richard W.M. Jones <rjones@redhat.com> - 1:2.8.1-9
- Rebase to virt-v2v 2.8.1