歡迎您光臨本站 註冊首頁

在 Fedora Core 5 上體驗 Aiglx 和 Xgl & Compiz

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

摘要:
Aiglx是一個旨在為標準桌面啟用GL加速功能的項目,目的在於通過小幅度修改X server、使用添加新協議支持的Mesa升級版和帶有混合管理器版本的metacity,讓用戶稍作改動即可在桌面上使用GL效果,隨意開啟、關閉該功能而無需替代使用中的X server。

Xgl是基於OpenGL上的X服務架構,現在處於開發階段,很多重要的部分還未完成。Xglx是目前唯一使用這種結構的X伺服器,它需要在一個已有的X伺服器,只用於測試和開發目的。Xegl是基於Xgl架構的新一代X伺服器,它將使用EGL擴展獨立地運行在OpenGL上

本文簡要介紹了Aiglx和Xgl的特點和功能,以及在Fedora Core 5上從源碼編譯、安裝、配置Aiglx和Xgl的一種方法。希望為對此有興趣的FC5用戶提供一種嘗試的途徑。

一 寫在前面:

⒈什麼是Xgl?
http://www.freedesktop.org/wiki/Software_2fXgl
Xgl是基於OpenGL上的X服務架構,現在處於開發階段,很多重要的部分還未完成。Xglx是目前唯一使用這種結構的X伺服器,它需要在一個已有的X 伺服器,只用於測試和開發目的。Xegl是基於Xgl架構的新一代X伺服器,它將使用EGL擴展獨立地運行在OpenGL上。

它有哪些新的特性呢?

基於OpenGL的X層,使用混合桌面,開啟通往新功能、新機會的大門。以下是一些可能出現的功能,其中一些現在已經實現。我們要破除基於OpenGL的X中看不中用的迷信。

①加倍窗口顯示解析度,應用程序可以用特定的解析度渲染窗口,而與桌面的解析度不同。想像一下梯度背景,這樣的一個窗口或材質只有幾個色素,卻以1600x1200或更大的尺寸顯示。

②快速、簡單的屏幕旋轉、翻轉、搖動、放大。

③高級字體渲染,包括使用材質和分段程序的及時輪廓字體渲染。

④模擬硬體層面,歷史悠久的工作站圖形功能可以用材質混合實現

⑤全屏顏色處理,包括伽瑪糾正、對比增強、模糊、加亮等等。

⑥同一屏幕上混合像素深度,經重定向,上層窗口可以具有不同的色深(8、16、24、32bpp)。例如:XTerms可以8bpp(只需32bpp圖像所用texmem的1/4)創建,用顏色查找表顯示(texel 查找分段程序);

⑦每窗口任意色圖(texel查找分段程序);

⑧替代窗口色彩空間,「視頻」窗口可以存儲為YCbCr(比RGB小),使用材質硬體顯示時實時轉化為RGB;

⑨窗口圖像壓縮,使用S3TC材質壓縮,將內容很少改動的窗口壓縮,存儲於根窗口的桌面背景就是一個最好的應用。此項技術有可能節省大量內存;

⑩使用OpenGL多實例表面為反鋸齒X渲染提供新應用。

⒉什麼是Compiz?

Compiz帶來多種視覺效果,使得Linux桌面變得更方便、功能更強大、更新穎、更容易滿足用戶的特殊需求。Compiz使用OpenGL進行渲染,集窗口管理器與混合管理器於一身;窗口管理器處理屏幕上的應用程序和對話框,而混合管理器則使窗口和圖形混合,產生混合圖像;Compiz同時具有兩者的功能,產生驚人的效果。

Compiz目前只能與Xgl「共事」,Compiz的插件及窗口裝飾器在Gnome和KDE下都能工作。

⒊什麼是aiglx?
http://fedoraproject.org/wiki/Re ... ghlight=%28aiglx%29
Aiglx(Accelerated Indirect GL X)是一個旨在為標準桌面啟用GL加速功能的項目,目的在於通過小幅度修改X server、使用添加新協議支持的Mesa升級版和帶有混合管理器版本的metacity,讓用戶稍作改動即可在桌面上使用GL效果,隨意開啟、關閉該功能而無需替代使用中的X server。
代碼是與X 社區相關的上游完成,Fedora Core 5是第一個包括了模塊X包和在適合位置添加適合協議的發布版。Aiglx在X基礎方面已經進行了大量工作,但對實際的渲染效果並沒下太大力氣,希望廣大社區幫助創造有趣、適當的效果。重要的不是此時就推出成品,而是鼓勵社區圍繞其進行開發和實驗。

二 體驗 Aiglx
參考 http://fedoraproject.org/wiki/RenderingProject/aiglx

⒈下載、安裝

①建立CVS目錄


mkdir /opt/CVS/
cd /opt/CVS/
②下載安裝最新的 GL protocol 頭文件


cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg login
CVS password:<回車>
cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co proto/GL
cd /opt/CVS/proto/GL
./autogen.sh
make
make install
③下載安裝最新的 Xorg 伺服器源碼


