ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:23.53KB ,
资源ID:7231231      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7231231.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(xinit启动X Window System过程.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

xinit启动X Window System过程.docx

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

2、 server程序。上面client和server分别称为X client程序和X server程序。它们代表的是程序的具体路径,其必须以/或者./开头。默认情况下,当我们CLI下执行不带任何参数的xinit命令时,xinit会在目录下搜索.xinitrc文件当作X client来执行,也就是说,你可以在其中设置进入X时便运行的X client程序,具体的设置见后。根据$HOME/.xinitrc的有无,xinit会有不同的运行情况。1.若存在$HOME/.xinitrc,相当于执行:xinit $HOME/.xinitrc - /usr/bin/X2.若不存在$HOME/.xinitrc,相

3、当于执行:xinit xterm - /usr/bin/X如果不存在$HOME/.xinitrc或是未正确设置$HOME/.xinitrc都不会进入Desktop Environment(桌面环境,如GNOME、KDE等),呈现在我们面前的只有一个xterm和X状的鼠标。那么怎样才能进入Desktop Environment呢?让我们来分析一下startx命令的运行情况吧。 通过分析startx命令文件的内容,得知startx主要是置X client和X server所在的位置,并处理相关参数,最后交给xinit处理。可以看出startx 设置X client的位置是先搜寻$HOME/.xin

4、itrc,然后是/etc/X11/xinit/xinitrc;设置X server的位置是先搜寻$HOME/.xserverrc,然后是/etc/X11/xinit/xserverrc。即相当于运行了以下命令:xinit /etc/X11/xinit/xinitrc - /etc/X11/xinit/xserverrc进一步分析:xinit /etc/X11/Xsession - /usr/bin/X11/X -dpi 100Xsessin是一个重要的文件,为什么要怎么说呢?因为不管是通过Display Manager登录X,还是通过xinit(startx)登录X,它都会被执行。Xsessi

5、on是一个全局文件。Xsession文件中以下内容:/usr/bin/x-session-manager/*启动Desktop Environment*/usr/bin/x-window-manager/*启动Window Manager*/usr/bin/x-terminal-emulator/*启动Terminal*/这就是为什么我们可以用一个startx命令直接进入X的原因所在了。如果我们要进入GNOME我们只需要将/usr/bin/x-session-manager所链接的目标文件改为/usr/bin/gnome-session,然后把/usr/bin/x-window-manager

6、所链接的目标文件改为/usr/bin/metacity,把/usr/bin/x-terminal-emulator所链接的目标文件改为/usr/bin/gnome-terminal就可以了弄清楚了以上的内容,我们就可以修改$HOME/.xinitrc,通过xinit来启动Desktop Environment了,下面以启动GNOME为例:首先在$HOME下创建.xinitrc文件,然后添加以下内容:gnome-session&metacity/*除了最后一个命令在前台运行以外,其他的都应运行在后台*/保存后,你就可以在终端通过执行xinit来启动GNOME了,是不是很酷呢?利用xinit启动X

7、的时候应注意,如果第一个运行的X client结束,xinit将自动结束X,返回到CLI。下面以具体的例子来说明:当不存在$HOME/.xinitrc时,执行xinit metacity,将会出现一个可移动的xterm(无$HOME/.xinitrc,xinit默认启动xterm),当然也有一个Xserver。关闭xterm将退出X,因为xterm是第一个运行的X client。当存在$HOME/.xinitrc且包含如下内容:xeyes&metacity&xterm执行xinit将会出现一个xterm和一个xeyes,关闭xterm将退出X,因为其他的X client(xeyes、metac

8、ity)都是运行在后台的,而xterm是前台运行的第一个X client。同理,我们也可以通过以下的命令来启动Desktop Environment:xinit gdmxinit /etc/X11/Xsession=有关X Winow System的一些概念,你还是找相关的文献来看吧,我的目标就是讨论下如何设置和启动你的X Windows System。首先你要懂得如何配置你的X配置的文件/etc/X11/XF86Config(or XF86Config-4),这个文件配置和它的配置工具不在讨论的行列中。好多天前,我看了xdm/gdm/kdm这方面的东西,也看了些它们的man页,当然也找了点相

9、关的资料来look look,虽然我还不很了解,但还是知道了一些,拿出来献丑了。呵呵,我的原则就是:好东西大家一起分享。1、我们先不讨论xdm/gdm/kdm这些东西。而是先看看启动X最简直的方式。首先来认识两个重要的文件,一个是X视窗启动文件-xinitrc,另外一个就是X视窗资源文件-Xdefaults.1X视窗启动文件-xinitrc事实上,我们一般执行startx来启动X Window System,其中startx就是xinit的前端界面front-end.倘若我们以startx或xinit启动X,这指令会启动X server并且会执行$HOME/.xinitrc文件内的所设置的指令

10、。倘若 $HOME没有这个文件,则系统会使用内定的的配置文件/usr/XR116/lib/X11/xinit/xinitrc。而事实上xinitrc文件一般只包含有启动X时所要执行clients的shell script,里面定义一些指令和shell script,让X启动时,可以遵照里面的shell script来启动必要的应用程序。例如我的简单而又实用的的$HOME/.xinitrc的内容如下:代码:# more .xinitrcLANG=zh_CN.GB2312LC_ALL=zh_CN.GB2312LC_CTYPE=zh_CN.GB2312KDE_LANG=zh_CN.GB2312exp

11、ort LANG LC_ALL LC_CTYPE KDE_LANGexport XMODIFIERS=im=Chinput/usr/bin/chinput &exec kde3killall chinput对于更为详细的$HOME/.xinitrc,你可以找更专业的书籍来看,我的目标是越简单越好。前面的大家应该都比较清楚吧。先设一些环境变量,再设下一些输入法(我用的是智能五笔), 接下来是启动视窗管理程序kde3,注意了:kde3用shell script的exec描述所执行的,这造成执行xinit程序的shell会被执行kde3的shell所取代。所以一旦kde3程序结束,就会跳出 shel

12、l,相对地,xinit将会跟着结束,X Server将关闭。这正是X Window Manager执行的方式。必须确定在.xinitrc中最后执行的是指令是以exec为开头的的命令执行X Windows Manager,而且不应该加上&放在一些背景执行,不然,那些指令也毫无意义。后面的killall chinput是告诉要结束chinput,不然极有可能会因为chinput的原因,会造成一些问题。这是最为简单的桌面设置。倘若你还要启动更多的程序和设置,都可以在前面加的。只要你在你的$HOME/.xinitrc文件中稍加增加便可做到,但要记住加在X Window Manager执行段落之前。2X

13、视窗资源文件-Xdefaults在X的文献中,resources有两种意义。第一种是指被server管理或建立桌面应用程序使用的东西,例如:视窗、光标、字体等均属于这种意义。另外的一种又是指一种可以传递预设置值、参数和其它值给应用程序的方法,比如,可以定义视窗的大小、前景颜色、显示字体、快捷键等。而在X Window System的操作应用过程中,泛指的resources的意义也局限于第二种,主要是采用resources功能。在X Window System 的资源文件Xdefaults中,主要是设置合适自己喜欢的应用程序的操作操控环境或界面。一般会执行X后,会自动读取$ HOME/.Xdef

14、aults.具体的内容我在这里不给出,因为这个东西我感觉还不是很重要。以后有时间的话再详细写写这个东西。呵呵,在xterm视窗中按有一个小技巧:你按住Ctrl+鼠标右键会跳出一些字体等设置的东西,按住Ctrl+鼠标左键会跳出显示xterm应用程序的主菜单。另外,除了.Xdefaults资源可用处,还有一些应用程序会自己产生的的资源文件,一般放在/usr /XR116/lib/X11/app-defaults中,并以这些程序名称的大写文件名命名。比如,Xclok时钟程序的资源文件就是Xclock。其它的你自己看一下就会明白了。你可以直接修改这些应用程序的的资源文件,作为系统内定的应用程序的样式。

15、不一定都要非得修改. Xdefaults来完成。因为.Xdefaults通常是个人爱好而使用环境来设置的东西。个人的一些小经验,不知道对否?如果$HOME中存在.xsession这个文件而没有.xinitrc这个文件是,你用startx启动也会读取.xsession,但当存在这两个文件是,就会读取.xsinitrc这个文件。可能是它优先的原因吧(知道的出来说说吧)。2、启动我们的X Window SystemX Window System的启动方法很多,最学常用的还是上面得到的startx,除此外,还要先执行X启动X视窗系统,或者执行xinit启动X。现在的发行版本一般都是以xdm(X Dis

16、play Manager)/gdm(GNOME Display Manager)/kdm(KDE Display Manager)启动X,让Linux系统一启动就立即进入X Window System,并以图形模式让用用户来登录(呵呵,像Ms Windows吧,这样启动起来)。倘若你想退出X Window Manager,你可以xterm中执行init 3离开。1以xinit/startx来启动X这是一般的方法:我在Debain也是经常以这种方式来启动X的。就是执行/usr/XR116/bin/startx.事实上这个方法就是与直接执行 /usr/X11R6/bin/xinit或是/usr/X

17、11R6/bin/X是无异的。差别在于xinit和X并不会去执行读取读资源文件而去执行X Window Manager,所以一般的情况你得到的X视窗系统是个非常简朴的的一个X型鼠标指针与简朴的xterm而已。但xinit就是最标准的X启动方法,估计是绝大部分的系统X Window System都会支持。它是X Window System核心的程序,而startx仅是个启动xinit的shell script而已,里面同样定义执行xinit命令以启动X视窗系统。当一般执行startx时,X启动的过程大约就是这些东西了:1)xinit启动X server程序;2)X server会寻找$HOME/

