在文本模式下查看.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