从 Ubuntu 容器内启动 westton

问题描述

我正在尝试在 docker 容器中启动 Weston。根据我的阅读,这应该是可能的,但它会劫持我的屏幕,我需要强制重启机器才能退出容器。

我有一个用于安装 weston 的 dockerfile。然后我以特权身份运行容器。

FROM ubuntu:latest

RUN sed s/#.deb-src/deb-src/ -i /etc/apt/sources.list
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y \
    cog \
    git \
    weston \
    udev \
    nodejs

RUN mkdir /etc/xdg/weston
RUN mkdir /tmp/xdg
RUN chmod 700 /tmp/xdg

RUN su -c 'echo XDG_RUNTIME_DIR=/tmp/xdg >> /etc/environment'

ENV XDG_RUNTIME_DIR=/tmp/xdg
ENV COG_PLATFORM_FDO_VIEW_FULLSCREEN=1
ENV GST_VAAPI_ALL_DRIVERS=1

workdir app

copY app/start.sh .
copY app/weston.ini .
copY app/app.js .

CMD ["node","app.js"]

app.js 依次根据 Arch wiki documentation 使用 /sys/class/drm 下的可用内容填充 weston.ini 文件

最终的 weston.ini 文件位于 /etc/xdg/weston/weston.ini 下。我在使用 Ubuntu 20.04 的 VirtualBox VM 中工作,因此输出名称和潜在的错误源可能?

[core]
idle-time=0
require-input=false

[shell]
panel-location=""
panel-position=none
locking=false
num-workspaces=1
background-color=0x00000000
background-image=none# 
cursor-size=0
[output]
name=Virtual-1
mode=1920x1440
[output]
name=Virtual-2
mode=1920x1440
[output]
name=Virtual-3
mode=1920x1440
[output]
name=Virtual-4
mode=1920x1440
[output]
name=Virtual-5
mode=1920x1440
[output]
name=Virtual-6
mode=1920x1440
[output]
name=Virtual-7
mode=1920x1440
[output]
name=Virtual-8

设置 weston.ini 后,脚本尝试使用 start.sh 启动 weston 和 cog:

#!/bin/sh
service udev start < /dev/null
weston-launch --tty /dev/tty1 --user root &
sleep 5
cog $1

然而,在此之后我没有进一步,我从 atomicrepaint-flush 得到两个错误

* Starting hotplug events dispatcher systemd-udevd                                                                                                                     [ OK ] 
 * Synthesizing the initial hotplug events (subsystems)...                                                                                                              [ OK ] 
 * Synthesizing the initial hotplug events (devices)...                                                                                                                 [ OK ] 
 * Waiting for /dev to be fully populated...                                                                                                                            [ OK ] 
Date: 2021-06-22 UTC
[14:37:28.475] weston 8.0.0
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: 8.0.0
[14:37:28.475] Command line: /usr/bin/weston
[14:37:28.475] OS: Linux,5.4.0-74-generic,#83-Ubuntu SMP Sat May 8 02:35:39 UTC 2021,x86_64
[14:37:28.475] Using config file '/etc/xdg/weston/weston.ini'
[14:37:28.475] Output repaint window is 7 ms maximum.
[14:37:28.475] Loading module '/usr/lib/x86_64-linux-gnu/libweston-8/drm-backend.so'
[14:37:28.476] initializing drm backend
[14:37:28.476] logind: not running in a systemd session
[14:37:28.476] logind: cannot setup systemd-logind helper (-61),using legacy fallback
[14:37:28.477] using /dev/dri/card0
[14:37:28.477] DRM: supports universal planes
[14:37:28.477] DRM: supports atomic modesetting
[14:37:28.477] DRM: supports picture aspect ratio
[14:37:28.477] Loading module '/usr/lib/x86_64-linux-gnu/libweston-8/gl-renderer.so'
VMware: No 3D enabled (0,Success).
[14:37:28.491] EGL client extensions: EGL_EXT_device_base
               EGL_EXT_device_enumeration EGL_EXT_device_query
               EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
               EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
               EGL_EXT_platform_wayland EGL_KHR_platform_wayland
               EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm
               EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
