XFree86-4.3.0

安装XFree86

下载地址(HTTP):       
下载地址(FTP):        ftp://ftp.xfree86.org/pub/XFree86/4.3.0/source/
目前版本:           4.3.0
包大小:             137 MB
编译所需磁盘空间:   633 MB
编译时间:           75m (667 MHz)

XFree86 是一个可自由配置的开放源码X window窗口系统. XFree86 通过一种客户端/服务器(client/server)机制将底层硬件(server:鼠标,键盘和显卡)与窗口界面(client)结合在一起,同时也提供了底层的窗口构建基础与应用程序编程接口(application interface "API").

XFree86 依赖于: 
freetype-2.1.3,expat-1.95.6libpng-1.2.5

现在我们需要下载XFree86的源码包:
X430src-1.tgz 10736 KB
X430src-2.tgz  7776 KB
X430src-3.tgz 12077 KB
X430src-4.tgz 12604 KB
X430src-5.tgz  4286 KB
X430src-6.tgz  7886 KB
X430src-7.tgz  9099 KB

前三个包里是 XFree86 的程序,第四个和第五个是字体,第六个是正常文档,第七个是硬拷贝文档。还有两个额外的包:doctools-1.3.1.tgz,它包含了重新生成硬拷贝文档的工具。utils-1.1.0.tgz, 它包含了 gnutarzlib,在 LFS 系统里已经安装了。

要验证你下载的文件是不是完整,下载 SUMS.md5sum 文件,然后:
md5sum X430src* > md5sums &&
diff md5sums SUMS.md5sum
你应该只看到一个不同,就是 README。如果你没有下载 doctools-1.3.1.tgz 和 utils-1.1.0.tgz ,那也会看到这些不同。

安装流程

配置内核

如果您使用Intel P6 (Pentium Pro, Pentium II 或者更高) 需要将内核的MTRR (Memory Type Range Registers)支持打开.内核对于Cyrix和AMD的CPU同样支持MTRR,所以此项对于使用以上两种CPU的朋友一样有效. 选项位于"Processor type and features"菜单. MTRR能使PCI或AGP的显卡在处理图象的时候速度提高2.5倍甚至更多.

在菜单"Character Devices" 中,打开AGP 支持同时选中您主板所使用的芯片(chip).如果不清楚您主板的芯片种类,就需要将所有的chip都选上,当然这样做的代价就是增加了内核的体积. 您通常可以这样查看主板的芯片类型:
cat /proc/pci

在菜单"Character Devices" 中, 根据您显卡对DRI(Direct Rendering Manager)的支持情况来设置Direct Rendering Manager支持.在 http://dri.sourceforge.net 的状态部份,能找到一个完整的支持 DRI 的显卡列表。目前来说,支持的显卡包括 3dfx (Voodoo, Banshee), 3Dlabs, ATI (Rage Pro, Rage 128, Radeon 7X00, Radeon 2), Intel (i810, i815), 和 Matrox (G200, G400, G450).另外 NVidia 提供了他们自己不开放源码的二进制驱动。如果您打开了DRI支持, 确定使用module了方式选中您所对应的显卡.

