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:
cannot execute binary file: Exec format errorDe 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:
:WSLInterop:M::MZ::/init:PFsudo mkdir -p /usr/lib/binfmt.d
echo ':WSLInterop:M::MZ::/init:PF' | sudo tee /usr/lib/binfmt.d/WSLInterop.conf
sudo systemctl restart systemd-binfmtWat 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#
cat /proc/sys/fs/binfmt_misc/WSLInterop
explorer.exe .