cvs -d:pserver:anoncvs@cvs.freedesktop:/cvs/xorg co xserver/xorg
cd /opt/CVS/xserver/xorg
./autogen.sh --with-mesa-source=/opt/CVS/Mesa --sysconfdir=/etc
make
make install
ln -s /etc/X11/fs /usr/local/lib/X11/fs
④下載安裝 Mesa 源碼


cvs -d:pserver:anoncvs@cvs.freedesktop:/cvs/mesa co Mesa
cd /opt/CVS/Mesa
make linux-dri-x86
make install DESTDIR=/usr/local
⑤下載安裝 libcom


cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome login
CVS password: <回車>
cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome co libcm
cd /opt/CVS/libcm
./autogen.sh
make
make install
⑥下載安裝 metacity


cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome co metacity
cd /opt/CVS/metacity
./autogen.sh --enable-compositor
make
make install
⒉配置

①啟用混合管理器


gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool true

或使用配置管理器設置/apps/metacity/general/compositing_manager鍵值
②修改/etc/X11/xorg.conf,添加


Section "extensions"
Option "Composite"
EndSection
Section "Device"
...
Option "XAANoOffscreenPixmaps"
EndSection
③禁用混合管理器,運行命令


gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool false

或使用配置管理器修改/apps/metacity/general/compositing_manager鍵值
④使用滑鼠右鍵來啟用、禁用服務
編輯文件:


gedit ~/.gnome2/nautilus-scripts/aiglx
添加內容:


#!/bin/bash
title="Aiglx Service"
#Date: 3-19-2006
# Wriiten By: fedorajim@gmail.com
zenity --question --text "Do you want to turn On or Off the AIGLX Service? Yes=On / Cancel=Off" --title="$title"
if [ "$(echo $?)" == "1" ] #They clicked "no"
then # Turn off the AIGLX Service
gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool false
else
# turn on the AIGLX Service
gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool true
fi

保存文件,使其可執行

chmod u+x ~/.gnome2/nautilus-scripts/aiglx
⒊ 演示和已知問題

①演示
最小化之一 http://www.gnome.org/~jrb/aiglx/shot01.ogg
最小化之二 http://www.gnome.org/~jrb/aiglx/shot02.ogg
菜單淡化 http://www.gnome.org/~jrb/aiglx/shot03.ogg

②支持的顯卡和一些問題
http://fedoraproject.org/wiki/Re ... 5918f1cc57bddbbc129

三 體驗 Xgl & Compiz

本文的重點是在不破壞原有系統的基礎上,使普通用戶體驗 Xgl & Compiz的新效能。
默認情況是安裝路徑為/opt/Xgl,沒有進行(二)部分所做下載

⒈下載安裝

①建立CVS源碼目錄,下載源碼包:


mkdir /opt/CVS

下載cvs源碼的 libsvg, libsvg-cairo, mesa, xorg/glitz, xkbfile, glxproto, drm, compiz, FixesProto, ScrnSaverProto, CompositeProto, 下載control-center-2.14.0源碼; 最新的cairo源碼已經不再使用CVS,下載使用git。
使用yum安裝git


yum install git


git clone git://git.cairographics.org/git/cairo
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/mesa login
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/mesa co Mesa
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/cairo co glitz cairo libsvg libsvg-cairo
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co -r xgl-0-0-1 xserver/xorg
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co lib/xkbfile proto/GL
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/dri co drm
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co app/compiz
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co proto/Composite proto/Fixes proto/ScrnSaver
wget http://ftp.gnome.org/mirror/gnom ... nter-2.14.0.tar.bz2
②編譯安裝

編譯安裝glitz


cd /opt/CVS/glitz
./autogen.sh --prefix=/opt/Xgl
make
make install
添加PKG_CONFIG_PATH, LD_LIBRARY_PATH到: ~/.bashrc


cat >> ~/.bashrc << EOF
PKG_CONFIG_PATH=/opt/Xgl/lib/pkgconfig
LD_LIBRARY_PATH=/opt/Xgl/lib
export PKG_CONFIG_PATH LD_LIBRARY_PATH
EOF


source ~/.bashrc
編譯安裝 control-center


cd /opt/CVS/
tar xjvf control-center-2.14.0.tar.bz2
cd control-center-2.14.0/
./configure --prefix=/opt/Xgl --sysconfdir=/etc
make
make install
編譯安裝 libsvg


cd /opt/CVS/libsvg
./autogen.sh --prefix=/opt/Xgl
make
make instal
編譯安裝 cairo


cd /opt/CVS/cairo
./autogen.sh --prefix=/opt/Xgl
make
make install
編譯安裝 libsvg-cairo(注意安裝順序,libsvg-cairo依賴cairo,要后裝)


cd /opt/CVS/libsvg-cairo
./autogen.sh --prefix=/opt/Xgl/
make
make install
編譯安裝 GL proto(proto/GL)


cd /opt/CVS/proto/GL
./autogen.sh --prefix=/opt/Xgl
make install
編譯安裝drm

cd /opt/CVS/drm
./autogen.sh --prefix=/opt/Xgl
make
make install
編譯安裝Composite,Fixes,ScrnSaver


