*BSD17 Apr 2009 12:08 pm

开始我还以为,qt4的webkit在4.5之前的版本里,对gbk编码的网页支持的不好,所以非常的期待新版本的发布,但是很久都没有消息。

不过KDE4的页面我眼馋了很久,虽然有不少程序非常的不稳定,但是基本的应该问题不大的,比如Konqueror之类的。但是安装之后,发现Konqueror同样不能显示gbk的网页。于是我才觉得不应该是webkit的问题,很有可能是少装了什么软件。

果然,#cd /usr/ports/chinese/qt4-codecs-cn && make install clean问题解决。

不过Midori对应webkit-gtk固然性能好,但还是经常崩溃。和qtwebkit不一样的是,midori不能显示gtk编码,字体设置也没有用,不是乱码,是方框字体。

期待qt4.5被port进来,这样arora的性能就能上一个新档次了。midori到时候就可以放弃了。

*BSD13 Mar 2009 12:40 pm

今天收到一条消息,《Futuremark发布免费浏览器在线测试软件Peacekeeper》,一时兴起,测试了我所用的浏览器在FreeBSD下的表现。

测试平台:硬件:AMD TL-52炫龙,1.6G,内存1.5G,集成显卡gForce6150GO

软件:FreeBSD-7.1-release-p3,显卡驱动nv,xorg7.4

测试对象:opera 10,opera 9.64,firefox 3.07, midori 0.12(webkit-gtk2-1.01),arora 0.40(qtwebkit-4.4.3)

说明:为确保公平,以及尽可能模拟平时使用的情况,这里,一次将所有的浏览器都打开,并保留上次浏览的页面(大概opera10有20多个标签,opera9.64有10多个,firefox有3个,其他都一个)。每次测试都是将其他的浏览器最小化,测试用的最大化。

因为不想装Kde和Kde4,所以就没有测试 konqueror,改用arora代替。同样的还有galoen和epiphany,用midori代替。firefox2与firefox3不能同时使用,所以改用seamonkey代替。

以下是测试结果。

2009-03-13-115708_718x472_scrot

Peacekeeper将两个webkit的浏览器都识别成unknown。这里我们要说明下,其中最低的139分,是arora(qtwebkit)取得的,而最高的435分,则是midori(webkit-gtk)取得的,很有趣的结果。

不幸的是,webkit的浏览器显示gbk编码的页面的时候都有问题,也容易崩溃,实用性不是很强。期望qt4.5内置的webkit,能有大的改善。

而两个主流的浏览器,firefox和opera,其中firefox安装了不少扩展,因为平时就用得着。测试结果看,firefox的表现要好于opera9.64,但比opera 10要差。由于不想添加更多的扩展,比如快速拨号和鼠标手势,再加上,opera内置邮件功能,我平时还是用opera比较多 。

估计如果是windows平台的话,chrome还是更强。不过,我还是喜欢opera,性能和好用之间,我选择后者。至于firefox,只是不 太适合我的使用习惯而已,并不是不好。

以下是测试地址:Futuremark Peacekeeper

*BSD08 Jan 2009 04:15 pm

之前一直用linux-flashplayer7来看一些带flash的网站,在FreeBSD下,flash7非常稳定,但是现在很多网站已经不支持了,而且重要的是,flash7一直有没有修复的漏洞,可能导致资料泄漏等问题,所以如果你有订阅portaudit的话,它会制止你安装的。

而在某次更新,具体的说,是升级到9.0.151版本以后,flashpalyer9终于能稳定的运行在FreeBSD下了。当然仍然是在linux的模拟环境下。具体可以看前面的文章。
运行
#cd /usr/ports/www/linux-flashplugin9
#make install clean

就可以安装上了。
安装nspluginwrapper,可以让你在firefox,而不仅仅是linux模拟环境下的firefox能使用这个插件。
#cd /usr/ports/www/nspluginwrapper
#make install clean

然后按照它的提示,在普通用户下运行
$nspluginwrapper -v -a -i
会自动查找你机器上的插件,并安装到~/.mozilla/plugins。

OK,这样就可以了。但是还有一个小问题,播放器没有声音,控制台的出错信息里显示,找不到声音设备。运行
$/compat/linux/bin/sh /usr/bin/ldd /usr/lib/libflashsupport.so
发现,缺少一个叫liberr的重要的库文件。而这个问题,只出现在linux_base-fc6和linux_base-f7上面。fc4和f8的rpm文件里面都包含这个的。

目前之所以还用fc6,一个是因为它是基于Linux 2.6内核的,再一个是,它在FreeBSD下是唯一一个支持输入法的模拟环境。于是去找相应的文件就是。
$wget http://archives.fedoraproject.org/pub/archive/fedora/linux/core/6/i386/os/Fedora/RPMS/e2fsprogs-libs-1.39-7.i386.rpm
解压缩
$rpm2cpio e2fsprogs-libs-1.39-7.i386.rpm | cpio -div
复制到linux的模拟环境下
#cp -R lib /compat/linux/
这样再启动就没问题了

