Installation du virtualiseur Linux WSL dans Windows
RaccourciT'es du genre à pas te poser trop de questions et tu veux que ça aille vite ?
-> saute la première partie du tuto jusqu'à
Installation de WSL. #LifeIsShort
Préambule
C'est quoi ? Ça sert à quoi ?(Réf. :
https://docs.microsoft.com/fr-fr/windows/wsl/about)
WSL (
Windows Subsystem for Linux) permet d'avoir un environnement Linux directement disponible dans Windows.
On le lance depuis le menu de démarrage, comme n'importe quel autre logiciel.
Cela permet alors d'être en mesure de faire tourner des programmes destinés à Linux.

"
Mais c'est rien de plus que Virtualbox alors ?"
En fait, si : au lieu de virtualiser "au-dessus" de Windows, ça virtualise "par dessous" (bon, c'est plus compliqué en vrai, mais c'est l'idée).
Du coup, ça ne souffre pas des latences et des ralentissements qu'on rencontre parfois dans Virtualbox.
Si vous en voulez plus, cherchez de la doc sur "Hyperviseur de type 1". Voir :
https://www.it-connect.fr/les-types-dhyperviseurs/Ça peut également faire un tas d'autres trucs, comme faire tourner des programmes pour l'architecture ARM, des environnements graphiques, voire des systèmes d'exploitation complets.
Ici, on va s'en tenir "au plus simple" et juste faire tourner un client Boinc en mode texte, qu'on pilotera depuis une interface graphique sur Windows.

Pour Boinc, cela permet de calculer :
- sur des projets qui n'ont pas d'applications natives Windows, sans installer un "vrai" Linux ;
- de faire tourner des applications plus performantes sur Linux que sur Windows.
(ex : Universe@home, voir
https://universeathome.pl/universe/forum_thread.php?id=550 et
https://universeathome.pl/universe/forum_thread.php?id=551).
"Oulà ! Ça sent le truc compliqué..." 
"
On dirait que c'est encore un de ces trucs de pingouins..."

,

"
Il va falloir taper 250 lignes de code et redémarrer l'ordi 24 fois pour que ça marche pas à la fin".
Hé ben... Non ! Les gus de Microsoft ont préparé le terrain pour les humains normaux

.

Si vous suivez ce tuto, il y en a pour quelques minutes.
Vous devrez :
- entrer des commandes dans un terminal (seulement 3 si vous prenez les raccourcis !) ;
- redémarrer votre ordinateur UNE fois ;
- installer et paramétrer un logiciel gratuit dans Windows.
Prérequis
Vérifiez votre version de Windows"
Vous devez exécuter Windows 10 versions 2004 et ultérieures (build >=19041) ou Windows 11."
Comment vérifier :
https://support.microsoft.com/fr-fr/windows/quelle-version-du-syst%C3%A8me-d-exploitation-windows-mon-ordinateur-ex%C3%A9cute-t-il-628bec99-476a-2c13-5296-9dd081cdd808Vérifiez les capacités de votre systèmeLe processeur de votre ordinateur doit est capable de virtualisation et cette option doit être activée dans le Bios.
Si votre CPU a moins de 10 ans, ça doit être bon et votre Bios est (probablement) déjà bien paramétré.
AVANT d'aller fouiller dans le Bios, vérifiez que tout n'est pas déjà en place :
- lancez le "Gestionnaire de tâches" en appuyant simultanément sur [Ctrl]+[Maj]+[Esc] ;
- cliquez sur l'onglet "Performance", puis, à gauche, le panneau "Processeur".

Si l'indication "Virtualisation : activé" apparaît dans la fenêtre, c'est tout bon !
Sinon, je ne peux pas vous aider spécifiquement :
- chaque ordinateur a sa manière d'accéder au Bios et chaque Bios ou presque a un nom différent pour les capacités de virtualisation ;
- ce qu'on cherche, c'est l'option "Intel-VT" ou "AMD-V", qu'on doit régler sur "activé" (ou "enabled", hein). Ça se planque généralement dans les "options avancées du processeur".
Installation de WSL
(Réf. :
https://docs.microsoft.com/fr-fr/windows/wsl/install)
Lancez, depuis le menu Démarrer, le programme "Windows Powershell" en mode administrateur.

(Une fenêtre de lignes de commandes apparaît)
Bon à savoir : les commandes d'un terminal doivent être validées par un appui sur la touche [Entrée].
Entrez la commande suivante :
wsl --install

C'est tout ! Ça installe un système de base Ubuntu dans Windows.
(On peut installer d'autres versions de Linux, mais celle par défaut est juste parfaite pour ce qu'on va en faire.)
Sur certains PCs, l'installation ne s'effectue pas et on a droit à un message en anglais pas content
D'après ce doc (
https://www.thewindowsclub.com/wslregisterdistribution-failed-with-error-0xc03a001a-2),
c'est dû au fait que le répertoire dans lequel le disque système virtuel est créé est soit crypté, soit compressé.
Manifestement, cela peut arriver même si vous n'avez pas demandé à compresser ou à crypter le disque :
le coupable, c'est "Windows Update", qui décide d'activer l'une ou l'autre option pour certains dossiers du système.
La solution :
1. Allez dans le répertoire
%LOCALAPPDATA%\Packages\ (copiez-collez ça dans la barre de navigation de l'explorateur de fichiers).
2. Faites un clic droit sur le dossier
CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc et sélectionnez "propriétés".
3. Dans l'onglet "Général", cliquez sur le bouton "Avancé".
4. Décochez les cases "Compresser le contenu" et "Chiffrer le contenu".
5. Cliquez sur "OK".
Si on vous demande si ça doit appliquer les modifications sur le dossier et les sous-dossiers ou juste ce dossier, choisissez "juste ce dossier".
Le changement devrait prendre un peu de temps, selon le poids des fichiers du dossier.

Entrez de nouveau :
wsl --install
...Logiquement, cette fois, ça passe

Maintenant, on va dire à ce système WSL qu'il ne doit tourner qu'en version "2", qui est plus pêchue que la "1", utilisée par défaut.
wsl --set-default-version 2
Note : il semblerait que ce soit inutile sur Windows 11, qui utiliserait la version "2" par défaut.

... Important :
on redémarre l'ordi !(Moi aussi, des fois, je me dis "
oh, ça va marcher quand même, pas envie de tout relancer"
Là,
ça ne marchera pas si vous ne redémarrez pas. Vraiment. Si. Allez !)
Paramétrage d'Ubuntu
Lancez "Ubuntu" depuis le menu Démarrer.

Une fenêtre noire de terminal apparaît.
La seule chose qui vous est demandée, c'est de créer un utilisateur :
- indiquez un nom (c'est sensible à la casse : "toto" n'est pas pareil que "Toto") ;
- indiquez un mot de passe (deux fois).
Vous pouvez utiliser n'importe quel nom/mot de passe, vous n'avez pas à "dupliquer" ceux que vous utilisez pour Windows.
Vous vous retrouvez devant une invite de commandes. Voilà. C'est installé. Bienvenue dans Linux !

Installation du client Boinc dans Ubuntu

Pour ceux qui ne connaissent pas la ligne de commandes Linux : oui, c'est un peu austère. Mais c'est efficace, vous allez voir

- On valide une commande en appuyant sur la touche [Entrée] ;
- Les commandes qui commencent par "sudo" demandent le mot de passe (celui d'Ubuntu) pour confirmation ;
- Certaines commandes font défiler un tas de lignes. La plupart du temps, tout se passe bien, vous n'avez pas à tout lire

Tout au long de ce tuto, vous pouvez copier-coller les commandes indiquées ici dans la fenêtre d'Ubuntu en utilisant le menu de la fenêtre, accessible depuis l'icône orange, dans la barre de titre)

RaccourciSi vous ne voulez pas d'explication détaillée des commandes et de leurs actions,
entrez la commande suivante dans le terminal Ubuntu et "sautez" jusqu'à
Installation du gestionnaire Boinctasks dans Windows.
sudo apt update && sudo apt upgrade -y && sudo apt install boinc-client -y && sudo /etc/init.d/boinc-client stop && sudo sed -i.bak "s/BOINC_OPTS=\"\"/BOINC_OPTS=\"--allow_remote_gui_rpc --gui_rpc_port 31414\"/" /etc/default/boinc-client && sudo /etc/init.d/boinc-client start
On vérifie qu'Ubuntu est à jour(Vous êtes là parce que vous n'avez pas entré la commande précédente permettant de sauter une partie du tuto.
Si vous l'avez entrée, tout ce que vous voyez est déjà fait... Ne rentrez pas ces commandes à nouveau)
Allez. On y va. Confiance. Tapez ces lignes dans la fenêtre noire :
(On télécharge la liste des mises à jour disponibles)
sudo apt-get update
(On demande l'installation des mises à jour)
sudo apt-get upgrade
S'il y a des mises à jour, il faut valider leur téléchargement et installation

-> appuyez sur "o" (ou "y" si votre système est en anglais, ou ... bref)
Installation du client Boincsudo apt-get install boinc-client
Je vous sens à l'aise maintenant. Vous voyez ? C'est pas si compliqué Linux !
Paramétrage du client BoincLà, vous vous dites :
"
Pas de souci, maintenant je gère. Je sais paramétrer Boinc, ajouter des projets... Je le fais tout le temps sur Windows"
Bien essayé. Belle confiance. Fier de vous.
Sauf que : non

:
- vous n'avez pas de gestionnaire graphique installé dans Ubuntu ;
- le gestionnaire de Windows ne "voit" pas le client Boinc d'Ubuntu.
Pas grave : on va bricoler un peu pour que le client Boinc d'Ubuntu soit piloté depuis Windows !

Arrêt du client Boinc Ubuntu.
(Normalement, il n'est pas lancé, mais bon... Autant être sûr)
sudo /etc/init.d/boinc-client stop
Édition du fichier de configuration du client Boinc.
sudo nano /etc/default/boinc-client

Vous arrivez sur un éditeur en mode texte. Bienvenue en 1985.
On y déplace le curseur avec les "touches curseur" (les "flèches"). Respirez. Ça va le faire.
Allez sur la ligne 26 (26 fois "flèche du bas").
Elle est en blanc au milieu de plein de lignes cyan et doit commencer par :
BOINC_OPTS=""

Modifiez-la pour qu'elle soit comme ça :
BOINC_OPTS="--allow_remote_gui_rpc --gui_rpc_port 31414"

Vérifiez bien la syntaxe. On y est ? Alors on enregistre les modifs et on quitte l'éditeur :
-> appuyez sur [Ctrl] et "x" en même temps, puis sur "o" (ou "y" si vous êtes en anglais, ou...).
Vous voilà revenu à la ligne de commandes Linux (ouf !)
Lancement du client Boinc dans Linuxsudo /etc/init.d/boinc-client start
Maintenant, Boinc tourne, mais il ne peut rien faire.
Normal : on ne lui a pas indiqué sur quel(s) projet(s) bosser...
On va pouvoir faire ça dans Windows

On en a fini avec la fenêtre Ubuntu.
Vous pouvez fermer la fenêtre, la machine virtuelle continuera de tourner en arrière plan.
Installation du gestionnaire Boinctasks dans Windows
Plutôt que d'utiliser le gestionnaire Boinc habituel, on va installer un gestionnaire un peu plus avancé qui s'appelle Boinctasks.
Il permet, dans la même fenêtre, de piloter une quasi infinité de clients Boinc, qu'ils soient sur la machine ou sur le réseau local, ou même sur une machine distante.
Le site :
https://efmer.com/boinctasks/Téléchargement :
https://efmer.eu/download/boinc/boinc_tasks/unified/setup_32_64_boinc_tasks_1_7_8.exe (5.1 MB)
Vous pouvez préférer la version beta, qui règle quelques bugs mineurs :
https://efmer.com/download-boinctasks-betaTéléchargez, installez, lancez !
Piloter les deux clients Boinc depuis Windows avec BoinctasksCliquez sur l'onglet/bouton "Ordinateurs"
Dans le menu du haut :
Ordinateur ->
Ajouter ordinateur (une nouvelle ligne de configuration est créée dans la fenêtre)

Pour changer les valeurs de la ligne, il faut double-cliquer sur la case correspondante.
Vous pouvez mettre n'importe quel nom pour l'ordinateur... C'est pas mal de copier le nom porté par la machine sur votre réseau, histoire de vous y retrouver plus tard, quand vous en gérerez 150

Pour le client Boinc de Windows :
- Ordinateur : monordi_windows
- Adresse IP : localhost
- Port : 31416
- Mot de passe : (celui de votre Boinc habituel. Si vous n'y avez pas touché, il est probablement vide)
Pour le client Boinc virtuel (ajoutez un nouvel ordinateur) :
- Ordinateur : monordi_WSL_Ubuntu
- Adresse IP : localhost2
- Port : 31414
- Mot de passe : (vide)
Vérifiez que les petites cases à cocher devant chaque ligne sont... cochées.
Logiquement, Boinctasks va figer ~30 secondes et... Se réveiller en étant capable de piloter indépendamment les deux clients Boinc
Ajouter un projet dans BoinctasksDans le menu du haut :
Projets ->
Ajouter un nouveau projet
Ensuite :
1. choisissez un ordinateur sur lequel vous voulez ajouter un projet ;
2. choisissez le projet que vous voulez ajouter (s'il n'est pas dans la liste, on peut taper son adresse à la main dans la case) ;
3. entrez le mail de votre compte sur le projet ;
4. entrez le mot de passe du compte ;
5. validez (après quelques secondes, un message apparaît pour dire que le projet a été ajouté : vous pouvez fermer la fenêtre, ou ajouter un autre projet).

Boinctasks est un logiciel qui a l'air compliqué, mais qui est en fait assez intuitif.
Je vous laisse le découvrir. C'est touffu, mais bien présenté (et il y a plein de gadgets assez cools pour s'amuser à faire de la microgestion ou avoir une palanquée de stats graphiques, etc).
On a fini !

Il faut garder à l'esprit que :

La machine virtuelle ne se lancera pas automatiquement au démarrage de Windows.

On peut la mettre dans la liste des programmes qui démarrent tout seuls...

Mais vu les ressources que bouffe un Boinc à plein régime, mieux vaut choisir de lancer ou non. Enfin... C'est vous qui voyez


Quand vous relancerez Ubuntu (automatiquement ou depuis le menu Démarrer), il ne lancera pas son client Boinc.
EDIT 202-09-22 : c'estr maintenant possible :
https://www.phoronix.com/news/Microsoft-WSL-systemd 
En attendant, vous devrez entrer cette commande dans Ubuntu à chaque lancement :
sudo /etc/init.d/boinc-client start
Après, vous pourrez lancer (ou non) Boinctasks pour surveiller / bidouiller les tâches des projets.
Partage des ressources entre Windows et Ubuntu
WSL, c'est pas magique : si votre processeur possède 4 cœurs, vous ne pourrez pas multiplier sa puissance en lançant 4 UTs Boinc sur Windows en même temps que 4 UTs sur Linux...
Comme c'est quand même bien foutu, ça ne plantera pas : les 8 UTs vont tourner, mais "à demi-vitesse"...
Par exemple :
Ici, j'ai un 9900K, un CPU qui a 8 cores hyperthreadés, donc qui peut lancer 16 UTs.
Si je voulais faire tourner les deux Boinc en même temps, je devrais "répartir" les threads : 8 pour l'une, 8 pour l'autre (ou 4/12, ou 10/6, etc).
Le nombre maximum de threads par machine (réelle ou virtuelle) peut être paramétré depuis Boinctasks (voir ci-dessous).
Si le PC rame dans Windows...
Plutôt que d'éteindre complètement la machine virtuelle, vous pouvez dire à son client Boinc de ne pas utiliser tous les threads CPU disponibles.
Vous pouvez le configurer en éditant le fichier cc_config.xml :
Dans Boinctasks :
1. cliquez sur l'une des machines, dans le panneau de gauche.
2. Dans le menu du haut :
Outils -> 3.
Edit config file (cc_config.xml) 
Dans la fenêtre qui vient d'apparaître :
1. trouvez la ligne "<ncpus>-1</ncpus>" (c'est classé alphabétiquement)
modifiez-la : par exemple : "<ncpus>4</ncpus>" pour 4 UTs (le "-1" initial signifie "utilise tous les threads") ;
2. cliquez sur le bouton "Check syntax" ;
3. (s'il n'y a pas d'erreur) cliquez sur le bouton "Apply".

(Pas besoin de redémarrer Boinc ou de lui faire relire son fichier de config, Boinctasks le fait quand on applique les changements)