cd /opt/CVS/proto/Composite
./autogen.sh --prefix=/opt/Xgl
make install
cd /opt/CVS/proto/Fixes
./autogen.sh --prefix=/opt/Xgl
make install
cd /opt/CVS/proto/ScrnSaver
./autogen.sh --prefix=/opt/Xgl
make install
編譯安裝 xorg


cd /opt/CVS/xserver/xorg
./autogen.sh --prefix=/opt/Xgl --disable-xorg --disable-dmx --disable-xvfb --disable-xnest --disable-xwin --enable-xgl --enable-xglx --with-mesa-source=/opt/CVS/Mesa/ --sysconfdir=/etc --enable-glx-dri --disable-xprint
make
make install
編譯安裝 compiz


cd /opt/CVS/app/compiz
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/opt/Xgl/lib/pkgconfig/ ./autogen.sh --prefix=/opt/Xgl/ --enable-libsvg-cairo
make
make install

有些人編譯遇到gnome、svg選項總是no,原因即在於缺少參數設置
編譯安裝Mesa


cd /opt/CVS/Mesa
make linux-dri-x86
make install DESTDIR=/opt/Xgl

由於CVS源碼變化很快,有時很出現長時間編譯不成功的現象,這時就需要一點耐心了,到郵件列表(http: //www.mesa3d.org/lists.html) 中去查找辦法。當然也有替代的方法,就是下載發布版,如mesa cvs編譯不成功就可以用Mesa-6.5,下載地址 自己選一個比較快的鏈接。相應地操作要變為:

tar xjvf MesaLib-6.5.tar.bz2
cd MesaLib-6.5
make linux-dri-x86
make install DESTDIR=/opt/Xgl
③配置
添加工作路徑


cat > /etc/profile.d/Xgl.sh << "EOF"
PATH="/opt/Xgl/bin:$PATH"
export PATH
EOF
修改/etc/sudoers,使用戶可以運行ldconfig命令


visudo /etc/sudoers

添加

username ALL=NOPASSWD:/sbin/ldconfig
取消對~/.bashrc的修改,刪除添加的內容:


PKG_CONFIG_PATH=/opt/Xgl/lib/pkgconfig
LD_LIBRARY_PATH=/opt/Xgl/lib
export PKG_CONFIG_PATH LD_LIBRARY_PATH
修改~/.bash_profile,修改工作路徑:


PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
保存如下腳本到/usr/local/bin/Xstarter:


#!/bin/bash
# a clumsy script to switch between default X server and Xgl
# Licensed to copy, modify freely
# written by aaccdd < waxyxgn@hotmail.com>
# scriptname=Xstarter
# before running this script, add following to /etc/sudoers:
# username ALL=NOPASSWD:/sbin/ldconfig
# to allow user run sudo ldconfig
[ -e $HOME/.Xgl-Status-0 -o -e $HOME/.Xgl-Status-1 ] || touch $HOME/.Xgl-Status-0
NotFound() {
echo "ERROR: $1 is not installed on your machine! to install $1, please type"
echo "yum $2 \"$3\""
exit 1
}
currentWM(){
if [ -e $HOME/.Xclients-default ]
then
wmnow=$(sed -n 's/^WM=\"\(.*\)\"$/\1/p' $HOME/.Xclients-default )
fi
case "$wmnow" in
enlightment) WMnow=Enlightment;;
fluxbox) WMnow=Fluxbox;;
fvwm2) WMnow=Fvwm;;
icewm) WMnow=Icewm;;
twm) WMnow=Twm;;
wmake) WMnow=WMmake;;
startxfce4) WMnow=Xfce4;;
startkde) WMnow=KDE;;
gnome-session) WMnow=GNOME;;
esac
}
preXgl(){
if [ -e $HOME/.Xgl-Status-0 ]
then
perl -e 'print "="x80;print "\n"'
echo -e "\t\tCreating necessary links and cache to share libraries\n"
echo -e "\t\tPlease stand by ...\n"
perl -e 'print "="x80;print "\n"'
sleep 2
sudo ldconfig /opt/Xgl/lib /opt/Xgl/lib/window-manager-settings \
/opt/Xgl/lib/xorg/modules/xgl /opt/Xgl/lib/compiz
[ "$?" -eq 0 ] && mv $HOME/.Xgl-Status-0 $HOME/.Xgl-Status-1
sed -i 's/vo=xv,x11/vo=x11,xv/' $HOME/.mplayer/config
fi
}
postXgl(){
if [ -e $HOME/.Xgl-Status-1 ]
then
perl -e 'print "="x80;print "\n"'
echo -e "\t\tCreating necessary links and cache to share libraries\n"
echo -e "\t\tPlease stand by ...\n"
perl -e 'print "="x80;print "\n"'
sleep 2
sudo ldconfig
[ "$?" -eq 0 ] && mv $HOME/.Xgl-Status-1 $HOME/.Xgl-Status-0
sed -i 's/vo=x11,xv/vo=xv,x11/' $HOME/.mplayer/config
fi
}
startX(){
currentWM
case "$wmnow" in
gnome-session) startx -- :1 &
DISPLAY=:1 metacity &
;;
startxfce4) startx -- :1 &
DISPLAY=:1 xfwm4 --daemon &
;;
*) startx -- :1 &
;;
esac
}
startXgl(){
export LANG="en_US.UTF-8" # 此處設置界面為英文,不是必需,如果不習慣註銷即可
LD_PRELOAD=/usr/lib/libGL.so /opt/Xgl/bin/Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 &
# change xv:fbo to xv:pbuffer for ATI video card
if [ "$wmnow" = "gnome-session" -o "$wmnow" = "startkde" -o "$wmnow" = "startxfce4" ]
then
DISPLAY=:1 LD_LIBRARY_PATH="/opt/Xgl/lib:/opt/Xgl/lib/window-manager-settings: \
/opt/Xgl/lib/xorg/modules/xgl:/opt/Xgl/lib/compiz" \
compiz --replace gconf &
[ "$wmnow" = "gnome-session" ] && DISPLAY=:1 eval $(dbus-launch --auto-syntax)
DISPLAY=:1 gnome-window-decorator &
DISPLAY=:1 $wmnow &
DISPLAY=:1 /etc/X11/xinit/xinitrc.d/xinput.sh &
else
DISPLAY=:1 $wmnow &
DISPLAY=:1 /etc/X11/xinit/xinitrc.d/xinput.sh &
fi
}
switchDesktop(){
echo -e "\tWhich Desktop you want to use? Type in the name: \n"
read TargetDesktop
[ ! -x /usr/bin/switchdesk ] && NotFOUND switchdesk install "The Desktop Switcher"
switchdesk $TargetDesktop
}
prog="$0"
wmnow="xterm"
currentWM
perl -w -e 'print "=" x80 ;print "\n"'
echo -e "\tXstarter helps you to choose the window manager you want to run"
echo -e "\tUse it to do:"
echo -e "\t\t<1>\tstart your default window manager normally"
echo -e "\t\t<2>\tswitch to other window manager then start X"
echo -e "\t\t<3>\tstart Xgl & compiz on your default window manager"
echo -e "\t\t<4>\tswitch window manager before starting Xgl & compiz"
perl -w -e 'print "=" x80 ;print "\n"'
echo -e "\tbefore running this, make sure /etc/sudoers modified accordingly"
perl -w -e 'print "="x80;print "\n"'
echo -e "\t\tyour current window manager is $WMnow\n"
echo -e "\t\twhat to do next? please type in 1, 2, 3, or 4\n"
echo -e "\t\tpress any other key to quit\n"
read TODO
case "$TODO" in
1) echo -e"\tStarting current default window manager\n"
postXgl
startX
;;
2) echo -e "\tRunning the Desktop Switcher to change window manager\n"
switchDesktop || exit 1
postXgl
startX
;;
3) echo -e "\tStarting Xgl & Compiz on default window manager\n"
preXgl
startXgl
;;
4) echo -e "\tStarting Xgl & Compiz after switch window manager\n"
switchDesktop || exit 1
preXgl
currentWM
startXgl
;;
*) echo -e "\tQuit now, legitimate inputs are ordinal number 1 to 4\n"
exit 1
;;
esac