如果遇到别的linux程序有问题,也可以如法炮制。不过能用FreeBSD本身解决的,还是用FreeBSD的吧。毕竟,ports的自动化,还是强悍

*BSD07 Jan 2009 06:02 pm

mlterm也是一个老牌的终端模拟器,据说rxvt-unicode的作者就是用了mlterm,觉得很好,后来才写了rxvt-unicode的。mlterm是比较早,也是比较好支持unicode的终端,当然也支持其他的字符集比如GBK等等。

mlterm的一些特色有:速度很快,而且在资源占用上最小,比xterm还小,当然,比rxvt(不是unicode的)还是大那么一点点的。支持deamon模式,(rxvt-unicode也支持,不过资源占用比较大)。图形化的配置界面。透明和背景图案,以及最有特色的多屏支持。

mlterm的不足,使用的矢量字体后,刷新比较慢,一闪一闪的。而rxvt-unicode因为默认开启了双倍缓冲,比较快。

mlterm的一般配置,用图形界面配置就行,调出的快捷键是ctrl+鼠标右键。你可以设定一些编码,输入法,字体大小颜色,背景等等。如果不能设置输入法,别着急,一会可以编辑配置文件的。

图形化配置

这个里面注意设置Meta key为esc,这样在emacs里面就可以用alt键了,其他大部分选项不用更改。

中文用户主要有两个问题,显示和输入法。如果在刚才的项目中,没有你的,或者你选不上你的输入法,在~/.mlterm目录下面,新建一个叫xim的文件,比如,我用的是fcitx,那么我的内容就是

fcitx=zh_CN.UTF-8
,然后,在~/.mlterm/main文件中加入这个输入法就行

input_method = xim:fcitx:zh_CN.UTF-8
,scim用户直接用scim替换fcitx就可以了

而显示的问题,主要是字体。mlterm有两种方式,AA或者不开。这里推荐AA,因为在我的测试用,如果不开AA的话,输入法可能会有冲突,不能启动。当然照顾到刷新速度,建议用点阵字体或者是关闭了AA的矢量字体。编辑~/.mlterm下面的aafont,格式是字体名+编码,注意你的字体应该包含这个编码的

ISO8859_1=smoothansi-iso10646-1;
ISO10646_UCS4_1=smoothansi-iso10646-1;
BIG5=WenQuanYi Bitmap Song-iso10646-1;
GB2312_80=WenQuanYi Bitmap Song-iso10646-1;
GBK=WenQuanYi Bitmap Song-iso10646-1;
ISO10646_UCS4_1_BIWIDTH=WenQuanYi Bitmap Song-iso10646-1;

如果你足够幸运,不用aa的时候也能输入的话,可以编辑font文件,注意换成你喜欢的字体,内容是

ISO8859_1=13,smoothansi;
ISO10646_UCS4_1=13,smoothansi;
GB2312_80=12,-aliasmisc-ar pl uming cn-light-r-normal--12-*-0-0-p-*-gb2312.1980-*;
GBK=12,-aliasmisc-ar pl uming cn-light-r-normal--12-*-0-0-p-*-iso10646-*;
BIG5=12,-aliasmisc-ar pl uming cn-light-r-normal--12-*-0-0-p-*-big5-*;

如果你遇到backspace和delete键举止怪异的话,那就需要编辑一个termcap文件了