[14:37:28.492] EGL version: 1.4
[14:37:28.492] EGL vendor: Mesa Project
[14:37:28.492] EGL client APIs: OpenGL OpenGL_ES 
[14:37:28.492] EGL extensions: EGL_ANDROID_blob_cache EGL_EXT_buffer_age
               EGL_EXT_image_dma_buf_import
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
               EGL_KHR_config_attribs EGL_KHR_create_context
               EGL_KHR_create_context_no_error EGL_KHR_fence_sync
               EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace
               EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image
               EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image
               EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap
               EGL_KHR_no_config_context EGL_KHR_reusable_sync
               EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
               EGL_KHR_wait_sync EGL_MESA_configless_context
               EGL_MESA_image_dma_buf_export EGL_MESA_query_driver
[14:37:28.492] warning: disabling render GPU timeline and explicit synchronization due to missing EGL_ANDROID_native_fence_sync extension
[14:37:28.492] EGL_KHR_surfaceless_context available
[14:37:28.496] GL version: OpenGL ES 3.2 Mesa 20.2.6
[14:37:28.496] GLSL version: OpenGL ES GLSL ES 3.20
[14:37:28.496] GL vendor: Mesa/X.org
[14:37:28.496] GL renderer: llvmpipe (LLVM 11.0.0,256 bits)
[14:37:28.497] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
               GL_EXT_texture_compression_rgtc GL_EXT_texture_format_BGRA8888
               GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
               GL_OES_element_index_uint GL_OES_fbo_render_mipmap
               GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
               GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float
               GL_OES_texture_float_linear GL_OES_texture_half_float
               GL_OES_texture_half_float_linear GL_OES_texture_npot
               GL_OES_vertex_half_float GL_EXT_draw_instanced
               GL_EXT_texture_sRGB_decode GL_OES_EGL_image
               GL_OES_depth_texture GL_OES_packed_depth_stencil
               GL_EXT_texture_type_2_10_10_10_REV GL_NV_conditional_render
               GL_OES_get_program_binary GL_APPLE_texture_max_level
               GL_EXT_discard_framebuffer GL_EXT_read_format_bgra
               GL_EXT_frag_depth GL_NV_fbo_color_attachments
               GL_OES_EGL_image_external GL_OES_EGL_sync
               GL_OES_vertex_array_object GL_OES_viewport_array
               GL_ANGLE_texture_compression_dxt3
               GL_ANGLE_texture_compression_dxt5
               GL_EXT_occlusion_query_boolean GL_EXT_robustness
               GL_EXT_texture_rg GL_EXT_unpack_subimage GL_NV_draw_buffers
               GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil
               GL_NV_read_stencil GL_EXT_draw_buffers GL_EXT_map_buffer_range
               GL_KHR_debug GL_KHR_robustness
               GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
               GL_OES_depth_texture_cube_map GL_OES_required_internalformat
               GL_OES_surfaceless_context GL_EXT_color_buffer_float
               GL_EXT_sRGB_write_control GL_EXT_separate_shader_objects
               GL_EXT_shader_group_Vote GL_EXT_shader_implicit_conversions
               GL_EXT_shader_integer_mix GL_EXT_tessellation_point_size
               GL_EXT_tessellation_shader GL_ANDROID_extension_pack_es31a
               GL_EXT_base_instance GL_EXT_compressed_ETC1_RGB8_sub_texture
               GL_EXT_copy_image GL_EXT_draw_buffers_indexed
               GL_EXT_draw_elements_base_vertex GL_EXT_gpu_shader5
               GL_EXT_polygon_offset_clamp GL_EXT_primitive_bounding_Box
               GL_EXT_render_snorm GL_EXT_shader_io_blocks
               GL_EXT_texture_border_clamp GL_EXT_texture_buffer
               GL_EXT_texture_cube_map_array GL_EXT_texture_norm16
               GL_EXT_texture_view GL_KHR_blend_equation_advanced
               GL_KHR_context_flush_control
               GL_KHR_robust_buffer_access_behavior GL_NV_image_formats
               GL_OES_copy_image GL_OES_draw_buffers_indexed
               GL_OES_draw_elements_base_vertex GL_OES_gpu_shader5
               GL_OES_primitive_bounding_Box GL_OES_sample_shading
               GL_OES_sample_variables GL_OES_shader_io_blocks
               GL_OES_shader_multisample_interpolation
               GL_OES_tessellation_point_size GL_OES_tessellation_shader
               GL_OES_texture_border_clamp GL_OES_texture_buffer
               GL_OES_texture_cube_map_array GL_OES_texture_stencil8
               GL_OES_texture_storage_multisample_2d_array GL_OES_texture_view
               GL_EXT_blend_func_extended GL_EXT_buffer_storage
               GL_EXT_float_blend GL_EXT_geometry_point_size
               GL_EXT_geometry_shader GL_KHR_no_error
               GL_KHR_texture_compression_astc_sliced_3d
               GL_OES_EGL_image_external_essl3 GL_OES_geometry_point_size
               GL_OES_geometry_shader GL_OES_shader_image_atomic
               GL_EXT_clip_cull_distance GL_EXT_disjoint_timer_query
               GL_EXT_texture_compression_s3tc_srgb
               GL_MESA_shader_integer_functions GL_EXT_clip_control
               GL_EXT_texture_compression_bptc GL_KHR_parallel_shader_compile
               GL_EXT_EGL_image_storage
               GL_EXT_shader_framebuffer_fetch_non_coherent
               GL_EXT_texture_sRGB_R8 GL_EXT_texture_shadow_lod
               GL_MESA_framebuffer_flip_y GL_EXT_depth_clamp
               GL_EXT_texture_query_lod
