GNU/Linux >> Tutoriels Linux >  >> Linux

Convertissez votre installation Windows en VM sous Linux

J'utilise fréquemment VirtualBox pour créer des machines virtuelles afin de tester de nouvelles versions de Fedora, de nouveaux programmes d'application et de nombreux outils d'administration comme Ansible. J'ai même utilisé VirtualBox pour tester la création d'un hôte invité Windows.

Je n'ai jamais utilisé Windows comme système d'exploitation principal sur l'un de mes ordinateurs personnels ou même dans une machine virtuelle pour effectuer une tâche obscure qui ne peut pas être effectuée avec Linux. Cependant, je fais du bénévolat pour une organisation qui utilise un programme financier qui nécessite Windows. Ce programme s'exécute sur l'ordinateur du responsable du bureau sous Windows 10 Pro, qui était préinstallé.

Cette application financière n'est pas spéciale, et un meilleur programme Linux pourrait facilement la remplacer, mais j'ai constaté que de nombreux comptables et trésoriers sont extrêmement réticents à apporter des modifications, donc je n'ai pas encore réussi à convaincre les membres de notre organisation de migrer .

Cet ensemble de circonstances, ainsi qu'une récente alerte à la sécurité, ont rendu hautement souhaitable la conversion de l'hôte exécutant Windows vers Fedora et l'exécution de Windows et du programme de comptabilité dans une machine virtuelle sur cet hôte.

Il est important de comprendre que j'ai une aversion extrême pour Windows pour plusieurs raisons. Les principaux qui s'appliquent à ce cas sont que je détesterais payer pour une autre licence Windows - Windows 10 Pro coûte environ 200 $ - pour l'installer sur une nouvelle machine virtuelle. En outre, Windows 10 nécessite suffisamment d'informations lors de sa configuration sur un nouveau système ou après une installation pour permettre aux pirates de voler son identité, en cas de violation de la base de données Microsoft. Personne ne devrait avoir à fournir son nom, son numéro de téléphone et sa date de naissance pour enregistrer un logiciel.

Démarrer

L'ordinateur physique disposait déjà d'un périphérique de stockage NVMe m.2 de 240 Go installé dans le seul emplacement m.2 disponible sur la carte mère. J'ai décidé d'installer un nouveau SSD SATA dans l'hôte et d'utiliser le SSD existant avec Windows comme périphérique de stockage pour la machine virtuelle Windows. Kingston propose une excellente vue d'ensemble des différents périphériques SSD, facteurs de forme et interfaces sur son site Web.

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Cette approche signifiait que je n'aurais pas besoin de faire une toute nouvelle installation de Windows ou de l'un des logiciels d'application existants. Cela signifiait également que le chef de bureau qui travaillait sur cet ordinateur utiliserait Linux pour toutes les activités normales telles que la messagerie électronique, l'accès au Web, la création de documents et de feuilles de calcul avec LibreOffice. Cette approche augmente le profil de sécurité de l'hôte. La seule fois où la machine virtuelle Windows serait utilisée, c'est pour exécuter le programme de comptabilité.

Sauvegardez-le d'abord

Avant de faire quoi que ce soit d'autre, j'ai créé une image ISO de sauvegarde de l'ensemble du périphérique de stockage NVMe. J'ai créé une partition sur un lecteur de stockage USB externe de 500 Go, créé un système de fichiers ext4 dessus, puis monté cette partition sur /mnt . J'ai utilisé le jj commande pour créer l'image.

J'ai installé le nouveau SSD SATA de 500 Go dans l'hôte et installé le spin Fedora 32 Xfce dessus à partir d'un Live USB. Lors du redémarrage initial après l'installation, les lecteurs Linux et Windows étaient disponibles dans le menu de démarrage GRUB2. À ce stade, l'hôte peut être démarré en double entre Linux et Windows.

Vous cherchez de l'aide sur tous les sites Internet

