Linx Tablet Windows 8.1 to Windows 10 Upgrade

Backup Process, pre-upgrade

Use a powered USB hub to connect the Linx OTG, USB (8GB) Pen drive, Large USB drive, keyboard and mouse

  1. Backup the images via “File History” > “System Image” to the large disk within Win8.1
  2. Install Macrium Reflect Free
  3. Create Macrium rescue USB drive and then boot into it (power off then hold power+vol up to get to boot mgr) to test it works
  4. Reboot to Win8.1
  5. Create backup images of the partitions using Macrium to the large USB drive


  1. Download all Windows updates to obtain the free upgrade to Windows 7 option
  2. Export all drivers to the large backup disk (in my case the e:\ drive) using PowerShell
    NOTE: I didn’t actually need these, it’s good to backup though!

    Export-WindowsDriver –Online -Destination e:\export-drivers
  3. Download the drivers from the linx site—drivers&sid=ad908ed3eafdbd149ed7c8018a56e3af  (you will need an account to do so, which is free)
    NOTE: I didn’t actually need these, it’s good to backup though!
  4. Run Windows Updates to get the upgrade (24 hours left at time of writing this oops!). I would guess it’s possible to create a bootable installation USB from licensed media in the future and will re-visit this guide when I do that.
  5. Let Windows manage the installation, I had to install an external Micro SD Card to house the downloaded data.

Thanks to the following posts (login maybe required):

Windows 10 WAIK Image (.wim) Preparation

Aim of this guide

This guide will walk through the steps I’ve taken to create a deployable Windows 10 Enterprise .wim image which can then be used to deploy Windows 10 across our domain via our PXE environment.

Prepare a machine with Windows 10

The first step is to create an Autounattend.xml file which will be copied to a USB Pen drive and attached to a target test machine, in this case a Dell 9020 along with the Windows 10 Enterprise DVD. The presence of this file in an attached USB Pen drive will cause the installation of Windows 10 to become automated and will force the machine into [Audit Mode], which is where we can begin stripping out the unwanted Windows 10 Apps before sysprep-ing and powering down the machine.

One thing to note is that this answer file formats the disk under the GPT scheme, NOT MBR. So if you have an MBR formatted drive you’ll need to first reformat it as GPT. This can be completed using the Windows 10 Installation DVD by pressing SHIFT+F10 when booting from the DVD to open a command prompt followed by:

list disk
select disk 0 

(where disk 0 is your target deployment disk indicated from list disk)

covert gpt

I’m assuming that you’ve installed the [Deployment Tools] and, optionally the [Windows Preinstallation Environment] from the  Windows 10 Automated Deployment Toolkit [] on your development machine, in my case this is our Windows Server.

Launch [as Administrator] the Windows System Image Manager

It will need a valid [install.wim] from the [sources] directory of a LTSB release of Windows 10.
Create an answer file with the following components and settings:

1 windowsPE:

  • amd64_Microsoft-Windows-Internationl-Core-WinPE_neutral
    InputLocale= en-GB
    SystemLocale= en-GB
    UILanguage= en-US
    UserLocale= en-GB
    -> SetupUILanguage
    UILanguage= en-US
    WillShowUI= OnError
  • amd64_Microsoft_Windows_Setup_neutral
    WillShowUI= OnError
    ->->-> Disk[DiskID=”0″]
    Action= AddListItem
    DiskID= 0
    WillWipeDisk= True
    ->->->-> CreatePartitions
    ->->->->-> CreatePartition[Order=”1″]
    Action= AddListItem
    Extend= False
    Order= 1
    Size= 500
    Type= Primary
    ->->->->-> CreatePartition[Order=”2″]
    Action= AddListItem
    Extend= False
    Order= 2
    Type= Primary
    ->->->-> ModifyPartitions
    ->->->->-> ModifyPartition[Order=”1″]
    Action= AddListItem
    Active= true
    Extend= false
    Format= NTFS
    Label= System
    Letter= S
    Order= 1
    PartitionID= 1
    ->->->->-> ModifyPartition[Order=”2″]
    Action= AddListItem
    Active= true
    Extend= false
    Format= NTFS
    Label= Windows
    Letter= C
    Order= 2
    PartitionID= 2
    WillShowUI= OnError
    ->->->-> InstallTo
    DiskID= 0
    PartitionID=  2
    AcceptEula= true
    WilLShowUI= never