xterm|rxvt:\
kD=\E[3~:kb=^H:ut
vt100:\
kD=^?:kb=^H:ut
*:\
kD=^?:kb=^H

,mlterm默认是使用xterm模式,如果还有问题,就在main中加入

termtype = xterm

以下就是mlterm的一些特色了:

用终端上bbs是不是很爽,不过为此还要多开个screen切换字符集的话,还是有点麻烦。用mlterm就不是了,直接在选项中选中gbk编码,apply就可以了。输入就算了,反正我也是guest(其实我平时都是用一个支持gbk的rxvt-2.6.4上的)

”设置</p

*BSD25 Dec 2008 08:29 pm

本来一直用Fvwm,不过最近老导致不能正常关机,于是改成了fluxbox。但是接到我MM给我的任务,帮她翻译资料。打开太多,窗口总是不停的遮盖,效率很低,于是换成了Awesome窗口管理器。这个是我从LinuxTOY上看来的,非常适合工作用。

Awesome是一个平铺型的窗口管理器。就是说,不会出现窗口重叠的现象,也不会出现窗口不能填满桌面的现象。为了完成任务,之前一直没关心我的桌面设置的细节,今天圣诞节,就抽空搞了一下。

主要是设置了一下状态栏的细节,字体啦颜色啦,还有一些快捷键,默认程序和程序的默认设置,比如,把浏览器和pidgin都设置在了tag=Webs上打开,这样就很专心,也不用关心程序的长时间启动。

此外,最重要的是,添加了两个脚本,一个是显示系统状态的,一个是显示时间的。由于awesome不带session管理,所以很多东东都要从~/.xinitrc里面启动。和fvwm一样,awesome是一个对unix相当友好的窗口管理器,意思就是说,你可以用很多基本的程序和窗口管理器对话。比如toviso当年在fvwm的截图式的最小化。而且fvwm也有很多小脚本实现诸如时间显示啦,音量调节啦,等等。awesome也是这样的,新的awesome3.1可以实现非常复杂的功能。

FreeBSD里面还是awesome2.3.4的版本,对我来说,这个足够用了。本来打算用conky来显示的,不过由于FreeBSD对我的笔记本的ACPI的电源管理支持不够好 ,使得conky运行一段时间后必然出错,系统缓慢。我只好自己从系统里面提取数据来显示了。不过很成功,哈

看图:

桌面

桌面效果

OK,这里是我的两个脚本文件,添加到 ~/.xinitrc里面后台启动就行(仅适用于FreeBSD以及Awesome2.3.4)以及相应的配置文件

显示时钟:

#!/bin/sh
# this script is for awesome 2.3# Point this to a directory you can write to.
#PID=~/var/run/awesome_clock.pid
PID=~/.awesome/awesome_clock.pidupdateClock() {
# See 'man date' to see the possible replacements for the % fields.
echo "0 widget_tell mystatusbar clock text " `date +"%a %Y-%m-%d% %H:%M:%S"` "" | awesome-client
}# This will prevent this script from running multiple times
if [ -f $PID ] ; then
kill -0 `cat $PID` 2> /dev/null
if [ $? -ne 0 ] ; then
echo "["`date`"] $0 killed bogus lock file ["`cat $PID`"]"
else
echo "["`date`"] $0 already running ["`cat $PID`"]"
exit
fi
fi
echo $$ > $PID

while true; do
updateClock
sleep 1;
done

显示系统状态:
#!/bin/sh
# this script is for awesome 2.3# Point this to a directory you can write to.
#PID=~/var/run/awesome_stat.pid
PID=~/.awesome/awesome_stat.pid
NET_IF=nfe0 #换成你自己的网卡界面
NET_HOST=dy #换成你自己的机器名字
DELAY_TIME=2 #2秒更新一次updateSTAT() {
NET_DOWN_NEW=`netstat -I $NET_IF -b | grep $NET_HOST | awk '{print $7}'`
NET_UP_NEW=`netstat -I $NET_IF -b | grep $NET_HOST | awk '{print $10}'`
NET_DOWN_SHOW=`expr \( $NET_DOWN_NEW - $NET_DOWN_OLD \) / 1024 / $DELAY_TIME`
NET_UP_SHOW=`expr \( $NET_UP_NEW - $NET_UP_OLD \) / 1024 / $DELAY_TIME`
echo "0 widget_tell mystatusbar stat text" " CPU" `sysctl dev.cpu.0.freq | awk '{print $2}'`"MHz" `sysctl hw.acpi.thermal.tz0.temperature | awk '{print $2}'` NET down $NET_DOWN_SHOW K/s,up $NET_UP_SHOW K/s BAT `sysctl hw.acpi.battery.life | awk '{print $2}'`% "" | awesome-client
NET_DOWN_OLD=$NET_DOWN_NEW
NET_UP_OLD=$NET_UP_NEW
}

# This will prevent this script from running multiple times
if [ -f $PID ] ; then
kill -0 `cat $PID` 2> /dev/null
if [ $? -ne 0 ] ; then
echo "["`date`"] $0 killed bogus lock file ["`cat $PID`"]"
else
echo "["`date`"] $0 already running ["`cat $PID`"]"
exit
fi
fi
echo $$ > $PID

#
NET_DOWN_OLD=0
NET_UP_OLD=0

while true; do
updateSTAT
sleep $DELAY_TIME;
done