(译注: DRI支持下列公司的显卡:

  • Matrox公司: G200 和 G400. 据说也支持G450,但目前没得到证实。

  • Intel公司: i810、i810-dc100、i810e,i815是否支持目前尚未知。

  • ATI公司: Rage Fury, Rage Magnum, Xpert2000, Xpert 128, Xpert 99, All-in-Wonder 128 AGP, Radeon SDR, Radeon DDR. PCI接口的显卡只有很少的支持,不支持Rage 128。

  • DRI 不支持 nVidia 显卡 但幸运的是,NVIDIA 为 Linux 提供它们自己的高质量加速 XFree86 可兼容驱动程序,其中包括新式的加速 OpenGL 实现。 此页面提供对Linux上XFree86驱动程序的访问http://www.nvidia.com/view.asp?PAGE=linux)

编译内核的命令:
make dep &&
make bzImage &&
make modules &&
make modules_install

复制/usr/src/linux/arch/i386/boot/bzImage/usr/src/linux/System.map/boot目录下,适当修改/etc/lilo.conf 并运行lilo.如果你使用的是 grub,编辑 /boot/grub/grub.conf 并在启动菜单中增加一个新的内核。

注: 如果您在chroot环境下编译XFree86,确定编译系统和目标系统使用内核版本是一样的.特别是您通过模块(module)方式打开了DRI支持之后.

创建host.def文件

虽然XFree86在没有host.def文件的时候也一样可以编译, 但是我们这样做可以更方便的定制系统. 在xc下运行下面命令.

cat > config/cf/host.def << "EOF"
/* Begin XFree86 host.def file */

/* System Related Information.  If you read and configure only one
 * section then it should be this one.  The Intel architecture defaults are 
 * set for a i686 and higher.  Axp is for the Alpha architecture and Ppc is  
 * for the Power PC.  Note that there have been reports that the Ppc 
 * optimization line causes segmentation faults during build.  If that 
 * happens, try building without the DefaultGcc2PpcOpt line.  **************/

/* #define DefaultGcc2i386Opt  -O2 -fomit-frame-pointer -march=i686 */ 
/* #define DefaultGcc2AxpOpt   -O2 -mcpu=ev6 */
/* #define DefaultGcc2PpcOpt   -O2 -mcpu=750 */

/* The following definitions are normally set properly by XFree86's scripts.
 * You can uncomment them if you want to make sure. ************************/
 
/* #define HasMTRRSupport      YES  */ /* Enabled in kernel see kernel docs*/
/* #define HasMMXSupport        NO  */ /* Any i586 or above */
/* #define HasKatmaiSupport     NO  */ /* PIII SSE instuctions */
/* #define Has3DNowSupport      NO  */ /* AMD instructions */


/* This setting reduces compile time a little by omitting rarely used input 
 * devices.  You can find the complete list in config/cf/xfree86.cf ********/
 
#define XInputDrivers                 mouse void

/* VIDEO DRIVERS ***********************************************************/

/* If you are sure you only want the drivers for one or a few video cards,
 * you can delete the drivers you do not want. *****************************/ 


#define XF86CardDrivers  mga glint nv tga s3 s3virge sis rendition \
                         neomagic i740 tdfx savage \
                         cirrus vmware tseng trident chips apm \
                         GlideDriver fbdev i128 nsc \
                         ati i810 AgpGartDrivers DevelDrivers ark \
                         cyrix siliconmotion \
                         vesa vga \
                         dummy XF86OSCardDrivers XF86ExtraCardDrivers


/* FONT SERVER AND LIBRARY SETTINGS ****************************************/

/* These settings are the defaults   ***************************************/

/* #define BuildFontServer          YES  */ /* For GhostScript Print Server*/
/* #define SharedLibFont            YES  */
/* #define CompressAllFonts         YES  */
/* #define GzipFontCompression      YES  */

/* These settings ensure we use our libraries ******************************/
#define HasFreetype2             YES
#define HasExpat                 YES
#define HasLibpng                YES
#define HasZlib                  YES

/* The font path can be redefined in the XF86Config file *******************/

/*
#define DefaultFontPath                $(FONTDIR)/misc/,$(FONTDIR)/75dpi/,\
$(FONTDIR)/100dpi/,$(FONTDIR)/Type1,$(FONTDIR)/local,\
$(FONTDIR)/TrueType,$(FONTDIR)/CID,$(FONTDIR)/Speedo
*/


/* INTERNATIONAL FONTS.  Change to YES if you need any of them.  These  are
 * the defaults. ***********************************************************/

/* #define BuildCyrillicFonts            NO  */
/* #define BuildArabicFonts              NO  */
/* #define BuildISO8859_6Fonts           NO  */
/* #define BuildGreekFonts               NO  */
/* #define BuildISO8859_7Fonts           NO  */
/* #define BuildHebrewFonts              NO  */
/* #define BuildISO8859_8Fonts           NO  */
/* #define BuildKOI8_RFonts              NO  */
/* #define BuildJapaneseFonts            NO  */
/* #define BuildJISX0201Fonts            NO  */
/* #define BuildKoreanFonts              NO  */
/* #define BuildChineseFonts             NO  */

/* DOCUMENTATION SETTINGS **************************************************/

/* These setting are the defaults. *****************************************/

/* #define BuildLinuxDocHtml             NO  */  /* X Docs in Html format */
/* #define BuildLinuxDocPS               NO  */  /* PostScript format */
/* #define BuildAllSpecsDocs             NO  */  /* Various docs */
/* #define BuildHtmlManPages             NO  */

/* GENERAL SETTINGS: You generally want to leave these alone when
 * building X on an LFS system *********************************************/

#define GccWarningOptions         -pipe /* Speed up compiles */
#define TermcapLibrary            -lncurses
#define XprtServer                YES /* Needed by realplayer */
#define XnestServer               YES
#define XAppLoadDir               EtcX11Directory/app-defaults
#define VarLibDir                 /var/lib
#define XFree86Devel               NO
#define FSUseSyslog               YES
#define ThreadedX                 YES
#define HasPam                     NO        
#define SystemManDirectory        /usr/share/man  /* Instead of /usr/man */
#define HasLibCrypt               YES
#define InstallXinitConfig        YES
#define InstallXdmConfig          YES
#define ForceNormalLib            YES
#define BuildSpecsDocs             NO

/* End XFree86 host.def file */
EOF

根据您的硬件情况修改该文件.

开始编译

使用下面的命令来安装XFree86:

WORLDOPTS="" make World 2>&1 | tee xfree-compile.log &&
make install &&
make install.man &&
ln -sf /usr/X11R6/bin /usr/bin/X11 &&
ln -sf /usr/X11R6/lib/X11 /usr/lib/X11 &&
ln -sf /usr/X11R6/include/X11 /usr/include/X11

升级 Direct Rendering Infrastructure (DRI)

如果你的显卡支持DRI,并且用了DRI的内核模块,像上面说的那样,你需要升级内核模块,以确保它们和现在的 XFree86 版本兼容。一定要运行下面的命令:

cd programs/Xserver/hw/xfree86/os-support/linux/drm/kernel && 
make -f Makefile.linux  && 
mkdir -p /lib/modules/`uname -r`/kernel/drivers/char/drm/  && 
cp gamma.o radeon.o sis.o r128.o i810.o i830.o mga.o tdfx.o \
    /lib/modules/`uname -r`/kernel/drivers/char/drm/  && 
depmod -a

警告

如果你重编译或升级了你的内核,你还需要重新拷贝驱动模块到内核模块目录并再运行 depmod.

命令解释

WORLDOPTS="" make World 2>&1 | tee xfree-compile.log: 这个命令调动许多makefile文件开始编译XFree86.WORLDOPTS="" 禁止了遇到错误还继续运行的缺省设置。2>&1将错误信息重定向至标准输出. tee 允许在向log文件输出信息的时候查看该文件.

注: 当做了稍许修改需要重新编译的时候,使用下面这个单独的命令make Everything. 它只是重编译更新了的部分,而不会清除其他文件.

ln -sf /usr/X11R6/bin /usr/bin/X11, ln -sf /usr/X11R6/lib/X11 /usr/lib/X11, and ln -sf /usr/X11R6/include/X11 /usr/include/X11: 一些比较差劲的包在编译的时候会对X的目录有特别的要求,所以我们为了兼容要做几个链接. FHS 文件系统标准有个提示信息:"通常情况下,不应该用上面的符号链接来安装或管理软件。它们应该只被用户使用。"

make -f Makefile.linux: 编译 XFree 兼容的内核模块。

cp gamma.o radeon.o sis.o r128.o i810.o i830.o mga.o tdfx.o /lib/modules/`uname -r`/kernel/drivers/char/drm/: 把内核模块放在正确的目录中,以便内核能找到它们。

depmod -a: 更新 modules.dep 文件以管理内核模块。

配置XFree86

修改/etc/ld.so.conf增加一行 /usr/X11R6/lib. 然后运行
ldconfig

修改.bash_profile/usr/X11R6/bin加到您的 PATH环境变量中.在export PATH前面加上如下声明语句PATH=$PATH:/usr/X11R6/bin.

运行
source ~/.bash_profile

配置鼠标
cd /dev
ln -s psaux mouse
按您鼠标的类型做一个符号链接. 举个例子,一个连接在串口1上的串口鼠标 就将/dev/ttyS1做一个向/dev/mouse的符号链接.

使用下面的命令创建XF86Config文件
cd ~
XFree86 -configure
The screen will go black and you may hear some clicking of the monitor. This command will create a file, XF86Config.new in your home directory.

按您系统适当修改XF86Config.new. 关于这个文件的详细资料请查阅他的manpageman XF86Config. 通常您要做如下设定:

用下面的命令来测试配置情况
XFree86 -xf86config ~/XF86Config.new
您将会看到一个灰色的背景和X形状的鼠标, 这已经证明系统可以正常工作了. 按Control-Alt-Backspace退出X.如果X没有正常工作,检查/var/log/XFree86.0.log 来查看是什么地方出了毛病.

将刚才的文件设置为真正的配置文件
mv ~/XF86Config.new /etc/X11/XF86Config-4

创建文件.xinitrc
cat > ~/.xinitrc << "EOF"
# Begin .xinitrc file
xterm  -g 80x40+0+0   &
xclock -g 100x100-0+0 &
twm
EOF
以便让X开始就运行一些简单的窗口管理器Tab Window Manager,并且运行xterm和xclock 更多关于twm的信息, 请参阅manpage.

用下面的命令启动X
startx
我们现在已经有了一个基本的X系统.

介绍

XFree86 包含了Linux及其它类似操作系统的X Windows.内容包括X服务器,字体, 一个X下的终端程序(xterm),一个简单的窗口管理器(twm),很多有用的小工具, 显示输出驱动和包括键盘鼠标在内的许多输入模块.

XFree86同样包含了开发X Windows应用程序所必需的库文件.

内容

注: 下面是部分应用程序列表. 完整的文件清单请检查/usr/X11R6/bin. 要获取关于其中某个程序的信息,请查阅相关的manpage.

XFree86

XFree86 是X Windows server的X11R6执行程序.

xf86config

一个控制台下产生X Windows的配置文件XF86Config的交互程序.

xf86cfg

一个运行于X下产生X配置文件的程序.

startx

一个启动X的脚本. 它运行 xinit.

xinit

这个程序用来启动X服务器.

twm

(Tab Window Manager) X Window系统的窗口管理器(Window Manager).

xterm

一个运行于X下的终端程序.

xwininfo

一个显示窗体信息的程序.

x11perf

一个X11 server测试程序.

xlsfonts

显示当前可以被X server用到的字体列表.

xvidtune

调整XFree86的显示模式.

xload

一个运行于X下显示系统的平均负载的程序 .

xcalc

一个运行于X下的科学计算器.

xclock and oclock

一个运行于X下的钟表程序.

xmodmap

一个运行于X下调节键盘和鼠标键映射的程序.