探究X Window System运行原理与启动过程(Nios.Org)

debianutils : Breaks: x11-common (< 1:7.7+23~) but 1:7.7+19ubuntu7.1 is to be installed 是这样的,我ubuntu20.04安装一个kkFileView-4.0.0,需要插件office,安装完后启动office测试,报错以上。 阅读详情
探究X Window System运行原理与启动过程

  第一次在Debian下装XFree86,startx启动了twm,装了gnome 后startx启动了gnome环境,为什么?装gnome 时修改了什么文件以及X环境是怎么起来的?本来是想搞清这几个文题开始研究这个题目的,没想到还学到了很多别的东西^_^本文主要说明X Window System的基本运行原理,其启动过程,及常见的跨网络运行X Window System。

一) 基本运行原理
  X Window System采用C/S结构,但和我们常见的C/S不同。常见的C/S结构中,称提供服务的一方为server,即服务器端(如HTTP服务,FTP服务等),使用服务的称为client,即客户端。但在X Window System中,client是执行程序的一方,在上面执行各种X程序,而server则是负责显示client运行程序的窗口的一方。
  X Window System的组成可以分为X server,X client,X protocol三部分。X server主要控制输入输出,维护字体,颜色等相关资源。它接受输入设备的输入信息并传递给X client,X client将这些信息处理后所返回的信息,也由X server负责输出到输出设备(即我们所见的显示器)上。X server传递给X client的信息称为Event,主要是键盘鼠标输入和窗口状态的信息。X client传递给X server的信息则称为Request,主要是要求X server建立窗口,更改窗口大小位置或在窗口上绘图输出文字等。X client主要是完成应用程序计算处理的部分,并不接受用户的输入信息,输入信息都是输入给X server,然后由X server以Event的形式传递给X client(这里感觉类似Windows的消息机制,系统接收到用户的输入信息,然后以消息的形式传递给窗口,再由窗口的消息处理过程处理)。X client对收到的Event进行相应的处理后,如果需要输出到屏幕上或更改画面的外观等,则发出Request给X server,由X server负责显示。
  常见的情况是X server与X client都在同一台电脑上运行,但他们也可分别位于网络上不同的电脑上。在X Window System中,X client是与硬件无关的,它并不关心你使用的是什么显卡什么显示器什么键盘鼠标,这些只与X server相关。我们平常安装完XFree86后运行xf86config或xf86cfg进行的配置实际上只是与X server有关,可以说就是配置X server吧,不配置照样可以运行X client程序(如:xeyes -display xserver:0就可以在xserver这台机器上的0号屏幕(屏幕编号displaynumber为0)上显示那对大眼睛了)。
  X protocol就是X server于X client之间通信的协议了。X protocol支持现在常用的网络通信协议。我只能测试TCP/IP,可以看到X server侦听在tcp 6000端口上。那X protocol就是位于运输层以上了,应该属于应用层吧?。
  总结下运行过程吧:
(1) 用户通过鼠标键盘对X server下达操作命令
(2) X server利用Event传递用户操作信息给X client
(3) X client进行程序运算
(4) X client利用Request传回所要显示的结果
(5) X server将结果显示在屏幕上

二) 启动过程
  我们从控制台进入X一般是用startx命令。下面就从startx分析起。首先man startx和man xinit可以看到staratx和xinit的使用方法:
startx [[client] options .....] [-- [server] options ....]
xinit [[client] options ] [-- [server] [display] options]
把上面[client]和[server]分别称为client程序和server程序。man手册里写明其必须以/或者./开头。
下面看看startx这个脚本,中文为我加的注释,这个脚本是安装x-window-system-core后得到的,都是XFree86,不同发行版的linux里该脚本应该大同小异:
代码:
#!/bin/sh
userclientrc=$HOME/.xinitrc #用户的client定义文件
userserverrc=$HOME/.xserverrc #用户的server定义文件
sysclientrc=/usr/X11R6/lib/X11/xinit/xinitrc #系统的client
sysserverrc=/usr/X11R6/lib/X11/xinit/xserverrc #系统的server
defaultclient=/usr/X11R6/bin/xterm #默认的client程序
defaultserver=/usr/X11R6/bin/X #默认的server程序
defaultclientargs="" #下面定义了client和server的参数变量
defaultserverargs=""
clientargs=""
serverargs=""
#如果用户client文件存在则使用用户文件里定义的client,否则使用系统定义的client
if [ -f $userclientrc ]; then
    defaultclientargs=$userclientrc