使其具有執行許可權

chmod +x /usr/local/bin/Xstarter

腳本使用方法:
修改/etc/inittab,將initdefault設定為3,繞過gdm,啟動進入控制台;
運行Xstarter,轉換桌面管理器,啟動X、Xgl;轉換時,只需重啟X,無須重啟系統;
運行Xstarter有四個選項:
⑴以默認桌面啟動X;
⑵轉換桌面,然後啟動X;
⑶以默認桌面啟動Xgl;
⑷轉換桌面,然後啟動Xgl;

按Shift + Backspace退出

請參考提示⑩注意事項
⒉幾個小提示

①如何設置,增加cube的面(多於四個面的還叫cube嗎?)


gconftool-2 -t int -s /apps/compiz/general/screen0/options/size "5"

或用配置編輯器手動修改/apps/compiz/general/screen0/options/size鍵值,這樣就是5個側面了。
②如何在cube頂上添加演示文件


yum install inkscape

運行OpenOffice,製作演示文件,每一幅幻燈保存為一張jpg圖片
運行Inkscape,將圖片輸出為svg文件(Scalable Vector Graphics)
將所有的svg文件放入某個文件夾
保存下面腳本到/usr/local/bin/svg2top

#!/bin/bash
echo "Give full path of the folder containing SVGs to use as Cube TOP:"
read path
svglist=$(find $path -type f \( -name "*.svg" -o -name "*.png" \) -printf "%p,")
gconftool-2 -s /apps/compiz/plugins/cube/screen0/options/images -t list --list-type=string "[${svglist%%,}]"
echo "SVGs added"

運行svg2top

svg2top 目錄絕對路徑


gconftool-2 -t bool -s /apps/compiz/plugins/rotate/screen0/options/snap_top true

向cube頂上添加演示文件,如產品推介、課程幻燈,
Ctrl + Alt + 滑鼠點擊桌面空白處,轉動cube顯示頂部,
Space鍵播放下一張,Esc返回桌面。
③如何添加天穹圖片
運行GIMP,製作天穹圖片,選擇自己喜歡的圖片,按合適的比例保存為png格式;圖片的比例為
1024x1024
1024x2048
1024x4096
2048x1024
2048x2048
2048x4096
4096x1024
4096x2048
4096x4096
...
最好是2/1、1/2的比例,注意圖片越大,資源佔用越多。


