Installer ExeGol sur Windows en utilisant Windows Terminal et WSL, créant ainsi un environnement de développement performant en quelques étapes.
- Pour installer Windows Terminal via
Winget
, assurez-vous d’avoir Windows 10 version 18362.0 ou supérieure
, car Winget est disponible à partir de cette version.
- Avant d’activer le sous-système Windows pour Linux (
WSL
), assurez-vous que vous exécutez Windows 10 version 1903 ou ultérieure
, car WSL 2 est disponible à partir de cette version.
- Pour installer Exegol, Windows 10 KB5020030 ou une version ultérieure est nécessaire ou
Windows 11
.
- Assurez-vous d’exécuter toutes les commandes
PowerShell
en tant qu’administrateur
.
Windows Terminal est une application en ligne de commande moderne qui vous permet d’accéder facilement à différents terminaux, y compris le PowerShell, le CMD, et les distributions Linux. Voici comment l’installer :
-
Ouvrez PowerShell en tant qu’administrateur. Pour ce faire, recherchez “PowerShell” dans le menu Démarrer, cliquez avec le bouton droit de la souris sur “Windows PowerShell” et choisissez “Exécuter en tant qu’administrateur.”
-
Vérifiez si Windows Terminal est déjà installé en utilisant la commande suivante :
1
|
Get-AppxPackage -Name *Microsoft.WindowsTerminal*
|
- Si Windows Terminal n’est pas installé, vous pouvez l’installer en utilisant Winget (l’outil de gestion des paquets de Microsoft) avec la commande :
1
|
winget install Microsoft.WindowsTerminal
|
- Enfin pour l’ouvrir
Le sous-système Windows pour Linux (WSL) est une fonctionnalité de Windows qui vous permet d’exécuter un noyau Linux sur votre système.
- Vérifiez si WSL est déjà activé avec la commande suivante :
1
|
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
|
- Si WSL n’est pas activé, activez-le en utilisant la commande :
1
|
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
|
- Vous pouvez également vérifier si la plateforme de machine virtuelle est déjà activé avec la commande suivante :
1
|
Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
|
- Cette fonctionnalité est nécessaire pour utiliser WSL 2, si elle n’est pas activé, activez-la en utilisant la commande :
1
|
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
|
- Redémarrez votre ordinateur pour appliquer les modifications :
Maintenant que le sous-système Windows pour Linux est activé, vous pouvez installer une distribution Linux de votre choix. Dans cet exemple, nous utiliserons Ubuntu
.
- Ouvrez Windows Terminal, et installer Ubuntu avec la commande suivante :
- Mettre à jour Ubuntu et le redémarrer
1
2
|
sudo apt update && sudo apt upgrade
exit
|
- Redémarrer WSL et relancer Ubuntu
1
2
|
wsl --shutdown
ubuntu
|
- Vérification du contenu de /etc/wsl.conf :
- Vous pouvez d’abord vérifier si le fichier
/etc/wsl.conf
existe et s’il contient la configuration nécessaire pour activer systemd.
- Si le fichier existe et contient la ligne
[boot] systemd=true
, alors systemd est activé. Cette ligne indique à WSL d’utiliser systemd comme init lors du démarrage de la distribution Linux.
- Création de /etc/wsl.conf (si nécessaire) :
- Si le fichier
/etc/wsl.conf
n’existe pas ou s’il ne contient pas la ligne [boot] systemd=true
, vous pouvez le créer en utilisant un éditeur de texte comme nano
. Exécutez les commandes suivantes pour créer le fichier et y ajouter la configuration nécessaire :
1
|
sudo nano /etc/wsl.conf
|
Ajoutez la ligne suivante au fichier /etc/wsl.conf
:
Enregistrez les modifications et quittez l’éditeur de texte avec CTRL+X
et y
.
- Vérification avec
systemctl status
:
- Une fois que vous avez vérifié ou ajouté la configuration dans
/etc/wsl.conf
, vous pouvez également utiliser systemctl
pour vérifier l’état de systemd. Exécutez la commande suivante :
Cette commande affichera l’état des services systemd actuellement en cours d’exécution dans votre distribution Linux WSL. Si systemd est actif, vous devriez voir une liste de services et leur état.

1
2
3
4
5
6
7
8
9
|
git --version
sudo apt install git
python3 -V
sudo apt install python3
pip -v
sudo apt install python3-pip
pip3 install --upgrade pip
|
1
2
|
export PATH="$PATH:$HOME/.local/bin"
source .bashrc
|
1
2
3
|
sudo apt install docker.io
docker -v
sudo systemctl status docker
|

1
2
3
4
5
6
7
8
9
10
|
cd /opt
sudo git clone https://github.com/ThePorgs/Exegol.git
cd /opt/Exegol/
sudo python3 -m pip install --requirement "requirements.txt"
# python3 -m pip install --user --requirement "requirements.txt"
sudo ln -s "$(pwd)/exegol.py" "/usr/local/bin/exegol"
sudo exegol install
y
y
<IMAGE TAG>
|

-l
=> “Activer la journalisation shell”
--vpn <DIRECTORY/FILE.ovpn>
=> “Configurez une connexion OpenVPN”
--privileged
=> “(dangereux) Entre autres, permet d’activer un point de montage avec un CTF”
-w <WORKSPACE_PATH>
=> “Dossier partagé personnalisé” (Activer par défaut dans ~/.exegol/workspace ou /root/.exegol/workspace)
-fs
=> “Modifier les autorisations des dossiers et sous-dossiers partagés”
1
|
sudo exegol start machine2test full -l -fs -w "$PWD/partage" --vpn "$PWD/VPN/Zitouneanticip.ovpn"
|

