Surface 2 Pro Install Linux Ubuntu 24.04 LTS

Windows 10 support ended. Microsoft Surface 2 Pro devices can't officially be updated to Windows 11. This guide shows how to switch to Linux Ubuntu 24.04 LTS instead:

Installation steps 

  1. Download Rufus https://github.com/pbatard/rufus
  2. Download Linux, e.g. Ubuntu 24 https://ubuntu.com/download/desktop
  3. Format USB stick with Rufus
    - Select the USB stick (all files on it will be erased)
    - Select image file
    - Select MBR
    - Select BIOS or UEFI
    - Select Fix for older BIOSe
    - Select FAT32
    - Press Start
    Rufus Linux Ubuntu 24 USB bootable stick

  4. Shutdown Surface 2 device
  5. Hold Volume-Up & hold Home-Button until Surface logo appears
  6. Disable Secure Boot --> Red background around Surface logo on boot
  7. Shutdown Surface 2 device
  8. Insert USB Stick into Surface 2
  9. Hold Volume-Down & press Home-Button until Surface logo appears 
  10. Select Install Ubuntu in GRUB loader 
  11. Optional: For additional security (using encryption@rest) use lvm with encryption and use a long unique passphrase. 

Result 


Other Microsoft Surface devices might use: https://github.com/linux-surface/linux-surface/wiki/Installation-and-Setup
 

Powershell Website "Ping" using the winsystems web proxy

If you want to monitor/check (every 10s) continuesly if a website (in this exampe http://www.google.de) is reachable using powershell and also using the configured webproxy in your windows system, then you can use the following example:


while ($true) {
    $webClient = New-Object System.Net.WebClient
    $proxy = [System.Net.WebRequest]::GetSystemWebProxy()
    $proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
    $webClient.Proxy = $proxy

    $proxyUri = $proxy.GetProxy([System.Uri]::new("http://www.google.de"))
    $proxyIp = $proxyUri.Host
    $proxyPort = $proxyUri.Port

    $startTime = Get-Date
    try {
        $response = $webClient.DownloadString("http://www.google.de")
        $endTime = Get-Date
        $latency = ($endTime - $startTime).TotalMilliseconds
        $statusCode = 200 # WebClient doesn't expose status code directly, assuming success here
        Write-Output "[$startTime] Latency: ${latency}ms, HTTP Status Code: $statusCode, Proxy:         $proxyIp :$proxyPort"
    } catch {
        $endTime = Get-Date
        $latency = ($endTime - $startTime).TotalMilliseconds
        $errorMessage = $_.Exception.Message
        Write-Output "[$startTime] Latency: ${latency}ms, Error: $errorMessage, Proxy: $proxyIp :$proxyPort"
    }

Start-Sleep -Seconds 10
}


powershell "ping" of website using proxy


Nextcloud v31 on Ubuntu 22.04 - update php v8.1 to v8.4

If you are running HanssonIT Nextcloud VM with Ubuntu 22.04 and your Nextcloud has version 31 and you want to update to version 32, you are ...