gconftool-2 -t bool -s /apps/compiz/plugins/cube/screen0/options/skydome true
gconftool-2 -t bool -s /apps/compiz/plugins/cube/screen0/options/skydome_animated true
gconftool-2 -t bool -s /apps/compiz/plugins/cube/screen0/options/skydome_image " "png圖片的絕對路徑"
④如何顯示cube的內部


gconftool-2 -t bool -s /apps/compiz/plugins/cube/screen0/options/in true
⑤一些快捷鍵的默認設置
切換窗口 Alt + Tab
排列觀看所有窗口 F12
切換正方體(多邊的也行)桌面 Ctrl + Alt + 左方向鍵/右方向鍵
切換正方體桌面,當前窗口跟隨 Ctrl + Alt + Shift + 左方向鍵/右方向鍵
手動轉到桌面 Ctrl + Alt + 滑鼠左鍵單擊桌面空白處
窗口變透明、不透明 Ctrl + Alt + 滑鼠滾輪
自動縮小 超級鍵 + 滑鼠右鍵
手動縮小 超級鍵 + 滑鼠滾輪向上
手動放大 超級鍵 + 滑鼠滾輪向下
移動窗口 Alt + 滑鼠左鍵
揮動窗口 Ctrl + Alt + 滑鼠左鍵(窗口粘附邊框)
改變窗口大小 Alt + 滑鼠右鍵
最小化窗口 Alt + F9
最大化窗口 Alt + F10
顯示下層窗口 Alt + 滑鼠中鍵
減慢動作 Shift + F10

*所謂超級鍵就是Win鍵。
*這裡列出的是一些默認的快捷鍵設置,但根據版本不同可能會有變化;你也可以使用gconf-editor來進行設定。

⑥ATI顯卡x300、x700可能遇到鍵盤無反應、鎖定的情況,參考:
ubuntu xglhowo
修改xorg.conf的Device部分:


Section "Device"
Identifier "card0"
Driver "fglrx"
Option "no_accel" "no"
Option "no_dri" "no"
Option "DynamicClocks" "on"
Option "mtrr" "on"
Option "DesktopSetup" "Single"
Option "ScreenOverlap" "0"
Option "Capabilities" "0x00000000"
Option "CapabilitiesEx" "0x00000000"
Option "VideoOverlay" "on"
Option "OpenGLOverlay" "off"
Option "CenterMode" "off"
Option "PseudoColorVisuals" "off"
Option "Stereo" "off"
Option "StereoSyncEnable" "1"
Option "FSAAEnable" "no"
Option "FSAAScale" "1"
Option "FSAADisableGamma" "no"
Option "FSAACustomizeMSPos" "no"
Option "FSAAMSPosX0" "0.000000"
Option "FSAAMSPosY0" "0.000000"
Option "FSAAMSPosX1" "0.000000"
Option "FSAAMSPosY1" "0.000000"
Option "FSAAMSPosX2" "0.000000"
Option "FSAAMSPosY2" "0.000000"
Option "FSAAMSPosX3" "0.000000"
Option "FSAAMSPosY3" "0.000000"
Option "FSAAMSPosX4" "0.000000"
Option "FSAAMSPosY4" "0.000000"
Option "FSAAMSPosX5" "0.000000"
Option "FSAAMSPosY5" "0.000000"
Option "UseFastTLS" "0"
Option "BlockSignalsOnLock" "on"
Option "UseInternalAGPGART" "no"
Option "ForceGenericCPU" "no"
Option "KernelModuleParm" "agplock=0"
Option "PowerState" "1"
BusID "PCI:1:0:0"
EndSection
⑦如果SELinux啟用,需要修改以下文件的安全上下文


chcon -t textrel_shlib_t /opt/Xgl/lib/libGL.so
chcon -t textrel_shlib_t /opt/Xgl/lib/libGLU.so
⑧注意事項:
編譯安裝的操作步驟,均默認為在同一終端內完成;如果使用多個終端,需要設置相應的環境變數;
使用Xgl時,建議不要進行rpm包安裝、yum升級的操作;原因在於,這種安裝方法是盡量使系統不受Xgl安裝的影響,如果在使用Xgl時進行了系統升級,會因Xgl共享庫路徑未在系統文件中配置,啟動默認X時產生錯誤的依賴關係;而且運行中Xgl也會因共享庫路徑變化出錯。如果要將Xgl、 Compiz作為日常應用,請參考第四部分的方法;
由於編譯時指定了安裝位置,卸載時只需刪除/etc/profile.d/Xgl.sh、/usr/local/bin/Xstarter和/opt/Xgl目錄即可。

⑨compiz的gconf鍵值參考:
https://wiki.ubuntu.com/compiz

⑩排錯參考:
http://gentoo-wiki.com/HOWTO_XGL/Troubleshooting