elif [ -f $sysclientrc ]; then
    defaultclientargs=$sysclientrc
fi
#如果用户server文件存在则使用用户文件里定义的server,否则使用系统定义的server
if [ -f $userserverrc ]; then
    defaultserverargs=$userserverrc
elif [ -f $sysserverrc ]; then
    defaultserverargs=$sysserverrc
fi
#下面循环处理client和server的参数
whoseargs="client"
while [ x"$1" != x ]; do #若第一个参数为空,退出循环
    case "$1" in
    # '' required to prevent cpp from treating "/*" as a C comment.
    /''*|/./''*) #如果$1是/*或者./*形式(xinit程序要求其参数里的client程序和server程序必须以/或./开头,否则会被视为client程序和server程序的参数,见man xinit)
	if [ "$whoseargs" = "client" ]; then #如果当前是在处理client的参数
	    if [ x"$clientargs" = x ]; then #如果clientargs为空,则赋值$1给client变量,也即上面#startx使用方法里的[client]参数
		client="$1"
	    else
		clientargs="$clientargs $1" #否则clientargs赋值为$clientargs $1,即上面#startx使用#方法里的options参数
	    fi
	else #当前在处理server的参数,代码的含义同上
	    if [ x"$serverargs" = x ]; then
		server="$1"
	    else
		serverargs="$serverargs $1"
	    fi
	fi
	;;
    --)#如果$1为--,则表示开始处理server的参数,--为client和server参数的分界
	whoseargs="server"
	;;
    *)
	if [ "$whoseargs" = "client" ]; then  #处理给client程序的参数
	    clientargs="$clientargs $1"
	else #处理给server程序的参数
	    # display must be the FIRST server argument
#屏幕编号必须为第一个给server程序的参数,以:x的形式(x为数字),这可从上面startx和xinit                
的使用方法的区别看出,xinit多了个[display],这里即过滤出这个[display]。试试看这两个命令:
xinit /usr/bin/X11/xeyes -display localhost:1 -- /usr/bin/X11/X :1 -dpi 70&
xinit /usr/bin/X11/xeyes -display localhost:1 -- /usr/bin/X11/X  -dpi 70 :1&
即可看出不把屏幕编号作为第一个server参数的后果
	    if [ x"$serverargs" = x ] && 		 expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then

		display="$1"
	    else  #处理屏幕编号以外的参数
		serverargs="$serverargs $1"
	    fi
	fi
	;;
    esac
    shift #所有参数左移一次
done
# process client arguments
if [ x"$client" = x ]; then  #如果client程序为空
    # if no client arguments either, use rc file instead
    if [ x"$clientargs" = x ]; then  #且clientargs为空,赋值$defaultclientargs给client程序
	client="$defaultclientargs"
    else
	client=$defaultclient   #使用默认的client程序
    fi
fi
# process server arguments处理server参数,同上
if [ x"$server" = x ]; then
    # if no server arguments or display either, use rc file instead
    if [ x"$serverargs" = x -a x"$display" = x ]; then
	server="$defaultserverargs"
    else
	server=$defaultserver
    fi
fi
#…………省略授权代码若干