18、.xinintrc文件,有就执行它,没有就会转到/etc/X11/xinit/xinitrc读取系统内定的启动文件。3) 接着就会读取$HOME/.Xdefaults,倘若没有,就会转到/usr/X11/xinit/Xcilents。从文件名 Xclients看来,这个是用来设置时执行哪些X应用的程序的文件。性质和xinitrc类似,同样是个shell script。但要注意的是:.Xdefaults是的权限具有755,即可执行。4)在正常的情况下,$HOME/.xinintrc是用来指派可以让X Window System正常运行的应用程序了。而.Xdefaults则被建议用来载入X资源设置

19、和应用应用,以适合每个用户本身的喜爱程度而已。5)X server建立一个属于它自己的根视窗(Root windows),并设置视窗的背景与执行所指定的应用程序,显示一个大的X光标,便完成启动了。6)在X server执行的期间,它一直控制着你的鼠标的键盘。这就是你能在屏幕上移动光标的原因,但由于目前还没有任何X client程序要求键盘和鼠标的输入。所以X server只是和鼠标一直移动而已。而其它的键盘或鼠标输入虽然都经过X server处理,但均被视为无作用(因为没有什么x clinet程序所接收)。这也是X启动的初期,按键盘或鼠标都没有反应的原因。但如果你是送信号能X server而X