⒊相關資源鏈接:
http://www.freedesktop.org/wiki/Software_2fXgll
http://en.opensuse.org/Xgl
http://en.opensuse.org/Compiz
http://gentoo-wiki.com/HOWTO_XGL
https://wiki.ubuntu.com/XglHowto?highlight=%28xgl%29
http://compiz.ed3n.com/
http://gentoo-wiki.com/HOWTO_XGL/Troubleshooting

四 打包安裝Xgl和Compiz
前文講述了從源碼編譯、安裝、配置Aiglx和Xgl、Compiz的過程,下面講一下,如何對源碼進行打包,製作成FC5專用的rpm包。
在fedora rawhide中提供了Aiglx的rpm包,此處不予贅述。

⒈安裝fedora-rpmdevtools,生成rpmbuild目錄:


yum install fedora-rpmdevtools
fedora-buildrpmtree

修改~/.rpmmacros

%_topdir %(echo $HOME)/rpmbuild
%_prefix /usr/local
%_mandir /usr/local/man
%_defaultdocdir /usr/local/share/doc
%_sysconfdir /usr/local/etc
%_smp_mflags -j3
#%__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot
⒉下載源碼包:
下載我製作的源碼包,下載地址如下:
下載頁面
提取碼:
compiz-cvs 0009972112435392
xgl-cvs 7117086849938431

⒊使用rpmbuild命令重新編譯打包:


rpmbuild --rebuild xgl-cvs_060430.src.rpm
rpmbuild --rebuild compiz-cvs_060430.src.rpm
⒋我編譯好的xgl和compiz binary包下載,僅提供了x86包,使用x86_64版本的兄弟請下載源碼包重新打包。

下載頁面

五 如何配置系統文件,使Xgl & Compiz自動運行:

此方法適用於第四部分之rpm包安裝,及源碼編譯安裝(需要修改的路徑,由/usr/local/變為/opt/Xgl)
所謂配置無非是兩點:

——配置顯示管理器(displaymanager),使系統啟動后啟用Xgl server;
由於Xgl啟動時間稍長,所以要延長顯示管理器的等待時間,然後添加命令

——配置桌面環境、管理器,使桌面啟動后啟用Compiz窗口管理器;

下面簡單介紹一下:

①FC5的顯示管理器(DISPLAYMANGAGER)在/etc/sysconfig/desktop中配置,如:


cat /etc/sysconfig/desktop
DESKTOP=GNOME
DISPLAYMANAGER=GNOME

在這裡,桌面環境是GNOME,顯示管理器是GNOME(gdm);如果是KDE,則相應地均為KDE(kdm)。
②顯示管理器所對應的配置文件分別是:
GNOME: /etc/gdm/custom.conf
KDE: /etc/kde/kdm/kdmrc

修改為:
如果使用gdm,修改完配置文件使用gdmflexiserver命令更新,或重啟系統


[daemon]
GdmXserverTimeout=30 #修改這裡延長等待時間
[security]
[xdmcp]
[gui]
[greeter]
[chooser]
[debug]
[servers]
0=Standard # 修改這裡「覆蓋」默認Standard server
[server-Standard] # 修改這裡添加命令
name=Standard server
# nvidia 顯卡
command=/usr/local/bin/Xgl :0 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 -fullscreen
# ati 顯卡
# command=/usr/local/bin/Xgl :1 -ac -accel glx:pbuffer -accel xv:pbuffer -audit 0 -fullscreen
# i810 使用i810驅動的intel 顯卡
# command=/usr/bin/Xgl :0 -accel xv -accel glx:pbuffer -accel xv:pbuffer -ac -audit 0 -br -dpms -dpi 72
flexible=true # 使用gdmflexiserver命令更新
chooser=false

如果使用kdm

[General]
ConfigVersion=2.3
StaticServers=:0
ReserveServers=:1,:2,:3
ServerVTs=-7
ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6
PidFile=/var/run/kdm.pid
[Xdmcp]
Enable=false
Xaccess=/etc/X11/xdm/Xaccess
Willing=/etc/X11/xdm/Xwilling
[Shutdown]
HaltCmd=/sbin/poweroff
[X-*-Core]
Resources=/etc/X11/xdm/Xresources
Setup=/etc/X11/xdm/Xsetup_0
Session=/etc/kde/kdm/Xsession
AutoReLogin=false
AllowShutdown=Root
SessionsDirs=/usr/share/xsessions,/usr/share/apps/kdm/sessions,/etc/X11/dm/sessions
ClientLogFile=.xsession-errors-%s
[X-*-Greeter]
GUIStyle=Bluecurve
ColorScheme=BlueCurve.kcsrc
LogoArea=Clock
LogoPixmap=/usr/share/apps/kdm/pics/kdelogo.png
GreetFont=Sans,16,-1,5,75,0,0,0,0,0
StdFont=Sans,10,-1,5,50,0,0,0,0,0
FailFont=Sans,12,-1,5,75,0,0,0,0,0
AntiAliasing=true
UserList=false
ShowUsers=NotHidden
MinShowUID=500
SortUsers=true
FocusPasswd=true
EchoMode=OneStar
UseBackground=false
BackgroundCfg=/etc/kde/kdm/backgroundrc
ForgingSeed=1108476160
Preloader=/usr/bin/preloadkde
UseTheme=true
Theme=/usr/share/apps/kdm/themes/Bluecurve
# 看這一段,修改的是ServerCmd,所做的修改依顯卡而定 NVidia顯卡xv:fbo ATI顯卡xv:pbuffer Intel顯卡
#(支持的型號)同NVidia xv:fbo
[X-:*-Core]
ServerAttempts=5 # 修改這裡增加嘗試次數
ServerTimeout=60 # 修改這裡延長超時等待
ServerCmd=/usr/local/bin/Xgl :0 -ac -accel glx:pbuffer -accel xv:fbo -fullscreen -audit 0 # 修改這裡添加命令
ServerArgsLocal=-nolisten tcp
AllowShutdown=All
[X-:*-Greeter]
PreselectUser=Previous
FocusPasswd=true
LoginMode=DefaultLocal
[X-:0-Core]
[X-:0-Greeter]
③現在系統啟動后Xgl就會自動啟動了,但是還不夠,如果不使用Compiz窗口管理器,則使用開發版的Xgl Server就沒有意義了,
畢竟從性能完備、穩定性和速度上,Xgl還有不足。要啟用Compiz窗口管理器,對不同的桌面環境需要做不同的配置