[14:37:28.497] GL ES 2 renderer features:
               read-back format: BGRA
               wl_shm sub-image to texture: yes
               EGL Wayland extension: no
[14:37:28.500] event0  - Power Button: is tagged by udev as: Keyboard
[14:37:28.500] event0  - Power Button: device is a keyboard
[14:37:28.501] event1  - Sleep Button: is tagged by udev as: Keyboard
[14:37:28.501] event1  - Sleep Button: device is a keyboard
[14:37:28.502] event3  - Video Bus: is tagged by udev as: Keyboard
[14:37:28.502] event3  - Video Bus: device is a keyboard
[14:37:28.502] event6  - VirtualBox mouse integration: is tagged by udev as: Mouse
[14:37:28.502] event6  - VirtualBox mouse integration: device is a pointer
[14:37:28.569] event5  - VirtualBox USB Tablet: is tagged by udev as: Mouse
[14:37:28.569] event5  - VirtualBox USB Tablet: device is a pointer
[14:37:28.570] event2  - AT Translated Set 2 keyboard: is tagged by udev as: Keyboard
[14:37:28.570] event2  - AT Translated Set 2 keyboard: device is a keyboard
[14:37:28.571] event4  - ImExPS/2 Generic Explorer Mouse: is tagged by udev as: Mouse
[14:37:28.571] event4  - ImExPS/2 Generic Explorer Mouse: device is a pointer
[14:37:28.575] libinput: configuring device "Power Button".
[14:37:28.575] libinput: configuring device "Sleep Button".
[14:37:28.575] libinput: configuring device "Video Bus".
[14:37:28.575] libinput: configuring device "VirtualBox mouse integration".
[14:37:28.575] input device event6 has no enabled output associated (none named),skipping calibration for Now.
[14:37:28.575] libinput: configuring device "VirtualBox USB Tablet".
[14:37:28.575] input device event5 has no enabled output associated (none named),skipping calibration for Now.
[14:37:28.575] libinput: configuring device "AT Translated Set 2 keyboard".
[14:37:28.575] libinput: configuring device "ImExPS/2 Generic Explorer Mouse".
[14:37:28.575] DRM: head 'Virtual-1' found,connector 36 is connected,EDID make 'unkNown',model 'unkNown',serial 'unkNown'
[14:37:28.575] DRM: head 'Virtual-2' found,connector 41 is disconnected.
[14:37:28.575] DRM: head 'Virtual-3' found,connector 46 is disconnected.
[14:37:28.575] DRM: head 'Virtual-4' found,connector 51 is disconnected.
[14:37:28.575] DRM: head 'Virtual-5' found,connector 56 is disconnected.
[14:37:28.575] DRM: head 'Virtual-6' found,connector 61 is disconnected.
[14:37:28.576] DRM: head 'Virtual-7' found,connector 66 is disconnected.
[14:37:28.576] DRM: head 'Virtual-8' found,connector 71 is disconnected.
[14:37:28.576] Registered plugin API 'weston_drm_output_api_v1' of size 24
[14:37:28.576] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 48
[14:37:28.576] Chosen EGL config details: id:  31 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[14:37:28.576] Output Virtual-1 (crtc 38) video modes:
               2560x1335@60.0,preferred,241.5 MHz
               2560x1600@60.0,348.5 MHz
               1920x1440@60.0,current,234.0 MHz
               1856x1392@60.0,218.2 MHz
               1792x1344@60.0,204.8 MHz
               1920x1200@59.9,193.2 MHz
               1600x1200@60.0,162.0 MHz
               1680x1050@60.0,146.2 MHz
               1400x1050@60.0,121.8 MHz
               1280x1024@60.0,108.0 MHz
               1440x900@59.9,106.5 MHz
               1280x960@60.0,108.0 MHz
               1360x768@60.0,85.5 MHz
               1280x800@59.8,83.5 MHz
               1152x864@75.0,108.0 MHz
               1280x768@59.9,79.5 MHz
               1024x768@60.0,65.0 MHz
               800x600@60.3,40.0 MHz
               640x480@59.9,25.2 MHz
               2560x1335@60.0,241.5 MHz