配置文件:
screen 0
{
general
{
border = 1
snap = 8
mwfact_lower_limit = 0.1
mwfact_upper_limit = 0.9
resize_hints = false
new_get_focus = true
}
styles
{
normal
{
font = "smoothansi,WenQuanYi Bitmap Song 8"
fg = "#a0a0a0"
bg = "#0a0a0a"
border = "#0a0a0a"
shadow = "#111111"
shadow_offset = "1"
}
focus
{
fg = "#ffffff"
bg = "#285577"
border = "#285577"
}
urgent
{
fg = "#ff5656"
bg = "#a0a0a0"
}
}
tags
{
tag Main {layout = "tile" }
tag Webs {layout = "tile" }
tag Stat {layout = "tile" }
tag View {layout = "tile" }
tag Funs {layout = "floating" }
tag File {layout = "tile" }
#tag tag1 {layout = "tile" }
#tag tag2 {layout = "tile" }
#tag tag3 {layout = "tile" }
}
layouts
{
layout tile { image = "/usr/local/share/awesome/icons/layouts/tileleftw.png" }
layout tilebottom { image = "/usr/local/share/awesome/icons/layouts/tiletopw.png" }
layout floating { image = "/usr/local/share/awesome/icons/layouts/floatingw.png" }
}
statusbar mystatusbar
{
position = "top"
height = "15"taglist mytaglist
{
#align = "center"
mouse
{
button = "1"
command = "tag_view"
}
mouse
{
button = "1"
modkey = {"Mod4"}
command = "client_tag"
}
mouse
{
button = "3"
command = "tag_toggleview"
}
mouse
{
button = "3"
modkey = {"Mod4"}
command = "client_toggletag"
}
mouse
{
button = "4"
command = "tag_viewnext"
}
mouse
{
button = "5"
command = "tag_viewprev"
}
}
layoutinfo mylayoutinfo
{
mouse
{
button = "1"
command = "tag_setlayout"
arg = "+1"
}
mouse
{
button = "4"
command = "tag_setlayout"
arg = "+1"
}
mouse
{
button = "3"
command = "tag_setlayout"
arg = "-1"
}
mouse
{
button = "5"
command = "tag_setlayout"
arg = "-1"
}
}
textbox stat # "clock" is the name of your widget
{
text_align = "center"
align = "left"
style { fg = "pink" bg = "#0a0a0a" }
#width = 160
text = "" # the - will be replaced by the date and time
}
tasklist mytasklist
{
#text_align = "center"
mouse
{
button = "4"
command = "client_focusnext"
}
mouse
{
button = "5"
command = "client_focusprev"
}
mouse
{
modkey = {"Mod4"}
button = "4"
command = "client_swapnext"
}
mouse
{
modkey = {"Mod4"}
button = "5"
command = "client_swapprev"
}
}
textbox clock # "clock" is the name of your widget
{
text_align = "center"
align = "right"
style { fg = "yellow" bg = "#0a0a0a" }
#width = 160
text = "" # the - will be replaced by the date and time
}
}
}

rules
{
rule { name = "Gimp" float = true }
rule { name = "MPlayer" float = true }
rule { name = "Acroread" float = true }
rule { name = "pinentry" float = true }
rule { name = "pidgin" tags = "Webs" }
rule { name = "skype" float = true }
rule { name = "Dialog" float = true }
rule { name = "Download" float = true }
rule { name = "Widget" float = true }
rule { name = "feh" float = true }
rule { name = "Opera" tags = "Webs"}
}

mouse
{
root
{
button = "3"
command = "spawn"
arg = "exec urxvtc"
}
root
{
button = "4"
command = "tag_viewnext"
}
root
{
button = "5"
command = "tag_viewprev"
}
client
{
modkey = {"Mod4"}
button = "1"
command = "client_movemouse"
}
client
{
modkey = {"Mod4"}
button = "2"
command = "client_zoom"
}
client
{
modkey = {"Mod4"}
button = "3"
command = "client_resizemouse"
}
titlebar
{
button = "1"
command = "client_movemouse"
}
titlebar
{
button = "3"
command = "client_resizemouse"
}
}