4 specialize:

  • amd64_Microsoft-Windows-Deployement_neutral
    -> RunAsynchronous
    ->-> RunAsynchronousCommand[order=”1″]
    Action= AddListItem
    Order= 1
    path= net user administrator /active:yes
  • amd64_Microsoft-Windows-Security-SPP-UX_neutral
    SkipAutoActivation= true
  • amd64_Microsoft-Windows-Shell-Setup_neutral
    ComputerName= Replaceme1
    DisableAutoDaylightTimeSet= false
    RegisteredOrganisation= <<YOUR COMPANY HERE>>
    RegisteredOwner= <<YOUR DEPARTMENT HERE>>
    ShowPowerButtonOnStartScreen= true
    ShowWindowsLive= false
    SignInMode= 1
    TimeZone= GMT Standard Time
    -> OEMInformation
    HelpCustomized= false
    SupportHours= <<YOUR WORKING HOURS HERE>>
    SupportPhone= <<YOUR PHONE NUMBER HERE>>

7. oobeSystem:

  • amd64_Microsoft-Windows-Deployement_neutral
    -> Reseal
    Mode= Audit
  • amd64_Microsoft-Windows-Shell-Setup_neutral
    ShowWindowsLive= false
    SignInMode= 1
    TimeZone= GMT Standard Time
    -> AutoLogon
    Enabled= true
    LogonCount= 5
    Username= Administrator
    -> OOBE
    HideEULAPage= true
    HideLocalAccountScreen= true
    HideOEMRegistrationScreen= true
    HideOnlineAccountScreens= true
    HideWirelessSetupInOOBE= true
    NetworkLocation= Work
    ProtectYourPC= 1
    -> UserAccounts
    ->-> AdministratorPassword

Save the file and then copy it to a USB Pen drive and attach it to the target test machine along with the Windows 10 DVD, power on and boot from DVD then make a cuppa while the system installs.

Once the installation has completed you should be logged in as the Administrator in Maintenance mode with a Sysprep GUI window open on-screen.

Now you can begin configuring applications and programs that you want to be installed or removed for all systems.


Remove Apps from the Windows 10 Audit Mode Machine

To remove apps from Windows 10 you can use PowerShell commands:


Uninstall Calendar and Mail: Get-AppxPackage *windowscommunicationsapps* | Remove-AppxPackage
Uninstall Get Office: Get-AppxPackage *officehub* | Remove-AppxPackage
Uninstall Get Skype: Get-AppxPackage *skypeapp* | Remove-AppxPackage
Uninstall Get Started: Get-AppxPackage *getstarted* | Remove-AppxPackage
Uninstall Groove Music: Get-AppxPackage *zunemusic* | Remove-AppxPackage
Uninstall Microsoft Solitaire Collection: Get-AppxPackage *solitairecollection* | Remove-AppxPackage
Uninstall Money: Get-AppxPackage *bingfinance* | Remove-AppxPackage
Uninstall Movies & TV: Get-AppxPackage *zunevideo* | Remove-AppxPackage
Uninstall News: Get-AppxPackage *bingnews* | Remove-AppxPackage
Uninstall OneNote: Get-AppxPackage *onenote* | Remove-AppxPackage
Uninstall People: Get-AppxPackage *people* | Remove-AppxPackage
Uninstall Phone Companion: Get-AppxPackage *windowsphone* | Remove-AppxPackage
Uninstall Photos: Get-AppxPackage *photos* | Remove-AppxPackage
Uninstall Store: Get-AppxPackage *windowsstore* | Remove-AppxPackage
Uninstall Sports: Get-AppxPackage *bingsports* | Remove-AppxPackage
Uninstall Weather: Get-AppxPackage *bingweather* | Remove-AppxPackage
Uninstall Xbox: Get-AppxPackage *xboxapp* | Remove-AppxPackage


Remove / Install Any Other Applications & Sysprep

Complete any other software installations or removals you require and then prepare an “unattend.xml” answer file which will be used to configure the system the image is deployed to.

TODO : Details of initial unattend.xml

Copy the “unattend.xml” file to:


Then sysprep the target machine using the following command:

C:\windows\system32\Sysprep\sysprep.exe /generalize /oobe /shutdown /unattend:"C:\Windows\System32\Sysprep\unattend.xml"

Image the target machine, capture that .wim!

The next stage is to image the now shutdown machine’s partitions into .wim files. I created a bootable .iso file using the Windows 10 Automated Deployment Toolkit and then copied in the DISM folder (which includes the imagex.exe utility) into the ISO.

Copied from :

Install the Windows ADK

  • Install the following features from the Windows Assessment and Deployment Kit (ADK):
    • Deployment Tools: includes the Deployment and Imaging Tools Environment.
    • Windows Preinstallation Environment : includes the files used to install Windows PE.