xinit $client $clientargs -- $server $display $serverargs #把处理过的参数交由xinit程序处理
#…………
  由上面代码可以得出startx主要是置X client和X server所在的位置,并处理相关参数,最后交给xinit处理。可以看出startx 设置X client的位置是先搜寻$HOME/.xinitrc,然后是/etc/X11/xinit/xinitrc;设置X server的位置是先搜寻$HOME/.xserverrc,然后是/etc/X11/xinit/xserverrc。这就解释了我们平常为什么说启动X Window时用户目录下的.xinitrc和.xserverrc文件优先级要高。所以我们用startx命令启动X时,如果用户目录存在.xinitrc和.xserverrc文件,则实际上等价于命令xinit $HOME/.xinitrc -- $HOME/.xserverrc 。如果用户目录不存在那两个文件,则等价于xinit /usr/X11R6/lib/X11/xinit/xinitrc -- /usr/X11R6/lib/X11/xinit/xserver。别的情况类推。
  至于xinit,则根据startx传过来的参数启动X server,成功后根据xinitrc启动X client。
  以上即为X Window System的启动过程,startx只是负责一些参数传递,真正的X启动由xinit实现。实际上可以分为启动X server和启动X client两部分。下面在用户目录下构造.xinitrc(即X client)和.xserverrc(即X server)文件。在.xserverrc里写入/usr/bin/X11/X :1。.xinitrc里写入/usr/bin/X11/xeyes -display localhost:1。这就是最简单的X server+ X client了,只不过把屏幕编号从默认的0改为了1,这里X server即是/usr/bin/X11/X 程序,X client即是/usr/bin/X11/xeyes 程序。
  总结下单机用startx启动过程吧:
(1) startx置X client和X server的位置,处理参数并调用xinit
(2) xinit根据传过来的参数启动X server,成功后呼叫X client
(3) 根据xinitrc设置相关资源,启动窗口管理器,输入法和其他应用程序等X client程序。

  但还未搞清楚gnome是怎么起来的!gnome当然属于X client了,看上面启动过程第(3)步。
  这里分两种情况看吧,第一种是用系统的xinitrc文件。看/etc/X11/xinit/xinitrc文件(我的sarge装x-window-system-core和gnome-core),里面只包含了. /etc/X11/Xsession一句话。接着看/etc/X11/Xsession这个脚本,只看关键部分吧。最后面有:
