GNU/Linux >> Tutoriels Linux >  >> Linux

L'année de Linux sur le bureau (Windows) - Trucs et astuces WSL

J'ai fait une tonne de travail sur bash/zsh/fish ces derniers temps - Linux. Au cas où vous ne le sauriez pas, Windows 10 peut maintenant exécuter Linux. Bien sûr, vous pouvez exécuter Linux dans une machine virtuelle, mais c'est lourd et vous avez besoin d'une machine décente. Vous pouvez exécuter un shell sous Docker, mais vous aurez besoin d'Hyper-V et de Windows 10 Pro. Vous pouvez même aller sur https://shell.azure.com et obtenir un terminal n'importe où - je le fais sur mon Chromebook.

Mais la plupart du temps, j'exécute Linux en mode natif sur Windows 10. Vous pouvez y aller. Ouvrez simplement PowerShell une fois, en tant qu'administrateur, exécutez cette commande et redémarrez :

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Ensuite, rendez-vous sur le Windows Store et téléchargez Ubuntu, ou Debian, ou Kali, ou autre.

  • Ubuntu
  • OuvrirSUSE
  • SLES
  • Kali Linux
  • Debian GNU/Linux

Ce qui se passe, c'est que vous exécutez Linux en mode utilisateur sans le noyau Linux. Les appels système (appels système) utilisés par ces Linux non modifiés sont transmis à Windows. Forker un processus Linux ? C'est un pico-processus dans Windows et apparaît dans le gestionnaire de tâches.

Vous voulez éditer des fichiers Windows et les éditer à la fois sous Windows et sous Linux ? Conservez vos fichiers/code dans /mnt/c/ et vous pourrez les modifier avec d'autres systèmes d'exploitation. N'utilisez pas Windows pour "accéder au système de fichiers Linux". Il y a des dragons.

Une fois que vous avez installé Linux (ou plusieurs, comme moi), vous pouvez les gérer et les utiliser de plusieurs façons.

Pensez-vous que c'est stupide ou insensé? Arrêtez de lire et continuez à utiliser Linux et je vous souhaite tout le meilleur. Plus de pouvoir pour vous.

Vouloir en savoir davantage? Vous voulez trouver de nouvelles façons créatives d'obtenir le MEILLEUR des outils de ligne de commande Windows UI et Linux ? Continuez à lire, mes amis.

wslconfig