Maintenant, j'avais besoin d'informations sur la création d'une machine virtuelle qui utilise un disque dur physique ou un SSD comme périphérique de stockage. J'ai rapidement découvert de nombreuses informations sur la façon de procéder dans la documentation de VirtualBox et sur Internet en général. Bien que la documentation de VirtualBox m'ait aidé à démarrer, elle n'est pas complète, laissant de côté certaines informations critiques. La plupart des autres informations que j'ai trouvées sur Internet sont également assez incomplètes.

Avec l'aide critique de l'un de nos correspondants Opensource.com, Joshua Holm, j'ai pu percer le problème et faire en sorte que cela fonctionne selon une procédure reproductible.

Le faire fonctionner

Cette procédure est en fait assez simple, bien qu'un hack mystérieux soit nécessaire pour la faire fonctionner. Les systèmes d'exploitation Windows et Linux étaient déjà en place au moment où j'étais prêt pour cette étape.

Tout d'abord, j'ai installé la version la plus récente de VirtualBox sur l'hôte Linux. VirtualBox peut être installé à partir des référentiels de logiciels de nombreuses distributions, directement à partir du référentiel Oracle VirtualBox, ou en téléchargeant le fichier de package souhaité à partir du site Web de VirtualBox et en l'installant localement. J'ai choisi de télécharger la version AMD64, qui est en fait un installateur et non un package. J'utilise cette version pour contourner un problème qui n'est pas lié à ce projet particulier.

La procédure d'installation crée toujours un vboxusers groupe dans /etc/group . J'ai ajouté les utilisateurs destinés à exécuter cette VM aux vboxusers et disque groupes dans /etc/group . Il est important d'ajouter les mêmes utilisateurs au disque groupe car VirtualBox s'exécute en tant qu'utilisateur qui l'a lancé et nécessite également un accès direct à /dev/sdx fichier spécial de périphérique pour fonctionner dans ce scénario. Ajouter des utilisateurs au disque groupe fournit ce niveau d'accès, qu'ils n'auraient pas autrement.

J'ai ensuite créé un répertoire pour stocker les machines virtuelles et lui ai donné la propriété de root.vboxusers et 775 autorisations. J'ai utilisé /vms pour le répertoire, mais cela pourrait être tout ce que vous voulez. Par défaut, VirtualBox crée de nouvelles machines virtuelles dans un sous-répertoire de l'utilisateur créant la VM. Cela rendrait impossible le partage de l'accès à la machine virtuelle entre plusieurs utilisateurs sans créer une vulnérabilité de sécurité massive. Placer le répertoire VM dans un emplacement accessible permet de partager les VM.

J'ai démarré VirtualBox Manager en tant qu'utilisateur non root. J'ai ensuite utilisé VirtualBox Preferences ==> General menu pour définir le dossier de la machine par défaut sur le répertoire /vms .

J'ai créé la VM sans disque virtuel. Le Type devrait être Windows , et la Version doit être défini sur Windows 10 64 bits . Définissez une quantité raisonnable de RAM pour la VM, mais cela peut être modifié ultérieurement tant que la VM est éteinte. Sur le disque dur page de l'installation, j'ai choisi "Ne pas ajouter de disque dur virtuel" et j'ai cliqué sur Créer . La nouvelle machine virtuelle est apparue dans la fenêtre VirtualBox Manager. Cette procédure a également créé le /vms/Test1 répertoire.

Je l'ai fait en utilisant le Avancé menu et effectué toutes les configurations sur une seule page, comme le montre la figure 1. Le mode guidé obtient les mêmes informations mais nécessite plus de clics pour parcourir une fenêtre pour chaque élément de configuration. Il fournit un peu plus de texte d'aide, mais je n'en avais pas besoin.

Figure 1 :Créez une nouvelle machine virtuelle mais n'ajoutez pas de disque dur.

Ensuite, j'avais besoin de savoir quel périphérique était affecté par Linux au lecteur Windows brut. En tant que root dans une session de terminal, utilisez le lshw commande pour découvrir l'affectation de périphérique pour le disque Windows. Dans ce cas, le périphérique qui représente l'ensemble du périphérique de stockage est /dev/sdb .

