diff --git a/0003-test-data-phony-guests-make-windows-img.sh-Minor-twe.patch b/0003-test-data-phony-guests-make-windows-img.sh-Minor-twe.patch new file mode 100644 index 0000000..f6465ca --- /dev/null +++ b/0003-test-data-phony-guests-make-windows-img.sh-Minor-twe.patch @@ -0,0 +1,52 @@ +From 1cb7a3018456771ed60b77943989f6dfb0555467 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +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. diff --git a/0004-test-data-phony-guests-Create-one-Windows-UEFI-image.patch b/0004-test-data-phony-guests-Create-one-Windows-UEFI-image.patch new file mode 100644 index 0000000..a8fd085 --- /dev/null +++ b/0004-test-data-phony-guests-Create-one-Windows-UEFI-image.patch @@ -0,0 +1,540 @@ +From ec57b5f69204711db54b39bc42852a2f921d1fe1 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +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 </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 ++ diff --git a/0005-convert-windows-Fix-ESP-conversion-if-C-Windows-Temp.patch b/0005-convert-windows-Fix-ESP-conversion-if-C-Windows-Temp.patch new file mode 100644 index 0000000..9c5cf65 --- /dev/null +++ b/0005-convert-windows-Fix-ESP-conversion-if-C-Windows-Temp.patch @@ -0,0 +1,68 @@ +From 277ddd1a9b84d9c1b1fa93ef9a2e7f52b68d7930 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +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 () diff --git a/0006-tests-Add-a-test-of-Windows-UEFI-conversion.patch b/0006-tests-Add-a-test-of-Windows-UEFI-conversion.patch new file mode 100644 index 0000000..fdd8f19 --- /dev/null +++ b/0006-tests-Add-a-test-of-Windows-UEFI-conversion.patch @@ -0,0 +1,84 @@ +From 79eb7fb939fe6a9121f43b71875625d9b3d546b2 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +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 diff --git a/0003-RHEL-Fixes-for-libguestfs-winsupport.patch b/0007-RHEL-Fixes-for-libguestfs-winsupport.patch similarity index 97% rename from 0003-RHEL-Fixes-for-libguestfs-winsupport.patch rename to 0007-RHEL-Fixes-for-libguestfs-winsupport.patch index fb51ec9..13b54e9 100644 --- a/0003-RHEL-Fixes-for-libguestfs-winsupport.patch +++ b/0007-RHEL-Fixes-for-libguestfs-winsupport.patch @@ -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" 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 < Date: Sun, 28 Sep 2014 19:14:43 +0100 Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode diff --git a/0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch b/0009-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch similarity index 97% rename from 0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch rename to 0009-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch index ce8e915..f6c3c30 100644 --- a/0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch +++ b/0009-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch @@ -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" Date: Tue, 30 Sep 2014 10:50:27 +0100 Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option diff --git a/0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch b/0010-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch similarity index 92% rename from 0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch rename to 0010-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch index affe070..5cce891 100644 --- a/0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch +++ b/0010-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch @@ -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" Date: Fri, 24 Apr 2015 09:45:41 -0400 Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu diff --git a/0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch b/0011-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch similarity index 93% rename from 0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch rename to 0011-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch index d0956e9..fb983e6 100644 --- a/0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +++ b/0011-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch @@ -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" Date: Thu, 2 Mar 2017 14:21:37 +0100 Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671) diff --git a/0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch b/0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch similarity index 97% rename from 0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch rename to 0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch index 6a8a490..34b5012 100644 --- a/0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch +++ b/0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch @@ -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 Date: Tue, 26 Mar 2019 09:42:25 +0100 Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests diff --git a/0009-RHEL-tests-Remove-btrfs-test.patch b/0013-RHEL-tests-Remove-btrfs-test.patch similarity index 86% rename from 0009-RHEL-tests-Remove-btrfs-test.patch rename to 0013-RHEL-tests-Remove-btrfs-test.patch index c6518c4..abcb4d2 100644 --- a/0009-RHEL-tests-Remove-btrfs-test.patch +++ b/0013-RHEL-tests-Remove-btrfs-test.patch @@ -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" 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 = \ diff --git a/0010-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch b/0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch similarity index 96% rename from 0010-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch rename to 0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch index e96f298..804d000 100644 --- a/0010-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch +++ b/0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch @@ -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" Date: Tue, 9 Jul 2024 11:30:09 +0100 Subject: [PATCH] RHEL: Add warning about virt-v2v-in-place not being supported diff --git a/virt-v2v.spec b/virt-v2v.spec index fa0391d..18e12bc 100644 --- a/virt-v2v.spec +++ b/virt-v2v.spec @@ -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 - 1:2.9.9-2 +* Tue Oct 28 2025 Richard W.M. Jones - 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 - 1:2.8.1-9 - Rebase to virt-v2v 2.8.1