首先,製作一個腳本:/usr/local/bin/compizrc


#!/bin/sh
#
# compiz plugins load order: decoration wobbly fade minimize cube rotate zoom scale move resize place switcher
#
LD_LIBRARY_PATH="/usr/local/lib:/usr/local/lib/window-manager-settings:/usr/local/lib/xorg/modules/xgl:/usr/local/lib/compiz" compiz --replace gconf > /tmp/compiz-`id -un`-`date +%s`.log 2>&1 &
/usr/local/bin/gnome-window-decorator > /tmp/gnome-window-decorator-`id -un`-`date +%s`.log 2>&1 &

使其可執行

chmod 755 /usr/local/bin/compizrc
如果使用GNOME,則:
打開 桌面 → 首選項 → 更多首選項 → 會話
選擇「啟動程序」標籤,添加啟動程序/usr/local/bin/compizrc
保存會話

如果使用KDE,則:
製作自動啟動程序桌面文件 ~/.kde/Autostart/Compiz.desktop


[Desktop Entry]
Name[en]=Compiz Window Manager
Name[zh_CN]=Compiz 窗口管理器
Comment[en]=Compiz - Composite Window Manager
Comment[zh_CN]=Compiz - 混合窗口管理器
Exec=/usr/local/bin/compizrc
Type=Application
Categories=Application;Utility
Encoding=UTF-8
如果使用Xfce,則:


[General]
SessionName=Default
SessionName[de]=Standard
DisableTcp=True
[Failsafe Session]
Count=4
Client0_Command=/usr/local/bin/compizrc # 修改這裡添加命令,替代xfwm4
Client0_PerScreen=False
Client1_Command=xfce4-panel
Client1_PerScreen=True
Client2_Command=xftaskbar4
Client2_PerScreen=True
Client3_Command=xfdesktop
Client3_PerScreen=False
[Splash Screen]
Engine=mice

經過上述配置,即可以圖形方式進行重啟系統,Xgl和Compiz自動運行;經過測試gdm或kdm均可正常運行。
④以文本界面啟動,如何自動運行Xgl & Compiz
很多人像我一樣,是喜歡啟動進入控制台(Console)的,(原來在這說了句廢話:^P)其實Linux控制台下的功能就很強悍了,只要你習慣;
這時就需要一個啟動腳本,下面是我寫的一個簡單腳本,供參考:


#!/bin/bash
# written by aaccdd(thomas.zhuzhy@gmail.com)
# progname: startXgl
# save as /usr/local/bin, or wherever you'd like to
# What will startXgl do:
# 1st, check out which desktop you're going to run
# if that is one of GNOME, KDE, XFCE, proceed
# otherwise, start default X
# 2nd, check out whether NV/ATI Driver installed"
# with a possitive result, proceed to start
# Xgl and Compiz
#
# start Xgl
#
startXgl(){
VCARD=; VCDRNV=0; VCDRATI=0; VCDRINTEL=0
[ -n "$(/sbin/lspci|sed -n '/VGA.*nVidia/p')" ] && VCARD=nv
[ -n "$(/sbin/lspci|sed -n '/VGA.*ATI/p')" ] && VCARD=ati
[ -n "$(/sbin/lspci|sed -n '/VGA.*Intel/p')" ] && VCARD=intel
case "$VCARD" in
nv) [ -n "$(sed -n '/nvidia/p' /etc/X11/xorg.conf)" ] && VCDRNV=1
[ "$VCDRNV" -eq 0 ] && echo -e "\tDriver not installed" && exit 1
Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 &
;;
ati) [ -n "$(sed -n '/fglrx/p' /etc/X11/xorg.conf)" ] && VCDRATI=1
[ "$VCDRATI" -eq 0 ] && echo -e "\tDriver not installed" && exit 1
Xgl :1 -ac -accel glx:pbuffer -accel xv:pbuffer -audit 0 &
;;
intel) [ -n "$(sed -n '/i810/p' /etc/X11/xorg.conf)" ] && VCDRINTEL=1
[ "$VCDRINTEL" -eq 0 ] && echo -e "\tDriver may not be supported" && exit 1
Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 &
;;
*) startx ;;
esac
/usr/local/bin/compizrc
DISPLAY=:1 eval $(dbus-launch --auto-syntax)
DISPLAY=:1 $wmnow &
DISPLAY=:1 exec /etc/X11/xinit/xinitrc.d/xinput.sh
}
wmnow=
which xterm 2>/dev/null && wmnow="xterm"
if [ -e $HOME/.Xclients-default ]
then
wmnow=$(sed -n 's/^WM=\"\(.*\)\"$/\1/p' $HOME/.Xclients-default )
elif [ $(which gnome-session 2>/dev/null) ]
then wmnow="gnome-session"
elif [ $(which startkde 2>/dev/null) ]
then wmnow="startkde"
fi
case "$wmnow" in
gnome-session|startkde|startxfce4) startXgl;;
*) startx;;
esac