keys
{
key
{
modkey = {"Mod4"}
key = "F1"
command = "spawn"
arg = "for i in /usr/share/man/man?;do ls $i; done | cut -d. -f1 | awesome-menu -e 'urxvtc -e man ' 'See manual page for:'"
}
key
{
modkey = {"Mod4"}
key = "F2"
command = "spawn"
# arg = "find /usr/bin -type f -executable ! -empty | awesome-menu -e 'exec ' Execute:"
# arg = "exec dmenu_run -fn '-*-fixed-medium-r-normal--20-*-*-*-*-*-*-*' -nb '#0a0a0a' -nf '#a0a0a0' -sb '#285577' -sf '#ffffff'"
arg = "exec dmenu_run -fn smoothansi -nb '#0a0a0a' -nf '#a0a0a0' -sb '#285577' -sf '#ffffff'"
}
key
{
modkey = {"Mod4"}
key = "F3"
command = "spawn"
# arg = "cut -d' ' -f1 ~/.ssh/known_hosts | cut -d, -f1 | awesome-menu -e 'urxvtc -e ssh ' 'ssh to:'"
# arg = "exec firefox"
}
key
{
modkey = {"Mod1"}
key = "F1"
command = "spawn"
arg = "exec urxvtc"
}
key
{
modkey = {"Mod1"}
key = "F2"
command = "spawn"
arg = "exec gmrun"
}
key
{
modkey = {"Mod4"}
key = "Return"
command = "spawn"
arg = "exec urxvtc"
}
key
{
modkey = {"Mod4"}
key = "space"
command = "tag_setlayout"
arg = "+1"
}
key
{
modkey = {"Mod4", "Shift"}
key = "space"
command = "tag_setlayout"
arg = "-1"
}
key
{
modkey = {"Mod4"}
key = "b"
command = "statusbar_toggle"
}
key
{
modkey = {"Mod4"}
key = "j"
command = "client_focusnext"
}
key
{
modkey = {"Mod4"}
key = "k"
command = "client_focusprev"
}
key
{
modkey = {"Mod4"}
key = "Tab"
command = "focus_history"
arg = "-1"
}
key
{
modkey = {"Mod4", "Shift"}
key = "j"
command = "client_swapnext"
}
key
{
modkey = {"Mod4", "Shift"}
key = "k"
command = "client_swapprev"
}
key
{
modkey = {"Mod4", "Control"}
key = "j"
command = "screen_focus"
arg = "+1"
}
key
{
modkey = {"Mod4", "Control"}
key = "k"
command = "screen_focus"
arg = "-1"
}
key
{
modkey = {"Mod4"}
key = "h"
command = "tag_setmwfact"
arg = "-0.05"
}
key
{
modkey = {"Mod4"}
key = "l"
command = "tag_setmwfact"
arg = "+0.05"
}
key
{
modkey = {"Mod4", "Shift"}
key = "h"
command = "tag_setnmaster"
arg = "+1"
}
key
{
modkey = {"Mod4", "Shift"}
key = "l"
command = "tag_setnmaster"
arg = "-1"
}
key
{
modkey = {"Mod4", "Control"}
key = "h"
command = "tag_setncol"
arg = "+1"
}
key
{
modkey = {"Mod4", "Control"}
key = "l"
command = "tag_setncol"
arg = "-1"
}
key
{
modkey = {"Mod4"}
key = "Escape"
command = "tag_prev_selected"
}
key
{
modkey = {"Mod4"}
key = "Left"
command = "tag_viewprev"
}
key
{
modkey = {"Mod4"}
key = "Right"
command = "tag_viewnext"
}
key
{
modkey = {"Mod4"}
key = "m"
command = "client_togglemax"
}
key
{
modkey = {"Mod4", "Control"}
key = "Return"
command = "client_zoom"
}
key
{
modkey = {"Mod4", "Control"}
key = "space"
command = "client_togglefloating"
}
key
{
modkey = {"Mod4"}
key = "s"
command = "client_togglescratch"
}
key
{
modkey = {"Mod4", "Control"}
key = "s"
command = "client_setscratch"
}
key
{
modkey = {"Mod4", "Shift"}
key = "c"
command = "client_kill"
}
key
{
modkey = {"Mod4", "Shift"}
key = "q"
command = "quit"
}
key
{
modkey = {"Mod4", "Control"}
key = "r"
command = "restart"
}
key
{
modkey = {"Mod4"}
key = "0"
command = "tag_view"
}
keylist
{
modkey = {"Mod4"}
command = "tag_view"
keylist = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
arglist = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
}
key
{
modkey = {"Mod4", "Control"}
key = "0"
command = "tag_toggleview"
}
keylist
{
modkey = {"Mod4", "Control"}
command = "tag_toggleview"
keylist = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
arglist = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
}

key
{
modkey = {"Mod4", "Shift"}
key = "0"
command = "client_tag"
}
keylist
{
modkey = {"Mod4", "Shift"}
command = "client_tag"
keylist = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
arglist = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
}

key
{
modkey = {"Mod4", "Shift", "Control"}
key = "0"
command = "client_toggletag"
}
keylist
{
modkey = {"Mod4", "Shift", "Control"}
command = "client_toggletag"
keylist = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
arglist = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
}
}
# vim:filetype=config:cfg

*BSD& Linux11 Nov 2008 05:34 pm

我曾经说过,我之所以使用FreeBSD是因为我喜欢自由而不喜欢盗版。所以我用Octave替代Matlab,用R替代Eviews用OpenOffice替代MsOffice……直到最后,我用FreeBSD替代了Windows。

然而对于办公来说,Windows有一个优势是无法比拟的,就是你可以抱怨。如果你用*unix,出现问题的话,你的上司绝对不会因为你用*unix就网开一面,相反会变本加厉。所以,我MM说她打算在她的机器上安装Linux的时候,我也感到吃惊。

因此,首先是确定Linux版本。我MM的状况是这样的,不想刻盘,手头有一张FreeSBIE的LiveCD。希望能保留一个windows备份。此外,我MM对操作系统的知识不多,除了知道有个Linux,并且知道我用的是FB以外,从来没接触过Linux,比如最重要的,她不明白文件系统存在区别。

这样看来,如果安装过程过于繁复,显然不合适,她会失去信心。FB我自己也没搞定硬盘安装的问题,虽然我当时是用VMware曲线救国安装上去的,但对她而言,用VMware本身就是一个风险。因此,我决定教使用U盘安装的办法(FreeBSD的U盘安装太复杂,我自己都没有深究,就算了)。版本,挑选的Ubuntu的一个变种,gOS。

