WSL : personnaliser le démarrage de Linux avec /etc/wsl.conf

WSL : personnaliser le démarrage de Linux avec /etc/wsl.conf

I. Présentation

Le démarrage de chaque distribution Linux qui tourne via WSL (Windows Subsystem for Linux) peut être personnalisé avec le fichier de configuration /etc/wsl.conf.

Si vous souhaitez maîtriser le fichier de configuration « /etc/wsl.conf », vous êtes au bon endroit ! Dans ce tutoriel, je vais vous expliquer comment utiliser le fichier wsl.conf pour personnaliser le démarrage de la distribution Linux gérée par WSL.

Ready ? Go…

II. Création du fichier /etc/wsl.conf

Par défaut, le fichier de configuration /etc/wsl.conf n’existe pas. Nous devons le créer grâce à une simple commande :

sudo touch /etc/wsl.conf

Ensuite, il ne reste plus qu’à le modifier à l’aide de notre éditeur préféré (oui, mon éditeur préféré c’est nano, ahah) :

sudo nano /etc/wsl.conf

Le fichier est créé, il est ouvert, c’est bien, mais on fait quoi maintenant ?

Sachez que pour le moment, il y a quatre sections prises en charge sur les versions stables de Windows :

(user)
(automount)
(network)
(interop)

Passons à la suite, où je vais vous montrer quelques exemples.

III. WSL (user) : modifier l’utilisateur par défaut

Commençons en douceur : la section (user) accepte un seul paramètre nommé « default ». Il sert à spécifier l’utilisateur qui doit être connecté par défaut lorsque l’on démarre la distribution Linux. Bien entendu, cet utilisateur doit exister au préalable, ce qui signifie qu’il doit être créé avec la commande « adduser.

Au sein du fichier wsl.conf, le principe est le suivant : on commence par déclarer le bloc :

(user)

Puis, on ajoute notre directive en dessous. Pour définir « itconnect » comme utilisateur par défaut, cela donne :

(user)
default=itconnect

Au prochain redémarrage, on sera directement connecté avec ce compte sur cette distribution.

 » alt= » » width= »800″ height= »113″ data-lazy-srcset= »https://tuto.cm/wp-content/uploads/2024/09/1726265758_153_WSL-personnaliser-le-demarrage-de-Linux-avec-etcwslconf.png 800w, https://www.it-connect.fr/wp-content-itc/uploads/2021/06/wsl-conf-user-default-550×78.png 550w, https://www.it-connect.fr/wp-content-itc/uploads/2021/06/wsl-conf-user-default-150×21.png 150w, https://www.it-connect.fr/wp-content-itc/uploads/2021/06/wsl-conf-user-default-768×108.png 768w, https://www.it-connect.fr/wp-content-itc/uploads/2021/06/wsl-conf-user-default-160×23.png 160w, https://www.it-connect.fr/wp-content-itc/uploads/2021/06/wsl-conf-user-default-50×7.png 50w » data-lazy-sizes= »(max-width: 800px) 100vw, 800px » data-lazy-src= »https://tuto.cm/wp-content/uploads/2024/09/1726265758_153_WSL-personnaliser-le-demarrage-de-Linux-avec-etcwslconf.png » />
Fichier wsl.conf – Exemple (user)

IV. WSL (automount) : Monter les disques locaux de Windows

La section (automount) va permettre de monter les disques locaux de Windows au sein de la distribution Linux. De cette manière, vous pouvez accéder aux données de votre machine Windows depuis Linux. Cette section permet aussi de monter un partage SMB au sein de Linux, automatiquement.

Au sein du fichier wsl.conf, voici comment monter automatiquement les disques Windows dans Linux, au sein de la racine « /windows/ » :

(automount)
enabled=true
root=/windows/

Après redémarrage de la machine Linux, ici Ubuntu, on voit bien que je suis directement au sein du dossier « /windows/c/ » qui correspond au disque C de Windows.

ls -l
Accès au disque C de Windows depuis Linux

L’alternative consiste à monter manuellement le lecteur ou à partir du fichier /etc/fstab qui permet de déclarer les points de montage (et donc de monter un partage distant via SMB). Cela est possible grâce à la directive mountFsTab de la section (automount) qui est par défaut sur True.

V. WSL (network) : reprendre le contrôle de resolv.conf et hosts

La section (network) sert à paramétrer deux options :

  • generateHosts : est-ce qu’il faut générer le fichier /etc/hosts ? Il sert à déclarer l’adresse localhost, mais aussi d’autres adresses si l’on veut (idéale pour des tests). Avec WSL, il reprend le contenu du fichier hosts de Windows.
  • generateResolvConf : est-ce qu’il faut générer le fichier /etc/resolv.conf ? Il sert à déclarer le DNS, sans lui impossible d’utiliser Internet

Par défaut, ces deux options sont à « True » c’est-à-dire que les fichiers sont générés et préconfigurés. Ce qui permet d’avoir Internet sur la machine, en s’appuyant sur votre machine Windows. Le problème, c’est que si vous modifiez ces fichiers, à chaque redémarrage ce sera écrasé.

Définir ces options à « False » va permettre de reprendre le contrôle sur ces deux fichiers. Par exemple, cela va permettre de définir un DNS personnalisé sur votre machine.

(network)
generateHosts=false
generateResolvConf=false

Si l’on prend l’exemple de « generateResolvConf » qui correspond au fichier /etc/resolv.conf. Actuellement, son contenu est le suivant :

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# (network)
# generateResolvConf = false
nameserver 172.30.224.1

