Het probleem#

Als de interoperabiliteit met Windows-executables in WSL kapot is, krijg je fouten bij het starten van programma’s als explorer.exe, code of clip.exe. Het systeem geeft dan iets als:

text
cannot execute binary file: Exec format error

De oorzaak#

Dit komt door een ontbrekend registratiebestand in binfmt.d, dat de Linux-kernel vertelt hoe hij Windows PE-binaries moet verwerken.

De oplossing#

Maak /usr/lib/binfmt.d/WSLInterop.conf aan met de volgende inhoud:

text
:WSLInterop:M::MZ::/init:PF
sh
sudo mkdir -p /usr/lib/binfmt.d
echo ':WSLInterop:M::MZ::/init:PF' | sudo tee /usr/lib/binfmt.d/WSLInterop.conf
sudo systemctl restart systemd-binfmt

Wat er technisch gebeurt#

De binfmt_misc-registratie vertelt de kernel dat bestanden met de MZ-magic bytes — kenmerkend voor Windows-executables — via /init moeten worden afgehandeld, met de juiste flags voor preservation en binary-fixing.

Waarom het bestand verdwijnt#

Distributie-upgrades, handmatige opschoonacties, of een minimale distro-installatie zonder WSL-specifieke pakketten kunnen deze configuratie wegvegen.

Controleren of het werkt#

sh
cat /proc/sys/fs/binfmt_misc/WSLInterop
explorer.exe .