显示标签为“Ubuntu”的博文。显示所有博文
显示标签为“Ubuntu”的博文。显示所有博文

2009年5月14日星期四

等待中的catalyst 9.5

由于ubuntu 9.04 ATI显卡的问题,使用catalyst 9.4驱动会出现窗口最大化跨越两屏的情况,这在使用双屏的时候是不可接受的,所以一直使用开源的radeon驱动,使用radeon驱动一切正常,但是就是速度不怎么样,而且不支持3D,想偶尔游戏下不行,所以一直等待这catalyst 9.5, 前一段时间一直有谣言说catalyst 9.5将在5月13日放出,我从昨天开始就在网上找,今天也没有找到,所以应该是谣言吧。

目前使用开源ATI驱动的问题是有的时候鼠标所在的位置会花一小块,虽然也不是什么big deal,但是还是感觉不爽,今天网上偶尔看到有关于性能调整的文章,照做了,果然产生了效果。

#section device
Option "AccelMethod" "EXA" #default is XAA, EXA is faster
Section "DRI“
Mode 0666
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection

早先是知道这些调整选项的,但是ubuntu自动配置之后运行起来没有什么问题,就没有去管它了。现在调整一下效果更好了,不错,呵呵。

另外,找到了一个在gnome dual monitors下控制窗口的脚本,原来是想自己开发使得metacity具有转换monitor, workspace的功能,其实借用wmctrl程序,结合一些其他的小工具,这个功能就可以实现了,然后绑定到一个快捷键,即可达到一键移动窗口的功能了,在这个小脚本里面wmctrl指令的使用并没有什么特殊性的,值得关注的作者使用一些小工具做到了找到当前活动窗口的功能,这里贴一下, 根据这个脚本还可以调整wmctrl指令参数,达到把窗口在workspace中间传送的功能哦。

#!/bin/bash
# swap_monitor.sh
# Moves the active window to the other screen of a dual-screen Xinerama setup.
#
# Requires: wmctrl, xprop, xwininfo
#
# Author: Raphael Wimmer
# raphman@gmx.de

# get monitorWidth
monitorLine=$(xwininfo -root | grep "Width")
monitorWidth=$((${monitorLine:8}/2 ))
echo $monitorWidth

# get active window id
activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)")
activeWinId="${activeWinLine:40}"

# get window position
xPosLine=$(xwininfo -id $activeWinId | grep "Absolute upper-left X")
xPos=${xPosLine:25}

# get window width
xWidthLine=$(xwininfo -id $activeWinId | grep "Width")
xWidth=${xWidthLine:8}

# calculate new window position
if (( ${xPos} + ${xWidth}/2 > ${monitorWidth} ))
then xPos=$(( ${xPos} - ${monitorWidth}))
else xPos=$(( ${xPos} + ${monitorWidth}))
fi

# make sure window stays on screen completely
(( ${xPos} < 0 )) && xPos=0
(( ${xPos} + ${xWidth} > 2 * ${monitorWidth} )) &&
xPos=$((2*${monitorWidth} - ${xWidth}))

echo ${xPos}

# if maximized store info and de-maximize
winState=$(xprop -id ${activeWinId} | grep "_NET_WM_STATE(ATOM)" )

if [[ `echo ${winState} | grep "_NET_WM_STATE_MAXIMIZED_HORZ"` != "" ]]
then
maxH=1
wmctrl -i -r ${activeWinId} -b remove,maximized_horz
fi

if [[ `echo ${winState} | grep "_NET_WM_STATE_MAXIMIZED_VERT"` != "" ]]
then
maxV=1
wmctrl -i -r ${activeWinId} -b remove,maximized_vert
fi

# move window (finally)
wmctrl -i -r ${activeWinId} -e 0,${xPos},-1,-1,-1

# restore maximization
((${maxV})) && wmctrl -i -r ${activeWinId} -b add,maximized_vert
((${maxH})) && wmctrl -i -r ${activeWinId} -b add,maximized_horz

# raise window (seems to be necessary sometimes)
wmctrl -i -a ${activeWinId}

# and bye
exit 0

2009年4月24日星期五

ubuntu 9.04试用手记

我的显卡是ATI Radeon HD3600 Series.

ubuntu9.04昨天正式发布,了解到ubuntu 9.04上使用xorg-server 1.6, 这点和Arch的配置相同,由于之前在Arch上ATI显卡的问题,所以不甘心的想在ubuntu 9.04上试一下,是否是我配置Arch的功力不够,还是确实在软件方面有问题。

Desktop CD启动计算机的结果是双屏只有一个点亮,安装fglrx驱动之后,提示不能插入fglrx模块,这是由于和已经载入的radeon冲突造成的,但是desktop CD不是那么容易听你调摆的,当手工停用gdm之后,想手工卸载radeon模块,加载fglrx模块,系统居然死了,所以这让我狠下心来把以前装arch的分区拿来装这个9.04了,当然把arch打了个包备份了,防止要回来。

