How to insert hotfixes and drivers and then create a bootable Windows Setup DVD

  • Create local folders c:\temp\src, c:\temp\mount, c:\temp\winremount, c:\temp\hotfix, and c:\temp\drivers.
  • Copy the setup sources from the DVD or a mounted ISO to C:\temp\src.
  • Copy the hotfix (.msu or .cab files) to C:\temp\hotfix.
  • Copy the driver files to c:\temp\drivers.
  • Run Command Prompt as an administrative.
dism /Mount-Wim /WimFile:c:\temp\src\sources\boot.wim /Index:1 /MountDir:c:\temp\mount
dism /Image:C:\temp\mount /Add-Package /PackagePath:c:\temp\hotfix
dism /Image:C:\temp\mount /Add-Driver /Driver:c:\temp\drivers /Recurse
dism /Unmount-Wim /MountDir:C:\temp\mount /Commit
dism /Mount-Wim /WimFile:c:\temp\src\sources\boot.wim /Index:2 /MountDir:c:\temp\mount
dism /Image:C:\temp\mount /Add-Package /PackagePath:c:\temp\hotfix
dism /Image:C:\temp\mount /Add-Driver /Driver:c:\temp\drivers /Recurse
  • Manually sort the folder C:\temp\mount\sources by date, and then copy the updated files to c:\temp\src\sources.
dism /Unmount-Wim /MountDir:C:\temp\mount /commit
  • Obtain the index from the Install.wim information by running the following command, and then check every index to see how many indexes have to be updated.
dism /Get-WimInfo /WimFile:c:\temp\src\sources\install.wim
  • Insert the hotfixes and drivers to install.wim and winre.wim by running the following commands:
dism /Mount-Wim /WimFile:c:\temp\src\sources\install.wim /Index:1 /MountDir:c:\temp\mount
dism /Image:C:\temp\mount /Add-Package /PackagePath:c:\temp\hotfix
dism /Image:C:\temp\mount /Add-Driver /Driver:c:\temp\drivers /Recurse
dism /Mount-Wim /WimFile:c:\temp\mount\windows\system32\recovery\winre.wim /Index:1 /MountDir:c:\temp\winremount
dism /Image:C:\temp\mount /Add-Package /PackagePath:c:\temp\hotfix
dism /Image:C:\temp\mount /Add-Driver /Driver:c:\temp\drivers /Recurse
dism /Unmount-Wim /MountDir:C:\temp\winremount /Commit
dism /Unmount-Wim /MountDir:C:\temp\mount /Commit

Note If there are multiple indexes in step 8, update them one by one.

Create an ISO file by running the following oscdimg commands.

Install the latest Windows ADK for Windows 8.1 update.

  • For Legacy BIOS Boot mode:
oscdimg -LTEST -m -u2 -bC:\temp\src\boot\etfsboot.com C:\temp\src C:\temp\Win7.ISO
  • For Legacy and UEFI BIOS multiple Boot mode:
oscdimg -LTEST -m -u2 -bootdata:2#p0,e,bC:\temp\src\boot\etfsboot.com#pEF,e,bC:\temp\src\efi\microsoft\boot\efisys.bin C:\temp\src C:\temp\Win7.ISO

https://support.microsoft.com/en-au/help/2990941/update-to-add-native-driver-support-in-nvm-express-in-windows-7-and-windows-server-2008-r2

Static network config with dhcp fallback

/etc/network/interfaces:

auto wan
iface wan inet manual
	up ifup eth0=eth0-static
	post-up /etc/network/checkConnectivity.sh eth0 192.168.0.1 10.10.0.2

iface eth0 inet manual

#static eth0 config
iface eth0-static inet static
	address 192.168.0.97
	netmask 255.255.255.0
	gateway 192.168.0.1
	dns-nameservers 192.168.0.1 10.10.0.2
	dns-search example.net

#dhcp eth0 config
iface eth0-dhcp inet dhcp

/etc/network/checkConnectivity.sh:

#!/bin/bash
nif=${1}
shift


sleep 1

for i in ${@}; do
	ping -c 2 ${i} \
		&& exit 0
done

# if nothing responds
ifdown ${nif}
ifup ${nif}=${nif}-dhcp

manually override:

  • ifup eth0=eth0-static
  • ifup eth0=eth0-dhcp

WebDAV with cURL

Assuming the following Data:

  • Webdav URL: http://example.com/webdav
  • Username: user
  • Password: pass

Actions

Reading Files/Folders

curl 'http://example.com/webdav'

Creating new Folder

curl -X MKCOL 'http://example.com/webdav/new_folder'

Uploading File

curl -T '/path/to/local/file.txt' 'http://example.com/webdav/test/new_name.txt'

Renaming File

curl -X MOVE --header 'Destination:http://example.org/webdav/new.txt' 'http://example.com/webdav/old.txt'

Deleting Files/Folders

File:

curl -X DELETE 'http://example.com/webdav/test.txt'

Folder:

curl -X DELETE 'http://example.com/webdav/test'

List Files in a Folder

curl -i -X PROPFIND http://example.com/webdav/ --upload-file - -H "Depth: 1" <<end
<?xml version="1.0"?>
<a:propfind xmlns:a="DAV:">
<a:prop><a:resourcetype/></a:prop>
</a:propfind>
end

Continue reading WebDAV with cURL

Mount disk image partition

View partition table of disk.img:

fdisk -lu disk.img
Disk disk.img: 1.3 GiB, 1361051648 bytes, 2658304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6f92008e

Device    Boot  Start     End Sectors  Size Id Type
disk.img1        8192  131071  122880   60M  c W95 FAT32 (LBA)
disk.img2      131072 2658303 2527232  1.2G 83 Linux

Mount partition by using start multiplied by sector size as offset

mount -o loop,offset=$((131072 * 512))