# lshw -short -class disk,volume
H/W path           Device      Class          Description
=========================================================
/0/100/17/0        /dev/sda disque           500 Go CT500MX500SSD1
/0/100/17/0/1                  volume         Volume FAT Windows 2047 Mio
/0/100/17/0/2      /dev/sda2   volume         Volume 4 GiB /100/17/0/3      /dev/sda3   volume         Volume physique LVM 459 Gio
/0/100/17/1        /dev/cdrom  disk           DVD+-RW DU-8A5LH
/0/100/17 /0.0.0    /dev/sdb    disque           256 Go TOSHIBA KSG60ZMV
/0/100/17/0.0.0/1  /dev/sdb1   volume         Volume FAT Windows de 649 Mo
/0/100/17/0.0. 0/2  /dev/sdb2   volume         Partition réservée de 127 Mo
/0/100/17/0.0.0/3  /dev/sdb3   volume         Volume Windows NTFS de 236 Go
/0/100/17/0.0.0 /4  /dev/sdb4   volume         Volume Windows NTFS de 989 Mio
[root@office1 etc]#

Au lieu d'un périphérique de stockage virtuel situé dans /vms/Test1 répertoire, VirtualBox doit avoir un moyen d'identifier le disque dur physique à partir duquel il doit démarrer. Cette identification est accomplie en créant un *.vmdk fichier, qui pointe vers le disque physique brut qui sera utilisé comme périphérique de stockage pour la machine virtuelle. En tant qu'utilisateur non root, j'ai créé un vmdk fichier qui pointe vers l'ensemble du périphérique Windows, /dev/sdb .

$ VBoxManage internalcommands createrawvmdk -filename /vms/Test1/Test1.vmdk -rawdisk /dev/sdb
Le fichier VMDK d'accès au disque hôte RAW /vms/Test1/Test1.vmdk a été créé avec succès.

J'ai ensuite utilisé le Fichier VirtualBox Manager ==> Virtual Media Manager boîte de dialogue pour ajouter le vmdk disque vers les disques durs disponibles. J'ai cliqué sur Ajouter , et la valeur par défaut /vms l'emplacement était affiché dans la boîte de dialogue de gestion des fichiers. J'ai sélectionné le Test1 puis le répertoire Test1.vmdk dossier. J'ai ensuite cliqué sur Ouvrir , et le Test1.vmdk le fichier était affiché dans la liste des disques durs disponibles. Je l'ai sélectionné et j'ai cliqué sur Fermer .

L'étape suivante consistait à ajouter ce vmdk disque aux périphériques de stockage pour notre machine virtuelle. Dans le menu des paramètres de la VM Test1 , j'ai sélectionné Stockage et cliqué sur l'icône pour ajouter un disque dur. Cela a ouvert une boîte de dialogue qui affichait le Test1vmdk fichier de disque virtuel dans une liste intitulée Non attaché. J'ai sélectionné ce fichier et cliqué sur Choisir bouton. Ce périphérique est désormais affiché dans la liste des périphériques de stockage connectés à la VM Test1 . Le seul autre périphérique de stockage sur cette machine virtuelle est un lecteur de CD/DVD-ROM vide.

J'ai cliqué sur OK pour terminer l'ajout de cet appareil à la VM.

Il y avait un autre élément à configurer avant que la nouvelle machine virtuelle ne fonctionne. Utilisation des Paramètres de VirtualBox Manager boîte de dialogue pour la VM Test1 , j'ai navigué vers le Système ==> Carte mère page et coché la case Activer EFI . Si vous ne le faites pas, VirtualBox générera une erreur indiquant qu'il ne peut pas trouver de support de démarrage lorsque vous essayez de démarrer cette VM.

La machine virtuelle démarre maintenant à partir du disque dur brut de Windows 10. Cependant, je n'ai pas pu me connecter car je n'avais pas de compte régulier sur ce système et je n'avais pas non plus accès au mot de passe du compte administrateur Windows.

Déverrouiller le lecteur

Non, cette section ne concerne pas la rupture du cryptage du disque dur. Il s'agit plutôt de contourner le mot de passe de l'un des nombreux comptes d'administrateur Windows, que personne au sein de l'organisation ne possédait.