代码:
SESSIONFILES=$(run_parts $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
  for SESSIONFILE in $SESSIONFILES; do
    . $SESSIONFILE
  done
fi
exit 0[code]
接着看run_parts(),位于本文件中间:[code]
run_parts () {
  # until run-parts --noexec is implemented
  if [ -z "$1" ]; then
    internal_errormsg "run_parts() called without an argument."
  fi
  if [ ! -d "$1" ]; then
    internal_errormsg "run_parts() called, but /"$1/" does not exist or is" /
                      "not a directory."
  fi
  for F in $(ls $1); do
    if expr "$F" : '[[:alnum:]_-]/+$' > /dev/null 2>&1; then
      if [ -f "$1/$F" ]; then
        echo "$1/$F"
      fi
    fi
  done
}
大概意思就是run_parts () 把$SYSSESSIONDIR目录下的文件名取出来赋值给$SESSIONFILES,然后循环运行该目录下的文件。看看该目录,即/etc/X11/Xsession.d目录,可以看到几个以数字开头的文件,实际上这些数值就表示了这几个文件被运行的优先级,数字小的优先级高,因为在上面的run_parts () 里是用ls命令显示该目录下的文件,所以前面数字小的被ls时显示在前面,所以被
代码:
for SESSIONFILE in $SESSIONFILES; do
    . $SESSIONFILE
  done
这个for循环执行时也先被执行。看到/etc/X11/Xsession.d目录下有个55gnome-session_gnomerc文件,里面提到了STARTUP变量。然后运行:
xdkui@Debian:/etc/X11/Xsession.d$ grep STARTUP *
看到50xfree86-common_determine-startup文件。里面有
代码:
if [ -z "$STARTUP" ]; then
  if [ -x /usr/bin/x-session-manager ]; then
    STARTUP=x-session-manager
  elif [ -x /usr/bin/x-window-manager ]; then
    STARTUP=x-window-manager
  elif [ -x /usr/bin/x-terminal-emulator ]; then
    STARTUP=x-terminal-emulator
  fi
fi
即设置启动程序,实际上设置STARTUP变量,如果以上程序都没有找到,则会报错退出,即X环境没有被启动。再运行
xdkui@Debian:/etc/X11/Xsession.d$ grep STARTUP *
看到优先级最低也即最后被运行的99xfree86-common_start文件,里面只有一句话:
exec $STARTUP
  好了,到这里就启动我们的X client了,终于完了^_^。总结下这第一种方式的启动过程,简单的说就是依次顺序查找/usr/bin/x-session-manager ,x-window-manager,/usr/bin/x-terminal-emulator 这三个文件。如果存在则启动之,也即X client。如果三个都不存在则报错退出了。看/usr/bin/x-session-manager文件可以看到是个符号连接,最终连接到/usr/bin/gnome-session,也就是gnome 了。至于我们在gnome 启动时可能会设置启动输入法等程序,那就归gnome-session管了,也就不再分析了。可以试着把/usr/bin/x-session-manager 改为指向xfce4-session(如果安装了的话) ,再startx就会启动xfce4环境了。大概RedHat的switchdesk工具就是改这个连接实现的吧?。或者删掉/usr/bin/x-session-manager ,再startx,只启动了/usr/bin/x-window-manager 所指向的window manager了吧,我这里是blackbox。

  下面看第二种情况,即用户目录的xinitrc文件$HOME/.xinitrc。对比hiweed-debian-desktop_0.55_i386,存在$HOME/.xinitrc文件,在里面有exec xfce4-session。故其X client可以说最主要的x-session-manger是从$HOME/.xinitrc启动的。也就不会经过上面第一种情况的执行过程了。

  终于把gnome(或者说x-session-manger)的启动过程弄明白了,下面说点别的吧。xinit程序同时启动X server和X client,这在单机上还可。要是位于网络上的两台电脑分别是client和server,则xinit就无能为力了。这时就得靠纯“手工”来启动X了。下面简单的“手工”启动X server和X client:在CUI模式下运行命令:
xdkui@Debian:~$X :1&
看到了一个灰色的全屏幕和一个鼠标指针,这就是X server了,其屏幕编号为1。下面构造X client,按Ctrl+Alt+F1回到刚才的CUI(Ctrl+Alt+F7对应本机的第一个启动的X server,Ctrl+Alt+F8对应第二个,有人说F7对应屏幕编号为0的X server实际上是不对的,如果第一个启动的屏幕编号为1,第二个启动的编号为0,则F7对应1屏幕,F8对应0屏幕),运行命令:xdkui@Debian:~$xeyes -display localhost:1&
然后按Ctrl+Alt+F7,看到我们的X client也就是xeyes了吧。再回到CUI,运行
xdkui@Debian:~$X&
开启一个屏幕编号0的X server,CUI下再运行
xdkui@Debian:~$xterm&
这时Ctrl+Alt+F7对应屏幕编号1;而F8对应屏幕编号0,且其X client为xterm。先退出上面的两个X server,下面复杂点手动启动我们的gnome吧,首先
xdkui@Debian:~$X&
然后
xdkui@Debian:~$gnome-session
看到的就和用startx 启动的X一样了,这时X server是X这个程序,X client是gnome-session及其启动的窗口管理器等程序。看到这里感觉xinit用处并不大(??不知是否正确),简单的脚本就可以实现。本来想把xinit反汇编了分析下,可懒得搞了^_^这是位于本机的情况,对于X server和X client位于不同主机的情况见下面本文第三部分。
  个人感觉对于X Window System,搞清楚X server与X client关系很重要。一般X server很简单,就是/usr/bin/X11/X程序;X client则花样繁多,从高级的CDE,GNOME,KDE,到低级一点的只有twm,Window Maker,blackbox等窗口管理器,再到最简陋的只有xterm,rxvt,xeyes等单个x程序。正是由于X client的各种搭配,使得我们的X Window System看起来多样化。这可能也是X Window System最大的卖点之一吧 ^_^

三) 跨网络运行X Window System
  一般用来做服务器的系统(Linux,FreeBSD,Solaris等等)都不会装X server,甚至很多都没有显示器。这样可以在这些系统里安装简单的X client,以GUI的方式远程显示在管理员们所坐的X server里。我们实验室用FreeBSD做网关,提供WWW,FTP服务,一般在管理员的本地机器起个X server,然后ssh或telnet上网关运行X client程序显示在本地显示器上,当然,也可用XDMCP(X Display Manager Control Protocol),man xsession里提到/etc/X11/Xsession一般被startx(我的/etc/X11/xinit/xinitrc里调用Xsession脚本)或display manager调用,但有的display manager只调用Xsession而不是xinitrc,故为了startx和display manager两种方式下都可正常启动GUI,最好把X client启动的程序放在Xsession文件里。远程运行X client程序需要设置DISPLAY环境变量,设置为 主机名称:屏幕编号(如192.168.1.2:0,则表示X server是192.168.1.2这台机器上的0号屏幕);或是给X client程序加个—display参数。由于条件限制,只测试了位于TCP/IP网络环境,X server为192.168.1.2,X client为192.168.1.1。