首先是顺便使用desktop cd安装,发现desktop cd硬盘安装时,它始终提示有磁盘分区挂载了,确实也是挂载了,但是只要安装的分区不是放iso的分区应该就没有问题,可是desktop cd还是在那提示,于是只有再下载了一个alternative cd了。安装成功。

安装私有驱动之后,光重启X是不行的,要么就自己把gdm的服务停掉,然后手工卸载radeon模块,然后自己加载fglrx模块,所以干脆重启好了。

但是重启之后,启动X故障,键盘都不响应,也退不出来,只有重启了,在这之前学聪明了,把gdm服务停掉了,在测试的时候使用startx来启动X。在xorg.conf serverFlags节中加上DontZap为false的配置,这样就可以使用Ctrl+Alt+Delete关闭X了。

重启之后才发现刚刚可能不是启动故障,而是使用fglrx驱动造成X CPU占用100%,所以需要很久才能启动起来,在查资料的时候,发现了ubuntu关于这个问题的讨论。从文中貌似到了现在fglrx已经可以和xorg-server-1.6合用了,但是我这里的结果还是不行,另外也了解到了-ati驱动中已经加入了对ATI r6xx芯片的支持,也许这个驱动可以呢?于是卸载了fglrx驱动,改了xorg.conf, 使用开源驱动。

使用开源驱动默认只点亮了一个显示器,比如我只点亮了左边的显示器,这个时候,如果使用xrandr或者gnome-display-properties调整,会造成左边(主)显示器,显示整个虚拟桌面的右边,于是都没有办法点到菜单了。找到了开源ati驱动的网页,这个网页上的内容值得一读,另外关于双屏的设置,这个网页中所提到的文章应该好好读一下。由于xrandr是比较新的东西,以前做双显我了解到都是在xorg.conf中来作,并且aticonfig也是这么来做的,复制Device, Screen, Monitor节,然后在ServerLayout中配置两个屏幕的关系,但是这样做,在现在的xorg中,搭配ati驱动是会造成xorg不能启动的。我照着xrandr的how to实验xrandr的命令才后然发现下面的指令:

xrandr --output DVI-1 --mode 1280x1024 --rate 75

这样才点亮了右边的显示器,也才让我看到了在ubuntu 9.04下配置双显示器的可能性。
如果要连接在DVI-1上的显示器在主显示器的右边,使用下面的指令:

xrandr --output DVI-1 --right-of DVI-0

如果xrandr报错,提示屏幕大小不对,那么需要检查一下xorg.conf中关于虚拟屏幕的设置,比如我两个17的显示器,每个分辨率为1280x1024,那么虚拟屏幕大小至少应为2560x1024,我那时在arch上配置不成功,它提示屏幕最大只支持1280x1280,我曾经怀疑是开源radeon驱动仅仅可以支持到此大小,所以一度放弃了,但是也没有在xorg ati驱动的页面上找到此限制,所以才决定今天再试一下的。
但是很有意思的是,在ubuntu 8.10下,fglrx私有驱动工作得非常好,所以没有那么多限制了,直接使用ATI catalyst contrl center配置好就可以了,管它什么VitualScreen的设置!

一般的how to都会说要把xrandr的命令做到.xinirc,或者Xsession中去,但是ubuntu不用那么麻烦,使用gnome-display-properties改双屏设置之后,会在$HOME/.config下生成一个monitors.xml文件,里面保存了显示器的分辨率,相互关系等信息,在这方面ubuntu这是做得不错!

使用开源驱动,对于r6xx以上的显卡,3D支持还没有,性能也不佳,所以桌面效果就不能开了;否则就要等哪天fglrx驱动和xorg-server-1.6可以完美合作了。

看来我还是继续使用ubuntu 8.10好了!显卡支持好,偶尔还能打下Nexuiz呢!

2009年4月20日星期一

说说ubuntu的一些设定

今天又花了一点时间,仿照着ubuntu的方法试图配置下Arch,可是显卡还是不行,另外才发现使用arch时显卡的glxgear测定值只有1200左右而用ubuntu有5000多,并且Arch下有拖影和延迟,所以决定完全换到ubuntu上来,之前是用的装arch那个盘上的grub,现在想用ubuntu的了。在安装ubuntu之后,如果没有设定grub,那么/boot下是没有grub目录的,要先grub-install /dev/sdaX一下(boot partition). 我开始以为只要在grub shell中写 root (hd0, X), setup (hd0)即可,结果setup提示没有找到stage1. 其实menu.lst可以完全从arch那边复制过来,但是我记得debian,ubuntu的menu.lst有些特别它可以在内核升级时自动的修改menu.lst,并且选项都可以按照你在注释中写的体现出来,可是不知道该怎么生成阿,看了下grub安装包的内容,看到有一个update-grub命令,猜想应该是这个了,果然它可以在没有menu.lst时自动生成一个。在设定智能化方面,debian/ubuntu可是非常不错的。