Même si je pouvais démarrer la machine virtuelle Windows, je ne pouvais pas me connecter car je n'avais pas de compte sur cet hôte et demander aux gens leurs mots de passe est une horrible faille de sécurité. Néanmoins, j'avais besoin de me connecter à la VM pour installer les additions invité VirtualBox , qui fournirait une capture et une libération transparentes du pointeur de la souris, me permettrait de redimensionner la machine virtuelle pour qu'elle soit supérieure à 1 024 x 768 et d'effectuer une maintenance normale à l'avenir.

Il s'agit d'un cas d'utilisation parfait pour la capacité de Linux à modifier les mots de passe des utilisateurs. Même si j'accède au compte de l'administrateur précédent pour commencer, dans ce cas, il ne supportera plus ce système, et je ne pourrai pas discerner son mot de passe ou les modèles qu'il utilise pour les générer. J'effacerai simplement le mot de passe de l'administrateur système précédent.

Il existe un très bon outil logiciel open source spécifiquement pour cette tâche. Sur l'hôte Linux, j'ai installé chntpw , qui signifie probablement quelque chose comme "Modifier le mot de passe NT".

# dnf -y install chntpw 

J'ai éteint la machine virtuelle, puis monté le /dev/sdb3 partitionner sur /mnt . J'ai déterminé que /dev/sdb3 est la bonne partition car c'est la première grande partition NTFS que j'ai vue dans la sortie de lshw commande que j'ai effectuée précédemment. Assurez-vous de ne pas monter la partition pendant que la machine virtuelle est en cours d'exécution ; cela pourrait entraîner une corruption importante des données sur le périphérique de stockage VM. Notez que la partition correcte peut être différente sur d'autres hôtes.

Accédez à /mnt/Windows/System32/config annuaire. Le chntpw programme utilitaire ne fonctionne pas si ce n'est pas le répertoire de travail actuel (PWD). Démarrez le programme.