Install Windows PE to a DVD, a CD, or an ISO file

  1. Click Start, and type deployment. Right-click Deployment and Imaging Tools Environment and then select Run as administrator.
  2. Create a working copy of the Windows PE files. Specify either x86 or amd64:
    copype amd64 C:\WinPE_amd64
  3. Create an ISO file containing the Windows PE files:
    MakeWinPEMedia /ISO C:\WinPE_amd64 C:\WinPE_amd64\WinPE_amd64.iso
  4. To burn a DVD or CD: In Windows Explorer, right-click the ISO file, and select Burn disc image > Burn, and follow the prompts.


You can either burn that ISO to a CD or use an ISO virtual drive such as the Zalman ZM-VE400 to boot from.

Attach another larger disk drive to the system, or map a network drive from within the Windows 10 PE (Live) environment you’ve booted into and then run the following commands to image the partitions:

  1. Identify the volume letter assigned to the SYSTEM and WINDOWS partitions using the following commands:
    list vol

    TODO* : IMAGE OF list vol OUTPUT


Linux Learnings

dave@mule:~$ arr=($(ipcs -p | awk -F ' *' '$3 ~ /^[0-9]+$/ {print $3}' ))
dave@mule:~$ for i in "${arr[@]}"; do :; ps aux | grep -v grep | grep -e $i; done

This code firstly creates an array of the 3rd column’s numerical values from the [ ipcs-p ] command and then in the second command it iterates over the array and filters out the [ps aux] results using [grep] to display only entries matching the item in the array.

It’s not terribly efficient but I’m just starting out here… 🙂



Silk, iSilk Wonderland

Notes on installing and using Silk network monitoring on a pre-configured log server named Wonderland

  1. Download iSilk client from
  2. Run the setup wizard and enter the FQDN of the wonderland server along with a valid username and passwordNOTE: I was unable to use the autoconfiguration tool in iSilk to connect to our server, it was failing to generate the SSH-DSA keys as intended so I used PuttyGen to create my own 2048-bit SSH-DSA keys and then copied the public key string to [ ~/.ssh/authorized_keys ] on the target server, ensuring I added to and not over-wrote the file.I could then skip the wizard and complete the Host, port, user(name), and public key file location on my local machine from the initial connection page and save that as the default.
  3. On the [General] tab I entered:Output Directory = [ /data/silk/dave ] , having created that dir on the server and applying the user:root permissions to it.
    Library Path = [ /data/silk/library ] , as defined in the silk.conf file (i think) on the target server.
    Limit Maximum Records = [UNTICK]
    Exclude IPv6 = [TICKED] (as our server doesn’t use it).
  4. Using Putty’s [ Pageant ] and loading in my private key file I was then able to launch iSilk and it connected cleanly to the target server!


Following the setup I then created my first set and within that my first query through the GUI which resulted in these options for the command line:

rwfilter --type=out,outweb,in,inweb --sensors=S1 --start-date=2016/07/18:18 --end-date=2016/07/19:01 --proto=0-255 --max-pass-records=0 --ip-version=4 --pass=FirstQuery.rwf --print-filenames

MySQL Commands Maintenance v2

Create an Archive table for unused assets

This SQL statement creates the archive table based on any primary locations that equal ’23 Banbury Road’ or ‘Acland’, it then pulls in the data from the other reference tables.

CREATE TABLE `_archive_asset_log_verbose` AS
`locations`.`priloc` as `locpriloc`,
`locations`.`secloc` as `locsecloc`,
`locations`.`terloc` as `locterloc`,
`pda`.`human` as `pda#`,
`changeloc`.`priloc` as `changepriloc`,
`changeloc`.`secloc` as `changesecloc`,
`changeloc`.`terloc` as `changeterloc`,

FROM (((((maintenancev2.asset_log as x
LEFT JOIN `users` on `x`.`user`=`users`.`autonum`)
LEFT JOIN `pda` on `x`.`pdaid`=`pda`.`autonum`)
LEFT JOIN `asset_list` on `x`.`barcode`=`asset_list`.`barcode`)
LEFT JOIN `locations` on `asset_list`.`loc`=`locations`.`autonum`)
LEFT JOIN `locations` as `changeloc` on `x`.`changeloc`=`changeloc`.`autonum`)

where `x`.`barcode` in
(select `barcode` from `asset_list` where `loc` in
(select `autonum` from `maintenancev2`.`locations`
where ((`priloc`=’23 Banbury Road’) or `priloc`=’Acland’)