之所以选gOS,一方面是因为debian系的包管理,虽然比不上FB的,但对她这样的初学者来说,是简单的。而xubuntu不能直接访问windows网络,似乎不大合适,Kubuntu,ubuntu则缺少一些特性,比如wine和skype(我和我MM都是靠skype交流的),而且gOS显得更为漂亮些。

好了,我MM准备了一个2G的U盘,并下载了gOS的LiveCD。给她传了几个文件,一个是将U盘制作成可启动U盘的小程序,因为我测试过,如果没经过这一步的话,可能不会成功。一个是grub4dos及其图形安装界面。这个可以引导iso从U盘启动,就靠它了。

OK,按照U盘启动工具,制作成了USB-Hdd类型。用grubinst_gui安装grub4dos到U盘mbr后(这两步都只需要选对U盘)。复制grldr和menu.lst到U盘根目录下,我发了一个修改好的menu文件给她,然后,她依照我的提示,新建了一个叫gOS的文件夹,并从gos的安装iso中的casper目录下,提取了vmlinuz和initrd.gz,和iso一起,复制到这个文件夹下

OK,她的是华硕的本子,开机按esc,可以进入引导设备选择,就这样直接启动了U盘上gOS的LiveCD。没有出现硬件的兼容性的问题,很好。安装程序是中文的,很好。直接双击后安装到第4步是分区。我MM对分区不是很理解,因为这个界面下没有c盘,d盘的说法。于是,我根据她说的,按照她的要求,让她明白了,hda5就是原来的D盘,然后按照她的想法,调整了F盘(逻辑分区上最后一个分区)的大小,空出1G出来,设置成了交换分区,E盘作为/分区,F作为/home分区。我觉得这样分区对她来说又好理解,又好管理数据。

然后继续下一步下一步,填写上登录的用户名,直接就安装上了。

重启后,双系统一点问题都没有。然后设置好网络后(这点我好佩服,哈哈哈),安装了中文包,已经基本上能工作了。

附录,我的menu.lst文件
default=0
timeout=20

title Install gOS
find --set-root /gOS/gos.iso
kernel /gOS/vmlinuz boot=casper iso-scan/filename=/gOS/gos.iso ro locale=zh_CN.UTF-8
initrd /gOS/initrd.gz

*BSD04 Oct 2008 05:21 pm

Ubuntu有一段时间被媒体广泛报道,据说是因为对硬盘有损伤,原因就是这个Load/Unload Cycle Count的问题。这里有篇文章详细的说明了这个问题的来龙去脉和解决方案:《Ubuntu中的Load/Unload Cycle Count问题及解决方案》。但实际上这个问题,同样在FreeBSD中存在,至少对我来说是这样的。

我用的是HP的本子,新换上的硬盘才2个月,但是Load/Unload Cycle Count数据已经暴涨到了8w,虽然我用电脑的时间是比较长,但是这个数据实在是太过夸张了,因此,有必要控制下。

首先安装检测硬盘状态的工具:
#cd /usr/ports/sysutils/smartmontools/ && make install clean
然后使用smartctl就可以查看硬盘信息了,比如,我的硬盘是/dev/ad4,那么用命令
#sudo smartctl /dev/ad4 -a | grep 193
就可以看到这样的结果
193 Load_Cycle_Count 0x0032 063 063 000 Old_age Always - 75992

既然Cycle_Count数据的问题,是由于笔记本的节能设置造成的。而显然,我之前提到的powered频率调节的守护进程对笔记本用户意义重大,不能放弃,所以需要一个能单独调节硬盘节能设置的工具。嘿,还真有,比Ubuntu手工改动要方便:)
#cd /usr/ports/sysutils/ataidle/ && make install clean
安装好后,修改/etc/rc.conf文件,加入以下内容:
# Rescure My Poor Hard Disk
ataidle_enable="YES"
ataidle_devices="ad4" # ad4是你需要设置的硬盘,一般sata的都是这个
ataidle_ad4="-I 60 -A 127 -P 192" #在这个级别设置下,大概空闲15分钟才会导致Load/Unload动作

参数说明,-I <min> 在停止使用XX分钟后进入空闲节能模式
-S <min>在停止使用XX分钟后进入待机节能模式
-A <0~127>设置静音状态,0表示禁用静音管理,1表示最小静音模式,127表示最大耗能模式,数字越大能耗越多
-P <0~254>设置节能等级,0表示禁用节能管理,1表示支持待机的最节能模式,127表示不支持待机的最节能模式,254表示最大性能模式,在254模式下,不会有额外的Load/Unload动作。

ok,现在我的硬盘不会出现Cycle Count暴涨的情况了,温度似乎涨了1度左右,呵呵,影响不大。

*BSD26 Jun 2008 10:15 pm