1) Windows系统做X server
a) 用ssh或telnet方式
Windows下面的X server软件有很多种,我这里使用X-win32。在Windows里运行X-win32程序,则相当于本地机器是个X server。远程登录上Debian(我这里是用VMware仿真网络环境,直接进虚拟机即可^_^),运行:
xdkui@xclient:~$export DISPLAY=192.168.1.2:0
xdkui@xclient:~$xterm&
这时即在Windows里的X server里看到了xterm了,至于X client还运行什么程序就看你的需要了,文件管理器阿,资源查看器等。当然,这里X-win32要设置好授权,好像默认是禁止接入控制,即任何X client都可使用这个X server。
b) XDMCP方式
常见的Display Manager有xdm,gdm,kdm等。我这里使用的是gdm。需要修改gdm的配置文件/etc/X11/gdm/gdm.conf,修改[xdmcp]段的Enable=true,使得可以远程登录,在X client运行gdm。
在X-win32里建一个XDMCP的session,查询方式,填入IP为运行gdm的机器地址。连接,即可看到登录界面,下面的就不用说了,享受吧
2) Linux与Linux互联
a) ssh或telnet方式
在linux本地起个X server,需要注意授权问题,建立文件/etc/X0.hosts,填入X client的IP192.168.1.1,其中X0.hosts表示本地第0个屏幕允许连接的X client地址,建立X1.hosts文件则是本地第1个屏幕允许连接的X client地址,以此类推,man xserver里有。运行
xdkui@xserver:~$X&
运行该程序时别加-nolisten参数,否则不会在网络上侦听。
这个时候Ctrl+Alt+F7是X server,返回Ctrl+Alt+F1还可以ssh上X client机器上。
然后登录上X client,运行
xdkui@xclient:~$xterm –display 192.168.1.2:0
即可在本地的X server里看到xterm了,如果有的话,还可把gnome-session也显示在本地来。同样可以在linux里的VMware里做这个测试,需要用点手腕了^_^见下
b) XDMCP方式
在我们的X client里运行gdm(别忘了修改gdm.conf),然后在本地X server的CUI下面运行X -query 192.168.1.1(X client开gdm机器的地址)。可以看到登录界面了吧。
我是在linux里的VMware里做的测试,说说所用的手腕吧。在Ctrl+Alt+F1的CUI下正常运行startx&启动GUI,这时Ctrl+Alt+F7即为我的X server,X client启动的gnome,然后在这里运行VMware打开Debian虚拟机,并运行gdm。然后回到Ctrl+Alt+F1,运行X :1 -query 192.168.1.1。看到登录界面了吧。这时Ctrl+Alt+F7为我的0号屏幕,里面运行了虚拟机。Ctrl+Alt+F8为1号屏幕,在远程GUI登录X client。相当于我在本地起了两个X server。

  X Window System设计的真是相当神奇,使用方法更是眼花缭乱。佩服………