[14:37:28.576] associating input device event0 with output Virtual-1 (none by udev)
[14:37:28.576] associating input device event1 with output Virtual-1 (none by udev)
[14:37:28.576] associating input device event3 with output Virtual-1 (none by udev)
[14:37:28.576] associating input device event6 with output Virtual-1 (none by udev)
[14:37:28.576] associating input device event5 with output Virtual-1 (none by udev)
[14:37:28.576] associating input device event2 with output Virtual-1 (none by udev)
[14:37:28.576] associating input device event4 with output Virtual-1 (none by udev)
[14:37:28.576] Output 'Virtual-1' enabled with head(s) Virtual-1
[14:37:28.576] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               presentation clock: CLOCK_MONOTONIC,id 1
               presentation clock resolution: 0.000000001 s
[14:37:28.577] Loading module '/usr/lib/x86_64-linux-gnu/weston/desktop-shell.so'
[14:37:28.577] launching '/usr/lib/x86_64-linux-gnu/weston-keyboard'
[14:37:28.577] launching '/usr/lib/x86_64-linux-gnu/weston-desktop-shell'
[14:37:28.615] atomic: Couldn't commit new state: Permission denied
[14:37:28.615] repaint-flush Failed: Permission denied
Could not load theme '(null)'
Could not load theme '(null)'
none#: No such file or directory
[14:37:28.671] atomic: Couldn't commit new state: Permission denied
[14:37:28.671] repaint-flush Failed: Permission denied
[14:37:28.785] Error: /usr/lib/x86_64-linux-gnu/weston-desktop-shell apparently cannot run at all.
               Quitting...[14:37:28.785] background surface gone
[14:37:28.786] output for input device event0 removed
[14:37:28.786] output for input device event1 removed
[14:37:28.786] output for input device event3 removed
[14:37:28.786] output for input device event6 removed
[14:37:28.786] output for input device event5 removed
[14:37:28.787] output for input device event2 removed
[14:37:28.787] output for input device event4 removed
[14:37:28.787] event0  - Power Button: device removed
[14:37:28.787] event1  - Sleep Button: device removed
[14:37:28.787] event3  - Video Bus: device removed
[14:37:28.787] event6  - VirtualBox mouse integration: device removed
[14:37:28.787] event5  - VirtualBox USB Tablet: device removed
[14:37:28.787] event2  - AT Translated Set 2 keyboard: device removed
[14:37:28.787] event4  - ImExPS/2 Generic Explorer Mouse: device removed
Failed to restore keyboard mode: Invalid argument
Failed to set KD_TEXT mode on tty: Invalid argument

** (cog:160): WARNING **: 14:37:33.468: Platform setup Failed: Could not open Wayland display

** (cog:160): CRITICAL **: 14:37:33.468: WebKitWebViewBackend* webkit_web_view_backend_new(wpe_view_backend*,GDestroyNotify,gpointer): assertion 'backend' Failed

** (cog:160): ERROR **: 14:37:33.468: Could not instantiate any WPE backend.
Trace/breakpoint trap (core dumped)

在这里遗漏了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)