20、 client的话,这下就有会作用了。比如:Ctrl+Alt+Backspace即是送给X Server的中断信号,当X启动到中途或者是执行时,只要按下这组合键,便会立即结束X server,跳回到command prompt terminal的状态。7)接下来,在xinitrc唤起X server后,xinit会启动xterm程序。呵呵,xterm就是X Window terminal的缩写吧。它对X server而言是一个X Clietn程序而已。要求X server建立一个视窗,而且会行告知X server在这个视窗中的鼠标和键盘的输入状态(Event),因而启动xterm时便会视窗执行

21、一个shell,内定的就是bash。当指标被移至视窗之内时,xterm便准备接受输入。键盘输入会被关到xterm中的shell就如同真的终端机输入一般。而从shell本身或其副程序的输出则借着 xterm显示在视窗上,xterm也接受输入,便得你能设置不同的程序操作参数和进行文本的一些操作,比如copy或paste.对于这些操作,你可以通过在xterm中执行ps auxw命令来观察到系统执行这些命令的详细步骤。2以xdm/gdm来启动你的X。上面说到了以startx来启动你的X,也可通过xdm/gdm来启动你的X来启动你的X,这正是其它一些发行版本的采用的方式。比如 Redhat是gdm,而M

22、andrake用kdm。一般的情况,如果你要用调整你系统的run-level。比如修改你的/etc/inittab,把 id:3:initdefault中的3改为5。当系统以xdm/gdm来启动X Windows System。大约的步骤就是这些了:1)执行/etc/X11/xdm/Xserver启动X出现console登录的界面(是执行/etc/X11/xdm/GiveConsole&TakeConsole所产生的)2) 执行/etc/X11/xdm/Xsessions来启动xdm或者是gdm。如果启动的是xdm,则装入用户家目录上的配置文件,. xsession和.Xclients。如果是

23、gdm,则装载入/etc/X11/gdm/Sesseion与.Xclients。到此为止,就会出现X 视窗的登录的界面选项。3)gdm则会检查/etc/X11/gdm/Session目录的Session操作。比如 Fvwm,Wmaker,Default, Failsafe,Gnome,Kde与Default等。并将显示给用户选择进入那个那个X Window Manager。其实这些Sessions都是Shell Script file。如果你选择Kde,就进入KDE DeskTop environment,选择Gnome就会进入GNOME DeskTop environment了。4)用户如果