最近很热门的一个事情是,opera9.50的正式版,和firefox3.0的正式版,相隔一周,都发布了。很多人认为,这挑起了新一轮的浏览器大战。事实上,firefox大张旗鼓的广告了一番,下载发布当天,就接近1000万的下载量(我也是其中之一),一周内更是达到了近2000万。而opera的闷声发大财,也有了一周470万的下载量。

于是我们有了新一轮的口水战。当然firefox是好东西,opera也是,问题是哪个适合你。据说OSNews的牛人对firefox很是不满,称其对windows过于倾斜了,除了开源以外一无是处。不过我觉得,firefox的理念原本就没有错,就像unix世界里的emacs,也是依赖各种插件生存的,不过是相当于一个浏览器里的emacs而已。

然而我就不是很喜欢emacs,即使它被称为神的编辑器,因为是终究不是神。我还是觉得vim好用很多,毕竟,它是编辑器之神。好了,回到浏览器的话题来,firefox且不说宣传上的成功,在技术上,它的成功来源于两点:开源,以及无所不能的扩展功能。你可以在firefox的网站上找到大部分你需要的功能的扩展,比如opera的侧边栏和快速拨号,很快都在firefox中实现了。这样,firefox的核心还是比较精简的(尽管和opera比起来还是大了很多很多……)firefox是一个“纯粹”的浏览器,当年从Mozilla的大组合分离出来的时候,就一直这么宣传的。不过我更愿意说它是一个互联网时代的终端。实际上,所有的web2.0服务,firefox对比opera的支持来说,要好很多。

好吧,在opera9.2和firefox2时代,我经常在两者之间徘徊,但现在没必要了。因为对比firefox2,firefox3对我的意义无非是速度更快了点,内存占用更小了点,有的扩展没必要或者不能用了而已,实质性的呢?没有。而opera,最大的意义就是,字体的问题终于解决了,而且一如既往的精致快速,即使和firefox3对比。

对于我来说,按照自己的需要选择才是最重要的。比如,我要看大量的新闻,RSS功能就很重要。虽然Google Reader很好用,但是有些RSS(比如sina博客的图片是禁止外链的)显示上会有问题,所以浏览器内置的RSS还是很有用的。firefox的RSS是比较白痴的,于是给你推荐扩展,看着一大堆的扩展,我实在不知道哪个是适合我的,不想试了。同样我每天都要用到邮件,嗯,为了避免麻烦,我用的是gmail的imap。虽然用web的方式也能查看,但我觉得我不可能老去刷那个页面,很花时间的,看起来也不直观。合适的邮件客户端还是很有必要的。Thunderbird实在是太大了, 很奇怪为什么它和firefox既然用的是一样的渲染内核,却不能共享下资源。Mutt好是好,不过只能当做备份用,要设置新邮件提醒比较麻烦。所以觉得,还是opera内置的邮件功能最好用,至少,和浏览器内置的mailto是结合最为紧密的。当然,还有irc,虽然有irssi备用,但是如果只需要irc的聊天功能的话,opera已经足够了。

好吧,说了这么些,你一定会认为,我是因为opera是一个软件套装而喜欢上它的,但实际上并不是这样。Seamonkey,Mozilla的另一款产品,和opera类似,也是包含了email,irc以及开发工具的套装,却没有赢得我的好感,原因只有一个,它们太巨大了。

实际上,我们很多人都只需要用到一个软件的基本功能。如果他需要更进一步的应用,他自己会去想办法解决的。这个解决之道,微软的哲学就是,你安装个加强版的软件,或者扩展,或者插件,总之把你用各种豪华的装备武装到牙齿,然后你自然而然的有升级系统的需求。

Unix则完全不一样。Unix下面的软件,各个都功能极其强大,平时用用根本不能显示其强大来,而一旦有了适当的配置文件,其强大的能力就显示出来,无论是emacs还是vim,无论是mutt还是irssi,即使是一个简单的终端rxvt,也是高度可定制的。更不用说强大无比的opera了。

在我看来,一个软件,如果只是使用其基础功能的话,一个默认的配置,应该必须满足大多数人的需要。这点上,opera和firefox都是很好的。而如果要强大的功能,不应该以牺牲性能为代价。也许你要说,可用性更为重要,但,这是windows的哲学,不是Unix的。Unix拒绝浪费,强调合作。所以别看unix下编辑器不计其数,实际上人们还是只用两种。

在opera里,你可以随心所欲的定制各种各样的按钮,实现你的想法,而不用安装额外的扩展,仅仅需要自己写几个配置文件就可以了。也可以随心所欲的调用各种外部文件和资源,与浏览器关联。你可以一键关闭开启代理,也可以只为特定的网页开启。你也可以自己写js和css文件,对你浏览的页面美化,而这在firefox,仍然需要扩展的支持。你甚至可以冒充IE或者其他浏览器,访问那些IEonly的网站,嗯firefox仍然需要扩展来实现。一套下来,我发现我的firefox居然安装了不下20个扩展。慢如蜗牛而且各个扩展之间也显得不是那么的和谐。按钮各有各的样式,菜单大小不一,总之,为了实现和opera差不多的能力,我需要付出的代价和精力,远远超过了给opera写几个配置文件的麻烦,更可怕的是,这些扩展还时不时的升级,然后告诉你,重启后才能使用新的版本。是的,我发现我不能随心所欲的控制我能掌握的一切的时候,我发现,firefox离unix越来越远。

