# WSL
### WSL 2 (installation)
Nécessite une insider build (31/03/2020)
Aller à Fonctionnalités de Windows:
- installer Plateforme d'ordinateur virtuel (Virtual Machine Platform)
- installer Sous-système Windows pour Linux (Windows Subsystem for Linux)
Pour Parallels Desktop, aller dans Configuration -> Matériel -> CPU et mémoire -> Paramètres avancés, et cocher Activer la virtualisation imbriquée.
Aller sur le Microsoft Store et installer une distrib Linux.
```bash
$ cat /etc/debian_version
10.3
```
Dans l'invite de commande:
```
wsl --list --verbose
NAME STATE debian_version
* Debian Running 1
```
```dos
wsl --list --running
Distributions du sous-système Windows pour Linux :
Debian (par défaut)
```
Les distros sont visibles en tapant `\\wsl$` dans la barre de l'explorer.
Même en quittant la distro (`$ exit`), elle y reste dispo.
#### Quitter une distro:
> ```
> wsl --terminate Debian
> wsl -t Debian
>
> C:\Users\enzo2>wsl --list --running
> Il n'y a aucune distribution en cours d'exécution.
> ```
>
#### Pour passer à wsl 2:
```
wsl --set-version Debian 2
```
#### Pour démarrer la distro:
```bash
wsl --distribution Debian
wsl --list --verbose
NAME STATE VERSION
* Debian Running 2
```
Différences entre wsl 1 et 2:
https://docs.microsoft.com/en-us/windows/wsl/wsl2-ux-changes
#### Backup wsl:
```bash
wsl --export Debian debian.tar
```
Ré-import wsl:
```bash
wsl --import Debian C:\Users\bruno\debian C:\Users\bruno\debian.tar
```
Pour supprimer Debian
Dans l'invite de commande:
```
C:\Users\enzo2>debian clean
C:\Users\enzo2>debian --help
```
#### Réglages WSL:
https://docs.microsoft.com/en-us/windows/wsl/wsl-config#set-wsl-launch-settings
#### Installer une GUI:
Installer xfce4:
```bash
sudo apt-get -y install xfce4
```
Installer xRDP server
```bash
sudo apt-get -y install xrdp
echo xfce4-session > ~/.xsession
sudo service xrdp restart
sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
# changer le port
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
# changer les réglages de qualité
sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini
# redémarrer le serveur
sudo service xrdp restart
```
Trouver l'adresse IP de la distrib WSL
```bash
ifconfig | grep inet (ip addr | grep inet)
Les IP de ipconfig.exe ne sont pas les bonnes.
```
Ouvrir une session xRDP
> mstsc.exe
> puis fournir l'adresse IP
```bash
mstsc.exe 127.0.0.1:3390
```
Ajouter un alias au .zshrc
```bash
# cd /mnt/c/Users/enzo2/OneDrive/Documents/wsl
alias xfce='mstsc.exe "C:\Users/enzo2/OneDrive/Documents/wsl/debian-xfce-pass.rdp"'
```
https://dev.to/darksmile92/linux-on-windows-wsl-with-desktop-environment-via-rdp-522g
https://korben.info/linux-wsl-gui-interface-graphique-windows-10.html
#### Navigation dans les dossiers/fichiers:
Dans WSL:
Chemin du bureau Windows:
`/mnt/C/Users/enzo2/OneDrive/Bureau/ => C:\Users\enzo2\OneDrive\Desktop`
$HOME
`/home/enzo2`
wr** evaluates to the absolute path to your Windows user's root.
```
export wr=~/../../mnt/c/Users//
```
Cela permet d'aller rapidement au root de Windows.
```bash
alias cdwr='cd "$wr"'
```
Dans l'explorer, aller à wsl :
taper `\\wsl$` dans la barre de l'explorer
Depuis wsl, ouvrir une fenêtre du répertoire dans l'explorer :
```bash
~/.ssh $ explorer.exe .
```
Copier dans le presse-papier:
```bash
cat ~/.ssh/id_rsa.pub | clip.exe
```
### VScode et wsl:
Afficher la palette de commande (Ctrl+Maj+P) et entrer Remote-WSL: New Window
Depuis le terminal, taper `code .` ou `code-insiders .`
Lancer des commandes Linux depuis l'Invite de commandes ou Powershell:
```
C:\Users\enzo2>wsl ls -la | findstr "Documents"
drwxrwxrwx 1 enzo2 enzo2 512 Mar 31 08:51 Documents
lrwxrwxrwx 1 enzo2 enzo2 28 Mar 28 17:59 Mes documents -> /mnt/c/Users/enzo2/Documents
```
```
C:\Users\enzo2>dir | wsl "Documents"
```
```
C:\Users\enzo2>wsl ls -la "/mnt/c/Program Files"
```
###Changer les couleurs pour **ls**:
```
LS_COLORS="ow=01;36;40" && export LS_COLORS
```
cd utilise les couleurs ls.
```bash
zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}"
autoload -Uz compinit
compinit
```