WSL signifie "Sous-système Windows pour Linux". À partir de Windows 10 (version 1709 - c'est-à-dire 2017-09, la mise à jour Fall Creators. Exécutez "Winver" pour voir ce que vous exécutez), vous avez une commande appelée "wslconfig". Essaye le. Il répertorie les distributions que vous avez et contrôle celle qui démarre lorsque vous tapez "bash".

Vérifiez ci-dessous que ma valeur par défaut pour "bash" est Ubuntu 16.04, mais je peux exécuter 18.04 manuellement si je le souhaite. Voyez comment je passe de cmd à bash et que je quitte, puis que je reviens de manière transparente. Encore une fois, pas de VM.

C:\>wslconfig /l /all
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-18.04
openSUSE-42
Debian
kali-rolling

C:\>wslconfig /l
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-18.04
openSUSE-42
Debian
kali-rolling

C:\>bash
128 → $ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
128 → $ exit
logout

C:\>ubuntu1804
scott@SONOFHEXPOWER:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04 LTS
Release: 18.04
Codename: bionic
scott@SONOFHEXPOWER:~$

Vous pouvez également rediriger des éléments vers des commandes Linux en redirigeant vers wsl ou bash comme ceci :

C:\Users\scott\Desktop>dir | wsl grep "poop"
05/18/2018 04:23 PM <DIR> poop

Si vous êtes sous Windows, en exécutant cmd.exe ou powershell.exe, il est préférable de passer à Linux en exécutant wsl ou bash car il conserve le répertoire actuel.

C:\Users\scott\Desktop>bash
129 → $ pwd
/mnt/c/Users/scott/Desktop
129 → $ exit
logout

Cool! Vous vous demandez quel est ce numéro avant mon invite ? C'est ma glycémie. Mais c'est un autre article de blog.

wsl.conf

Il y a un fichier dans /etc/wsl.conf qui vous permet de contrôler des choses comme si votre Linux de choix monte automatiquement vos lecteurs Windows. Vous pouvez également contrôler des choses plus avancées comme si Windows génère automatiquement un fichier hosts ou traite /etc/fstab. C'est à vous de décider !

Distros

Il y a une demi-douzaine de distributions disponibles et d'autres à venir, mais VOUS pouvez également créer/packager votre propre distribution Linux pour WSL avec un conditionneur/lanceur de distribution open source sur GitHub.

Docker et WSL

Tout le monde veut savoir si vous pouvez exécuter Docker "nativement" sur WSL. Non, c'est un peu trop "Inception", et comme mentionné, le Linux Kernel n'est pas présent. Les binaires elf non modifiés fonctionnent bien mais Windows fait le travail. MAIS !

Vous pouvez exécuter Docker pour Windows et cliquer sur "Expose daemon on localhost:2375" et puisque Windows et WSL/Linux partagent le même espace de port, vous POUVEZ exécuter le client Docker très facilement sur WSL.

Après avoir exécuté Docker pour Windows en arrière-plan, installez-le dans Ubuntu en suivant les instructions habituelles. Ensuite, mettez à jour votre .bashrc pour forcer votre client docker local à parler à Docker pour Windows :

echo "export DOCKER_HOST=tcp://0.0.0.0:2375" >> ~/.bashrc && source ~/.bashrc

Il y a beaucoup de tutoriels "Docker sur WSL" beaucoup plus longs et plus détaillés, donc si vous souhaitez plus de détails techniques, je vous encourage à les consulter ! Si vous utilisez beaucoup de montages de volume, j'ai trouvé la description de Nick très utile.

Maintenant, lorsque j'exécute des "images Docker" ou quoi que ce soit de WSL, je parle à Docker pour Windows. Fonctionne très bien, exactement comme prévu et vous partagez des images et des conteneurs dans les deux mondes.

128 → $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
podcast test 1bd29d0223da 9 days ago 2.07GB
podcast latest e9dd366f0375 9 days ago 271MB
microsoft/dotnet-samples aspnetapp 80a65a6b6f95 11 days ago 258MB
microsoft/dotnet-samples dotnetapp b3d7f438bad3 2 weeks ago 180MB
microsoft/dotnet 2.1-sdk 1f63052e44c2 2 weeks ago 1.72GB
microsoft/dotnet 2.1-aspnetcore-runtime 083ca6a642ea 2 weeks ago 255MB
microsoft/dotnet 2.1-runtime 6d25f57ea9d6 2 weeks ago 180MB
microsoft/powershell latest 708fb186511e 2 weeks ago 318MB
microsoft/azure-cli latest 92bbcaff2f87 3 weeks ago 423MB
debian jessie 4eb8376dc2a3 4 weeks ago 127MB
microsoft/dotnet-samples latest 4070d1d1e7bb 5 weeks ago 219MB
docker4w/nsenter-dockerd latest cae870735e91 7 months ago 187kB
glennc/fancypants latest e1c29c74e891 20 months ago 291MB

Fabuleux.

Codage et édition de fichiers

Je dois à nouveau toucher ce point. Ne modifiez pas les fichiers Linux à l'aide des applications et des outils Windows. Cependant, vous POUVEZ partager des fichiers et les modifier avec Windows et Linux en conservant le code sur le système de fichiers Windows.

Par exemple, mon travail est à c:\github donc c'est aussi à /mnt/c/github. J'utilise le code Visual Studio et j'y édite mon code (ou vim, depuis WSL) et j'exécute le code depuis Linux. Je peux même exécuter bash/wsl depuis Visual Studio Code en utilisant son terminal intégré. Appuyez simplement sur "Ctrl + P" dans Visual Studio Code et tapez "Sélectionner le shell par défaut".

Sur l'édition Windows 10 Insiders, Windows dispose désormais d'une interface utilisateur appelée "Ensembles" qui vous donnera des invites de commande à onglets. Ici, j'installe Ruby on Rails dans Ubuntu à côté de deux autres invites - Cmd et PowerShell. Tout cela est Windows par défaut - pas de modules complémentaires ou de programmes supplémentaires pour cette expérience.

J'utilise Rails comme exemple ici car la prise en charge de Ruby/Rails sous Windows avec des extensions natives a toujours été un défi. Il y a eu un groupe de personnes essayant héroïquement (et sans merci) de faire fonctionner correctement Ruby on Rails sous Windows, mais aujourd'hui ce n'est plus nécessaire. Il fonctionne très bien sous Linux sous Windows.

Je peux également exécuter des applications ou des outils Windows à partir de Linux tant que j'utilise leur nom complet avec une extension (comme code.exe) ou que je définis un alias.

Ici, j'ai créé un "code" d'alias qui exécute le code dans le répertoire actuel, puis j'ai VS Code en cours d'exécution pour modifier ma nouvelle application Rails.

Je peux même mélanger et assortir Windows et Linux lors de la tuyauterie. Cela rendra probablement les utilisateurs de Windows heureux et offensera profondément les utilisateurs de Linux. Ou, si vous êtes non confessionnel comme moi, vous allez adorer !

$ ipconfig.exe | grep IPv4 | cut -d: -f2
172.21.240.1
10.159.21.24

Encore un rappel :Modification des fichiers situés hors de /mnt/<x> avec une application Windows dans WSL n'est pas pris en charge. Mais éditez des trucs sur /mnt/x avec n'importe quoi et c'est cool.

Partage Partage Partage

Si vous avez Windows 10 Build 17064 ou une version plus récente (exécutez ver depuis Windows ou "cmd.exe /c /ver" depuis Linux) et que vous pouvez même partager une variable d'environnement !

131 → $ cmd.exe /c ver

Microsoft Windows [Version 10.0.17672.1000]

Il existe une variable d'environnement spéciale appelée "WSLENV" qui est une liste délimitée par deux-points de variables d'environnement qui doivent être incluses lors du lancement de processus WSL à partir de processus Win32 ou Win32 à partir de WSL. Fondamentalement, vous lui donnez une liste de variables que vous souhaitez parcourir/partager. Cela facilitera des choses comme les versions doubles multiplateformes. Vous pouvez même ajouter un drapeau /p et il traduira automatiquement les chemins entre le style c:\windows et le style /mnt/c/windows.

Consultez l'exemple sur le blog WSL sur la façon de partager un GOPATH et d'utiliser VSCode dans Windows et d'exécuter Go aux deux endroits.

Vous pouvez également utiliser une ligne de commande intégrée spéciale appelée "wslpath" pour traduire les noms de chemin entre Windows et WSL. Ceci est utile si vous partagez des scripts bash, effectuez des scripts multiplateformes (j'ai des scripts PowerShell Core qui s'exécutent aux deux endroits) ou si vous avez simplement besoin de changer de type de chemin par programme.

131 → $ wslpath "d:\github\hanselminutes-core"
/mnt/d/github/hanselminutes-core
131 → $ wslpath "c:\Users\scott\Desktop"
/mnt/c/Users/scott/Desktop

Il n'y a pas encore de page de manuel pour wslpath, mais copié à partir de ce problème GitHub, voici l'essentiel :

wslpath usage:
-a force result to absolute path format
-u translate from a Windows path to a WSL path (default)
-w translate from a WSL path to a Windows path
-m translate from a WSL path to a Windows path, with ‘/’ instead of ‘\\’

Une dernière note, une fois que vous avez installé une distribution Linux à partir du Windows Store, c'est à vous de la maintenir à jour. Le Windows Store n'exécutera pas "apt upgrade" ou ne touchera jamais vos Linux une fois qu'ils auront été installés. De plus, vous pouvez installer Ubuntu 1604 et 1804 côte à côte et cela ne fera aucun mal.

Liens associés

  • Configuration d'un environnement de développement brillant sous Linux sur Windows 10
  • Badass Terminal :mise à jour des fichiers de points WSL, macOS et Ubuntu !!! par Jessica Deen

Utilisez-vous WSL ?

Parrain : Découvrez JetBrains Rider :un IDE .NET multiplateforme. Modifiez, refactorisez, testez et déboguez des applications ASP.NET, .NET Framework, .NET Core, Xamarin ou Unity. Apprenez-en plus et téléchargez une version d'essai de 30 jours !


Linux
  1. Trucs et astuces pour utiliser CUPS pour imprimer avec Linux

  2. Comment accéder aux systèmes de fichiers Linux dans Windows 10 et WSL 2

  3. Trucs et astuces pour les variables d'environnement Linux

  4. Trucs et astuces Linux .htaccess

  5. Kali Linux dans l'App Store de Windows

Un gars Windows dans un monde Linux :YaST et le bureau

Docker Desktop pour WSL 2 intègre encore plus Windows 10 et Linux

Des trucs et astuces cool WSL (Windows Subsystem for Linux) que vous (ou moi) ne savions pas étaient possibles

Développement Web et techniques avancées avec Linux sur Windows (WSL)

Ubuntu maintenant dans le Windows Store :mises à jour de Linux sur Windows 10 et conseils importants

Les 30 meilleurs logiciels de comptabilité et de finance pour Linux Desktop