La commande start
créer une machine si celle-ci n’existe pas. Une fois la machine créée, il vous suffira plus tard de l’ouvrir avec la commande :
1
|
sudo exegol start machine2test
|
1
2
3
4
5
|
fix :
[-] The xhost command is not available on your host. Exegol was unable to allow your container to
access your graphical environment (or you don't have one).
sudo apt-get install x11-xserver-utils
|
1
|
sudo exegol remove <container tag>
|
Ce script PowerShell, simplifie la vérification des prérequis pour l’installation d’Exegol sur Windows. Il indique clairement l’état de chaque élément vérifié.
L’exécution de scripts PowerShell est désactivée par défaut sur les systèmes Windows pour des raisons de sécurité. Si vous rencontrez une erreur indiquant que l’exécution de scripts est désactivée sur votre système, vous pouvez contourner cette restriction en lançant votre script avec la politique d’exécution définie sur Bypass. Pour ce faire, tapez la commande suivante :
1
|
powershell -ExecutionPolicy Bypass -File Check-Requirements-Windows-For-install-Exegol.ps1
|
Cette commande lance une nouvelle instance de PowerShell pour exécuter votre script avec la politique d’exécution définie sur Bypass. Cela signifie que toutes les restrictions d’exécution de scripts sont ignorées pour cette instance de PowerShell.
Cependant, il est important de noter que l’utilisation de cette commande peut présenter des risques de sécurité, car elle permet l’exécution de n’importe quel script, qu’il soit signé ou non. Assurez-vous de comprendre les implications avant de l’utiliser. Il est toujours recommandé d’examiner attentivement tout script avant de l’exécuter sur votre système.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# Vérifier si le script est exécuté en tant qu'administrateur
$isAdmin = ([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match "S-1-5-32-544"
if ($isAdmin) {
# les couleurs
$colorGreen = "Green"
$colorRed = "Red"
# Obtenir l'état du service Hyper-V
$serviceStatus = (Get-Service vmcompute).Status
Write-Host "vmcompute (Hyper-V) => " -NoNewline
if ($serviceStatus -eq "Running") {
Write-Host $serviceStatus -ForegroundColor $colorGreen
} elseif ($serviceStatus -eq "Stopped") {
Write-Host $serviceStatus -ForegroundColor $colorRed
} else {
Write-Host "Le status du service vmcompute est inconnu : $serviceStatus" -ForegroundColor $colorRed
}
# Obtenir le système d'exploitation
$osInfo = [System.Environment]::OSVersion.Version
Write-Host "OSVersion => " -NoNewline
if ($osInfo.Major -eq 10) {
Write-Host $osInfo.Major -ForegroundColor $colorGreen
} elseif ($osInfo.Major -eq 11) {
Write-Host $osInfo.Major -ForegroundColor $colorGreen
} else {
Write-Host "OSVersion est : $osInfo.Major" -ForegroundColor $colorRed
}
# Obtenir le Build du système d'exploitation
$osVersion = [System.Environment]::OSVersion.Version.Build
# Liste des Builds KB5020030
$buildsAVerifier = 19042, 19043, 19044, 19045
Write-Host "KB5020030 => " -NoNewline
switch ($osVersion) {
{$_ -in $buildsAVerifier} {
Write-Host $osVersion -ForegroundColor $colorGreen
break
}
default {
Write-Host "$osVersion ne figure pas dans KB5020030" -ForegroundColor $colorRed
}
}
# Vérifier si Windows Terminal est installé
$windowsTerminalStatus = (Get-AppxPackage -Name *Microsoft.WindowsTerminal*).Status
Write-Host "Windows Terminal => " -NoNewline
if ($windowsTerminalStatus -eq "Ok") {
Write-Host $windowsTerminalStatus -ForegroundColor $colorGreen
} else {
Write-Host "erreur $windowsTerminalStatus" -ForegroundColor $colorRed
}
# Vérifier si WSL est déjà activé
$wslState = (Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux).State
Write-Host "Windows-Subsystem-Linux => " -NoNewline
if ($wslState -eq "Enabled") {
Write-Host $wslState -ForegroundColor $colorGreen
} else {
Write-Host "erreur $wslState" -ForegroundColor $colorRed
}
# Vérifier si la plateforme de machine virtuelle est activée
$virtualMachineState = (Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform).State
Write-Host "VirtualMachinePlatform => " -NoNewline
if ($virtualMachineState -eq "Enabled") {
Write-Host $virtualMachineState -ForegroundColor $colorGreen
} else {
Write-Host "erreur $virtualMachineState" -ForegroundColor $colorRed
}
} else {
Write-Host "Le script necessite des droits administrateur..."
# Obtenir le chemin complet du script actuel
$scriptPath = $MyInvocation.MyCommand.Definition
# Relancer le script en tant qu'administrateur
Start-Process -FilePath "powershell" -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$scriptPath`"" -Verb RunAs
Exit
}
Write-Host "`nPour execute WSL vous avez besoin que 'Hyper-V' ou 'la Virtual Machine Platform' soit actif"
# Ajouter une pause pour maintenir la fenêtre ouverte
Read-Host "Appuyez sur Entree pour quitter..."
|