Cum rulezi linux sub Windows(WSL)

WSL abreviat de la  Windows Subsystem for Linux, este un pachet software disponibil in sistemul de operare Windows 10 ce facilitează rularea unei mașini virtuale a unei distribuții de Linux. Acesta este disponibil in doua versiuni, Versiunea 1 disponibila pentru majoritatea utilizatorilor, si versiunea 2 disponibilă deocamdată  utilizatorilor înscriși in programul de update beta Windows 10 ( Slow sau Fast Ring).

Cu ce e mai bun față de o mașină virtuală?

WSL vine cu o integrare cu Windows-ul mult mai buna, si oferă o viteza mult mai mare la start-up. Deschidere unui terminal de linux, din Windows, durează la fel de mult ca deschiderea command prompt-ului. In plus partajarea cu partițiile de windows se face automat. Spre exemplu partiția C: va fi sub windows /mnt/c/, D: /mnt/d/ si așa mai departe.

Într-adevăr, la capitolul viteza, mai este de lucrat. Dar WSL2 vine cu o îmbunătățire in acest sens. Totuși, pentru proiecte mici, pentru servere care nu solicita prea multe resurse, este perfect.

Instalare WSL1

 Sunt câțiva pași simpli de făcut (mai multe detalii găsiți aici ):

  1. Deschidem o fereastra Windows Power Shell cu drepturi de administrator (Start Menu  si scriem Windows Power Shell, o sa apară in lista sus, click dreapta pe el, Run as Administrator).
  2. introducem comanda si apasam enter: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  3. Sistemul va da un dialog in care va cere un restart.
  4. După restart, deschideți Microsoft Store(din Start Menu) si căutați o distribuție de linux(recomand Ubuntu) pe care o instalați.
  5. Distribuția va fi disponibila in start menu. Click pe ea, si se va deschide un terminal de linux. La prima rulare, va cere un username si o parola pentru utilizatorul de linux. Ele nu necesita sa corespunda cu cele de pe Windows.
  6. In cazul in care chiar daca au trecut câteva minute, terminalul pare ca s-a oprit, faceți click in terminal si apăsați o tasta, enter spre exemplu.
  7. Ne asiguram ca avem distribuția la zi, apelând comanda: sudo apt update && sudo apt upgrade.

Instalare WSL2

Pentru a putea activa WSL2 este necesar sa aveți versiunea de Windows 10 build number 18917 sau mai recenta, disponibila via programul de înrolare beta (Fast Ring sau Slow Ring). Mai multe detalii si pașii necesari aici

Inițial, daca e sa faceți un server http sau de alta natura, Acesta nu va fi accesibil din exterior(de pe rețeaua locala). Pentru a face acest lucru posibil, se poate folosi următorul script de Power Shell:

$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';

if( $found ){
  $remoteport = $matches[0];
} else{
  echo "The Script Exited, the ip address of WSL 2 cannot be found";
  exit;
}

#[Ports]

#All the ports you want to forward separated by coma
$ports=@(80,443,10000,3000,5000);


#[Static ip]
#You can change the addr to your ip config to listen to a specific address
$addr='0.0.0.0';
$ports_a = $ports -join ",";


#Remove Firewall Exception Rules
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";

#adding Exception Rules for inbound and outbound Rules
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";

for( $i = 0; $i -lt $ports.length; $i++ ){
  $port = $ports[$i];
  iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr";
  iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport";
}

se va edita lista de porturi, cu cele dorite de voi: $ports=@(80,443,10000,3000,5000);. Script-ul îl veți salva într-un fișier cu extensia .ps1. Se va rula de fiecare data la pornirea calculatorului, dintr-o fereastra power shell cu drepturi de administrator, la prima deschidere a unei ferestre de terminal linux. In caz de eroare, rulați întâi: set-executionpolicy remotesigned.

Lasă un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *