1 votes

Comment cloner Ubuntu WSL sur une machine virtuelle propre ?

J'ai fait mon développement PHP sur Ubuntu WSL mais au début du mois, j'ai acheté un mac et je veux continuer à développer sur exactement la même configuration. Comment puis-je cloner le WSL Ubuntu (avec des configurations telles que PHP, nginx, etc.) sur une machine virtuelle fonctionnant sous OSX ?

2voto

NotTheDr01ds Points 5135

Il n'y a probablement pas grand façon de procéder, mais vous pouvez toujours essayer pour voir ce qui se passe.

Personnellement, si je devais passer à un Mac, je pense que j'adopterais macOS et HomeBrew pour le développement PHP. Je pense que cela vous donnera une expérience plus proche de celle que vous avez avec WSL/Ubuntu sous Windows que celle que vous aurez avec une VM Ubuntu.

Bien sûr, s'il y a un développement pour lequel vous avez spécifiquement besoin d'un noyau Linux ou d'outils qui ne sont pas disponibles pour macOS, alors cela change les choses.

Quant à l'obtention tout hors de WSL et dans une VM Ubuntu, je ne sais pas si quelqu'un est déjà allé dans cette direction. J'ai fourni des réponses provenant d'une machine virtuelle ou physique à WSL mais jamais l'inverse (jusqu'à présent).

Il y a un Guide d'Arch Linux que j'ai trouvé sur Google en cherchant de l'aide ici. Il n'a pas grand-chose à voir avec votre question, à l'exception de la première ligne :

Le passage à un environnement virtuel demande un peu plus d'efforts.

Sous WSL, pour commencer, vous pouvez créer un tarball du rootfs de n'importe quelle instance de WSL en utilisant :

wsl --export <distroname> <backupname>.tar

Cela préservera tous les fichiers, les permissions, les liens, et même les capacités de Linux (bien que je ne pense pas que la distribution Ubuntu les utilise en standard, du moins).

Obtenir ça sur une VM de manière sûre, voilà le défi. Vous devrez probablement commencer par installer Ubuntu 20.04 dans cette VM pour obtenir le support des pilotes pour les périphériques virtuels. Bien entendu, ce n'est pas quelque chose qui sera présent dans l'archive WSL.

Donc vous devez partir /lib en place, ou du moins les pilotes qui sont là, mais en même temps, vous voulez fusionner la /lib à partir de votre sauvegarde WSL.

En théorie, si vous avez les deux systèmes au même niveau (via un système simultané de sudo apt update && sudo apt upgrade -y ) alors vous pourriez ( en théorie pour me répéter intentionnellement), il suffit d'extraire le contenu du fichier tar sur les répertoires existants.

Je viens de regarder un wsl --export d tar, et il fait un assez bon travail en laissant de côté les répertoires "système" qui ne devraient pas être restaurés (par ex. /proc/ , /boot , /sys etc.). Toutefois, il existe deux exceptions : vous devriez probablement exclure manuellement les éléments suivants /mnt et /media de l'extrait. Il n'y a certainement aucune bonne raison d'écraser les points de montage de la VM Ubuntu avec ceux de l'instance WSL.

Donc si tu veux vraiment essayer, je le ferais :

  • wsl --export votre WSL existant

  • Transférer le tar sur le Mac.

  • Installez votre VM Ubuntu, de préférence en utilisant Ubuntu Minimal

  • Sauvegardez votre VM Ubuntu (parce que cela peut ne pas fonctionner).

  • Transférer le tar à la racine de la VM

  • Redémarrer la VM en mode secours

  • Extraire le tar sur les répertoires existants. Utilisez tar --xattrs-include="security.capability" --exclude="./mnt" --exclude="./media" -xvf ... . Vous pouvez également avoir besoin de spécifier le répertoire cible, mais je ne peux pas le tester pour le moment. Notez que le --xattrs n'est peut-être pas nécessaire, mais c'est plus sûr au cas où vous auriez des attributs étendus. Voir cette réponse pour le --exclude car je ne suis pas certain à 100% de cette syntaxe.

  • Redémarrer la VM

D'autres choses qui pourraient causer des problèmes ici :

  • WSL ne démarre pas Systemd, mais votre VM le fera par défaut. On ne sait pas exactement quelle sera la robustesse de l'installation de Systemd que vous obtiendrez à partir de l'image WSL.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X