24、选择是的 Gnome,在输入用户名和password后,gdm GNOME Session就会找gnomerc script,$HOME/.gnomerc,如果没有这个文件,就会读会系统文件内定的GNOME resource file:/etc/X11/gdm/gnomerc,并且启动/usr/bin/gnome-session.这就完成了一个 xdm/gdm的过程。但细心的人会发现,startx会读取$HOME/.xinitrc,而xdm/gdm为什么不会读取这个呢,它又是如何设置根视窗口背景及你的logo和X Window Manager的呢。其中的原因是因为xdm/gdm改用了/etc/

25、X11/xdm/Setup_0来设置的,例如我的Mandrake90的内容大致如下:代码:# more Xsetup_0#!/bin/sh# (C) MandrakeSoft# Chmouel Boudjnah# $Id: Xsetup_0,v 1.8 2001/09/19 18:49:29 flepied Exp $if -f /etc/profile.d/kde.sh ;then. /etc/profile.d/kde.shfi -z $KDEDIR & KDEDIR=/usrif -x $KDEDIR/bin/kdmdesktop ;then$KDEDIR/bin/kdmdesktope

26、lse/usr/X11R6/bin/xsetroot -solid #21449C/usr/X11R6/bin/xconsole -geometry 480x130-0-0 -daemon -notify -verbose -fn fixed -exitOnFailfiif -x /etc/X11/xinit/fixkeyboard ; then/etc/X11/xinit/fixkeyboard5)X server建立一个属于它自己的根视窗(Root windows),并设置视窗的背景与执行所指定的应用程序,显示一个大的X光标,便完成启动了。6)在X server执行的期间,它一直控制着你的

27、鼠标的键盘。这就是你能在屏幕上移动光标的原因,但由于目前还没有任何X client程序要求键盘和鼠标的输入。所以X server只是和鼠标一直移动而已。而其它的键盘或鼠标输入虽然都经过X server处理,但均被视为无作用(因为没有什么x clinet程序所接收)。这也是X启动的初期,按键盘或鼠标都没有反应的原因。但如果你是送信号能X server而X client的话,这下就有会作用了。比如:Ctrl+Alt+Backspace即是送给X Server的中断信号,当X启动到中途或者是执行时,只要按下这组合键,便会立即结束X server,跳回到command prompt terminal的

28、状态。7)接下来,在xinitrc唤起X server后,xinit会启动xterm程序。呵呵,xterm就是X Window terminal的缩写吧。它对X server而言是一个X Clietn程序而已。要求X server建立一个视窗,而且会行告知X server在这个视窗中的鼠标和键盘的输入状态(Event),因而启动xterm时便会视窗执行一个shell,内定的就是bash。当指标被移至视窗之内时,xterm便准备接受输入。键盘输入会被关到xterm中的shell就如同真的终端机输入一般。而从shell本身或其副程序的输出则借着 xterm显示在视窗上,xterm也接受输入,便得你

29、能设置不同的程序操作参数和进行文本的一些操作,比如copy或paste.对于这些操作,你可以通过在xterm中执行ps auxw命令来观察到系统执行这些命令的详细步骤。2以xdm/gdm来启动你的X。上面说到了以startx来启动你的X,也可通过xdm/gdm来启动你的X来启动你的X,这正是其它一些发行版本的采用的方式。比如 Redhat是gdm,而Mandrake用kdm。一般的情况,如果你要用调整你系统的run-level。比如修改你的/etc/inittab,把 id:3:initdefault中的3改为5。当系统以xdm/gdm来启动X Windows System。大约的步骤就是这些

30、了:1)执行/etc/X11/xdm/Xserver启动X出现console登录的界面(是执行/etc/X11/xdm/GiveConsole&TakeConsole所产生的)2) 执行/etc/X11/xdm/Xsessions来启动xdm或者是gdm。如果启动的是xdm,则装入用户家目录上的配置文件,. xsession和.Xclients。如果是gdm,则装载入/etc/X11/gdm/Sesseion与.Xclients。到此为止,就会出现X 视窗的登录的界面选项。3)gdm则会检查/etc/X11/gdm/Session目录的Session操作。比如 Fvwm,Wmaker,Defa

31、ult, Failsafe,Gnome,Kde与Default等。并将显示给用户选择进入那个那个X Window Manager。其实这些Sessions都是Shell Script file。如果你选择Kde,就进入KDE DeskTop environment,选择Gnome就会进入GNOME DeskTop environment了。4)用户如果选择是的 Gnome,在输入用户名和password后,gdm GNOME Session就会找gnomerc script,$HOME/.gnomerc,如果没有这个文件,就会读会系统文件内定的GNOME resource file:/etc/X11/gdm/gnomerc,并且启动/usr/bin/gnome-session.这就完成了一个 xdm/gdm的过程。但细心的人会发

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1