Journal Transférer sa licence Windows dans une VM

Posté par  . Licence CC By‑SA.
32
2
juin
2024
Ce journal a été promu en dépêche : Transférer sa licence Windows dans une VM.

Sommaire

Introduction

Pour le contexte, je viens d'acheter un PC et bien que j'aie fouillé et patienté longtemps, aucune offre sans OS n'arrivait ou ne convenait donc j'ai cédé à la vente forcée d'un PC avec Windows.

Dans ce petit tutoriel, je vous explique donc comment déplacer cette licence Windows OEM vers une VM sur le même PC. Si vous avez déjà une licence achetée à part, il vous suffit de la spécifier à l'installation, on s'intéresse ici au cas des licences OEM préinstallées sur la carte mère.

L'intérêt de déplacer Windows dans une VM, c'est de ne pas bloquer une partie de l'espace disque avec une partition qui ne servira quasiment jamais. Là on peut déplacer l'image disque vers un stockage externe ou recréer la VM au besoin.

Dans ce tutoriel j'utilise libvirt via le GUI virt-manager, mais je me suis largement appuyé sur cet excellent tutoriel pour Proxmox d'Oliver Poncet que je vous invite à consulter.

Je précise immédiatement qu'il n'est pas nécessaire d'avoir gardé le Windows préinstallé sur la machine, ni même de l'avoir démarré une seule fois.

Dépendances

Pour parvenir à vos fins, il vous faudra les dépendances suivantes (en espérant ne rien oublier):

  • dmidecode pour lire les infos de la carte mère
  • libvirt
  • qemu/KVM
  • swtpm pour émuler un TPM
  • edk2-ovmf pour émuler un UEFI avec Secure Boot
  • Le fichier .iso de Windows 11 disponible sur le site de microsoft.

Sous ArchLinux: pacman -S dmidecode libvirt dnsmasq qemu-desktop swtmp

J'ai utilisé virt-manager pour me faciliter la vie, j'imagine qu'on peut s'en sortir en ligne de commande directement avec qemu.

Installation

Récupérer les informations utiles

Pour valider automatiquement votre licence, Windows utilise des informations disponibles depuis la carte mère.
D'abord, le numéro de série, modèle etc.:

$ sudo dmidecode
...
BIOS Information
    Vendor: LENOVO
    Version: NCCN16WW
    Release Date: 02/02/2024
...
    BIOS Revision: 1.16
    Firmware Revision: 1.16
...
System Information
    Manufacturer: LENOVO
    Product Name: 83E3
    Version: Yoga Pro 7 14AHP9
    Serial Number: 9F5OEMTZ
    UUID: a0a73af8-a886-4fbf-8f0d-5fd32c264a16
    SKU Number: LENOVO_MT_83E3_BU_idea_FM_Yoga Pro 7 14AHP9
    Family: Yoga Pro 7 14AHP9

(j'ai édité le serial et l'uuid)

Ensuite des informations enregistrées dans des tables ACPI:

sudo cat /sys/firmware/acpi/tables/MSDM > ~/VMs/MSDM.bin
sudo cat /sys/firmware/acpi/tables/SLIC > ~/VMs/SLIC.bin

Créer la VM

La procédure démarre comme d'habitude, on suit l'assistant de virt-manager jusqu'au moment où il faut bien demander à modifier la configuration avant de démarrer.

Dans les options du BIOS, choisissez la config avec Secure Boot activé, chez moi le fichier se nomme OVMF_CODE.secboot.4m.fd.

Ensuite il faut éditer directement le code XML qui décrit la configuration de la machine.
Si c'est la première fois dans virt-manager, il faut cocher une case dans les paramètres de l'appli pour le rendre éditable.

Pour commencer, modifiez le nœud racine xml pour spécifier le schéma, sinon certaines options seront rejetées :

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

Mettez aussi à jour l'uuid pour qu'il corresponde à celui indiqué par dmidecode:

    <uuid>a0a73af8-a886-4fbf-8f0d-5fd32c264a16</uuid>

Ensuite, il faut indiquer à qemu d'intégrer les tables ACPI :

    <qemu:commandline>
        <qemu:arg value='-acpitable'/>
        <qemu:arg value='file=/home/ngranger/VMs/MSDM.bin'/>
        <qemu:arg value='-acpitable'/>
        <qemu:arg value='file=/home/ngranger/VMs/SLIC.bin'/>
    </qemu:commandline>

Puis il faut ajouter les informations de la carte mère :

    <sysinfo type='smbios'>
        <bios>
            <entry name='vendor'>LENOVO</entry>
            <entry name='version'>NCCN16WW</entry>
            <entry name='date'>02/02/2024</entry>
            <entry name='release'>1.16</entry>
        </bios>
        <system>
            <entry name='manufacturer'>LENOVO</entry>
            <entry name='product'>83E3</entry>
            <entry name='version'>Yoga Pro 7 14AHP9</entry>
            <entry name='uuid'>a0a73af8-a886-4fbf-8f0d-5fd32c264a16</entry>
            <entry name='serial'>9F5OEMTZ</entry>
            <entry name='family'>Yoga Pro 7 14AHP9</entry>
            <entry name='sku'>LENOVO_MT_83E3_BU_idea_FM_Yoga Pro 7 14AHP9</entry>
        </system>
    </sysinfo>

Installation de Windows

La procédure est désormais habituelle.

Pour éviter d'avoir à utiliser un compte Microsoft, vous pouvez couper internet au moment où Windows redémarre pour la configuration du système.
Lorsque l'assistant en arrive à la connexion au réseau, tapez Maj-F10 pour ouvrir le terminal et exécutez la commande oobe\BypassNRO.
Le PC redémarrera sur un assistant qui rend la connexion facultative.

Au démarrage, vous pourrez remettre internet et vérifier que la licence est bien activée.

Liens utiles

  • # Thx

    Posté par  (site web personnel) . Évalué à 4.

    Procédure incroyable qui se révèlera utile dans peu de temps ; merci bien !

  • # Depuis le disque

    Posté par  . Évalué à 3. Dernière modification le 03 juin 2024 à 12:08.

    As-tu déjà essayé de booter le windows dans une VM depuis le disque sur lequel il est déjà installé?

    J'ai jamais réussi mais ça m'intéresserait pour le PC du bureau.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.