有人抱怨,说opera不开源。其实开源不开源并不重要,重要的是,它是一款好软件,是一套很unix的软件。标准,精致,而且无所不能。

*BSD23 Jun 2008 10:21 am

Ssh登录的时候,如果采用密码验证的话,在安全性上是会打折扣的,毕竟可能被记录按键历史的。同时 ,不停的输入密码,本身就是很麻烦的一件事情。好吧,现在我们将使用ssh超级好用的身份验证功能,达到不用输入密码就登录的目的。

它的原理就是采用密钥对,将你的公钥放在服务器上,这样,你登录服务器的时候,就可以信任你了。现在我们假设,你在服务器S上有一个用户名叫admin,在你自己的客户端C上,你有一个用户名abc:

首先,在C上生成ssh的密钥对:
abc% ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/abc/.ssh/id_dsa):
Created directory ‘/home/abc/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/abc/.ssh/id_dsa.
Your public key has been saved in /home/abc/.ssh/id_dsa.pub.
The key fingerprint is:
bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 abc@C

其中, id_dsa.pub是公钥,就是需要你放在S上的,而id_dsa就是私钥,这个是需要你好好保护的,千万不要落入坏人的手里哦~~

现在把公钥放到服务器上去:
abc%scp ~/.ssh/id_dsa.pub admin@S:~/.ssh/abc@C
Password:
id_dsa.pub 100% 607 0.6KB/s 00:00
(用abc@C做文件名便于标识^_^)

登录服务器做相应的修改:
abc%ssh admin@S
Password:

追加你的公钥到可信任文件authorized_keys(这个文件的权限应该是644的,如果不对请修正)
admin#cd .ssh/
admin#cat abc@C >> authorized_keys

OK,现在退出的话,你就可以不用输入密码登录了。不过这里还有一个小提示,记得把abc@C的.ssh目录修改权限哈,私钥,是很重要滴,不能让人偷窥了去~~。
admin#exit
abc%chmod 700 .ssh/

ps:上次我对FB7.0的ssh有了个误解。事实是这样的,我想抄近路,于是直接用的inet启动的sshd服务。实际上,在这个时候,sshd没有一个初始化的步骤,也就是说,在这个时候,它不会自动的生成key文件,从而需要我们手动生成。

其实,如果要系统自动生成key文件的话,kill掉sshd进程,在/etc/rc.d里加入“sshd_enable=”YES””,然后用/etc/rc.d/sshd start启动sshd服务,它就会自动生成key了。

不过,如果在Jail里直接用sshd_enable开关的话,需要在/etc/ssh/ssh_conf里指定监听的端口。我不想改这个,于是在生成了key以后,仍然用inet启动sshd服务(我的inet同时启动了ftp等等其他服务)。没问题。

*BSD25 May 2008 10:15 am

突然想玩点花样,于是在机器上装了个jail虚拟机。jail是一种以最小的性能损失和资源占用为代价的虚拟机。和我们平时用vmware,qemu,vbox等等不同,jail是和主机共享内核,也就是说,jail其实是主机的一个副本,也是一台FreeBSD,而不能是Windows,Linux等等。jail里面的world,可以使用和主机同步的world,也可以用其他的,比如,FB7的主机,可以用FB6的world(我没尝试过)。

好了,说说我的问题。其实我在FB6的时候,就用过jail,试验了一下,后来给删了。按照FreeBSD用户手册一步一步来就是。但前几天安装的时候,ssh就有问题,看日志,说是不能打开/dev/null设备。好吧,换一种方式,安装man jail的介绍来,结果仍然ssh不能登录,不过从connect refusd变成了closed by remote host。也就是说,sshd本身是启动了,但出了问题。

开始我以为是jail的问题。我的主机是开了sshd的,于是找了台别的机器试验登录我的主机,发现出现同样的错误。看来是FB7改了脚本和一些设置。于是查看日志,发现这样一行

sshd[3180]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key

原来是没有生成密钥对。我记得之前,第一次使用sshd的时候,是会自动生成密钥的,看来是加强安全性了。不过没这个提示的时候,很是困惑。在jail已经启动好的情况下,使用

#jexec 1 csh

启动一个csh 的shell(因为不能ssh登录嘛,所以换别的方法先上个shell再说),使用命令

#ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N “”

生成key文件。然后使用命令

#/etc/rc.d/inetd restart

后(我是用inted启动sshd的,比较方便),yeah,现在可以成功登录了

下一页 »