配置wsl2为systemd之后code运行故障

文章描述了升级WSL2并启用systemd后,VSCode在Ubuntu中通过远程方式打开文件夹遇到执行错误的问题。解决方法包括添加WSLInterop.conf到binfmt.d并重启systemd-binfmt。作者提醒,此问题源于systemd激活对/binfmt_misc的影响。
摘要由CSDN通过智能技术生成

配置wsl2为systemd之后code运行故障

现象

前段时间忘记测试什么的时候将wsl2升了级,并添加了一个文件/etc/wsl.conf,文件内容如下:

[boot]
systemd = true

这段是启用systemd。关于systemd的知识请看《使用 systemd 通过 WSL 管理 Linux 服务》.

这几天一直从vscode 通过remote方式直接打开wsl里面的内容进行编辑,通常没有什么问题。但是今天在ubuntu里面尝试使用code . 命令打开一个新的文件夹时却出现了问题,提示:

/mnt/c/Users/watershade/AppData/Local/Programs/Microsoft VS Code/Code.exe: Exec format error

解决

这个问题不难解决,因为我一搜索就找到了这篇github的issue其中提到的另一个issue.
基本解决办法如下:

sudo sh -c 'echo :WSLInterop:M::MZ::/init:PF > /usr/lib/binfmt.d/WSLInterop.conf'
sudo systemctl restart systemd-binfmt

文中有人提到了更复杂的办法:

sudo sh -c 'echo :WSLInterop:M::MZ::/init:PF > /usr/lib/binfmt.d/WSLInterop.conf'
sudo systemctl unmask systemd-binfmt.service
sudo systemctl restart systemd-binfmt
sudo systemctl mask systemd-binfmt.service

其实后者时前者的扩充。我直接用前者就解决了问题。文中也介绍了原因:

The issue is that enabling systemd somehow alters /proc/sys/fs/binfmt_misc/
The file (or filelike??) entry WSLInterop.conf goes missing.

问题出现在使能systemd 之后,因为某种原因导致了WSLInterop.conf文件丢失。

说明

这个问题的解决没什么复杂的地方。但是还是记录一下以供有类似问题的朋友检索。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值