Windows 11 WSL LxTerminal 在按下第一个字符后关闭

Windows 11 WSL LxTerminal 在按下第一个字符后关闭

设置:Windows 11 Enterprise,版本 22H2。从命令行启用 WSL 2。通过 Microsoft Store 安装 Ubuntu 20.04。

LxTerminal 已安装并固定到任务栏。以下是一些版本信息:

ktuulos@SATKT22:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.5 LTS
Release:    20.04
Codename:   focal
ktuulos@SATKT22:~$ apt -qq list lxterminal
lxterminal/focal,now 0.3.2-1 amd64 [installed]

Windows 11 电脑启动后,第一次运行 LxTerminal(点击任务栏图标),总是在第一次按键后崩溃并关闭。重新打开(再次点击任务栏图标)后,LxTerminal 运行正常。

Dmesg 显示以下内容:

[    8.813388] lxterminal[241]: segfault at 245 ip 00007f85df394cfe sp 00007ffc0a71b490 error 4 in libgdk-3.so.0.2404.16[7f85df37c000+81000]
[    8.814005] Code: 41 56 41 55 41 54 55 53 48 85 ff 74 5f 48 89 fd 41 89 f6 49 89 d4 49 89 cd e8 5e fc ff ff 48 8b 5d 00 48 89 c6 48 85 db 74 05 <48> 39 03 74 0c 48 89 ef e8 b5 c0 fe ff 85 c0 74 31 4d 85 e4 74 7c
[    8.814589] potentially unexpected fatal signal 11.
[    8.814737] CPU: 9 PID: 241 Comm: lxterminal Not tainted 5.15.74.2-microsoft-standard-WSL2 #1
[    8.814995] RIP: 0033:0x7f85df394cfe
[    8.815106] Code: 41 56 41 55 41 54 55 53 48 85 ff 74 5f 48 89 fd 41 89 f6 49 89 d4 49 89 cd e8 5e fc ff ff 48 8b 5d 00 48 89 c6 48 85 db 74 05 <48> 39 03 74 0c 48 89 ef e8 b5 c0 fe ff 85 c0 74 31 4d 85 e4 74 7c
[    8.815616] RSP: 002b:00007ffc0a71b490 EFLAGS: 00010202
[    8.815763] RAX: 00005622747a5b40 RBX: 0000000000000245 RCX: 00005622748e6618
[    8.815982] RDX: 00005622748e6610 RSI: 00005622747a5b40 RDI: 000056227478cb00
[    8.816201] RBP: 000056227478cb00 R08: 0000562274bcfb70 R09: 0000000000000008
[    8.816421] R10: 000056227471e018 R11: 00007ffc0a71b7f0 R12: 00005622748e6610
[    8.816641] R13: 00005622748e6618 R14: 0000000000000066 R15: 000056227472a5c0
[    8.816865] FS:  00007f85db85fcc0 GS:  0000000000000000

应该如何处理这个问题?

答案1

这与在 Windows 11 中启动 WSL 有关。如果 WSL 中的第一个操作是打开 LxTerminal,则 LxTerminal 会在第一次按下键时发生段错误。但如果 WSL 是从开始菜单使用“Windows 上的 Ubuntu 20.04”启动的,或者在启动 LxTerminal 之前执行了任何其他 WSL 命令,则不会发生崩溃。

因此,我的解决方法是:

  1. 创建/home/ktuulos/scripts/init-wsl.sh以下内容,并将其修改为可执行文件:

    #!/bin/sh
    sudo service rsyslog start
    sudo service cron start
    
  2. 创建/etc/sudoers.d/10-service(使用visudo):

    %sudo   ALL=(ALL) NOPASSWD: /usr/sbin/service
    
  3. 打开 Windows 文件资源管理器,进入shell:startup文件夹并创建文件init-wsl.cmd

    wsl /home/ktuulos/scripts/init-wsl.sh
    

相关内容