# chntpw -i SAM
chntpw version 1.00 140201, (c) Petter N Hagen
Hive nom (à partir de l'en-tête) :<\SystemRoot\System32\Config\SAM>
ROOT KEY at offset :0x001020 * Le type d'indexation de la sous-clé est :686c
Taille du fichier 131072 [20000] octets, contenant 11 pages (+ 1 page d'en-tête)
Utilisé pour les données :367/44720 blocs/ octets inutilisés :14/24 560 blocs/octets.

<>========<> Menu interactif principal chntpw <>========<>

Ruches chargées :

  1 - Modifier les données utilisateur et les mots de passe
  2 - Lister les groupes
      - - -
  9 - Éditeur du registre, désormais avec prise en charge complète de l'écriture !
  q - Quitter (on vous demandera s'il y a quelque chose à enregistrer)


Que faire ? [1] ->

Le chntpw La commande utilise une TUI (Text User Interface), qui fournit un ensemble d'options de menu. Lorsque l'un des éléments du menu principal est choisi, un menu secondaire s'affiche généralement. Après les noms de menu clairs, j'ai d'abord choisi l'élément de menu 1 .

Que faire ? [1] -> 1


=====chntpw Modifier les informations utilisateur et les mots de passe ====

| RID -|---------- Nom d'utilisateur ------------| Administrateur ? |- Verrouiller ? --|
| 01f4 | Administrateur                  | ADMIN | dés/verrouiller |
| 03ec | jean                           | ADMIN | dés/verrouiller |
| 01f7 | Compte par défaut                 | | dés/verrouiller |
| 01f5 | Invité                          | | dés/verrouiller |
| 01f8 | WDAGUtilityAccount             | | dis/lock |

Veuillez saisir le numéro d'utilisateur (RID) ou 0 pour quitter :[3e9]

Ensuite, j'ai sélectionné notre compte administrateur, john , en tapant le RID à l'invite. Cela affiche des informations sur l'utilisateur et propose des éléments de menu supplémentaires pour gérer le compte.

Veuillez entrer le numéro d'utilisateur (RID) ou 0 pour quitter :[3e9] 03eb
=================USER EDIT ====================

RID     :1003 [03eb]
Nom d'utilisateur :john
nom complet :
commentaire :
homedir :

00000221 =Utilisateurs (qui compte 4 membres)
00000220 =Administrateurs (qui compte 5 membres)

Bits de compte :0x0214 =
[ ] Désactivé        | [ ] Homedir req. | [ ] Mot de passe non requis. |
[ ] AC de confiance de domaine | [ ] Loi sur les fiducies Wks. | [ ] Srv trust act   |
[X] Pwd n'expire pas | [ ] Verrouillage automatique    | [ ] (inconnu 0x08)  |
[ ] (inconnu 0x10)  | [ ] (inconnu 0x20)  | [ ] (inconnu 0x40)  |

Nombre d'échecs de connexion :0, alors que le nombre maximal d'essais est :0
Nombre total de connexions :47

- - - - Modification de l'utilisateur Menu :
 1 - Effacer le mot de passe utilisateur (vide)
 2 - Déverrouiller et activer le compte utilisateur [probablement verrouillé maintenant]
 3 - Promouvoir l'utilisateur (faire de l'utilisateur un administrateur)
 4 - Ajouter un utilisateur à un groupe
 5 - Supprimer un utilisateur d'un groupe
 q - Quitter la modification de l'utilisateur, revenir à l'utilisateur sélectionner
Sélectionner :[q]> 2

À ce stade, j'ai choisi l'élément de menu 2 , "Déverrouiller et activer le compte utilisateur", qui supprime le mot de passe et me permet de me connecter sans mot de passe. Au fait, il s'agit d'une connexion automatique. J'ai alors quitté le programme. Assurez-vous de démonter /mnt avant de continuer.

Je sais, je sais, mais pourquoi pas ! J'ai déjà contourné la sécurité sur ce lecteur et cet hôte, donc cela n'a pas d'importance. À ce stade, je me suis connecté à l'ancien compte administratif et j'ai créé un nouveau compte pour moi-même avec un mot de passe sécurisé. Je me suis ensuite connecté en tant que moi-même et j'ai supprimé l'ancien compte administrateur afin que personne d'autre ne puisse l'utiliser.

Il existe également des instructions sur Internet pour utiliser le compte administrateur Windows (01f4 dans la liste ci-dessus). J'aurais pu supprimer ou modifier le mot de passe de ce compte s'il n'y avait pas eu de compte administrateur organisationnel en place. Notez également que cette procédure peut être effectuée à partir d'une clé USB en direct s'exécutant sur l'hôte cible.

Réactivation de Windows

J'avais donc maintenant le SSD Windows en cours d'exécution en tant que machine virtuelle sur mon hôte Fedora. Cependant, dans une tournure des événements frustrante, après avoir fonctionné pendant quelques heures, Windows a affiché un message d'avertissement indiquant que je devais "Activer Windows".

Après avoir suivi de nombreuses autres pages Web sans issue, j'ai finalement renoncé à essayer de réactiver en utilisant un code existant car il semblait avoir été détruit d'une manière ou d'une autre. Enfin, lorsque j'ai tenté de suivre l'une des sessions de chat d'assistance virtuelle en ligne, l'application virtuelle "Obtenir de l'aide" a indiqué que mon instance de Windows 10 Pro était déjà activée. Comment cela peut-il être le cas ? Il n'arrêtait pas de vouloir que je l'active, mais quand j'ai essayé, il m'a dit qu'il était déjà activé.

Ou pas

Au moment où j'ai passé plusieurs heures sur trois jours à faire des recherches et des expérimentations, j'ai décidé de revenir au démarrage du SSD d'origine dans Windows et d'y revenir ultérieurement. Mais ensuite, Windows - même lorsqu'il a été démarré à partir du périphérique de stockage d'origine - a demandé à être réactivé.

La recherche sur le site de support Microsoft n'a pas été utile. Après avoir dû m'occuper du même support automatisé qu'auparavant, j'ai appelé le numéro de téléphone fourni pour être informé par un système de réponse automatisé que tout le support pour Windows 10 Pro n'était fourni que par Internet. À ce moment-là, j'avais presque un jour de retard dans la mise en marche et l'installation de l'ordinateur au bureau.

Retour vers le futur

Je l'ai finalement aspiré, j'ai acheté une copie de Windows 10 Famille - pour environ 120 $ - et j'ai créé une machine virtuelle avec un périphérique de stockage virtuel sur lequel l'installer.

J'ai copié un grand nombre de fichiers de documents et de feuilles de calcul dans le répertoire personnel du chef de bureau. J'ai réinstallé le seul programme Windows dont nous avions besoin et j'ai vérifié avec le responsable du bureau qu'il fonctionnait et que toutes les données étaient là.

Réflexions finales

Mon objectif a donc été atteint, littéralement un jour de retard et environ 120 $ de moins, mais en utilisant une approche plus standard. Je suis encore en train de faire quelques ajustements aux autorisations et de restaurer le carnet d'adresses de Thunderbird ; J'ai des sauvegardes CSV à partir desquelles travailler, mais le *.mab les fichiers contiennent très peu d'informations sur le lecteur Windows. J'ai même utilisé Linux trouver commande pour localiser tous ceux sur le périphérique de stockage d'origine.

Je suis descendu dans plusieurs terriers de lapin et j'ai dû m'extraire et recommencer à chaque fois. J'ai rencontré des problèmes qui n'étaient pas directement liés à ce projet, mais qui ont affecté mon travail sur celui-ci. Ces problèmes incluaient des choses intéressantes comme le montage de la partition Windows sur /mnt sur ma machine Linux et recevoir un message indiquant que la partition avait été mal fermée par Windows (oui - sur mon hôte Linux) et qu'elle avait corrigé l'incohérence. Même Windows ne pouvait pas le faire après plusieurs redémarrages via son mode dit de "récupération".

Peut-être avez-vous remarqué des indices dans les données de sortie du chntpw utilitaire. J'ai coupé certains des autres comptes d'utilisateurs qui étaient affichés sur mon hôte pour des raisons de sécurité, mais j'ai vu à partir de ces informations que tous les utilisateurs étaient des administrateurs. Inutile de dire que j'ai changé cela. Je suis toujours surpris par les mauvaises pratiques administratives que je rencontre, mais je suppose que je ne devrais pas l'être.

Au final, j'ai été obligé d'acheter une licence, mais qui était au moins un peu moins chère que l'originale. Une chose que je sais, c'est que la partie Linux a parfaitement fonctionné une fois que j'ai trouvé toutes les informations nécessaires. Le problème concernait l'activation de Windows. Certains d'entre vous ont peut-être réussi à réactiver Windows. Si c'est le cas, j'aimerais quand même savoir comment vous avez fait, alors s'il vous plaît ajoutez votre expérience aux commentaires.

C'est encore une autre raison pour laquelle je n'aime pas Windows et n'utilise Linux que sur mes propres systèmes. C'est aussi l'une des raisons pour lesquelles je convertis tous les ordinateurs de l'organisation à Linux. Il faut juste du temps et convaincre. Il ne nous reste plus qu'un seul programme de comptabilité, et je dois travailler avec la trésorière pour en trouver un qui fonctionne pour elle. Je comprends cela :j'aime mes propres outils et j'ai besoin qu'ils fonctionnent de la manière qui me convient le mieux.


Linux
  1. Installez OpenVPN sur votre PC Linux

  2. Exécutez vos applications Windows préférées sur Linux

  3. Exécutez des applications Linux sur votre Chromebook

  4. Comment installer la calculatrice Microsoft Windows sur Linux

  5. Comment installer 'convert' sur un système Linux ?

Comment utiliser le Bureau à distance sur votre serveur Windows

Comment se connecter en SSH à votre serveur Linux à partir de Windows

Installer Windows 10 sur Linux avec VirtualBox

Comment installer Linux Fedora sur Hyper-v Windows 10 ?

Comment installer Linux Mint sur Hyper-v Windows 10 ?

Bureau à distance Windows vers Linux