WSL(ubuntu2204)xfce4语言支持报错及配置WSL服务自启

2023-05-16

语言支持报错

在图形桌面或命令行打开语言支持报错:dbus.exceptions.DBusException: org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory

itboone@localhost:/$ sudo /usr/bin/gnome-language-selector
Traceback (most recent call last):
  File "/usr/bin/gnome-language-selector", line 21, in on_activate
    instance = GtkLanguageSelector(datadir=options.datadir,
  File "/usr/lib/python3/dist-packages/LanguageSelector/gtk/GtkLanguageSelector.py", line 185, in __init__
    self.ac = aptdaemon.client.AptClient()
  File "/usr/lib/python3/dist-packages/aptdaemon/client.py", line 1056, in __init__
    self.bus = dbus.SystemBus()
  File "/usr/lib/python3/dist-packages/dbus/_dbus.py", line 195, in __new__
    return Bus.__new__(cls, Bus.TYPE_SYSTEM, mainloop=mainloop,
  File "/usr/lib/python3/dist-packages/dbus/_dbus.py", line 102, in __new__
    bus = BusConnection.__new__(subclass, bus_type, mainloop=mainloop)
  File "/usr/lib/python3/dist-packages/dbus/bus.py", line 124, in __new__
    bus = cls._new_for_bus(address_or_type, mainloop=mainloop)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /run/dbus/system_bus_socket: 没有那个文件或目录

 一番搜索找到原因:缺少的文件是由dbus daemon服务创建的,但是这个服务没有启动。

手动启动dbus服务后发现:多一个dbus-daemon --system的服务

itboone@localhost:/run$ ps -ef |grep dbus
itboone     96     8  0 16:31 ?        00:00:00 /usr/bin/dbus-launch --sh-syntax --exit-with-session xfce4-session
itboone     97     8  0 16:31 ?        00:00:00 /usr/bin/dbus-daemon --syslog --fork --print-pid 5 --print-address 7 --session
itboone    108   103  0 16:31 ?        00:00:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 11 --address=unix:path=/home/itboone/.cache/at-spi/bus_14.0
itboone    371     9  0 16:33 pts/0    00:00:00 grep --color=auto dbus
itboone@localhost:/run$ sudo /etc/init.d/dbus start
 * Starting system message bus dbus                                                                              [ OK ]
itboone@localhost:/run$ ps -ef |grep dbus
itboone     96     8  0 16:31 ?        00:00:00 /usr/bin/dbus-launch --sh-syntax --exit-with-session xfce4-session
itboone     97     8  0 16:31 ?        00:00:00 /usr/bin/dbus-daemon --syslog --fork --print-pid 5 --print-address 7 --session
itboone    108   103  0 16:31 ?        00:00:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 11 --address=unix:path=/home/itboone/.cache/at-spi/bus_14.0
message+   391     8  0 16:34 ?        00:00:00 /usr/bin/dbus-daemon --system
itboone    976     9  0 16:34 pts/0    00:00:00 grep --color=auto dbus

查看/run/dbus/目录发现文件system_bus_socket已创建

itboone@localhost:/run$ cd /run/dbus
itboone@localhost:/run/dbus$ ls
pid  system_bus_socket

这时使用命令以管理员身份启动语言支持

sudo /usr/bin/gnome-language-selector

发现可以正常打开

解决方法

dbus服务不能自启的原因尚未找到,但是可以使用笨方法解决,即加入开机启动服务。

通常在 Linux 中开机启动可以通过

  1. 编辑/etc/rc.loacl
  2. 在/etc/init.d/ 下添加启动脚本
  3. 配置systemd

但这几种方式在子系统中无法使用,我们可以通过 Windows 间接的启动子系统中的服务。

创建wsl启动脚本

进入任意 WSL 发行版中,创建并编辑文件:/etc/init.wsl

sudo vim /etc/init.wsl

脚本内容如下

#! /bin/sh

/etc/init.d/dbus start

 设置权限为可执行

sudo chmod +x /etc/init.wsl

这时候可以通过下面的命令来启停设置的服务

sudo /etc/init.wsl [start|stop|restart]

测试脚本 

在windows终端输入命令

wsl -d ubuntu2204 -u root sudo /etc/init.wsl start

查看wsl是否启动(Running)

C:\Users\itboone>wsl -l -v
  NAME          STATE           VERSION
* ubuntu2204    Running         2
  centos7       Stopped         2

 查看脚本服务是否启动( "+" 代表已启动)

itboone@localhost:/mnt/c/Users/itboone$ sudo service --status-all
 [ - ]  acpid
 [ - ]  alsa-utils
 [ - ]  anacron
 [ - ]  apparmor
 [ ? ]  apport
 [ - ]  avahi-daemon
 [ - ]  console-setup.sh
 [ - ]  cron
 [ + ]  dbus
 [ ? ]  hwclock.sh
 [ + ]  irqbalance
 [ - ]  kerneloops
 [ - ]  keyboard-setup.sh
 [ ? ]  kmod
 [ - ]  lightdm
 [ - ]  lm-sensors
 [ ? ]  plymouth
 [ ? ]  plymouth-log
 [ - ]  procps
 [ - ]  pulseaudio-enable-autospawn
 [ - ]  rsync
 [ - ]  saned
 [ - ]  screen-cleanup
 [ - ]  speech-dispatcher
 [ - ]  spice-vdagent
 [ - ]  udev
 [ - ]  ufw
 [ - ]  unattended-upgrades
 [ - ]  uuidd
 [ + ]  whoopsie
 [ - ]  x11-common
 [ + ]  xrdp

wsl参数说明

-u  root 用于指定 wsl 的登录用户

-d  ubuntu2204 用于指定 wsl 的发行版

注:-d 后面的发行版名称一定要替换为自己安装的版本(可通过 wsl -l 查看)

创建windows开机启动脚本

如过不想每次都通过终端命令来启动 wsl 及 init.wsl 服务,可以配置 Windows 启动时代理启动。

在 Windows 中使用快捷键 WIN+R 打开运行窗口,输入 shell:startup 打开 "启动" 目录。

创建文本文档 linux-start.txt 并修改后缀为 .vbs,内容如下 (vbhide表示隐藏命令行窗口):

Set ws = WScript.CreateObject("WScript.Shell")        
ws.run "wsl -d ubuntu2204 -u root sudo /etc/init.wsl start", vbhide

重启 Windows 登录账户后就会执行 linux-start.vbs,通过vbs脚本来执行 wsl 以及 init.wsl 服务

wsl 中有很多有用的服务,你可以按需删改 /etc/init.wsl ,但没必要塞很多东西进去影响你的启动速度,比如 mysql/mongodb 这些重度服务,可以需要的时候再启动,用完就停了。

参考资料

WSL 服务自动启动的正确方法https://zhuanlan.zhihu.com/p/47733615

Windows中的WSL2(子系统)开机启动配置​​​​​https://blog.csdn.net/hiqiming/article/details/105244147

WSL 的基本命令 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/windows/wsl/basic-commands?source=recommendations

手动启动dbus以及dbus daemonhttps://blog.csdn.net/bw_yyziq/article/details/83505596

Failed to connect to socket /opt/local/var/run/dbus/system_bus_sockethttps://9to5answer.com/failed-to-connect-to-socket-opt-local-var-run-dbus-system_bus_socket-no-such-file-or-directory

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WSL(ubuntu2204)xfce4语言支持报错及配置WSL服务自启 的相关文章

  • WSL / WSL2 问题大全 及 解决方案

    笔者这两天将WSL1转换为了WSL2 xff0c 一路上遇到了些问题 xff0c 思前虑后认为应当整理总结以飨读者 我遇到的问题一览 xff1a WSL WSL2 问题 及 解决 转换为WSL2WSL2占用内存过大怎么办 xff1f WSL
  • 使用脚本重启WSL(ubuntu)。

    1 创建 重启脚本文件 bat cmd 编辑脚本 xff0c 输入 xff1a net stop LxssManager net start LxssManager 保存关闭 2 运行脚本 脚本运行需要管理员权限 解决方法 xff1a xf
  • WSL使用NFS

    微软的WLS下挂NFS系统是失败的 xff0c 因为内核不支持 xff0c 此路是不通的 xff0c 至少目前我是没有找到解决办法 xff0c 可以使用hane winNFS替代
  • wsl中使用ROS工具rqt显示界面跑到窗口外面

    问题 xff1a 在WSL中使用ROS时确实会有一些小bug xff0c 比如下面这个 的rqt plot功能包时 xff0c 想通过rqt plot指令查看相应信息 xff0c 但是窗口弹出在窗口是空白的 xff0c 并且rqt那个功能界
  • PoweShell Win_desktop install wsl

    什么是 WSL 2 WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本 xff0c 它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件 它的主要目
  • 命令行版 Centos 7 虚拟机安装 xfce4 桌面 + x11vnc + novnc

    命令行版 Centos 7 虚拟机安装 xfce4 桌面 x11vnc novnc 安装命令行版 Centos 7 虚拟机 xfce4 桌面环境 安装 x server 安装 启动 xfce4 x11vnc novnc 安装命令行版 Cen
  • 【WSL】[04]从C盘解放出来WSL的linux镜像

    前言 C盘的硬盘资源有限 虚拟机的需求无限 所以 要把无限的硬盘需求搞到其他盘去才行啊 方案1 利用工具 move wsl 1 管理员运行PowerShell 创建WSL的工作目录 移动前 C盘的空间大小 base PS C WINDOWS
  • Windows11 WSL子系统ubuntu22.04 修改hostname

    大家都知道以往我们修改 Linux系统的 hostname只要修改 etc hostname 这个文件中的名字即可 但是在WSL中修改该文件是无法生效的 要修改Hostname并使它生效 我们必须修改 etc wsl conf 文件 编辑配
  • WSL2 占位程序接收到错误数据。 Error code: Wsl/Service/0x800706f7

    在 windows 的 terminal 中输入 需要以管理员权限 netsh winsock reset 然后就可以正常启动 WSL2 了 不用重启电脑 from 李志成的个人网站
  • wsl连接vscode

    文章目录 1 wsl 安装 2 wsl搭配vscode 3 adb 在wsl上的使用 1 wsl 安装 由于我已经提前安装了 所以这里没办法展示如何安装 大致有两个需要注意的点 在官网或者其它博文有 1 需要在命令行输入安装命令 2 需要下
  • Win11安装WSL2和Nvidia驱动(2022-12-19)

    文章目录 前言 系统环境 WSL 1和WSL 2功能对比 安装WSL2 更新和升级包 配置VSCode 配置GPU加速 安装Nvidia驱动 安装Cuda Toolkit 通过PyTorch安装CUDA Toolkit 测试Nvcc 参考链
  • Windows中的WSL2(子系统)开机启动配置

    常规做法 通常在Linux中开机启动可以通过 1 编辑 etc rc loacl 2 在 etc init d 下添加启动脚本 3 配置systemd 但这几种方式在子系统中无法使用 我们可以通过Windows 间接的启动子系统中的服务 在
  • windows docker wsl2的docker内存占用大

    windows docker wsl2的docker内存占用大 1重启wsl2 最终采用 实测直接stop运行的docker实例 并不会减少Vmmem内存 因此需要重启wsl2 输入wsl shutdown即可 同时把Docker Desk
  • WSL安装cuda输入nvidia-smi遇到报错

    打算在WSL安装Cuda 但是安装成功后发现输入nvidia smi一直报错 查了很多文章都没法解决 本来都准备放弃了 随手查看了下WSL版本 发现WSL一直是 1 改成 2 之后再次安装CUDA WSL驱动直接成功 1 在powershe
  • windows子系统启动ubuntu“另一个程序正在使用此文件,进程无法访问”

    背景 问题 磁盘整理后重启 WSL无法启动 提示 另一个程序正在使用此文件 进程无法访问 解决 重启和资源管理清理 一天都无法解决 碰巧用命令行重启 还是true false的两行提示 不确定成功没 重启居然就能打开ubuntu了 管理员身
  • WSL——NextCloud 在 Windows 端的网络访问配置

    NextCloud 在 Windows 端的网络访问配置 1 WSL2 的 IP 配置问题 在 Windows 每次重启后 WSL2 的 IP 将会发生变化 即 WSL2 的 IP 并非静态地址 为此 通过下述代码可以手动为 WSL2 增加
  • 【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署

    最近买了ChatGPT PLUS服务 想通过web服务将它共享给其他人使用 搜了一下目前GitHub上比较热门的服务有 ChatGPT Next Web chatgpt web share 其中chatgpt web share支持API和
  • ffmpeg最简单方式支持nvidia硬编解码

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 nvidia硬编解码是什么 二 使用步骤 1 安装 2 确认 1 硬件解码器 2 硬件编码器 3 测试 总结 前言 因为工作内容的需要 之前写过一篇文章关
  • 「VS Code」Visual Studio Code 菜鸟教程:从入门到精通

    VS Code Visual Studio Code 教程 从入门到精通 日志 2020 04 26 介绍如何配置 LaTeX 环境 2019 09 06 更新了选择默认终端的方法 在胶片中补全列选方式 2019 05 26 补全了全文的剩
  • 如何在 Ubuntu 22.04 LTS 上安装 MySQL 5.7?

    我工作的公司使用较旧的堆栈 我需要在 Ubuntu 22 04 LTS 上安装 MySQL 5 7 才能在本地处理一些项目 有谁知道该怎么做 除了在 Ubuntu 20 04 或更低版本上安装之外 我找不到任何东西 下载 wget http

随机推荐