有人說為什麼是display :1而不是0呢?這要看你的機器配置和運行方式,0不能行就嘗試1。而這個腳本遠不完善,
不是說運行就個腳本不成功,就不能運行Xgl & Compiz,請根據自己的實際情況修改、使用。
如果也想登錄自動啟動,則修改 ~/.bash_profile


echo "[ x"DISPLAY" = x"" ] && startXgl " >> ~/.bash_profile
⑤測試是否安裝成功:
到這裡基本完成了配置,剩下的就是運行了。建議新建一個用戶,如compiz測試一下。實際上,安裝完rpm包后,
不需要重啟系統就可以使用了。當然前提是測試成功。

Ctrl + Alt + F1(1-6)切換到控制台下,如果你是圖形方式啟動的。運行命令:


Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo &

如果是ati顯卡使用xv:pbuffer;如果報錯,Badlength...,Xgl前使用參數LD_PRELOAD=/usr/lib/libGL.so 。
如果成功,你會看到X啟動,有一個叉形的滑鼠標記。這說明Xgl運行成功。
有人又問了,為什麼是:1,呢?注意一下,如果你是圖形啟動,此時:0已經佔用了。

DISPLAY=:1 compiz --replace gconf &
DISPLAY=:1 gnome-window-decorator &

如果窗口變成藍色,出現滑鼠鍵頭,Compiz已經運行。

DISPLAY=:1 xterm &

這時你就看到一個在Xgl & Compiz環境下xterm終端的樣子了。
⑥為什麼我運行不了?
首先看的硬體配置,參考:http://gentoo-wiki.com/HOWTO_XGL#Hardware_Prerequisites
其次,查看是否配置文件有誤
再次,查看gconf鍵值是否有誤
補充:
有兄弟反映運行時打不開DISPLAY, 變通的方法:
修改startXgl腳本,早幾天的腳本里使用的是DISPLAY=:1,改成DISPLAY=:0;
或修改/etc/X11/xdm/Xservers,添加一行:


:0 local /usr/bin/X
:1 local /usr/bin/X

上面說的是圖形啟動狀態;
fc5的設備由udev管理,在控制台下生成的設備許可權,由pam按照系統許可權控制文件的設置決定,
比如顯卡設備,默認的許可權是600(用戶讀寫)因而當切換用戶(root除外)后,是無法使用該設備的。
解決的辦法是修改許可權設置。
舉個例子:在默認的控制台許可權控制文件中(/etc/security/console.perms.d/50-default.perms)聲音和顯卡設備許可權都是0600,即僅屬主讀寫,要讓登錄的用戶都可以讀寫(使用),則可生成文件60-custom.perms:

cat > /etc/security/console.perms.d/60-custom.perms << EOF
=/dev/dsp* /dev/audio* /dev/midi* \
/dev/mixer* /dev/sequencer \
/dev/sound/* /dev/beep \
/dev/snd/*
=/dev/nvidia* /dev/3dfx* /dev/dri/card*
# device permission definition
0666 0666 root
0666 0666 root
EOF

這樣,系統啟動時會自動設置聲音和顯卡設備為用戶均可讀寫。
六 寫在後面:
本文是作者原創,如有錯誤遺漏,敬請指出。經作者驗證,Aiglx啟動相對簡便,Xgl & Compiz在gnome、kde、xfce上都能
運行,比較穩定,運行一周多時間裡只有一次是手誤按了Shift + Backspace殺死了Xgl,沒有出現過崩潰現象,多數應用程序運
行正常。但各人機器配置多有不同,如有不適合之處,請指正批評。本文遵循GPL發布,保留原始發布信息基礎上,可以自由修改,
傳播。因按文中所述方法,造成損失的,作者不承擔任何責任。

由於Xgl和Compiz仍然處於快速開發狀態,雖然我會盡量更新,但是文檔中所述內容不能保證於最新的版本同 。

[火星人 ] 在 Fedora Core 5 上體驗 Aiglx 和 Xgl & Compiz已經有848次圍觀

http://coctec.com/docs/linux/show-post-132450.html