Si l’on veut définir un DNS personnalisé dans WSL, par exemple le DNS local de notre entreprise, voici ce qu’il faut faire. Définir l’option sur « False » comme ci-dessus :

(network)
generateResolvConf=false

Redémarrer la machine WSL (depuis Windows ou Linux) :

wsl --shutdown

Retourner sur le Shell Linux et supprimer le fichier /etc/resolv.conf dans le but de le recréer, sinon nous ne pouvons pas le modifier.

sudo rm /etc/resolv.conf

On modifie le fichier (ce qui va le recréer en même temps) :

sudo nano /etc/resolv.conf

On ajoute notre serveur DNS personnalisé :

nameserver 192.168.100.11

On valide, voilà nous avons défini un serveur DNS personnalisé sur notre distribution Linux ! Au prochain redémarrage, le fichier ne sera pas écrasé ! 😉

Il est à noter que si vous déclarez generateResolvConf sur « False » et que vous ne définissez pas de DNS vous-même dans le fichier, votre machine Linux ne pourra plus résoudre les noms.

VI. WSL (interop) : empêcher l’ouverture des programmes Windows depuis Linux

La section (interop) agit sur l’interopérabilité entre les deux systèmes : Windows et Linux. En fait, à partir du shell Linux, vous pouvez exécuter des commandes Windows pour ouvrir des programmes. Essayez les deux commandes ci-dessous, vous verrez :

notepad.exe
calc.exe

La section (interop) a deux paramètres possibles :

  • enabled : permets d’activer ou désactiver la prise en charge des commandes Windows depuis Linux. Par défaut, c’est sur « True » (vrai). Lorsque c’est False (faux), ce n’est plus possible
  • appendWindowsPath : permet d’ajouter les chemins de la variable Windows « PATH », notamment « C:\Windows\System32 », à la variable d’environnement $PATH de Linux. Par défaut, c’est sur « True » ce qui permet de trouver le Bloc-notes d’un simple « notepad.exe ».

L’image ci-dessous permet de voir le contenu de la variable $PATH de Linux lorsque l’option appendWindowsPath est sur True, puis en bas de l’image, lorsqu’elle est sur False.

Sur le même principe que pour les directives précédentes, voici comment déclarer ces options :

(interop)
enabled=false
appendWindowsPath=false

Un redémarrage s’impose, et le tour est joué : le divorce entre la machine Windows et la machine Linux commence maintenant ! 😉

VII. WSL (boot) : exécuter une commande au démarrage de Linux

Néanmoins, c’est disponible uniquement au sein des versions en cours de développement de Windows 10. À l’époque, au sein de Windows 10 Build 21286. À ce jour, et malgré la sortie de Windows 10 21H1, cette nouvelle section (boot) n’est toujours pas incluse dans une version stable de Windows 10.

Malgré tout, je vais vous expliquer son fonctionnement. Comme ça, quand ce sera disponible en version stable, l’article sera déjà au point. Voici comment elle se déclare dans le fichier wsl.conf :

(boot)
command=""

Reprenons l’exemple proposé par Microsoft et qui permet d’écrire dans un fichier (/home/florian/wslBootHistory.txt) la date et l’heure à chaque fois que la distribution Linux est lancée. Ce qui donne :

(boot)
command="echo WSL booted at $(/bin/date +'%Y-%m-%d %H:%M:%S') >> /home/florian/wslBootHistory.txt"

En image :

Fichier wsl.conf avec (boot)
Fichier wsl.conf avec (boot)

Il n’est pas utile de créer le fichier TXT en amont. Pour tester le bon fonctionnement de notre commande, nous allons faire un shutdown de WSL et relancer le shell de la distribution. Depuis Windows, exécutez :

wsl --shutdown

Ensuite, depuis Linux, si l’on regarde le contenu de notre fichier, on verra qu’il y a bien du contenu :

cat /home/florian/wslBootHistory.txt

Voilà, le tour est joué !

Pour exécuter un script, ce n’est pas plus compliqué :

command="bash /home/florian/monscript.sh"

La section (boot) est très pratique, car elle va permettre de faciliter l’exécution de commandes et de scripts, par exemple pour démarrer un service. Vivement qu’elle soit disponible sur la version stable de WSL !

Hébergez votre site à partir de 2$ sur 👉👉👉

À propos Santana

Analyste en cybersécurité avec 5 ans d'expérience dans la protection des systèmes d'information contre les menaces et les attaques. Expertise dans la surveillance des réseaux, l'analyse des vulnérabilités, et la gestion des incidents de sécurité. Passionnée par l'innovation technologique et la mise en œuvre de solutions de sécurité robustes pour protéger les données sensibles et assurer la conformité réglementaire.

Vérifiez également

WSL 2 : gérer les ressources allouées à Linux avec .wslconfig

WSL 2 : gérer les ressources allouées à Linux avec .wslconfig

Table de Matieres1 I. Présentation2 II. WSL : ressources utilisées par les distributions Linux3 III. …

WSL : comment accéder aux fichiers Linux depuis Windows 10 ?

WSL : comment accéder aux fichiers Linux depuis Windows 10 ?

Table de Matieres1 I. Présentation2 II. Le partage spécial \\wsl$3 III. Découverte de la commande …

10 commandes pour maîtriser WSL sous Windows 10

10 commandes pour maîtriser WSL sous Windows 10

Table de Matieres1 I. Présentation2 III. WSL : modifier la version d’une distribution Linux3 IV. …

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.