下载地址(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.6 和 libpng-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, 它包含了 gnutar 和 zlib,在 LFS 系统里已经安装了。
要验证你下载的文件是不是完整,下载 SUMS.md5sum 文件,然后:
md5sum X430src* > md5sums && diff md5sums SUMS.md5sum |
如果您使用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支持之后.
虽然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 |
如果你的显卡支持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 文件以管理内核模块。
修改/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 |
使用下面的命令创建XF86Config文件
cd ~ XFree86 -configure |
按您系统适当修改XF86Config.new. 关于这个文件的详细资料请查阅他的manpageman XF86Config. 通常您要做如下设定:
Section "Files".在这里配置您系统的字体路径. 如果您的系统在100dpi下效果要比75dpi好的话,请将100dpi的字体放在75dpi前面.您或许也会移除一些字体路径.("dpi" dots per inch 每英寸点数)
Section "Module". 去掉或者注释掉一些模块(Module). "glx"和"dri"在我们安装DRI之前是不会工作的. 对于没有必要去掉的模块就不要动它了.
Section "InputDevice". 您可能希望修改一下键盘的重复速度 重复率 ,那么就加入下面这段Option "Autorepeat" "250 30".
Section "Screen". 象这样设置默认的色深: DefaultDepth 16.然后在色深的子段,象这样添加Mode: Modes "1280x1024" "1024x768". 通常是运行第一种Mode.
用下面的命令来测试配置情况
XFree86 -xf86config ~/XF86Config.new |
将刚才的文件设置为真正的配置文件
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
startx |
XFree86 包含了Linux及其它类似操作系统的X Windows.内容包括X服务器,字体, 一个X下的终端程序(xterm),一个简单的窗口管理器(twm),很多有用的小工具, 显示输出驱动和包括键盘鼠标在内的许多输入模块.
XFree86同样包含了开发X Windows应用程序所必需的库文件.