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 ?
Réponse
Trop de publicités?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.