Ubuntu 20.04下以root身份启动VSCode失败求助
问题:Ubuntu 20.04下以root身份启动Snap版VSCode 1.79.2出现空白窗口
我在Ubuntu 20.04系统中通过snap安装了VSCode 1.79.2版本,尝试使用命令sudo code --verbose --user-data-dir=/root/.config/Code --no-sandbox以root身份启动VSCode时,仅弹出空白窗口。以下是相关日志信息,恳请各位提供帮助:
[9777:0620/002407.015879:ERROR:bus.cc(399)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix") [9777:0620/002407.016217:ERROR:bus.cc(399)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix") No protocol specified No protocol specified [9777:0620/002407.044186:WARNING:bluez_dbus_manager.cc(247)] Floss manager not present, cannot set Floss enable/disable. No protocol specified No protocol specified [9802:0620/002407.050645:ERROR:angle_platform_impl.cc(43)] DisplayVkXcb.cpp:59 (initialize): xcb_connect() failed, error 1 ERR: DisplayVkXcb.cpp:59 (initialize): xcb_connect() failed, error 1 [9802:0620/002407.051043:ERROR:angle_platform_impl.cc(43)] Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Not initialized. ERR: Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Not initialized. [9802:0620/002407.051300:ERROR:gl_display.cc(508)] EGL Driver message (Critical) eglInitialize: Not initialized. [9802:0620/002407.051518:ERROR:gl_display.cc(920)] eglInitialize SwANGLE failed with error EGL_NOT_INITIALIZED [9802:0620/002407.051740:ERROR:gl_ozone_egl.cc(23)] GLDisplayEGL::Initialize failed. [9802:0620/002407.055340:ERROR:viz_main_impl.cc(186)] Exiting GPU process due to errors during initialization No protocol specified No protocol specified No protocol specified No protocol specified [9816:0620/002407.099533:ERROR:angle_platform_impl.cc(43)] DisplayVkXcb.cpp:59 (initialize): xcb_connect() failed, error 1 ERR: DisplayVkXcb.cpp:59 (initialize): xcb_connect() failed, error 1 [9816:0620/002407.099823:ERROR:angle_platform_impl.cc(43)] Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Not initialized. ERR: Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Not initialized. [9816:0620/002407.099997:ERROR:gl_display.cc(508)] EGL Driver message (Critical) eglInitialize: Not initialized. [9816:0620/002407.100132:ERROR:gl_display.cc(920)] eglInitialize SwANGLE failed with error EGL_NOT_INITIALIZED [9816:0620/002407.100276:ERROR:gl_ozone_egl.cc(23)] GLDisplayEGL::Initialize failed. [9816:0620/002407.103936:ERROR:viz_main_impl.cc(186)] Exiting GPU process due to errors during initialization No protocol specified No protocol specified No protocol specified No protocol specified [9823:0620/002407.173086:ERROR:angle_platform_impl.cc(43)] DisplayVkXcb.cpp:59 (initialize): xcb_connect() failed, error 1 ERR: DisplayVkXcb.cpp:59 (initialize): xcb_connect() failed, error 1
解决方案
从日志中的No protocol specified和xcb连接失败错误来看,问题核心是root用户未获取X服务器访问权限,同时Snap沙箱限制也可能加剧问题。可尝试以下步骤解决:
步骤1:允许root访问当前用户的X显示
在普通用户终端执行命令,授予root访问X服务器的权限:xhost +si:localuser:root步骤2:调整启动命令,指定DISPLAY环境变量
使用以下命令启动VSCode,明确传递当前用户的显示参数:sudo DISPLAY=$DISPLAY code --verbose --user-data-dir=/root/.config/Code --no-sandbox步骤3:配置Snap权限(可选)
若上述方法无效,给VSCode的Snap包添加必要的访问权限:sudo snap connect code:home :home sudo snap connect code:x11 :x11步骤4:优先避免以root身份运行VSCode(推荐)
除非必须,不建议用root启动VSCode。可通过修改目标文件/目录的权限,让普通用户拥有读写权限,无需root即可操作。
内容的提问来源于stack exchange,提问作者satyasidhu
相关产品推荐
相关产品推荐