PS:这篇文章参考了人民邮电出版的《X Window彻底研究》,有小部分是里面的原话。有兴趣可以看看,不过里面只有2~3章值得一看,不到一个小时即可翻完,但确有助于理解X Window System。打了这么多字,希望对想了解的朋友有帮助,不然可就辛苦我了阿小弟水平有限,如有错误之处,还请指正^_^
探究X Window System运行原理启动过程 探究X Window System运行原理启动过程  第一次在Debian下装XFree86,startx启动了twm,装了gnome 后startx启动了gnome环境,为什么?装gnome 时修改了什么文件以及X环境是怎么起来的?本来是想搞清这几个文题开始研究这个题目的,没想到还学到了很多别的东西^_^本文主要说明X Window System的基本运行原理,其启动过程,及常见的跨网络运行X 阅读详情

相关推荐

记录:linux桌面管理基础-X11协议(X window system)

X11是X协议,版本号为11。X协议是专门被设计为linux桌面管理服务的,而linux桌面环境不像windows那样作为系统内核的一部分,作为一个普通程序运行在用户态上。该协议的设计初衷是为了linux的图形界面满足跨平台、跨网络、具体硬件剥离、同时被多个用户使用的需求,因此该协议被设计成客户端-服务器的模式,即由xserver和xclient组成,xserver和xclient通过网络架构来进行图形接口的通信和执行绘制

Hunter_pcx的博客 6693

linux图形窗口这家子(xwindows x11 xserver xclient窗口管理器 xdm xwm kde QT GTK+)

前几天写了个帖子,介绍在linux桌面系统卡死的时候,"刷新"桌面,后台机理就是这个了,我整理了一下希望对你有用 linux内核不包含界面,一般发行版使用X 窗口系统(X Window System)简称X或X11,当前最新版本是X11R7,分为硬件级(驱动级)和应用程序级组件,分别称为X Server和X Client,使用X协议(XDMCP)进行通信,是一种典型的C/S结构窗口系统设计. 其设...

u014305876的博客 1920

启动你的X Window System

这是一篇有关xdm/gdm/kdm的一些讨论,我看了一些文献(有些文献名和作者名都不记得了,请原谅),同时也结合自己的一些经验,如果有些地方说得不对,请见量。有关X Winow System的一些概念,你还是找相关的文献来看吧,我的目标就是讨论下如何设置和启动你的X Windows System。首先你要懂得如何配置你的X配置的文件/etc/X11/XF86Config(or XF86Config

不抽烟的龙 1669

深入了解Linux的守护进程(daemons)

 Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(dae mons)来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。linux系统有很多守护进

蝴蝶兰的专栏 1011

Linux图形界面详解以及替换桌面程序方法[持续更新]

说明:本文章主要说明Linux图形界面的启动流程,以及使用自己的图形化应用替换桌面程序的方法,类似安卓启动启动Launcher,使用自己程序替换Launcher一样,实现应用独占系统,或者设计自己的桌面程序。

雨客的专栏 1726

如何远程访问linux的x11服务,Linux服务器下远程报错”已拒绝X11转移申请”的解决方法...

我们在使用ssh管理Linux服务器的时候常常会出现‘WARNING! The remote SSH server rejected X11 forwarding request. Last login: Tue Dec 6 13:55:31 2016 from 1***.***’这种字样,这是因为X11 forwarding是依赖“xorg-x11-xauth”软件包,所以必须先安装“xorg-...

weixin_36268390的博客 2955

X Window System介绍

1、概述     X Window System是1984年由麻省理工学院(MIT)和DEC公司共同开发研究的,是运行在UNIX系统上的视窗系统。严格地说,X Window System并不是一个软件,而是一个协议,这个协议定义一个系统成品所必需具备的功能(就如同TCP/IP、DECnet或IBM的SNA,这些也都是协议,定义软件所应具备的功能)。能满足此协议及符合X协会其他规范的系统便可称为X

Jack Zhou的专栏 1万+

Unix和Linux桌面的背后:理解Xwindow的工作原理

https://blog.csdn.net/yuyin86/article/details/7872892?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_wei

fangyan的专栏 401

# 2021-01-19 #「X Window System」- 基本概念(学习笔记)

X Window System,是用于位图显示的窗口系统,是在 UNIX 环境中经常使用的 Client-Server 显示协议。而我们常说的 X、X11 只是简写而已。 X 为图形界面环境提供基本框架:在显示设备上,绘制和移动窗口;鼠标、键盘进行交互。但是 X 不负责用户界面,因此不同桌面环境之间的差异非常大。 该部分笔记:主要是 X Window System 的相关内容,之所以学习这些内容是为了了解它工作原理、实现某些操作。 软件架构 架构概览 X Window System/Softw.

k4nz 373

Linux XWindow原理介绍。

XWindow 就是我们常常看到的图形化界面。如下所示:1.在Unix-like上面的图形化用户接口(GUI)被称为X或者是X11.2.X11是一个软件而不是一个操作系统。3.X11是利用网络架构来进行图形化用户接口的执行和绘制。4.现在大部分的Linux发行版大多数X都是由Xorg基金会所提供的X11。

weixin_53064820的博客 2410

Linux X Window System运行原理启动过程

本文主要说明X Window System的基本运行原理,其启动过程,及常见的跨网络运行X Window System。 一) 基本运行原理      X Window System采用C/S结构,但和我们常见的C/S不同。常见的C/S结构中,称提供服务的一方为server,即服务器端(如HTTP服务,FTP服务 等),使用服务的称为client,即客户端。但在X Window System中,...

