schtritoff / hyperv-vm-provisioning

Quick provisioning of Linux VM using Hyper-V on Windows
75 stars 28 forks source link

wsl-convert-hd-nocloud.cmd is written for only English systems #21

Open rnd-swissphone opened 5 days ago

rnd-swissphone commented 5 days ago

The wsl-convert-hd-nocloud.cmd checks for a default installation of WSL. It checks for "(Default)" as documentated by Microsoft. Unfortunately on German systems this is called "(Standard)".

Example:

Ubuntu (Standard)

The script exits with an error message:

Modify VHD and convert cloud-init to NoCloud ... ::: Prerequisites check ... wsl.exe does not have default distro. Error code: Wsl/WSL_E_DEFAULT_DISTRO_NOT_FOUND see https://github.com/microsoft/WSL/issues/9338 Error: Failed to modify/convert VHD to NoCloud DataSource!

The check should be implemented with internationalization in mind.

Will create a pull request to ignore the check on non-english systems

samstagern commented 2 hours ago

Simple way to reproduce the error on German Windows 10 systems:

$imageVersion="trixie-azure" $params = @{ VMName="DEMO-$imageVersion" ImageVersion=$imageVersion VHDSizeBytes=10GB } .\New-HyperVCloudImageVM.ps1 @params

samstagern commented 1 hour ago

Output before fix:

Creating metadata iso for VM provisioning... Done. Removing old images from cache... Done. Check new image size ... Done. Downloading new Cloud image (220 MB)... Done. Checking file hash for downloaded image... Done. Expanding archive using bsdtar...qemu-img info for source untouched cloud image: image: C:\repo\github\bugfix-hyperv-vm\cache\CloudImage-debian-trixie-azure\disk.raw file format: raw virtual size: 30 GiB (32212254720 bytes) disk size: 533 MiB Done. Convert VHD fixed to VHD dynamic... Done. Compact-VHD: C:\repo\github\bugfix-hyperv-vm\cache\CloudImage-debian-trixie-azure\debian-20241113055325.vhd ... Done. Modify VHD and convert cloud-init to NoCloud ... ::: Prerequisites check ... wsl.exe does not have default distro. Error code: Wsl/WSL_E_DEFAULT_DISTRO_NOT_FOUND see https://github.com/microsoft/WSL/issues/9338 Error: Failed to modify/convert VHD to NoCloud DataSource!

Output after fix:

`Creating metadata iso for VM provisioning... Done. Removing old images from cache... Done. Check new image size ... Done. Downloading new Cloud image (220 MB)... Done. Checking file hash for downloaded image... Done. Expanding archive using bsdtar...qemu-img info for source untouched cloud image: image: C:\repo\github\bugfix-hyperv-vm\cache\CloudImage-debian-trixie-azure\disk.raw file format: raw virtual size: 30 GiB (32212254720 bytes) disk size: 590 MiB Done. Convert VHD fixed to VHD dynamic... Done. Compact-VHD: C:\repo\github\bugfix-hyperv-vm\cache\CloudImage-debian-trixie-azure\debian-20241113055325.vhd ... Done. Modify VHD and convert cloud-init to NoCloud ... ::: Prerequisites check ...

::: Mount VHD to Windows ... Microsoft DiskPart-Version 10.0.19041.3636 Copyright (C) Microsoft Corporation. Auf Computer: WMD100691

Die Datei für virtuelle Datenträger wurde von DiskPart erfolgreich ausgewählt.

100 Prozent bearbeitet

Die Datei für virtuelle Datenträger wurde von DiskPart erfolgreich angefügt.

Geträtetyp-ID: 0 (Unbekannt) Hersteller-ID: {00000000-0000-0000-0000-000000000000} (Unbekannt) Status: Angefügt, nicht geöffnet Virtuelle Größe: 30 GB Physische Größe: 1188 MB Dateiname: C:\repo\github\bugfix-hyperv-vm\cache\CloudImage-debian-trixie-azure\debian-20241113055325.vhd Ist untergeordnet: Nein Übergeordneter Dateiname: Zugeordnete Datenträgernummer: 1

Gewartet wird 0 Sekunden. Drücken Sie STRG+C, um den Vorgang zu beenden...

::: Get PHYSICALDRIVE{ID} of mounted VHD... found device id 1

::: Mount VHD to WSL ... Der Datenträger wurde erfolgreich als "/mnt/wsl/PHYSICALDRIVE1p1" bereitgestellt. Hinweis: Der Speicherort ist anders, wenn Sie die Einstellung "automount.root" in "/etc/wsl.conf" geändert haben. Führen Sie "wsl.exe --unmount \.\PHYSICALDRIVE1" aus, um die Bereitstellung des Datenträgers aufzuheben und zu trennen.

::: Writing file inside WSL ...

::: Unmount VHD from WSL ... Der Vorgang wurde erfolgreich beendet.

::: Unmount VHD from Windows ...

Microsoft DiskPart-Version 10.0.19041.3636

Copyright (C) Microsoft Corporation. Auf Computer: WMD100691

Die Datei für virtuelle Datenträger wurde von DiskPart erfolgreich ausgewählt.

Die Datei für virtuelle Datenträger wurde von DiskPart erfolgreich getrennt. Done. Prepare virtual disk...WARNING: Failed to convert and resize, will just copy it ... Create VM... Done. Set SMBIOS serial number ... Set Azure chasis asset tag ... Done. SMBIOS SN: ds=nocloud Done. Starting VM... Done. Done`

samstagern commented 1 hour ago

chcp on my system gives this output:

Aktive Codepage: 850.