From 8cf16b5c899a60ea5982c5d8dc042153daf6ac5b Mon Sep 17 00:00:00 2001 From: heqnx Date: Fri, 11 Jul 2025 21:50:55 +0300 Subject: added packer templates --- .../linux/ubuntu/24.04-server/meta-data | 0 .../linux/ubuntu/24.04-server/user-data | 39 +++ .../answer_files/windows/2019/autounattend.xml | 176 +++++++++++ packer/files/drivers/amd64/w10/balloon.cat | Bin 0 -> 8924 bytes packer/files/drivers/amd64/w10/balloon.inf | 105 +++++++ packer/files/drivers/amd64/w10/balloon.sys | Bin 0 -> 47176 bytes packer/files/drivers/amd64/w10/blnsvr.exe | Bin 0 -> 166568 bytes packer/files/drivers/amd64/w10/netkvm.cat | Bin 0 -> 9723 bytes packer/files/drivers/amd64/w10/netkvm.inf | 327 +++++++++++++++++++++ packer/files/drivers/amd64/w10/netkvm.sys | Bin 0 -> 143048 bytes packer/files/drivers/amd64/w10/viorng.cat | Bin 0 -> 9772 bytes packer/files/drivers/amd64/w10/viorng.inf | 117 ++++++++ packer/files/drivers/amd64/w10/viorng.sys | Bin 0 -> 43080 bytes packer/files/drivers/amd64/w10/viorngci.dll | Bin 0 -> 96424 bytes packer/files/drivers/amd64/w10/viorngum.dll | Bin 0 -> 96424 bytes packer/files/drivers/amd64/w10/vioscsi.cat | Bin 0 -> 9733 bytes packer/files/drivers/amd64/w10/vioscsi.inf | 123 ++++++++ packer/files/drivers/amd64/w10/vioscsi.sys | Bin 0 -> 63688 bytes packer/files/drivers/amd64/w10/vioser.cat | Bin 0 -> 8916 bytes packer/files/drivers/amd64/w10/vioser.inf | 107 +++++++ packer/files/drivers/amd64/w10/vioser.sys | Bin 0 -> 70728 bytes packer/files/drivers/amd64/w10/viostor.cat | Bin 0 -> 9733 bytes packer/files/drivers/amd64/w10/viostor.inf | 121 ++++++++ packer/files/drivers/amd64/w10/viostor.sys | Bin 0 -> 62664 bytes packer/files/drivers/redhat-cert-old.cer | Bin 0 -> 1290 bytes packer/files/drivers/redhat-cert.cer | Bin 0 -> 1242 bytes packer/files/scripts/create-checksums.sh | 41 +++ packer/files/scripts/linux/init.sh | 4 + .../files/scripts/linux/setup-qemu-guest-agent.sh | 11 + packer/files/scripts/linux/sysprep.sh | 271 +++++++++++++++++ packer/files/scripts/windows/cleanup.ps1 | 132 +++++++++ packer/files/scripts/windows/disable-updates.ps1 | 13 + packer/files/scripts/windows/enable-winrm-http.ps1 | 29 ++ packer/files/scripts/windows/init.ps1 | 25 ++ .../scripts/windows/setup-qemu-guest-agent.ps1 | 14 + packer/files/scripts/windows/sysprep-shutdown.bat | 6 + 36 files changed, 1661 insertions(+) create mode 100644 packer/files/answer_files/linux/ubuntu/24.04-server/meta-data create mode 100644 packer/files/answer_files/linux/ubuntu/24.04-server/user-data create mode 100644 packer/files/answer_files/windows/2019/autounattend.xml create mode 100644 packer/files/drivers/amd64/w10/balloon.cat create mode 100644 packer/files/drivers/amd64/w10/balloon.inf create mode 100644 packer/files/drivers/amd64/w10/balloon.sys create mode 100644 packer/files/drivers/amd64/w10/blnsvr.exe create mode 100755 packer/files/drivers/amd64/w10/netkvm.cat create mode 100755 packer/files/drivers/amd64/w10/netkvm.inf create mode 100755 packer/files/drivers/amd64/w10/netkvm.sys create mode 100644 packer/files/drivers/amd64/w10/viorng.cat create mode 100644 packer/files/drivers/amd64/w10/viorng.inf create mode 100644 packer/files/drivers/amd64/w10/viorng.sys create mode 100644 packer/files/drivers/amd64/w10/viorngci.dll create mode 100644 packer/files/drivers/amd64/w10/viorngum.dll create mode 100755 packer/files/drivers/amd64/w10/vioscsi.cat create mode 100755 packer/files/drivers/amd64/w10/vioscsi.inf create mode 100755 packer/files/drivers/amd64/w10/vioscsi.sys create mode 100644 packer/files/drivers/amd64/w10/vioser.cat create mode 100644 packer/files/drivers/amd64/w10/vioser.inf create mode 100644 packer/files/drivers/amd64/w10/vioser.sys create mode 100755 packer/files/drivers/amd64/w10/viostor.cat create mode 100755 packer/files/drivers/amd64/w10/viostor.inf create mode 100755 packer/files/drivers/amd64/w10/viostor.sys create mode 100644 packer/files/drivers/redhat-cert-old.cer create mode 100644 packer/files/drivers/redhat-cert.cer create mode 100755 packer/files/scripts/create-checksums.sh create mode 100644 packer/files/scripts/linux/init.sh create mode 100644 packer/files/scripts/linux/setup-qemu-guest-agent.sh create mode 100644 packer/files/scripts/linux/sysprep.sh create mode 100644 packer/files/scripts/windows/cleanup.ps1 create mode 100644 packer/files/scripts/windows/disable-updates.ps1 create mode 100644 packer/files/scripts/windows/enable-winrm-http.ps1 create mode 100644 packer/files/scripts/windows/init.ps1 create mode 100644 packer/files/scripts/windows/setup-qemu-guest-agent.ps1 create mode 100644 packer/files/scripts/windows/sysprep-shutdown.bat (limited to 'packer/files') diff --git a/packer/files/answer_files/linux/ubuntu/24.04-server/meta-data b/packer/files/answer_files/linux/ubuntu/24.04-server/meta-data new file mode 100644 index 0000000..e69de29 diff --git a/packer/files/answer_files/linux/ubuntu/24.04-server/user-data b/packer/files/answer_files/linux/ubuntu/24.04-server/user-data new file mode 100644 index 0000000..5e02023 --- /dev/null +++ b/packer/files/answer_files/linux/ubuntu/24.04-server/user-data @@ -0,0 +1,39 @@ +#cloud-config +autoinstall: + version: 1 + early-commands: + - systemctl stop ssh + locale: en_US.UTF-8 + keyboard: + layout: us + variant: "" + storage: + layout: + name: lvm + identity: + hostname: ubuntu + username: ubuntu + password: "$6$R9142dko7PYoTTJP$o19g/Av.dsI/fVEF4SJ8v0XqRcG6YdhQRGYLFrW2X4BG4gO2z3dWyOwio3pRrFXBMHNZHJlZPUp9yvR7elRKs0" + ssh: + allow-pw: true + install-server: true + user-data: + disable_root: false + runcmd: + - 'echo "root:root" | chpasswd' + late-commands: + - rm -rf /target/etc/apt/preferences.d/90curtin.pref + - curtin in-target --target=/target -- lvextend --extents +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv + - curtin in-target --target=/target -- resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv + - echo 'PermitRootLogin yes' >> /target/etc/ssh/sshd_config + - chmod -x /target/etc/update-motd.d/* + - | + cat << EOF > /target/etc/netplan/99-dhcp-any-interface.yaml + network: + ethernets: + any_interface: + match: + name: "e*" + dhcp4: true + version: 2 + EOF diff --git a/packer/files/answer_files/windows/2019/autounattend.xml b/packer/files/answer_files/windows/2019/autounattend.xml new file mode 100644 index 0000000..1f87720 --- /dev/null +++ b/packer/files/answer_files/windows/2019/autounattend.xml @@ -0,0 +1,176 @@ + + + + + + en-US + + en-US + en-US + en-US + en-US + + + + + e:\ + + + + + + + + + Primary + 1 + 350 + + + 2 + Primary + true + + + + + true + NTFS + + 1 + 1 + + + NTFS + + C + 2 + 2 + + + 0 + true + + + + + + + /IMAGE/NAME + Windows Server 2019 SERVERSTANDARD + + + + 0 + 2 + + + + + true + + + + + + + true + true + true + true + 3 + + + + + + packer + true</PlainText> + </Password> + <Group>Administrators</Group> + <Name>packer</Name> + <DisplayName>packer</DisplayName> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>packer</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>packer</Username> + <Enabled>true</Enabled> + <Password> + <Value>packer</Value> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <Description>Disable the network discovery prompt window</Description> + <RequiresUserInput>false</RequiresUserInput> + <CommandLine>reg.exe add HKLM\System\CurrentControlSet\Control\Network\NewNetworkWindowOff</CommandLine> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>2</Order> + <Description>Set Execution Policy 64 Bit</Description> + <RequiresUserInput>false</RequiresUserInput> + <CommandLine>cmd.exe /c powershell -c "set-executionpolicy -executionpolicy unrestricted -force"</CommandLine> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <Description>Set Execution Policy 32 Bit</Description> + <RequiresUserInput>false</RequiresUserInput> + <CommandLine>c:\windows\syswow64\cmd.exe /c powershell -c "set-executionpolicy -executionpolicy unrestricted -force"</CommandLine> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>500</Order> + <Description>Enable WinRM</Description> + <RequiresUserInput>false</RequiresUserInput> + <CommandLine>cmd.exe /c for %i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %i:\enable-winrm-http.ps1 (call powershell -file %i:\enable-winrm-http.ps1)</CommandLine> + </SynchronousCommand> + </FirstLogonCommands> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <InputLocale>en-US</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Group>@FirewallAPI.dll,-28752</Group> + <Profile>all</Profile> + </FirewallGroup> + </FirewallGroups> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <SecurityLayer>1</SecurityLayer> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <CopyProfile>true</CopyProfile> + <TimeZone>UTC</TimeZone> + </component> + <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-IE-ESC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <IEHardenAdmin>false</IEHardenAdmin> + <IEHardenUser>false</IEHardenUser> + </component> + <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + </settings> + <cpi:offlineImage cpi:source="" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> +</unattend> + diff --git a/packer/files/drivers/amd64/w10/balloon.cat b/packer/files/drivers/amd64/w10/balloon.cat new file mode 100644 index 0000000..cdece36 Binary files /dev/null and b/packer/files/drivers/amd64/w10/balloon.cat differ diff --git a/packer/files/drivers/amd64/w10/balloon.inf b/packer/files/drivers/amd64/w10/balloon.inf new file mode 100644 index 0000000..4c8aeac --- /dev/null +++ b/packer/files/drivers/amd64/w10/balloon.inf @@ -0,0 +1,105 @@ +;/*++ +; +;Copyright (c) 2009-2017 Red Hat Inc. +; +;Module Name: +; BALLOON.INF +; +;Abstract: +; +;Installation Notes: +; Using Devcon: Type "devcon install BALLOON.inf PCI\VEN_1AF4&DEV_1002&SUBSYS_00051AF4&REV_00" or +; "devcon install BALLOON.inf PCI\VEN_1AF4&DEV_1045&SUBSYS_11001AF4&REV_01" to install +; +;--*/ + +[Version] +Signature="$WINDOWS NT$" +Class=System +ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318} +Provider=%RHEL% +DriverVer=07/19/2017,100.74.104.14100 +CatalogFile=Balloon.cat +DriverPackageType = PlugAndPlay +DriverPackageDisplayName = %BALLOON.DeviceDesc% +PnpLockdown = 1 + +[DestinationDirs] +DefaultDestDir = 12 +BALLOON_Device_CoInstaller_CopyFiles = 11 + +[SourceDisksNames] +1 = %DiskId1%,,,"" + +[SourceDisksFiles] +balloon.sys = 1,, +; + + +;***************************************** +; BALLOON Install Section +;***************************************** + +[Manufacturer] +%RHEL%=Standard,NTamd64.10.0 + +[Standard.NTamd64.10.0] +%BALLOON.DeviceDesc%=BALLOON_Device, PCI\VEN_1AF4&DEV_1002&SUBSYS_00051AF4&REV_00 +%BALLOON.DeviceDesc%=BALLOON_Device, PCI\VEN_1AF4&DEV_1045&SUBSYS_11001AF4&REV_01 + +[BALLOON_Device.NT] +CopyFiles=Drivers_Dir + +[Drivers_Dir] +balloon.sys + + +;-------------- Service installation +[BALLOON_Device.NT.Services] +AddService = BALLOON,%SPSVCINST_ASSOCSERVICE%, BALLOON_Service_Inst, BALLOON_Logging_Inst + +; -------------- BALLOON driver install sections +[BALLOON_Service_Inst] +DisplayName = %BALLOON.SVCDESC% +ServiceType = 1 ; SERVICE_KERNEL_DRIVER +StartType = 3 ; SERVICE_DEMAND_START +ErrorControl = 1 ; SERVICE_ERROR_NORMAL +ServiceBinary = %12%\balloon.sys + +; -------------- BALLOON driver eventlog install sections +[BALLOON_Logging_Inst] +AddReg = BALLOON_Logging_Inst_AddReg + +[BALLOON_Logging_Inst_AddReg] +HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\balloon.sys" +HKR,,TypesSupported,0x00010001,7 + +;--- BALLOON_Device Coinstaller installation ------ +; + +[BALLOON_Device.NT.CoInstallers] +AddReg=BALLOON_Device_CoInstaller_AddReg +CopyFiles=BALLOON_Device_CoInstaller_CopyFiles + +[BALLOON_Device_CoInstaller_AddReg] +; + + +[BALLOON_Device_CoInstaller_CopyFiles] +; + + +[BALLOON_Device.NT.Wdf] +KmdfService = BALLOON, BALLOON_wdfsect +[BALLOON_wdfsect] +KmdfLibraryVersion = 1.15 + + +[Strings] +SPSVCINST_ASSOCSERVICE= 0x00000002 +RHEL = "Red Hat, Inc." +DiskId1 = "VirtIO Balloon Installation Disk #1" +BALLOON.DeviceDesc = "VirtIO Balloon Driver" +BALLOON.SVCDESC = "VirtIO Balloon Service" +ClassName = "VirtIO Balloon Device" + diff --git a/packer/files/drivers/amd64/w10/balloon.sys b/packer/files/drivers/amd64/w10/balloon.sys new file mode 100644 index 0000000..316a162 Binary files /dev/null and b/packer/files/drivers/amd64/w10/balloon.sys differ diff --git a/packer/files/drivers/amd64/w10/blnsvr.exe b/packer/files/drivers/amd64/w10/blnsvr.exe new file mode 100644 index 0000000..63ec950 Binary files /dev/null and b/packer/files/drivers/amd64/w10/blnsvr.exe differ diff --git a/packer/files/drivers/amd64/w10/netkvm.cat b/packer/files/drivers/amd64/w10/netkvm.cat new file mode 100755 index 0000000..bbb9cd0 Binary files /dev/null and b/packer/files/drivers/amd64/w10/netkvm.cat differ diff --git a/packer/files/drivers/amd64/w10/netkvm.inf b/packer/files/drivers/amd64/w10/netkvm.inf new file mode 100755 index 0000000..164b4ff --- /dev/null +++ b/packer/files/drivers/amd64/w10/netkvm.inf @@ -0,0 +1,327 @@ +;------------------------------------------------------------------------------- +;Copyright (c) 2008-2019 Red Hat Inc. +; +; +;Module Name: +; netkvm.inf +; +; VirtIO Ethernet Adapter +; +;------------------------------------------------------------------------------- + +[version] +Signature = "$Windows NT$" +Class = Net +CatalogFile = netkvm.cat +ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318} +Provider=%VENDOR% +DriverVer = 04/12/2019,100.77.104.17100 +DriverPackageType = PlugAndPlay +DriverPackageDisplayName = %kvmnet6.DeviceDesc% + +[Manufacturer] +%VENDOR% = NetKVM, NTamd64.10.0 + +[NetKVM.NTamd64.10.0] +%kvmnet6.DeviceDesc% = kvmnet6.ndi, PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00, PCI\VEN_1AF4&DEV_1000 +%kvmnet6.DeviceDesc% = kvmnet6.ndi, PCI\VEN_1AF4&DEV_1041&SUBSYS_11001AF4&REV_01, PCI\VEN_1AF4&DEV_1041 + +[kvmnet6.ndi.hw] +AddReg = kvmnet6.EnableMSI + +[kvmnet6.EnableMSI] +;HKR, "Interrupt Management",, 0x00000010 +;HKR, "Interrupt Management\MessageSignaledInterruptProperties",, 0x00000010 +HKR, "Interrupt Management\MessageSignaledInterruptProperties", MSISupported, 0x00010001, 1 +HKR, "Interrupt Management\MessageSignaledInterruptProperties", MessageNumberLimit, 0x00010001, 2048 +;HKR, "Interrupt Management\Affinity Policy",, 0x00000010 +HKR, "Interrupt Management\Affinity Policy", DevicePolicy, 0x00010001, 0 +HKR, "Interrupt Management\Affinity Policy", DevicePriority, 0x00010001, 2 + +[kvmnet6.ndi] +Characteristics = 0x84 ; NCF_PHYSICAL | NCF_HAS_UI +BusType = 5 ; PCI +AddReg = kvmnet6.Reg, Parameters +CopyFiles = kvmnet6.CopyFiles +*IfType = 6 +*MediaType = 0 ; NdisMedium802_3 +*PhysicalMediaType = 0 ; NdisPhysicalMediumUnspecified + +[kvmnet6.ndi.Services] +AddService = netkvm, 2, kvmnet6.Service, kvmnet6.EventLog + +;----------------------------------------------------------------------------- +; Red Hat ParaVirtualized Miniport Common +;----------------------------------------------------------------------------- + +[kvmnet6.Reg] +HKR, , BusNumber, 0, "0" +HKR, Ndi, Service, 0, "netkvm" +HKR, Ndi\Interfaces, UpperRange, 0, "ndis5" +HKR, Ndi\Interfaces, LowerRange, 0, "ethernet" + +HKR, Ndi\params\*RSS, ParamDesc, 0, "Receive Side Scaling" +HKR, Ndi\params\*RSS, Type, 0, "enum" +HKR, Ndi\params\*RSS, Default, 0, "1" +HKR, Ndi\params\*RSS, Optional, 0, "0" +HKR, Ndi\params\*RSS\enum, "0", 0, "Disabled" +HKR, Ndi\params\*RSS\enum, "1", 0, "Enabled" + +HKR, Ndi\params\*NumRssQueues, ParamDesc, 0, "Maximum Number of RSS Queues" +HKR, Ndi\params\*NumRssQueues, type, 0, "int" +HKR, Ndi\params\*NumRssQueues, default, 0, "8" +HKR, Ndi\params\*NumRssQueues, min, 0, "1" +HKR, Ndi\params\*NumRssQueues, max, 0, "16" +HKR, Ndi\params\*NumRssQueues, step, 0, "1" + +HKR, Ndi\params\*RscIPv4, ParamDesc, 0, "Recv Segment Coalescing (IPv4)" +HKR, Ndi\params\*RscIPv4, Type, 0, "enum" +HKR, Ndi\params\*RscIPv4, Default, 0, "1" +HKR, Ndi\params\*RscIPv4, Optional, 0, "0" +HKR, Ndi\params\*RscIPv4\enum, "0", 0, "Disabled" +HKR, Ndi\params\*RscIPv4\enum, "1", 0, "Enabled" + +HKR, Ndi\params\*RscIPv6, ParamDesc, 0, "Recv Segment Coalescing (IPv6)" +HKR, Ndi\params\*RscIPv6, Type, 0, "enum" +HKR, Ndi\params\*RscIPv6, Default, 0, "1" +HKR, Ndi\params\*RscIPv6, Optional, 0, "0" +HKR, Ndi\params\*RscIPv6\enum, "0", 0, "Disabled" +HKR, Ndi\params\*RscIPv6\enum, "1", 0, "Enabled" + +[Parameters] + +HKR, Ndi\Params\Priority, ParamDesc, 0, %Priority% +HKR, Ndi\Params\Priority, Default, 0, "1" +HKR, Ndi\Params\Priority, type, 0, "enum" +HKR, Ndi\Params\Priority\enum, "1", 0, %Enable% +HKR, Ndi\Params\Priority\enum, "0", 0, %Disable% + +HKR, Ndi\Params\*PriorityVLANTag, ParamDesc, 0, %PriorityVlanTag% +HKR, Ndi\Params\*PriorityVLANTag, Default, 0, "3" +HKR, Ndi\Params\*PriorityVLANTag, type, 0, "enum" +HKR, Ndi\Params\*PriorityVLANTag\enum, "3", 0, %Priority_Vlan% +HKR, Ndi\Params\*PriorityVLANTag\enum, "2", 0, %VLan% +HKR, Ndi\Params\*PriorityVLANTag\enum, "1", 0, %PriorityOnly% +HKR, Ndi\Params\*PriorityVLANTag\enum, "0", 0, %Disable% + +HKR, Ndi\params\VlanID, ParamDesc, 0, %VLan_ID% +HKR, Ndi\params\VlanID, type, 0, "int" +HKR, Ndi\params\VlanID, default, 0, "0" +HKR, Ndi\params\VlanID, min, 0, "0" +HKR, Ndi\params\VlanID, max, 0, "4095" + +HKR, Ndi\Params\DoLog, ParamDesc, 0, %EnableLogging% +HKR, Ndi\Params\DoLog, Default, 0, "1" +HKR, Ndi\Params\DoLog, type, 0, "enum" +HKR, Ndi\Params\DoLog\enum, "1", 0, %Enable% +HKR, Ndi\Params\DoLog\enum, "0", 0, %Disable% + +HKR, Ndi\params\DebugLevel, ParamDesc, 0, %DebugLevel% +HKR, Ndi\params\DebugLevel, type, 0, "int" +HKR, Ndi\params\DebugLevel, default, 0, "0" +HKR, Ndi\params\DebugLevel, min, 0, "0" +HKR, Ndi\params\DebugLevel, max, 0, "8" +HKR, Ndi\params\DebugLevel, step, 0, "1" + +HKR, Ndi\params\MTU, ParamDesc, 0, %MTU% +HKR, Ndi\params\MTU, type, 0, "long" +HKR, Ndi\params\MTU, default, 0, "1500" +HKR, Ndi\params\MTU, min, 0, "576" +HKR, Ndi\params\MTU, max, 0, "65500" +HKR, Ndi\params\MTU, step, 0, "1" + +HKR, Ndi\params\TxCapacity, ParamDesc, 0, %TxCapacity% +HKR, Ndi\params\TxCapacity, type, 0, "enum" +HKR, Ndi\params\TxCapacity, default, 0, "1024" +HKR, Ndi\Params\TxCapacity\enum, "16", 0, %String_16% +HKR, Ndi\Params\TxCapacity\enum, "32", 0, %String_32% +HKR, Ndi\Params\TxCapacity\enum, "64", 0, %String_64% +HKR, Ndi\Params\TxCapacity\enum, "128", 0, %String_128% +HKR, Ndi\Params\TxCapacity\enum, "256", 0, %String_256% +HKR, Ndi\Params\TxCapacity\enum, "512", 0, %String_512% +HKR, Ndi\Params\TxCapacity\enum, "1024", 0, %String_1024% + +HKR, Ndi\params\RxCapacity, ParamDesc, 0, %RxCapacity% +HKR, Ndi\params\RxCapacity, type, 0, "enum" +HKR, Ndi\params\RxCapacity, default, 0, "256" +HKR, Ndi\Params\RxCapacity\enum, "16", 0, %String_16% +HKR, Ndi\Params\RxCapacity\enum, "32", 0, %String_32% +HKR, Ndi\Params\RxCapacity\enum, "64", 0, %String_64% +HKR, Ndi\Params\RxCapacity\enum, "128", 0, %String_128% +HKR, Ndi\Params\RxCapacity\enum, "256", 0, %String_256% +HKR, Ndi\Params\RxCapacity\enum, "512", 0, %String_512% +HKR, Ndi\Params\RxCapacity\enum, "1024", 0, %String_1024% + +HKR, Ndi\params\NetworkAddress, ParamDesc, 0, %NetworkAddress% +HKR, Ndi\params\NetworkAddress, type, 0, "edit" +HKR, Ndi\params\NetworkAddress, Optional, 0, "1" + +HKR, Ndi\Params\OffLoad.TxChecksum, ParamDesc, 0, %OffLoad.TxChecksum% +HKR, Ndi\Params\OffLoad.TxChecksum, Default, 0, "31" +HKR, Ndi\Params\OffLoad.TxChecksum, type, 0, "enum" +HKR, Ndi\Params\OffLoad.TxChecksum\enum, "31", 0, %All% +HKR, Ndi\Params\OffLoad.TxChecksum\enum, "27", 0, %TCPUDPAll% +HKR, Ndi\Params\OffLoad.TxChecksum\enum, "3", 0, %TCPUDPv4% +HKR, Ndi\Params\OffLoad.TxChecksum\enum, "1", 0, %TCPv4% +HKR, Ndi\Params\OffLoad.TxChecksum\enum, "0", 0, %Disable% + +HKR, Ndi\Params\OffLoad.TxLSO, ParamDesc, 0, %OffLoad.TxLSO% +HKR, Ndi\Params\OffLoad.TxLSO, Default, 0, "2" +HKR, Ndi\Params\OffLoad.TxLSO, type, 0, "enum" +HKR, Ndi\Params\OffLoad.TxLSO\enum, "2", 0, %Maximal% +HKR, Ndi\Params\OffLoad.TxLSO\enum, "1", 0, %IPv4% +HKR, Ndi\Params\OffLoad.TxLSO\enum, "0", 0, %Disable% + +HKR, Ndi\Params\OffLoad.RxCS, ParamDesc, 0, %OffLoad.RxCS% +HKR, Ndi\Params\OffLoad.RxCS, Default, 0, "31" +HKR, Ndi\Params\OffLoad.RxCS, type, 0, "enum" +HKR, Ndi\Params\OffLoad.RxCS\enum, "31", 0, %All% +HKR, Ndi\Params\OffLoad.RxCS\enum, "27", 0, %TCPUDPAll% +HKR, Ndi\Params\OffLoad.RxCS\enum, "3", 0, %TCPUDPv4% +HKR, Ndi\Params\OffLoad.RxCS\enum, "1", 0, %TCPv4% +HKR, Ndi\Params\OffLoad.RxCS\enum, "0", 0, %Disable% + +HKR, Ndi\Params\*IPChecksumOffloadIPv4, ParamDesc, 0, %Std.IPChecksumOffloadv4% +HKR, Ndi\Params\*IPChecksumOffloadIPv4, Default, 0, "3" +HKR, Ndi\Params\*IPChecksumOffloadIPv4, type, 0, "enum" +HKR, Ndi\Params\*IPChecksumOffloadIPv4\enum, "3", 0, %TxRx% +HKR, Ndi\Params\*IPChecksumOffloadIPv4\enum, "2", 0, %Rx% +HKR, Ndi\Params\*IPChecksumOffloadIPv4\enum, "1", 0, %Tx% +HKR, Ndi\Params\*IPChecksumOffloadIPv4\enum, "0", 0, %Disable% + +HKR, Ndi\Params\*LsoV2IPv4, ParamDesc, 0, %Std.LsoV2IPv4% +HKR, Ndi\Params\*LsoV2IPv4, Default, 0, "1" +HKR, Ndi\Params\*LsoV2IPv4, type, 0, "enum" +HKR, Ndi\Params\*LsoV2IPv4\enum, "1", 0, %Enable% +HKR, Ndi\Params\*LsoV2IPv4\enum, "0", 0, %Disable% + +HKR, Ndi\Params\*LsoV2IPv6, ParamDesc, 0, %Std.LsoV2IPv6% +HKR, Ndi\Params\*LsoV2IPv6, Default, 0, "1" +HKR, Ndi\Params\*LsoV2IPv6, type, 0, "enum" +HKR, Ndi\Params\*LsoV2IPv6\enum, "1", 0, %Enable% +HKR, Ndi\Params\*LsoV2IPv6\enum, "0", 0, %Disable% + +HKR, Ndi\Params\*UDPChecksumOffloadIPv4, ParamDesc, 0, %Std.UDPChecksumOffloadIPv4% +HKR, Ndi\Params\*UDPChecksumOffloadIPv4, Default, 0, "3" +HKR, Ndi\Params\*UDPChecksumOffloadIPv4, type, 0, "enum" +HKR, Ndi\Params\*UDPChecksumOffloadIPv4\enum, "3", 0, %TxRx% +HKR, Ndi\Params\*UDPChecksumOffloadIPv4\enum, "2", 0, %Rx% +HKR, Ndi\Params\*UDPChecksumOffloadIPv4\enum, "1", 0, %Tx% +HKR, Ndi\Params\*UDPChecksumOffloadIPv4\enum, "0", 0, %Disable% + +HKR, Ndi\Params\*TCPChecksumOffloadIPv4, ParamDesc, 0, %Std.TCPChecksumOffloadIPv4% +HKR, Ndi\Params\*TCPChecksumOffloadIPv4, Default, 0, "3" +HKR, Ndi\Params\*TCPChecksumOffloadIPv4, type, 0, "enum" +HKR, Ndi\Params\*TCPChecksumOffloadIPv4\enum, "3", 0, %TxRx% +HKR, Ndi\Params\*TCPChecksumOffloadIPv4\enum, "2", 0, %Rx% +HKR, Ndi\Params\*TCPChecksumOffloadIPv4\enum, "1", 0, %Tx% +HKR, Ndi\Params\*TCPChecksumOffloadIPv4\enum, "0", 0, %Disable% + +HKR, Ndi\Params\*TCPChecksumOffloadIPv6, ParamDesc, 0, %Std.TCPChecksumOffloadIPv6% +HKR, Ndi\Params\*TCPChecksumOffloadIPv6, Default, 0, "3" +HKR, Ndi\Params\*TCPChecksumOffloadIPv6, type, 0, "enum" +HKR, Ndi\Params\*TCPChecksumOffloadIPv6\enum, "3", 0, %TxRx% +HKR, Ndi\Params\*TCPChecksumOffloadIPv6\enum, "2", 0, %Rx% +HKR, Ndi\Params\*TCPChecksumOffloadIPv6\enum, "1", 0, %Tx% +HKR, Ndi\Params\*TCPChecksumOffloadIPv6\enum, "0", 0, %Disable% + +HKR, Ndi\Params\*UDPChecksumOffloadIPv6, ParamDesc, 0, %Std.UDPChecksumOffloadIPv6% +HKR, Ndi\Params\*UDPChecksumOffloadIPv6, Default, 0, "3" +HKR, Ndi\Params\*UDPChecksumOffloadIPv6, type, 0, "enum" +HKR, Ndi\Params\*UDPChecksumOffloadIPv6\enum, "3", 0, %TxRx% +HKR, Ndi\Params\*UDPChecksumOffloadIPv6\enum, "2", 0, %Rx% +HKR, Ndi\Params\*UDPChecksumOffloadIPv6\enum, "1", 0, %Tx% +HKR, Ndi\Params\*UDPChecksumOffloadIPv6\enum, "0", 0, %Disable% + +HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, ParamDesc, 0, %NumberOfHandledRXPacketsInDPC% +HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, type, 0, "long" +HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, default, 0, "1000" +HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, min, 0, "1" +HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, max, 0, "10000" +HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, step, 0, "1" + +[kvmnet6.CopyFiles] +netkvm.sys,,,2 + +[kvmnet6.Service] +DisplayName = %kvmnet6.Service.DispName% +ServiceType = 1 ;%SERVICE_KERNEL_DRIVER% +StartType = 3 ;%SERVICE_DEMAND_START% +ErrorControl = 1 ;%SERVICE_ERROR_NORMAL% +ServiceBinary = %12%\netkvm.sys +LoadOrderGroup = NDIS +AddReg = TextModeFlags.Reg + +[kvmnet6.EventLog] +AddReg = kvmnet6.AddEventLog.Reg + +[kvmnet6.AddEventLog.Reg] +HKR, , EventMessageFile, 0x00020000, "%%SystemRoot%%\System32\netevent.dll" +HKR, , TypesSupported, 0x00010001, 7 + +[TextModeFlags.Reg] +HKR,,TextModeFlags,0x00010001, 0x0001 +HKR,Parameters,DisableMSI,,"0" +HKR,Parameters,EarlyDebug,,"3" + +[SourceDisksNames] +1 = %DiskId1%,,,"" + +[SourceDisksFiles] +netkvm.sys = 1,, + +[DestinationDirs] +kvmnet6.CopyFiles = 12 + +[Strings] +VENDOR = "Red Hat, Inc." +kvmnet6.DeviceDesc = "Red Hat VirtIO Ethernet Adapter" +kvmnet6.Service.DispName = "Red Hat VirtIO Ethernet Adapter Service" +DiskId1 = "Red Hat VirtIO Ethernet Adapter Driver Disk #1" +NetworkAddress = "Assign MAC" +Priority = "Init.Do802.1PQ" +MTU = "Init.MTUSize" +TxCapacity = "Init.MaxTxBuffers" +RxCapacity = "Init.MaxRxBuffers" +Offload.TxChecksum = "Offload.Tx.Checksum" +Offload.TxLSO = "Offload.Tx.LSO" +Offload.RxCS = "Offload.Rx.Checksum" +EnableLogging = "Logging.Enable" +DebugLevel = "Logging.Level" +Tx = "Tx Enabled"; +Rx = "Rx Enabled"; +TxRx = "Rx & Tx Enabled"; +NumberOfHandledRXPacketsInDPC = "TestOnly.RXThrottle" +Std.LsoV2IPv4 = "Large Send Offload V2 (IPv4)" +Std.LsoV2IPv6 = "Large Send Offload V2 (IPv6)" +Std.UDPChecksumOffloadIPv4 = "UDP Checksum Offload (IPv4)" +Std.TCPChecksumOffloadIPv4 = "TCP Checksum Offload (IPv4)" +Std.UDPChecksumOffloadIPv6 = "UDP Checksum Offload (IPv6)" +Std.TCPChecksumOffloadIPv6 = "TCP Checksum Offload (IPv6)" +Std.IPChecksumOffloadv4 = "IPv4 Checksum Offload" +Disable = "Disabled" +Enable = "Enabled" +Enable* = "Enabled*" +String_16 = "16" +String_32 = "32" +String_64 = "64" +String_128 = "128" +String_256 = "256" +String_512 = "512" +String_1024 = "1024" +PriorityVlanTag = "Priority and VLAN tagging" +PriorityOnly = "Priority" +VLan = "VLan" +VLan_ID = "VLan ID" +Priority_Vlan = "All" +10M = "10M" +100M = "100M" +1G = "1G" +10G = "10G" +TCPv4 = "TCP(v4)" +TCPUDPv4 = "TCP/UDP(v4)" +TCPUDPAll = "TCP/UDP(v4,v6)" +All = "All" +IPv4 = "IPv4" +Maximal = "Maximal" + diff --git a/packer/files/drivers/amd64/w10/netkvm.sys b/packer/files/drivers/amd64/w10/netkvm.sys new file mode 100755 index 0000000..6994ee4 Binary files /dev/null and b/packer/files/drivers/amd64/w10/netkvm.sys differ diff --git a/packer/files/drivers/amd64/w10/viorng.cat b/packer/files/drivers/amd64/w10/viorng.cat new file mode 100644 index 0000000..bef4d99 Binary files /dev/null and b/packer/files/drivers/amd64/w10/viorng.cat differ diff --git a/packer/files/drivers/amd64/w10/viorng.inf b/packer/files/drivers/amd64/w10/viorng.inf new file mode 100644 index 0000000..52196f1 --- /dev/null +++ b/packer/files/drivers/amd64/w10/viorng.inf @@ -0,0 +1,117 @@ +;/*++ +; +;Copyright (c) 2014-2017 Red Hat Inc. +; +;Module Name: +; viorng.inf +; +;Abstract: +; +;Installation Notes: +; Using Devcon: Type "devcon install viorng.inf PCI\VEN_1AF4&DEV_1005&SUBSYS_00041AF4&REV_00" or +; "devcon install viorng.inf PCI\VEN_1AF4&DEV_1044&SUBSYS_11001AF4&REV_01" to install +; +;--*/ + +[Version] +Signature = "$WINDOWS NT$" +Class = System +ClassGuid = {4d36e97d-e325-11ce-bfc1-08002be10318} +Provider = %RedHatMfg% +CatalogFile = viorng.cat +PnpLockdown = 1 +DriverVer=07/19/2017,100.74.104.14100 + +[DestinationDirs] +DefaultDestDir = 12 +VirtRng_Provider_CopyFiles = 11 +VirtRng_Wdf_CoInstaller_CopyFiles = 11 + +[SourceDisksNames] +1 = %DiskName%,,,"" + +[SourceDisksFiles] +viorng.sys = 1,, +viorngum.dll = 1 +viorngci.dll = 1 +; + + +; --------------- +; Install Section +; --------------- + +[Manufacturer] +%RedHatMfg% = RedHat,NTamd64.10.0 + +[RedHat.NTamd64.10.0] +%VirtRng.DeviceDesc% = VirtRng_Device, PCI\VEN_1AF4&DEV_1005&SUBSYS_00041AF4&REV_00 +%VirtRng.DeviceDesc% = VirtRng_Device, PCI\VEN_1AF4&DEV_1044&SUBSYS_11001AF4&REV_01 + +[VirtRng_Device.NT] +CopyFiles = VirtRng_CopyFiles +CopyFiles = VirtRng_Provider_CopyFiles + +[VirtRng_Device.NT.HW] +AddReg = VirtRng_AddReg + +[VirtRng_CopyFiles] +viorng.sys + +[VirtRng_AddReg] +HKR,Interrupt Management,,0x00000010 +HKR,Interrupt Management\MessageSignaledInterruptProperties,,0x00000010 +HKR,Interrupt Management\MessageSignaledInterruptProperties,MSISupported,0x00010001,1 +HKR,Interrupt Management\MessageSignaledInterruptProperties,MessageNumberLimit,0x00010001,1 + +; -------------------- +; Service Installation +; -------------------- + +[VirtRng_Device.NT.Services] +AddService = VirtRng,0x00000002,VirtRng_Service_Install + +[VirtRng_Service_Install] +DisplayName = %VirtRng.Service% +ServiceType = 1 ; SERVICE_KERNEL_DRIVER +StartType = 3 ; SERVICE_DEMAND_START +ErrorControl = 1 ; SERVICE_ERROR_NORMAL +ServiceBinary = %12%\viorng.sys +LoadOrderGroup = Extended Base + +; ------------------------- +; RNG Provider Installation +; ------------------------- + +[VirtRng_Provider_CopyFiles] +viorngum.dll + +; ------------------------------------- +; WDF & Device CoInstaller Installation +; ------------------------------------- + +[VirtRng_Device.NT.CoInstallers] +AddReg=VirtRng_Wdf_CoInstaller_AddReg +CopyFiles=VirtRng_Wdf_CoInstaller_CopyFiles + +[VirtRng_Wdf_CoInstaller_AddReg] +HKR,,CoInstallers32,0x00010000,"viorngci.dll,VirtRngCoInstaller", \ +; + + +[VirtRng_Wdf_CoInstaller_CopyFiles] +; + +viorngci.dll + +[VirtRng_Device.NT.Wdf] +KmdfService = VirtRng, VirtRng_wdfsect + +[VirtRng_wdfsect] +KmdfLibraryVersion = 1.15 + +[Strings] +RedHatMfg = "Red Hat, Inc." +DiskName = "VirtIO RNG Installation Disk" +VirtRng.DeviceDesc = "VirtIO RNG Device" +VirtRng.Service = "VirtIO RNG Service" diff --git a/packer/files/drivers/amd64/w10/viorng.sys b/packer/files/drivers/amd64/w10/viorng.sys new file mode 100644 index 0000000..8f88ab6 Binary files /dev/null and b/packer/files/drivers/amd64/w10/viorng.sys differ diff --git a/packer/files/drivers/amd64/w10/viorngci.dll b/packer/files/drivers/amd64/w10/viorngci.dll new file mode 100644 index 0000000..ee05e27 Binary files /dev/null and b/packer/files/drivers/amd64/w10/viorngci.dll differ diff --git a/packer/files/drivers/amd64/w10/viorngum.dll b/packer/files/drivers/amd64/w10/viorngum.dll new file mode 100644 index 0000000..3fb997c Binary files /dev/null and b/packer/files/drivers/amd64/w10/viorngum.dll differ diff --git a/packer/files/drivers/amd64/w10/vioscsi.cat b/packer/files/drivers/amd64/w10/vioscsi.cat new file mode 100755 index 0000000..c59b14f Binary files /dev/null and b/packer/files/drivers/amd64/w10/vioscsi.cat differ diff --git a/packer/files/drivers/amd64/w10/vioscsi.inf b/packer/files/drivers/amd64/w10/vioscsi.inf new file mode 100755 index 0000000..8cd10c3 --- /dev/null +++ b/packer/files/drivers/amd64/w10/vioscsi.inf @@ -0,0 +1,123 @@ +;/*++ +; +;Copyright (c) 2012-2019 Red Hat Inc. +; +; +;Module Name: +; vioscsi.inf +; +;Abstract: +; +;Installation Notes: +; Using Devcon: Type "devcon install vioscsi.inf PCI\VEN_1AF4&DEV_1004&SUBSYS_00081AF4&REV_00" or +; "devcon install vioscsi.inf PCI\VEN_1AF4&DEV_1048&SUBSYS_11001AF4&REV_01" to install +; +;--*/ + +[Version] +Signature="$Windows NT$" +Class=SCSIAdapter +ClassGUID={4D36E97B-E325-11CE-BFC1-08002BE10318} +Provider=%VENDOR% +DriverVer = 04/12/2019,100.77.104.17100 +CatalogFile=vioscsi.cat +DriverPackageType = PlugAndPlay +DriverPackageDisplayName = %VirtioScsi.DeviceDesc% + +; +; Source file information +; + +[SourceDisksNames] +1 = %DiskId1%,,,"" + +[SourceDisksFiles] +vioscsi.sys = 1,, + +[ControlFlags] +;ExcludeFromSelect = * + +[DestinationDirs] +DefaultDestDir = 10 +vioscsi_Files_Driver = 12 + +; +; Driver information +; + +[Manufacturer] +%VENDOR% = VirtioScsi,NTamd64.10.0 + +[VirtioScsi.NTamd64.10.0] +%VirtioScsi.DeviceDesc% = scsi_inst, PCI\VEN_1AF4&DEV_1004&SUBSYS_00081AF4&REV_00, PCI\VEN_1AF4&DEV_1004 +%VirtioScsi.DeviceDesc% = scsi_inst, PCI\VEN_1AF4&DEV_1048&SUBSYS_11001AF4&REV_01, PCI\VEN_1AF4&DEV_1048 + +; +; General installation section +; + +[vioscsi_Files_Driver] +vioscsi.sys,,,2 + +[scsi_inst] +CopyFiles=vioscsi_Files_Driver + +; +; Service Installation +; + +[scsi_inst.Services] +AddService = vioscsi, 0x00000002 , scsi_Service_Inst, scsi_EventLog_Inst + +[scsi_Service_Inst] +DisplayName = %VirtioScsi.SVCDESC% +ServiceType = %SERVICE_KERNEL_DRIVER% +StartType = %SERVICE_BOOT_START% +ErrorControl = %SERVICE_ERROR_NORMAL% +ServiceBinary = %12%\vioscsi.sys +LoadOrderGroup = SCSI miniport +AddReg = pnpsafe_pci_addreg + +[scsi_inst.HW] +AddReg = pnpsafe_pci_addreg_msix + +[scsi_EventLog_Inst] +AddReg = scsi_EventLog_AddReg + +[scsi_EventLog_AddReg] +HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll" +HKR,,TypesSupported,%REG_DWORD%,7 + + +[pnpsafe_pci_addreg] +HKR, "Parameters\PnpInterface", "5", %REG_DWORD%, 0x00000001 +HKR, "Parameters", "BusType", %REG_DWORD%, 0x0000000A + +[pnpsafe_pci_addreg_msix] +HKR, "Interrupt Management",, 0x00000010 +HKR, "Interrupt Management\MessageSignaledInterruptProperties",, 0x00000010 +HKR, "Interrupt Management\MessageSignaledInterruptProperties", MSISupported, 0x00010001, 1 +HKR, "Interrupt Management\MessageSignaledInterruptProperties", MessageNumberLimit, 0x00010001, 256 +HKR, "Interrupt Management\Affinity Policy",, 0x00000010 +HKR, "Interrupt Management\Affinity Policy", DevicePolicy, 0x00010001, 5 +HKR, "Interrupt Management\Affinity Policy", DevicePriority, 0x00010001, 3 + + +[Strings] +; +; Localizable Strings +; +VENDOR = "Red Hat, Inc." +diskId1 = "Red Hat VirtIO SCSI pass-through controller Installation Disk" +VirtioScsi.DeviceDesc = "Red Hat VirtIO SCSI pass-through controller" +VirtioScsi.SVCDESC = "Red Hat VirtIO SCSI pass-through Service" + +; +; Non-Localizable Strings +; + +REG_EXPAND_SZ = 0x00020000 +REG_DWORD = 0x00010001 +SERVICE_KERNEL_DRIVER = 1 +SERVICE_BOOT_START = 0 +SERVICE_ERROR_NORMAL = 1 diff --git a/packer/files/drivers/amd64/w10/vioscsi.sys b/packer/files/drivers/amd64/w10/vioscsi.sys new file mode 100755 index 0000000..190ed13 Binary files /dev/null and b/packer/files/drivers/amd64/w10/vioscsi.sys differ diff --git a/packer/files/drivers/amd64/w10/vioser.cat b/packer/files/drivers/amd64/w10/vioser.cat new file mode 100644 index 0000000..8a00a2f Binary files /dev/null and b/packer/files/drivers/amd64/w10/vioser.cat differ diff --git a/packer/files/drivers/amd64/w10/vioser.inf b/packer/files/drivers/amd64/w10/vioser.inf new file mode 100644 index 0000000..f4e2b68 --- /dev/null +++ b/packer/files/drivers/amd64/w10/vioser.inf @@ -0,0 +1,107 @@ +;/*++ +; +;Copyright (c) 2010-2017 Red Hat Inc. +; +;Module Name: +; vioser.inf +; +;Abstract: +; +;Installation Notes: +; Using Devcon: Type "devcon install vioser.inf PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00" or +; "devcon install vioser.inf PCI\VEN_1AF4&DEV_1043&SUBSYS_11001AF4&REV_01" to install +; +;--*/ + +[Version] +Signature="$WINDOWS NT$" +Class=System +ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318} +Provider=%REDHAT% +DriverVer=07/19/2017,100.74.104.14100 +CatalogFile=vioser.cat +DriverPackageType = PlugAndPlay +DriverPackageDisplayName = %VirtioSerial.DeviceDesc% +PnpLockdown = 1 + +[DestinationDirs] +DefaultDestDir = 12 +VirtioSerial_Device_CoInstaller_CopyFiles = 11 + +[SourceDisksFiles] +vioser.sys = 1,, +; + + +[SourceDisksNames] +1 = %DiskId1%,,,"" + +;***************************************** +; vioser Install Section +;***************************************** + +[Manufacturer] +%REDHAT%=VirtioSerial,NTamd64.10.0 + +[VirtioSerial.NTamd64.10.0] +; +; Hw Ids are PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00 +; PCI\VEN_1AF4&DEV_1043&SUBSYS_11001AF4&REV_01 +; +%VirtioSerial.DeviceDesc%=VirtioSerial_Device, PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00 +%VirtioSerial.DeviceDesc%=VirtioSerial_Device, PCI\VEN_1AF4&DEV_1043&SUBSYS_11001AF4&REV_01 + +[VirtioSerial_Device.NT] +CopyFiles=Drivers_Dir + +[VirtioSerial_Device.NT.HW] +AddReg=VirtioSerial_AddReg + +[VirtioSerial_AddReg] +HKR,Interrupt Management,,0x00000010 +HKR,Interrupt Management\MessageSignaledInterruptProperties,,0x00000010 +HKR,Interrupt Management\MessageSignaledInterruptProperties,MSISupported,0x00010001,1 +HKR,Interrupt Management\MessageSignaledInterruptProperties,MessageNumberLimit,0x00010001,2 + +[Drivers_Dir] +vioser.sys + +;-------------- Service installation + +[VirtioSerial_Device.NT.Services] +AddService = VirtioSerial, 0x00000002, VirtioSerial_Service_Inst + +; -------------- VirtioSerial driver install sections +[VirtioSerial_Service_Inst] +DisplayName = %VirtioSerial.ServiceDesc% +ServiceType = 1 ; SERVICE_KERNEL_DRIVER +StartType = 3 ; SERVICE_DEMAND_START +ErrorControl = 1 ; SERVICE_ERROR_NORMAL +ServiceBinary = %12%\vioser.sys + +;--- VirtioSerial_Device Coinstaller installation ------ +; + +[VirtioSerial_Device.NT.CoInstallers] +AddReg=VirtioSerial_Device_CoInstaller_AddReg +CopyFiles=VirtioSerial_Device_CoInstaller_CopyFiles + +[VirtioSerial_Device_CoInstaller_AddReg] +; + + +[VirtioSerial_Device_CoInstaller_CopyFiles] +; + + +[VirtioSerial_Device.NT.Wdf] +KmdfService = VirtioSerial, VirtioSerial_wdfsect + +[VirtioSerial_wdfsect] +KmdfLibraryVersion = 1.15 + +[Strings] +REDHAT = "Red Hat, Inc." +DiskId1 = "VirtIO Serial Installation Disk #1" +VirtioSerial.DeviceDesc = "VirtIO Serial Driver" +VirtioSerial.ServiceDesc = "VirtIO Serial Service" diff --git a/packer/files/drivers/amd64/w10/vioser.sys b/packer/files/drivers/amd64/w10/vioser.sys new file mode 100644 index 0000000..a99ad31 Binary files /dev/null and b/packer/files/drivers/amd64/w10/vioser.sys differ diff --git a/packer/files/drivers/amd64/w10/viostor.cat b/packer/files/drivers/amd64/w10/viostor.cat new file mode 100755 index 0000000..4edd929 Binary files /dev/null and b/packer/files/drivers/amd64/w10/viostor.cat differ diff --git a/packer/files/drivers/amd64/w10/viostor.inf b/packer/files/drivers/amd64/w10/viostor.inf new file mode 100755 index 0000000..6c6054d --- /dev/null +++ b/packer/files/drivers/amd64/w10/viostor.inf @@ -0,0 +1,121 @@ +;/*++ +; +;Copyright (c) 2008-2019 Red Hat Inc. +; +; +;Module Name: +; viostor.inf +; +;Abstract: +; +;Installation Notes: +; Using Devcon: Type "devcon install viostor.inf PCI\VEN_1AF4&DEV_1001&SUBSYS_00021AF4&REV_00" or +; "devcon install viostor.inf PCI\VEN_1AF4&DEV_1042&SUBSYS_11001AF4&REV_01" to install +; +;--*/ + +[Version] +Signature="$Windows NT$" +Class=SCSIAdapter +ClassGUID={4D36E97B-E325-11CE-BFC1-08002BE10318} +Provider=%VENDOR% +DriverVer = 04/12/2019,100.77.104.17100 +CatalogFile=viostor.cat +DriverPackageType = PlugAndPlay +DriverPackageDisplayName = %VioStorScsi.DeviceDesc% + +; +; Source file information +; + +[SourceDisksNames] +1 = %DiskId1%,,,"" + +[SourceDisksFiles] +viostor.sys = 1,, + +[ControlFlags] +;ExcludeFromSelect = * + +[DestinationDirs] +DefaultDestDir = 10 +viostor_Files_Driver = 12 + +; +; Driver information +; + +[Manufacturer] +%VENDOR% = VioStor,NTamd64.10.0 + +[VioStor.NTamd64.10.0] +%VioStorScsi.DeviceDesc% = scsi_inst, PCI\VEN_1AF4&DEV_1001&SUBSYS_00021AF4&REV_00, PCI\VEN_1AF4&DEV_1001 +%VioStorScsi.DeviceDesc% = scsi_inst, PCI\VEN_1AF4&DEV_1042&SUBSYS_11001AF4&REV_01, PCI\VEN_1AF4&DEV_1042 + +; +; General installation section +; + +[viostor_Files_Driver] +viostor.sys,,,2 + +[scsi_inst] +CopyFiles=viostor_Files_Driver + +; +; Service Installation +; + +[scsi_inst.Services] +AddService = viostor, 0x00000002 , scsi_Service_Inst, scsi_EventLog_Inst + +[scsi_Service_Inst] +ServiceType = %SERVICE_KERNEL_DRIVER% +StartType = %SERVICE_BOOT_START% +ErrorControl = %SERVICE_ERROR_NORMAL% +ServiceBinary = %12%\viostor.sys +LoadOrderGroup = SCSI miniport +AddReg = pnpsafe_pci_addreg + +[scsi_inst.HW] +AddReg = pnpsafe_pci_addreg_msix + +[scsi_EventLog_Inst] +AddReg = scsi_EventLog_AddReg + +[scsi_EventLog_AddReg] +HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll" +HKR,,TypesSupported,%REG_DWORD%,7 + + +[pnpsafe_pci_addreg] +HKR, "Parameters\PnpInterface", "5", %REG_DWORD%, 0x00000001 +HKR, "Parameters", "BusType", %REG_DWORD%, 0x00000001 + +[pnpsafe_pci_addreg_msix] +HKR, "Interrupt Management",, 0x00000010 +HKR, "Interrupt Management\MessageSignaledInterruptProperties",, 0x00000010 +HKR, "Interrupt Management\MessageSignaledInterruptProperties", MSISupported, 0x00010001, 1 +HKR, "Interrupt Management\MessageSignaledInterruptProperties", MessageNumberLimit, 0x00010001, 256 +HKR, "Interrupt Management\Affinity Policy",, 0x00000010 +HKR, "Interrupt Management\Affinity Policy", DevicePolicy, 0x00010001, 5 + + +[Strings] +; +; Localizable Strings +; +VENDOR = "Red Hat, Inc." +diskId1 = "Red Hat VirtIO SCSI controller Installation Disk" +VioStorScsi.DeviceDesc = "Red Hat VirtIO SCSI controller" + +; +; Non-Localizable Strings +; + +REG_EXPAND_SZ = 0x00020000 +REG_DWORD = 0x00010001 +SERVICE_KERNEL_DRIVER = 1 +SERVICE_BOOT_START = 0 +SERVICE_ERROR_NORMAL = 1 + diff --git a/packer/files/drivers/amd64/w10/viostor.sys b/packer/files/drivers/amd64/w10/viostor.sys new file mode 100755 index 0000000..5fc8004 Binary files /dev/null and b/packer/files/drivers/amd64/w10/viostor.sys differ diff --git a/packer/files/drivers/redhat-cert-old.cer b/packer/files/drivers/redhat-cert-old.cer new file mode 100644 index 0000000..91c8be6 Binary files /dev/null and b/packer/files/drivers/redhat-cert-old.cer differ diff --git a/packer/files/drivers/redhat-cert.cer b/packer/files/drivers/redhat-cert.cer new file mode 100644 index 0000000..36efad4 Binary files /dev/null and b/packer/files/drivers/redhat-cert.cer differ diff --git a/packer/files/scripts/create-checksums.sh b/packer/files/scripts/create-checksums.sh new file mode 100755 index 0000000..a8143cb --- /dev/null +++ b/packer/files/scripts/create-checksums.sh @@ -0,0 +1,41 @@ +#!/bin/bash +set -e + +PACKER_BUILD_NAME="${PACKER_BUILD_NAME}" +NAME="${NAME}" +TIMESTAMP="${TIMESTAMP}" + +if ! command -v md5sum &>/dev/null; then + printf "%s\n" "[WARN] md5sum not found, skipping" + exit 0 +fi + +if ! command -v sha512sum &>/dev/null; then + printf "%s\n" "[WARN] sha512sum not found, skipping" + exit 0 +fi + +if test -z "${PACKER_BUILD_NAME}" || test -z "${NAME}" || test -z "${TIMESTAMP}"; then + printf "%s\n" "[WARN] \$PACKER_BUILD_NAME|\$NAME|\$TIMESTAMP not supplied for checksum creation, skipping" + exit 0 +fi + +OUTPUT_DIR="output/${PACKER_BUILD_NAME}" +mkdir -p "${OUTPUT_DIR}" &>/dev/null + +if test "${PACKER_BUILD_NAME}" == "qemu"; then + FILENAME="${PACKER_BUILD_NAME}-${NAME}_${TIMESTAMP}.qcow2" + mv "${PACKER_BUILD_NAME}_output_${NAME}/${PACKER_BUILD_NAME}-${NAME}_${TIMESTAMP}" "${OUTPUT_DIR}/${FILENAME}" +else + FILENAME="${PACKER_BUILD_NAME}-${NAME}_${TIMESTAMP}.ova" + mv "${PACKER_BUILD_NAME}_output_${NAME}/${PACKER_BUILD_NAME}-${NAME}_${TIMESTAMP}.ova" "${OUTPUT_DIR}/${FILENAME}" +fi +rm -rf "${PACKER_BUILD_NAME}_output_${NAME}" + +( + cd "${OUTPUT_DIR}" + md5sum "${FILENAME}" > "${FILENAME}.sums" + sha512sum "${FILENAME}" >> "${FILENAME}.sums" +) + +printf "%s\n" "[INFO] created md5 and sha512 checksums for ${OUTPUT_DIR}/${FILENAME}" diff --git a/packer/files/scripts/linux/init.sh b/packer/files/scripts/linux/init.sh new file mode 100644 index 0000000..04b7257 --- /dev/null +++ b/packer/files/scripts/linux/init.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -e +pushd "$(dirname ${BASH_SOURCE:0})" &>/dev/null +trap 'popd &>/dev/null' EXIT diff --git a/packer/files/scripts/linux/setup-qemu-guest-agent.sh b/packer/files/scripts/linux/setup-qemu-guest-agent.sh new file mode 100644 index 0000000..8a242ef --- /dev/null +++ b/packer/files/scripts/linux/setup-qemu-guest-agent.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e +pushd "$(dirname ${BASH_SOURCE:0})" &>/dev/null +trap 'popd &>/dev/null' EXIT + +export DEBIAN_FRONTEND=noninteractive + +apt-get update +apt-get install -y qemu-guest-agent +apt-get clean +apt-get autoclean diff --git a/packer/files/scripts/linux/sysprep.sh b/packer/files/scripts/linux/sysprep.sh new file mode 100644 index 0000000..d232a6f --- /dev/null +++ b/packer/files/scripts/linux/sysprep.sh @@ -0,0 +1,271 @@ +#!/bin/bash +# taken from https://github.com/DanHam/packer-virt-sysprep +set -o errexit +shopt -s nullglob dotglob + +function _clean_shell_history() { + root_hist="$(find /root -type f -name .bash_history)" + user_hist="$(find /home -type f -name .bash_history | tr -s '\n' ' ')" + rm -rf ${root_hist} ${user_hist} + + set +o errexit + if [[ -f /.dockerenv ]]; then + ln -sf /dev/null "/root/.bash_history" + + while read user home; do + ln -sf /dev/null "${home}/.bash_history" || : + chown --no-dereference "${user}:${user}" "${home}/.bash_history" || : + done <<< $(getent passwd | grep -i home | awk -F ':' '($3>=1000) {print $1" "$6}') + + fi + set -o errexit +} + +function _clean_home_dirs() { + root_files="$(find /root -name .cache -o -name .zshrc -o -name .wget-hsts | tr -s '\n' ' ')" + user_files="$(find /home -name .cache -o -name go -o -name .zshrc -o -name .wget-hsts | tr -s '\n' ' ')" + rm -rf ${root_files} ${user_files} +} + +function _clean_cloud_init() { + rm -rf /var/log/installer + rm -rf /var/lib/cloud/* + rm -rf /var/log/cloud-init.log +} + +function _clean_logs() { + find /var/log -maxdepth 1 -type f -exec bash -c "echo > {}" \; +} + +function _clean_crash_data() { + crash_data_location=( + "/var/crash/*" + "/var/log/dump/*" + ) + for crash_data in ${crash_data_location[@]}; do rm -rf ${crash_data}; done +} + +function _reset_dhcp_state() { + lease_data_locations=( + "/var/lib/dhclient/*" + "/var/lib/dhcp/*" + ) + for lease_file in ${lease_data_locations[@]}; do rm -rf ${lease_file}; done +} + +function _reset_fw_rules() { + if command -v ufw &>/dev/null; then + ufw --force reset &>/dev/null + fi + + if command -v systemctl &>/dev/null; then + if systemctl is-active -q firewalld.service &>/dev/null; then + systemctl stop -q firewalld.service + fi + + if systemctl is-active ufw.service &>/dev/null; then + systemctl stop -q ufw.service + fi + fi + + fw_config_locations=( + "/etc/sysconfig/iptables" + "/etc/firewalld/services/*" + "/etc/firewalld/zones/*" + "/etc/ufw/user.rules.*" + "/etc/ufw/before.rules.*" + "/etc/ufw/after.rules.*" + "/etc/ufw/user6.rules.*" + "/etc/ufw/before6.rules.*" + "/etc/ufw/after6.rules.*" + ) + + for fw_config in ${fw_config_locations[@]}; do rm -rf ${fw_config}; done +} + +function _reset_machine_id() { + sysd_id="/etc/machine-id" + dbus_id="/var/lib/dbus/machine-id" + + if [[ -e ${sysd_id} ]]; then + rm -rf ${sysd_id} && touch ${sysd_id} + fi + + if [[ -e ${dbus_id} && ! -h ${dbus_id} ]]; then + rm -rf ${dbus_id} + fi +} + +function _clean_mail_spool() { + mta_list=( + "exim" + "postfix" + "sendmail" + ) + + mail_spool_locations=( + "/var/spool/mail/*" + "/var/mail/*" + ) + + for mta in ${mta_list[@]}; do + if command -v systemctl &>/dev/null ; then + mta_service="$(systemctl list-units --type service | grep ${mta} | cut -d' ' -f1)" + if [[ "x${mta_service}" != "x" ]]; then + if systemctl is-active ${mta_service} &>/dev/null; then + systemctl stop ${mta_service} + fi + fi + else + mta_service="$(find /etc/init.d/ -iname "*${mta}*")" + if [[ "x${mta_service}" != "x" ]]; then + if ${mta_service} status | grep running &>/dev/null; then + ${mta_service} stop + fi + fi + fi + done + + for mail_spool in ${mail_spool_locations[@]}; do rm -rf ${mail_spool}; done +} + +function _clean_package_manager_cache() { + cache_locations=( + "/var/cache/apt/" + "/var/cache/dnf/" + "/var/cache/yum/" + "/var/cache/zypp*" + ) + + for cache_dir in ${cache_locations[@]}; do + if [[ -d ${cache_dir} ]]; then + find ${cache_dir} -type f | xargs -I FILE rm -rf FILE + fi + done +} + +function _clean_package_manager_db() { + rm -rf /var/lib/rpm/__db.* + apt_lists=/var/lib/apt/lists + if [[ -d "${apt_lists}" ]]; then + find "${apt_lists}" -type f | xargs rm -rf + fi +} + +function _clean_tmp() { + tmp_locations=( + "/tmp" + "/var/tmp" + ) + + mntpnt_orig_tmp="/mnt/orig_tmp" + + shopt -s dotglob + + sum_tmp_space=0 + for tmp in ${tmp_locations[@]} + do + if [[ -d ${tmp} ]]; then + tmp_space="$(du -sm ${tmp} | cut -f1)" + else + tmp_space=0 + fi + sum_tmp_space=$(( ${sum_tmp_space} + ${tmp_space} )) + if [[ ${sum_tmp_space} -gt 128 ]]; then + echo "ERROR: Space for copying tmp into memory > 128mb. Exiting" + exit 1 + fi + done + + if ! mount -l -t tmpfs | grep /dev/shm &>/dev/null; then + [[ -d /dev/shm ]] || mkdir /dev/shm && chmod 1777 /dev/shm + mount -t tmpfs -o defaults,size=128m tmpfs /dev/shm + fi + + + for tmp in ${tmp_locations[@]}; do + tmp_path="${tmp}" + on_tmpfs=false + + while [[ ${tmp_path:0:1} = "/" ]] && [[ ${#tmp_path} > 1 ]] && [[ ${on_tmpfs} = false ]]; do + defifs=${IFS} + IFS=$'\n' + for mountpoint in $(mount -l -t tmpfs | cut -d' ' -f3) + do + if [[ "${mountpoint}" == "${tmp_path}" ]]; then + on_tmpfs=true + continue + fi + done + IFS=${defifs} + tmp_path=${tmp_path%/*} + done + + if [[ "${on_tmpfs}" = false ]]; then + tmp_located_on="" + defifs=${IFS} && IFS=$'\n' + for line in $(df | tr -s ' ') + do + if echo ${line} | cut -d' ' -f6 | grep ^${tmp}$ &>/dev/null; then + tmp_located_on="$(echo ${line} | cut -d' ' -f1)" + fi + done + IFS=${defifs} + [[ "x${tmp_located_on}" = "x" ]] && tmp_located_on="/" + + shmtmp="/dev/shm/${tmp}" + mkdir -p ${shmtmp} + chmod 1777 ${shmtmp} + files=(${tmp}/*) + [[ -e ${files} ]] && cp -pr ${tmp}/* ${shmtmp} + mount --bind ${shmtmp} ${tmp} + + mkdir ${mntpnt_orig_tmp} + if [[ ${tmp_located_on} = "/" ]]; then + mount_opts="--bind" + tmp_path="${mntpnt_orig_tmp}/${tmp}" + else + mount_opts="" + tmp_path="${mntpnt_orig_tmp}" + fi + mount ${mount_opts} ${tmp_located_on} ${mntpnt_orig_tmp} + + files=(${tmp_path}/*) + [[ -e ${files} ]] && rm -rf ${tmp_path}/* + umount ${mntpnt_orig_tmp} && rm -rf ${mntpnt_orig_tmp} + fi + done +} + +function _clean_yum_uuid() { + uuid="/var/lib/yum/uuid" + [[ -e ${uuid} ]] && rm -rf ${uuid} || : +} + +function _clean_logins() { + login_logs=( + "/var/log/lastlog" + "/var/log/wmtp" + "/var/log/btmp" + "/var/run/utmp" + "/var/run/utmp" + ) + for login_log in ${login_logs[@]}; do ln -sfn /dev/null $login_log; done +} + +_clean_shell_history +_clean_home_dirs +_clean_cloud_init +_clean_logs +_clean_crash_data +_reset_dhcp_state +_reset_fw_rules +_reset_machine_id +_clean_mail_spool +_clean_package_manager_cache +_clean_package_manager_db +_clean_tmp +_clean_yum_uuid +_clean_logins + +exit 0 diff --git a/packer/files/scripts/windows/cleanup.ps1 b/packer/files/scripts/windows/cleanup.ps1 new file mode 100644 index 0000000..6242ac5 --- /dev/null +++ b/packer/files/scripts/windows/cleanup.ps1 @@ -0,0 +1,132 @@ +$ErrorActionPreference = "SilentlyContinue" +Set-MpPreference -DisableRealtimeMonitoring $true -ErrorAction SilentlyContinue | Out-Null + +try { + $System = GWMI Win32_ComputerSystem -EnableAllPrivileges + $System.AutomaticManagedPagefile = $False + $System.Put() | Out-Null + $CurrentPageFile = gwmi -query "select * from Win32_PageFileSetting where name='c:\\pagefile.sys'" + $CurrentPageFile.InitialSize = 512 + $CurrentPageFile.MaximumSize = 512 + $CurrentPageFile.Put() | Out-Null + + Write-Host "[INFO] Changed pagefile size" +} catch { + Write-Host "[ERR] Error occured while attempting to modify pagefile size" + Write-Host "$($_.Exception.Message)" +} + +try { + DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase /Quiet + Write-Host "[INFO] Executed dism to cleanup image and reset" +} catch { + Write-Host "[ERR] Error occured while running dism to cleanup image and reset" + Write-Host "$($_.Exception.Message)" +} + +try { + Remove-Item -Path "C:\Recovery" -Recurse -Force + Get-ChildItem "C:\Windows\SoftwareDistribution\*" -Recurse -Force | Remove-Item -Recurse -Force | Out-Null + Get-ChildItem "C:\Windows\SoftwareDistribution\*" -Recurse -Force | Remove-Item -Recurse -Force | Out-Null + Get-ChildItem "C:\Users\*\AppData\Local\Temp\*" -Recurse -Force | Remove-Item -Recurse -Force | Out-Null + Get-ChildItem "C:\Users\*\AppData\Local\Microsoft\Windows\Temporary Internet Files\*" -Recurse -Force | Remove-Item -Recurse -Force | Out-Null + Get-ChildItem "C:\ProgramData\Microsoft\Windows\Start Menu\Programs" -Recurse -Filter *uninstall*.lnk | % { Remove-Item -Force $_.FullName | Out-Null } + + @( + "$env:localappdata\Nuget", + "$env:localappdata\temp\*", + "$env:windir\logs", + "$env:windir\panther", + "$env:windir\temp\*", + "$env:windir\winsxs\manifestcache" + ) | ForEach-Object { + if ((Test-Path $_) -And ($_ -NotLike "*.ps1")) { + try { + Takeown /d Y /R /f $_ 2>&1 | Out-Null + Icacls $_ /GRANT:r administrators:F /T /c /q 2>&1 | Out-Null + Remove-Item $_ -Recurse -Force | Out-Null + } + catch { $global:error.RemoveAt(0) } + } + } + + Write-Host "[INFO] Removed temporary and build files" +} catch { + Write-Host "[ERR] Error occured while attempting to remove temporary and build files" + Write-Host "$($_.Exception.Message)" +} + +try { + & defrag.exe C: /h *> $null + Write-Host "[INFO] Executed defrag.exe" +} +catch { + Write-Host "[ERR] Error occured while running defrag.exe" + Write-Host "$($_.Exception.Message)" +} + +try { + & cleanmgr.exe /verylowdisk *> $null + Write-Host "[INFO] Executed cleanmgr.exe" +} +catch { + Write-Host "[ERR] Error occured while running cleanmgr.exe" + Write-Host "$($_.Exception.Message)" +} + +try { + $FilePath = "C:\zero.tmp" + $Volume = Get-WmiObject win32_logicaldisk -filter "DeviceID='C:'" + $ArraySize = 64kb + $SpaceToLeave = $Volume.Size * 0.05 + $FileSize = $Volume.FreeSpace - $SpaceToLeave + $ZeroArray = New-Object byte[]($ArraySize) + + $Stream = [IO.File]::OpenWrite($FilePath) + try { + $CurFileSize = 0 + while ($CurFileSize -lt $FileSize) { + $Stream.Write($ZeroArray, 0, $ZeroArray.Length) + $CurFileSize += $ZeroArray.Length + } + } + finally { + if ($Stream) { + $Stream.Close() + } + } + + Remove-Item $FilePath + + Write-Host "[INFO] Zeroed out empty space" +} catch { + Write-Host "[ERR] Error occured while attempting to zero out empty space" + Write-Host "$($_.Exception.Message)" +} + +try { + powercfg /change monitor-timeout-ac 0 + powercfg /change monitor-timeout-dc 0 + powercfg /change disk-timeout-ac 0 + powercfg /change disk-timeout-dc 0 + powercfg /change standby-timeout-ac 0 + powercfg /change standby-timeout-dc 0 + powercfg /change hibernate-timeout-ac 0 + powercfg /change hibernate-timeout-dc 0 + + Write-Host "[INFO] Disabled screen timeout, disk timeout, standby, hibernate" +} catch { + Write-Host "[ERR] Error occured while attempting to modify screen timeout, disk timeout, standby, hibernate" + Write-Host "$($_.Exception.Message)" +} + +try { + Clear-EventLog -LogName (Get-EventLog -List).log + Clear-EventLog -LogName (Get-EventLog -List).log + Clear-EventLog -LogName (Get-EventLog -List).log + + Write-Host "[INFO] Cleared out event logs" +} catch { + Write-Host "[ERR] Error occured while clearing event logs" + Write-Host "$($_.Exception.Message)" +} diff --git a/packer/files/scripts/windows/disable-updates.ps1 b/packer/files/scripts/windows/disable-updates.ps1 new file mode 100644 index 0000000..69d6441 --- /dev/null +++ b/packer/files/scripts/windows/disable-updates.ps1 @@ -0,0 +1,13 @@ +# https://learn.microsoft.com/en-us/windows/win32/api/wuapi/ne-wuapi-automaticupdatesnotificationlevel +# https://learn.microsoft.com/en-us/archive/blogs/jamesone/managing-windows-update-with-powershell +try { + $updates = (New-Object -ComObject "Microsoft.Update.AutoUpdate").Settings + if ($updates.ReadOnly -eq $true) { + Write-Error "[ERR] Cannot update Windows Update settings due to GPO restrictions" + } else { + $updates.NotificationLevel = 1 + $updates.Save() + $updates.Refresh() + Write-Output "[INFO] Automatic Windows Updates disabled" + } +} catch { Write-Output "[ERR] Exception while disabling Automatic Windows Updates" } diff --git a/packer/files/scripts/windows/enable-winrm-http.ps1 b/packer/files/scripts/windows/enable-winrm-http.ps1 new file mode 100644 index 0000000..44d8e70 --- /dev/null +++ b/packer/files/scripts/windows/enable-winrm-http.ps1 @@ -0,0 +1,29 @@ +Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private + +New-ItemProperty ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name LocalAccountTokenFilterPolicy ` + -Value 1 ` + -Force | Out-Null + +winrm quickconfig -q +winrm quickconfig -transport:http +winrm set winrm/config '@{MaxTimeoutms="1800000"}' +winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="800"}' +winrm set winrm/config/service '@{AllowUnencrypted="true"}' +winrm set winrm/config/service/auth '@{Basic="true"}' +winrm set winrm/config/service/auth '@{CredSSP="true"}' +winrm set winrm/config/listener?Address=*+Transport=HTTP '@{Port="5985"}' +Start-Process -FilePath C:\Windows\System32\cmd.exe -ArgumentList "/c sc.exe config WinRM start= delayed-auto" -Wait -Verbose +Start-Process -FilePath C:\Windows\System32\cmd.exe -ArgumentList "/c sc.exe stop WinRM" -Wait -Verbose +Start-Process -FilePath C:\Windows\System32\cmd.exe -ArgumentList "/c sc.exe start WinRM" -Wait -Verbose + +New-NetFirewallRule ` + -DisplayName WINRM-HTTP-In-TCP ` + -Direction Inbound ` + -Action Allow ` + -Protocol TCP ` + -LocalPort 5985 | Out-Null + +#netsh advfirewall firewall set rule group="Windows Remote Administration" new enable=yes +#netsh advfirewall firewall set rule name="Windows Remote Management (HTTP-In)" new enable=yes action=allow remoteip=any diff --git a/packer/files/scripts/windows/init.ps1 b/packer/files/scripts/windows/init.ps1 new file mode 100644 index 0000000..3eea7b4 --- /dev/null +++ b/packer/files/scripts/windows/init.ps1 @@ -0,0 +1,25 @@ +Get-WmiObject Win32_UserAccount -Filter "Name='packer'" | % { $_.PasswordExpires = $false; $_.Put() } | Out-Null + +if ((Get-WmiObject -Class Win32_OperatingSystem).ProductType -ne 1) { + Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "DisableCAD" -Value 1 -Force + + secedit /export /cfg C:\secpol.cfg + (Get-Content C:\secpol.cfg).replace("PasswordComplexity = 1", "PasswordComplexity = 0") | Out-File C:\secpol.cfg + (Get-Content C:\secpol.cfg).replace("MinimumPasswordLength = 7", "MinimumPasswordLength = 0") | Out-File C:\secpol.cfg + secedit /configure /db C:\Windows\security\local.sdb /cfg C:\secpol.cfg /areas SECURITYPOLICY + Remove-Item -Force C:\secpol.cfg -Confirm:$false +} + +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Power", "HiberFileSizePercent", 0) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Power", "HibernateEnabled", 0) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Reliability", "ShutdownReasonOn", 1) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Reliability", "ShutdownReasonUI", 2) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge", "HideFirstRunExperience", 1) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU", "NoAutoRebootWithLoggedOnUsers", 1) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU", "IncludeRecommendedUpdates", 0) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU", "AUOptions", 2) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge", "HideFirstRunExperience", 1) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU", "NoAutoRebootWithLoggedOnUsers", 1) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU", "IncludeRecommendedUpdates", 0) +[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU", "AUOptions", 2) + diff --git a/packer/files/scripts/windows/setup-qemu-guest-agent.ps1 b/packer/files/scripts/windows/setup-qemu-guest-agent.ps1 new file mode 100644 index 0000000..a2baefa --- /dev/null +++ b/packer/files/scripts/windows/setup-qemu-guest-agent.ps1 @@ -0,0 +1,14 @@ +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + +try { + $url = "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win-guest-tools.exe" + (New-Object System.Net.WebClient).DownloadFile($url, "C:\virtio-win-guest-tools.exe") + Write-Output "[INFO] Downloaded $url" + + Start-Process -FilePath "C:\virtio-win-guest-tools.exe" -ArgumentList "/install /passive /norestart" -Wait -Verbose + Write-Output "[INFO] Successfully installed VirtIO Guest Tools" + Remove-Item "C:\virtio-win-guest-tools.exe" -Force +} catch { + Write-Host "[ERR] Error occured while installing VirtIO Guest Tools" + Write-Host "$($_.Exception.Message)" +} diff --git a/packer/files/scripts/windows/sysprep-shutdown.bat b/packer/files/scripts/windows/sysprep-shutdown.bat new file mode 100644 index 0000000..623820a --- /dev/null +++ b/packer/files/scripts/windows/sysprep-shutdown.bat @@ -0,0 +1,6 @@ +@echo off +for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do ( + if exist %%i:\sysprep.xml ( + call C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /unattend:%%i:\sysprep.xml /shutdown + ) +) -- cgit v1.2.3