另外,usplash改分辨率时,光在usplash.conf中改是不行的,它只能影响到重启时的splash,而要在内核启动时就显示,那么还必须使用update-initramfs声称一个新的initrd.img才行!

2009年4月19日星期日

逃回到Ubuntu

在Arch下面为了显卡的问题困扰了很久,升级到了xorg-server1.6之后,根本就是双屏用不了了,而不谈透明效果的问题!看到catalyst-9.4版本时使用了ubuntu中的catalyst-installer-8.60版本,我突然想,像ubuntu这样关心用户体验并且有商业公司支持的linux发行版本这个问题应该考虑了吧?下载了ubuntu8.10的desktop cd,放到硬盘里面,搞了个硬盘启动,看了下,ubuntu下开启私有驱动完全没有问题!我才知道我从换了电脑以来,我是对于ATI显卡误会太多,不是Linux不行,而是发行版本的问题,从这点来看,ubuntu的优势体现出来了,我配置ArchLinux到现在零零总总的业余时间不下一个星期了!想当年,刚从ubuntu下转到arch下是多么的兴奋,想到可以像gentoo那样滚动升级,有简单的PKGBUILD,很多大软件还不用自己编译!后来配置的时候参照了很多ubuntu的东西,当时可是深深体会了ubuntu的用户体验了,之前我总以为Linux发行版本之间的区别很小,都是用一样的kernel,都是用一样的开源软件,那么能有多大区别,我当时所理解的Linux发行版的定义其实就是一套自己软件包管理系统和一些定制而已,而没有体会到定制用所包含的玄机:对于用户看见的定制是对系统的一些初始设定,这个设定适合于大部分的人,如果你不是有特别的偏好,使用其提供的已经足够;对于用户不可见的定制则是很多发行版独有的patch,虽然这些patch是公开的,但是不是每个发行版本都能用上考虑到的。所以Linux发行版本现在我理解不是一些自由软件的简单集合,而应该是优选的一系列软件并且通过系统的测试的软件产品!用了将近半年的arch linux之后,总结下来,升级之后,停下来配置系统的经历有好几次,有几次是udev,hal的问题,然后换了电脑之后,显卡的问题也一直困扰着我,arch确实给了用户很大的自由和可定制性,可是我感觉arch的很多方面测试不够,软件包提供和更新不够仔细,这可能是因为开发者少的原因吧,对比gentoo,gentoo尽管是通过源代码编译需要花费很多时间,但是配置基本上都是自动化进行的,软件版本的的管理也更加的灵活,而arch这方面似乎做得不够,不过总体看来Arch仍然不失为一个优秀的Linux发行版本,其非常简单和灵活,只是我现在的硬件环境不合适罢了。这些问题让我甚至从Linux世界逃离到Windows,不过这样的经历之后,特别是看过了《productive programer》之后,把windows好好配置了一番,再加上gvim,linux下的命令行工具的windows移植版本,发现自己慢慢喜欢上windows xp了,再加上偶尔电驴,迅雷一下,windows也用得非常舒服。而且在公司,用的是正版的windows xp,也没有心理上的障碍了,再者我觉得微软的开源策略慢慢开放起来,VS2008很好用,提供的框架还是免费的,DotNet3.5编程新功能让人欣喜,ASP.NET MVC也对胃口,eclipse在windows上更加的漂亮和迅速,开源的dotnet library也慢慢多了起来,这些都让我对windows更加喜欢了。

时间到了2009年,Linux 64位操作系统已经非常成熟了,我所关心的JDK, eclipse, flash,多媒体codecs, 在64位操作系统下都表现完美了, 如果使用ubuntu的AMD 64bit版本,那么就不存在arch i686优化对于ubuntu i386的速度优势了,我想可以尝试下Ubuntu 64bit了。安装之后体会也确实如此,不知道是计算机硬件升级带来的感觉还是真的64bit操作系统的速度优势,感觉操作流畅了很多。

值得一提的是ubuntu对于双屏的支持也非常好,在8.10中由于xorg-server的自动侦测功能的加入,ubuntu的xorg.conf文件非常简洁,并且双屏配置可以通过xrandr动态配置,使用catalyst control center配置起来更是方便,所以很喜欢。不过仍然有一点遗憾的是gnome的窗口管理器,没有方便的窗口双屏间移动的功能,在windows下可以使用amd提供的驱动来达到虚拟桌面和窗口控制的功能,而Linux下有现成的虚拟桌面功能,但是窗口切换目前只有fvwm很方便,可以配置快捷键,要是gnome的窗口管理器也可以做到该多好阿,使用fvwm好是好,但是从整体表现上来看,如果不考虑性能,gnome还是要易用一些,fvwm则要自己配置很多。看看有没有时间自己找找能否在gnome的metacity窗口管理器中增加这样的功能,最好是同时在窗口的右键菜单中增加还有就是快捷键支持。尽管fvwm可以和gnome一起使用,但是使用起来感觉不伦不类的,不舒服,所以试着要patch一下metacity了

再好好用ubuntu吧!把配置Linux的时间变成生产力!