分辨率不对 startx 启动过程分析

本文详细分析了Linux系统中startx命令的启动过程,从xinit的功能、用法到startx脚本的解析,再到startx默认启动gnome桌面的流程。startx通过调用xinit,结合用户指定或默认的rc文件,启动X服务器和图形应用。文章还探讨了Xsession脚本在启动过程中的作用,如何逐步执行/etc/X11/Xsession.d目录下的文件,最终启动gnome-session来呈现桌面环境。
摘要由CSDN通过智能技术生成

在文本模式下查看.profile时,发现有提示 没有找到EDID  这应该是关键原因  驱动是有了的。


下面是转载的开机启动。。。

startx 启动过程分析

1       xinit

在说明 startx 之前,我想我们应该先 了解一下 xinit 。因为 startx 就是通过调用 xinit 启动 X 的。

1.1     功 能

当我们安装了 Ubuntu 后,默认就已经安装了 xinit ,它位于 /usr/bin 下。 xinit 是一个二进制文件,并非是一个脚本。它的主要功能是启动一个 X 服务器,同时启动一个基于 X 的 应用程序。

1.2     用 法

xinit 的用法为: xinit [[client] options ] [-- [server] [display] options] 。其中 client 用于指定一个基于 X 的应用程序, client 后面的 options 是传给这个应用程序的参数, server 是用于指定启动哪个 X 服务器,一般为 /usr/bin/X 或 /usr/bin/Xorg , display 用于指定 display number ,一般 为 0 ,表示第一个 display , option 为传给 server 的参数。

 

如果不指定 client , xinit 会查找 HOME ( 环境变量 ) 目录下的 .xinitrc 文件,如果存在这个 文件, xinit 直接调用 execvp 函数执行该文件。如果这个文件不存在,那么 client 及其 options 为:  xterm -geometry +1+1 -n login -display :0 。

 

如果不指定 server , xinit 会查找 HOME( 环境变量 ) 目录下的 .xserverrc 文件,如果存在这个文件, xinit 直接调用 execvp 函数执行该文件。如果这个文件 不存在,那么 server 及其 display 为:  X :0 。如果系统目录中不存在 X 命令,那么我们需要在系统目录下建立一个名为 X 的链接,使其指向真正的 X server 命令( Ubuntu 下为 Xorg )。

 

1.3     例 子

下面是几个关于 xinit 应用的例子:

1)       xinit /usr/bin/xclock -- /usr/bin/X :0

该例子将启动 X server , 同时将会启动 xclock 。请注意指定 client 或 server 时,需要用绝对路径,否则 xinit 将因无法区别是传给 xterm 或 server 的参数还是指定的 client 或 server 而直接当成是参数处理。

2)       在 HOME 下新建 .xinitrc 文件,并加入以下几行:

         
xsetroot -solid gray &


         
xclock -g 50x50-0+0 -bw 0 &


         
xterm -g 80x24+0+0 &


         
xterm -g 80x24+0-0 &


         
twm


当 xinit 启动时,它 会先启动 X server ,然后启动一个 clock ,两个 xterm ,最后启动窗口管理器 twm 。

请注意:

最后一个命令不能后台运行,否则所有命令都后台运行的话 xinit 就会返回退出,同样的,除最后一个命令外都必须后台运行,否则后面的命令将只有在该命令退出后才能 运行。

 

1.4     分 析

看到这里,眼尖的人或许早以看出 xinit 的功能完全可以由脚 本来实现,例如要启动 X Server 和一个 xterm ,就像 xinit 默认启动的那样,只需要在新建一个脚本或在 rc.local 中加入:

X&

export DISPLAY=:0.0

xterm

这个实现完全正确,然而却并没有完全实现 xinit 所具有的功能, xinit 所有的一项功能就是当最后一个启 动的 client (如上面第二个例子中的 twm 窗口管理器)退出后, X 服务器也会退出。而我们的脚本实现中当我们退出 xterm 后并不会退出 X server 。


 

2       startx 脚本

用过 linux 的人基本上都知道 linux 下有个命令叫做 startx , 那么它到底是怎么实现的呢 ?

2.1     功 能

当我们在终端下想启动图形界面时,我们都会通过输入 startx 来实现,该命令可 以启动一个 X server ,而且可以启动一个漂亮的图形界面( Ubuntu 下,我装的是 gnome )。

2.2     用 法

Startx 的用法和 xinit 的基本一样 : startx [ [ client ] options ... ] [ -- [ server ] options ... ] 。为什么呢?这是因为 startx 其实就是一个脚本,它启动 X server 就是通过调用 xinit 命令实现的, startx 的参数将全部传给 xinit 。因此,这些参数的意义和 xinit 的参数是一样的。

2.3     例 子

下面是两个关于 startx 命令的简单例子:

1)   startx -- -depth 16

该例子主要是以 16 位色启动 X 服务器。

2)   startx -- -dpi 100

该例子主要是以 100 的 dpi 启动 X 服务器。

2.4     分 析

下面我们来分析一下 startx 脚本。 startx 脚本位于 /usr/bin 下,直接用 vim 打开我们可以看到它的具体实现如下:

 

#!/bin/bash # 注意:该脚本用的是 bash shell 解析的

 

# $Xorg: startx.cpp,v 1.3 2000/08/17 19:54:29 cpqbld Exp $

#

# This is just a sample implementation of a slightly less primitive

# interface than xinit. It looks for user .xinitrc and .xserverrc

# files, then system xinitrc and xserverrc files, else lets xinit choose

# its default. The system xinitrc should probably do things like check

# for .Xresources files and merge them in, startup up a window manager,

# and pop a clock and serveral xterms.

#

# Site administrators are STRONGLY urged to write nicer versions.

#

# $XFree86: xc/programs/xinit/startx.cpp,v 3.16tsi Exp $

 

# 下面主要是对一些变量进行赋值。

userclientrc=$HOME/.xinitrc

sysclientrc=/e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值