skyhawk0的专栏 6037

linux X系统 X窗口系统(X Window System

Xorg是一个开放源代码的跨平台的图形系统,它是UNIX和Linux的主要图形系统,它的前身是XFree86。它支持多种输入设备,如键盘,鼠标,触摸屏,手写板,视觉辅助设备,扫描仪等。Xorg的主要功能是提供图形界面,它能够支持多种图形硬件,包括显卡,控制器,扩展卡,显示器,绘图板,扫描仪,多种输入设备,以及其他类型的外围设备。这样,开发人员就可以使用Xorg的驱动程序框架,编写可以支持新的图形硬件的驱动程序,从而使新的图形硬件能够Xorg的其他组件一起工作,从而提供更好的图形显示效果。

a1058926697的博客 6461

X-Window学习

Screen就是一个屏幕或者设备Display可以包含多个Screen,一般是指多个Screen和一个鼠标一个键盘的集合。

柳依依 715

X-Window System入门

1. X Window System简介  甚麽是X Window System?  X Window System是一套为UNIX或是UNIX like的作业系统提供GUI(Graphical User Interface)图形操作介面的程式,X Window System独具的网路通透性(Network Transparency),使它成为UNIX平台上的工业标准,现在UNIX的工作站或大

在线笔记 3876

从文字模式 启动到 图形模式

       启动X主要有两种方法:一是Display Manager,如XDM、GDM、KDM,此种方法通过图形界面登录;另一种是通过xinit,此种方法适用于字符界面登录。我们常用于登录X的startx命令也是通过传递参数给xinit来启动X的,也就是说,最终启动X的是xinit。startx只是一个bash脚本。下面主要分析xinit一下初始化X的过程:  首先来看一看xinit命令的用

930

服务器X11图形界面转发配置——全网最简教程

本文主要适用linux。 1. 预备工作首先,服务端需要安装:sudo apt-get install openssh-server客户端安装:sudo apt-get install openssh-client2. 服务端配置服务端更改文件“/etc/ssh/sshd_config”里的“X11Forwarding ”为“yes”,并添加“X11UseLocalhost no”: 然后重启ss

佐井白白的微笑 2万+
上一篇: Windows自动启动程序的十大藏身之所
下一篇: 正则表达式使用详解 (php,perl,unix,javascript) (有点意思)
freexploit
博客等级 码龄22年 315粉丝 778原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值