【转载】X11

【转载】X11

vate_room 37 2023-12-20

文字转自xaoc的学习笔记,再原有文章上稍作补充,感谢大佬的分享

X Window System 的简称,X 后有十一个字母所以 X11

XServer和XClient

X windows,笼统的称为X,是一种位图显示的视窗系统,是建立图形用户界面的标准工具包和协议。X 是协议,不是具体的应用程序。X 为GUI环境提供了基本的框架:在屏幕上绘图、移动视窗以及与鼠标键盘的互动。
现在多用x11版本,X11R6全称为X protocol version 11 release 6。X11使用户可以运行基于X11的应用程序。
X是通过server/client架构来实现工作的。
Xserver:server为图行程序提供显示服务,并接受用户界面输入,把输入事件交给图行程序(可以是windows manager)处理,并能创建、映射、删除视窗以及在视窗中写和绘图。
Xclient:client是一个运行在连接X服务器上的应用程序。它可以发送请求给server,并从server处接受事件。

xming 就是一个 xserver,虚拟机里的gui程序就是 xclient

windows上运行远程linux服务器上的图形界面程序

如果需要运行远程linux服务器上的图形界面程序,光用ssh登录是运行不了的。因为没有图形界面的支持。

linux的图形界面程序是典型的C/S结构,需要一个X server和X client(通常是程序本身)才能正常运行、正常显示结果。

如果本地的操作系统也是linux,且有图形界面,就表示本地已经运行了X server,则远程的图形界面X client会连接到本地的X server,即可运行。
如果本地的操作系统是windows,则需另外运行一个X server程序,然后远程的linux图形X client会连接本地的xserver。

xserver-xorg、xserver-xorg-server 区别

xserver-xorg:该软件包取决于X.org X服务器的服务器和驱动程序的完整套件。它不提供实际服务器本身。xserver-xorg-server:Xorg X server是一个针对多种架构和操作系统的X server,这个包是从 X.org xserver 模块构建的。 ↩

参见 https://packages.debian.org/bullseye/xorg,xorg 里包含了 xserver-xorg

服务器端

debian 安装1

sudo apt install xorg

centos安装

yum install xorg-x11-xauth

改 ssh 设置

sudo nano /etc/ssh/sshd_config

# change
X11Forwarding yes

客户端(xserver)

MobaXterm:带 xserver 的 ssh 工具

VcXsrv :纯 xserver,可以配合 xshell 用

问题解决

Q:要 sudo 的应用没法用1

A:在哪个用户使用x11.就直接用那个用户登入(ssh usr@ip)。千万不要su - user 进用户后再使用x11.
会有权限问题。

Q:$DISPLAY 变量要改吗

A:$DISPLAY 维持默认就行不要动,新建用户$DISPLAY为空,跑一次x11就会自动生成

Q:要 sudo 的应用没法用2

A:

# 1.查看当前连接显示器和屏幕编号,【主机名称:显示器编号.屏幕编号】
$ echo $DISPLAY
localhost:11.0

# 2.获取显示器的认证信息
$ xauth list $DISPLAY
192/unix:11  MIT-MAGIC-COOKIE-1  da1580e522be7282457c83aaf98ba171

# 3.切换到 root 用户环境下
$ su - root

# 4.添加认证信息给 root 用户
$ xauth add 192/unix:11  MIT-MAGIC-COOKIE-1  da1580e522be7282457c83aaf98ba171

# 5.添加显示器信息给 root 用户
$ export DISPLAY="localhost:11.0"


# ex.只 sudo 执行程序,不切换到 root 用户执行程序的话可简化
$ sudo xauth add $(xauth list $DISPLAY)
# 可以进一步添加别名到用户环境变量里
$ nano .bashrc
alias sxa='sudo xauth add $(xauth list $DISPLAY)'
$ source .bashrc

Q:有没有程序可以测试x11

A:1. xclock 2. 红帽系统可以用:xterm

Q:libGL error: failed to load driver: swrast. 报错

A:sudo apt install mesa-utils libgl1-mesa-glx

参考

Footnotes

  1. Xorg 文档 https://wiki.debian.org/Xorg#Installing_Xorg