<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>DB2 学习笔记</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/" />
    <link rel="self" type="application/atom+xml" href="http://www.aiview.com/index.xml" />
    <id>tag:www.aiview.com,2006-12-14://1</id>
    <updated>2008-11-05T17:58:55Z</updated>
    <subtitle>博客话题：DB2，Linux，Web，业余无线电，户外，摄影，截拳道，Thankpad，其他</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.261</generator>

<entry>
    <title>Gentoo Linux on T43 (17) VGA输出</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_17_vga-out.html" />
    <id>tag:www.aiview.com,2008://1.987</id>

    <published>2008-11-05T16:57:07Z</published>
    <updated>2008-11-05T17:58:55Z</updated>

    <summary>接口 VGA 的输出可以利用xrandr 命令控制，这个软件包应该已经跟随xorg-x11安装好了。 通过xrandr 命令的输出，知道T43支持以下视频接口： VGA DVI LVDS S-video VGA接口在笔记本右侧，可外接显示器、投影仪等VGA 设备。 DVI接口在产品的spec中并没有声称支持，机身也找不到借口，但可以被检测到，猜测笔记本内可能存在相关的硬件。 LVDS就是内置的液晶屏接口。 S-video在USB接口旁边，我从未测试过。 xrandr 不带参数的xrandr 命令会列出系统支持的视频接口名称和设备连接情况。 $ xrandr Screen 0: minimum 320 x 200, current 1400 x 1050, maximum 1400 x 1200 VGA-0 disconnected (normal left inverted right...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="t43" label="T43" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vgaout" label="VGA-Out" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<h4>接口<br />
</h4>
<p>
VGA 的输出可以利用xrandr 命令控制，这个软件包应该已经跟随xorg-x11安装好了。
</p>
<p>
通过xrandr 命令的输出，知道T43支持以下视频接口： 
</p>
<ul>
	<li>VGA</li>
	<li>DVI<br />
	</li>
	<li>LVDS</li>
	<li>S-video</li>
</ul>
<p>
VGA接口在笔记本右侧，可外接显示器、投影仪等VGA 设备。
</p>
<p>
DVI接口在产品的spec中并没有声称支持，机身也找不到借口，但可以被检测到，猜测笔记本内可能存在相关的硬件。 
</p>
<p>
LVDS就是内置的液晶屏接口。
</p>
<p>
S-video在USB接口旁边，我从未测试过。
</p>
<h4>xrandr</h4>
<p>
不带参数的xrandr 命令会列出系统支持的视频接口名称和设备连接情况。
</p>
<pre class="cmd">
$ xrandr
</pre>
<pre class="output">
Screen 0: minimum 320 x 200, current 1400 x 1050, maximum 1400 x 1200
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-0 disconnected (normal left inverted right x axis y axis)
LVDS connected 1400x1050+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1400x1050      50.0*+
1280x1024      59.9  
1024x768       60.0     59.9  
800x600        60.3     59.9  
640x480        59.9  
S-video disconnected (normal left inverted right x axis y axis)
</pre>
<p>
用以下命令将视频输出发送到某个接口设备。
</p>
<pre class="cmd">
&nbsp;$ xrandr --output VGA-0 --auto
</pre>
<p>
用以下命令关闭某个接口设备的视频输出。 
</p>
<pre class="cmd">
&nbsp;$ xrandr --output VGA-0 --off
</pre>
<h4>Fn＋keys <br />
</h4>
<p>
下面的脚本用于Fn＋F7 控制VGA 输出的转换，脚本会自动搜索connected 到VGA输出的设备（包含内置液晶屏LVDS；S-video可能会支持，但未做测试），并顺序将显示输出到每一个设备，同时关闭所有其它设备的输出，这其中还包含一个将所有设备打开的步骤，整个过程循环。 
</p>
<pre class="code">
00001007)
# Fn + F7 (Switch VGA/DVI/LVDS/S-video)
default=LVDS
# 1: connected and online
# 0: connected but not online
# N: disconnected
# i.e. &quot;VGA-0 0 DVI-0 N LVDS 1 S-video N&quot;
#screen=$(/usr/bin/xrandr |awk &#39;/connected| \+|\*\+/ { \
#            if (match($2, /^connected$/) &gt; 0) {printf $1 FS; next} \
#            else if (match($2, /^disconnected$/) &gt; 0) {print $1, &quot;N&quot;; next} \
#            else if (match($0,/\ \+/) &gt; 0) {print &quot;0&quot;} \
#            else if (match($0,/\*\+/) &gt; 0) {print &quot;1&quot;} }&#39;)
screen=$(/usr/bin/xrandr |awk &#39;/connected| \+|\*\+/ { if (match($2, /^connected$/) &gt; 0) {printf $1 FS; next} else if (match($2, /^disconnected$/) &gt; 0) {print $1, &quot;N&quot;; next} else if (match($0,/\ \+/) &gt; 0) {print &quot;0&quot;} else if (match($0,/\*\+/) &gt; 0) {print &quot;1&quot;} }&#39;)
#screen=&quot;VGA-0 0 DVI-0 N LVDS 1 S-video N&quot;
arr_output=($(echo $screen |xargs -n2 |awk &#39;{print $2 == &quot;N&quot;?&quot;&quot;:$1}&#39;)) # connected screens
arr_status=($(echo $screen |xargs -n2 |awk &#39;{print $2 == &quot;N&quot;?&quot;&quot;:$2}&#39;)) # 1: online; 0: offline
logger -t &quot;$0&quot; &quot;Supported Output: $(echo $screen |xargs -n2 |cut -d&#39; &#39; -f1 |xargs)&quot;
logger -t &quot;$0&quot; &quot;Connected Output: $(echo $screen |xargs -n2 |awk &#39;{ if ($2 == 1) print $1&quot;*&quot;; else if ($2 == 0) print $1 }&#39; |xargs)&quot;
[[ $(echo ${arr_status[@]} |xargs -n1 |awk /1/ |wc -l) -eq ${#arr_status[@]} ]] &amp;&amp; all_online=1
[[ $(echo ${arr_status[@]} |xargs -n1 |awk /0/ |wc -l) -eq ${#arr_status[@]} ]] &amp;&amp; all_offline=1
if [[ $all_offline -eq 1 ]] ; then
xrandr --output $default --auto
return
fi
[[ ${#arr_output[@]} -ne ${#arr_status[@]} ]] &amp;&amp; return 1
[[ ${#arr_output[@]} -le 1 ]] &amp;&amp; return
i=0
while [[ $i -le ${#arr_output[@]} ]]
do
next=$((i + 1))
[[ $next -ge ${#arr_output[@]} ]] &amp;&amp; next=0
if [[ ${arr_status[$i]} -eq 1 ]] ; then
if [[ ${arr_status[$i]} -eq 0 &amp;&amp; $all_online -ne 1 ]] ; then
logger -t &quot;$0&quot; &quot;Switching all outputs on: ${arr_output[@]}&quot;
for output in ${arr_output[@]}
do
xrandr --output $output --auto
done
break
fi
logger -t &quot;$0&quot; &quot;Switching ${arr_output[$next]} off&quot;
xrandr --output ${arr_output[$next]} --auto
logger -t &quot;$0&quot; &quot;Switching ${arr_output[$i]} on&quot;
xrandr --output ${arr_output[$i]} --off
break
fi
i=$((i + 1))
done
;;
&nbsp;
</pre>
<p>
上面这段脚本用于acpi的事件处理，这部分内容请查看<a href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html">Fn + Keys</a>。
</p>
<h4><a name="7" title="7"></a>下载</h4>
<p>
<a name="7" title="7"></a>以上脚本包含在/etc/acpi/<a href="http://www.aiview.com/ref/2008/03/default.sh">default.sh</a> ，请根据自己的情况提取使用。 
</p>
<h4>参考资料<br />
</h4>
<ul>
	<li><a href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html">Gentoo Linux on T43 (15) Fn + Keys</a></li>
	<li><a id="nabble.link13382872" href="http://www.nabble.com/forum/ViewPost.jtp?post=13382872&amp;framed=y" target="ViewPost">Clone display via VGA output on Thinkpad T41p, Radeon M10 (FireGL T2), Xorg 7.3</a></li>
</ul>
<p>
&nbsp;
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux on T43 (16) 蓝牙传输文件</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_16_bluetooth.html" />
    <id>tag:www.aiview.com,2008://1.986</id>

    <published>2008-11-04T19:48:11Z</published>
    <updated>2008-11-05T17:58:23Z</updated>

    <summary><![CDATA[ 通过蓝牙，可方便的实现与其它设备交换文件，接驳蓝牙耳机，组建局域网，甚至利用蓝牙连接移动设备进行拨号。我的需求不多，仅实现了与其它蓝牙设备双向传输文件，下面是我用到的应用程序、方法以及资源。 配置内核 内核的配置参考了Thinkwiki。 应用程序 我用到了以下软件包： net-wireless/bluez-libs-3.36&nbsp; (库文件) net-wireless/bluez-utils-3.36 (基础配置工具，蓝牙系统服务) dev-libs/openobex-1.3 (库文件) app-mobilephone/obex-data-server-0.3.2 (bluez-gnome依赖它) gnome-extra/gnome-vfs-obexftp-0.4 (bluez-gnome依赖它)&nbsp; net-wireless/bluez-gnome-0.28 (Bluetooth applet, 文件传输gui) net-wireless/gnome-bluetooth-0.11.0 (文件接收Daemon: gnome-obex-server) app-mobilephone/obexftp-0.22 (命令行文件传输工具)&nbsp; Bluetooth applet 可以在蓝牙设备打开时自动运行，可以浏览附近的蓝牙设备，提供文件发送与接收的操作，并进行基础的蓝牙属性配置。 但Bluetooth applet的文件接收功能在我的电脑上遇到问题，无法收到其它设备的发送文件请求。为此需要安装 gnome-bluetooth，这事另外一个文件接收服务器（仅接收）。 obexftp 是一个命令行ftp工具，可选安装。 将以上软件包merge到系统，然会添加蓝牙的系统服务 # rc-update add bluetooth default gnome-obex-server...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bluetooth" label="bluetooth" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="t43" label="T43" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="蓝牙" label="蓝牙" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
通过蓝牙，可方便的实现与其它设备交换文件，接驳蓝牙耳机，组建局域网，甚至利用蓝牙连接移动设备进行拨号。我的需求不多，仅实现了与其它蓝牙设备双向传输文件，下面是我用到的应用程序、方法以及资源。
</p>
<h4>配置内核</h4>
<p>
内核的配置参考了<a href="http://www.thinkwiki.org/wiki/How_to_setup_Bluetooth#Configuring_the_kernel">Thinkwiki。</a>
</p>
<h4>应用程序</h4>
<p>
我用到了以下软件包：
</p>
<ul>
	<li>net-wireless/bluez-libs-3.36&nbsp; (库文件)</li>
	<li>net-wireless/bluez-utils-3.36 (基础配置工具，蓝牙系统服务)</li>
	<li>dev-libs/openobex-1.3 (库文件)</li>
	<li>app-mobilephone/obex-data-server-0.3.2 (bluez-gnome依赖它) <br />
	</li>
	<li>gnome-extra/gnome-vfs-obexftp-0.4 (bluez-gnome依赖它)&nbsp;</li>
	<li>net-wireless/bluez-gnome-0.28 (Bluetooth applet, 文件传输gui)</li>
	<li>net-wireless/gnome-bluetooth-0.11.0 (文件接收Daemon: gnome-obex-server)</li>
	<li>app-mobilephone/obexftp-0.22 (命令行文件传输工具)&nbsp;
	</li>
</ul>
<p>
Bluetooth applet 可以在蓝牙设备打开时自动运行，可以浏览附近的蓝牙设备，提供文件发送与接收的操作，并进行基础的蓝牙属性配置。
</p>
<p>
但Bluetooth applet的文件接收功能在我的电脑上遇到问题，无法收到其它设备的发送文件请求。为此需要安装 gnome-bluetooth，这事另外一个文件接收服务器（仅接收）。
</p>
<p>
obexftp 是一个命令行ftp工具，可选安装。
</p>
<p>
将以上软件包merge到系统，然会添加蓝牙的系统服务
</p>
<pre class="cmd">
# rc-update add bluetooth default 
</pre>
<p>
gnome-obex-server 不会跟随蓝牙设备的开启自动运行，可以将其加入Gnome的启动session，令其跟随系统启动运行。 
</p>
<p>
再进行接下来的配置。
</p>
<h4>配置文件</h4>
<p>
编辑修改/etc/bluetooth/hcid.conf ，对照修改黄底色的部分，密码88888改成自己的。
</p>
<pre class="code">
&nbsp;options {
# Automatically initialize new devices
autoinit <span class="hilite">yes</span>;
# Security Manager mode
#   none - Security manager disabled
#   auto - Use local PIN for incoming connections
#   user - Always ask user for a PIN
#
security <span class="hilite">auto</span>;
# Pairing mode
#   none  - Pairing disabled
#   multi - Allow pairing with already paired devices
#   once  - Pair once and deny successive attempts
pairing multi;
<span class="hilite">	# Default PIN code for incoming connections
passkey &quot;88888&quot;;</span>
}
# Default settings for HCI devices
device {
# Local device name
#   %d - device id
#   %h - host name
name &quot;BlueZ (%d)&quot;;
# Local device class
class 0x000100;
# Default packet type
#pkt_type DH1,DM1,HV1;
# Inquiry and Page scan
iscan enable; pscan enable;
# Default link mode
#   none   - no specific policy 
#   accept - always accept incoming connections
#   master - become master on incoming connections,
#            deny role switch on outgoing connections
lm accept;
# Default link policy
#   none    - no specific policy
#   rswitch - allow role switch
#   hold    - allow hold mode
#   sniff   - allow sniff mode
#   park    - allow park mode
lp rswitch,hold,sniff,park;
}
</pre>
<h4>测试<br />
</h4>
<p>
配置完成之后，启动蓝牙系统服务。
</p>
<pre class="cmd">
# /etc/init.d/bluetooth start 
</pre>
<p>
此时应该可以看到Bluetooth applet出现在托盘，右键选择发送文件，选择浏览到的目标设备，应该可以测试成功。
</p>
<p>
然后测试接收文件，从系统工具中运行Bluetooth File Sharing (即bluetooth-obex-server)，托盘会出现另外一个图标。此时从其它蓝牙设备选择向这部电脑发送文件，应该可以收到确认请求。
</p>
<h4>Toggle 蓝牙开关 <br />
</h4>
<p>
为了方便的开启／关闭蓝牙，我将以下脚本添加到acpi的事件处理当中，可以利用Thinkpad 的Fn＋F5 toggle 蓝牙的开关。
</p>
<p>
/etc/acpi/default.sh
</p>
<pre class="code">
00001005)
# Fn + F5 (Bluetooth on/off)
# 2006-03-07 &lt;pille@struction.de&gt;
#
# acpi called script to toogle bluetooth
#
# get current bluetooth state
cat /proc/acpi/ibm/bluetooth |grep &quot;^status:.*enabled&quot; &gt; /dev/null
if [ $? == 0 ] ; then
logger -t &quot;$0&quot; &quot;bluetooth is on. switching it off.&quot;
logger -t &quot;$0&quot; &quot;disabling bluetooth.&quot;
echo disable &gt;/proc/acpi/ibm/bluetooth
else
logger -t &quot;$0&quot; &quot;bluetooth is off. switching it on.&quot;
logger -t &quot;$0&quot; &quot;enabling bluetooth.&quot;
echo enable &gt;/proc/acpi/ibm/bluetooth
fi
;;
</pre>
<p>
有关acp事件处理，请参考<a href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html" title="Tags: Fn, gentoo, linux, t43, thinkpad ">Fn + Keys</a>获得详细信息。
</p>
<h4>有关命令行工具<br />
</h4>
<p>
以下几个是比较常用的命令行工具。
</p>
<h5>hcitool <br />
</h5>
<p>
hcitool 可用于蓝牙设备扫描，连接，认证等操作。
</p>
<pre class="cmd">
$ hcitool scan
</pre>
<p>
如果输出扫描到的蓝牙设备名是乱码，可能是蓝牙设备与电脑环境编码不一致，可尝试将UTF-8 编码转换到GBK：
</p>
<pre class="cmd">
$ hcitool scan |iconv -f utf-8 -t gbk 
</pre>
<h4>hciconfig</h4>
<p>
类似于ifconfig，可用于配置蓝牙设备，一般设备名为hci0。
</p>
<pre class="cmd">
# hciconfig hci0 
</pre>
<h4><a name="7"></a>下载</h4>
<a name="7"></a>以上脚本包含在/etc/acpi/<a href="http://www.aiview.com/ref/2008/03/default.sh">default.sh</a> ，请根据自己的情况提取使用。 &nbsp;
<h4>参考资料</h4>
<ul>
	<li><a href="http://www.thinkwiki.org/wiki/How_to_setup_Bluetooth" target="_blank" onmousedown="return clk(0,'','','res','1','')">How to setup Bluetooth - ThinkWiki</a><span class="std nobr"></span> </li>
	<li><a href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html" title="Tags: Fn, gentoo, linux, t43, thinkpad ">Gentoo Linux on T43 (15) Fn + Keys</a></li>
</ul>
<p>
&nbsp;
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>升级到openoffice 2.3.1 宋体显示为方块</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/10/openoffice_231_break_simsun_font.html" />
    <id>tag:www.aiview.com,2008://1.985</id>

    <published>2008-10-30T02:46:59Z</published>
    <updated>2008-10-30T02:54:00Z</updated>

    <summary><![CDATA[ 搜索了一下，不少朋友都遇到了类似的问题，2.4.0似乎也有同样的问题。经测试，上面的问题仅仅出现在我加入字体别名替换的配置下，问题可能是openoffice 以上版本不识别宋体（等遇到问题的字体）的英文字体名称。很多朋友的字体配置文件中指定了别名替换，比如将宋体替换为SimSun，这也包含在我推荐的字体配置文件中，而openoffice 无法识别替换后的字体名称SimSun，原因未知。 我的临时修补方法是注释掉相应的字体别名替换，openoffice中宋体显示恢复正常。 &lt;!-- &lt;match target=&quot;pattern&quot;&gt; &lt;test name=&quot;family&quot;&gt; &lt;string&gt;宋体&lt;/string&gt; &lt;/test&gt; &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt; &lt;string&gt;SimSun&lt;/string&gt; &lt;/edit&gt; &lt;/match&gt; --&gt; 另外的一个方法可尝试升级到openoffice 3.0。...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="openoffice" label="openoffice" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="simsun" label="SimSun" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="宋体" label="宋体" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
搜索了一下，不少朋友都遇到了类似的问题，2.4.0似乎也有同样的问题。经测试，上面的问题仅仅出现在我加入字体别名替换的配置下，问题可能是openoffice 以上版本不识别宋体（等遇到问题的字体）的英文字体名称。很多朋友的字体配置文件中指定了别名替换，比如将宋体替换为SimSun，这也包含在我<a href="http://www.aiview.com/2008/01/gentoo_linuxon_t43_7_chinese_fonts.html">推荐</a>的字体配置文件中，而openoffice 无法识别替换后的字体名称SimSun，原因未知。
</p>
<p>
我的临时修补方法是注释掉相应的字体别名替换，openoffice中宋体显示恢复正常。
</p>
<pre class="code">
&lt;!--
&lt;match target=&quot;pattern&quot;&gt;
&lt;test name=&quot;family&quot;&gt;
&lt;string&gt;宋体&lt;/string&gt;
&lt;/test&gt;
&lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
&lt;string&gt;SimSun&lt;/string&gt;
&lt;/edit&gt;
&lt;/match&gt;
--&gt;
</pre>
<p>
另外的一个方法可尝试升级到openoffice 3.0。
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>vmware: 利用已有Windows 安装创建虚拟机</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/07/vmware_using_physical_windows_installation.html" />
    <id>tag:www.aiview.com,2008://1.983</id>

    <published>2008-07-31T15:23:14Z</published>
    <updated>2008-07-30T18:35:16Z</updated>

    <summary> 如果已有安装配置好的Windows 系统分区，将其转化为虚拟机文件，或者直接将虚拟机运行在其上，都是可能的，vmware 与另一个虚拟机软件VirtualBox 均支持此功能。 NOTE：VirtualBox 的开源版本 VirtualBox OSE 不支持直接在物理分区的系统上运行虚拟机，仅仅二进制分发版本支持此功能，当前版本：1.5.7。 无论如何，通过虚拟机启动物理分区上的操作系统，并同时希望某个时候还可以像平常那样直接从物理分区启动，实现这一目标的过程，以及使用的过程，都是带有一定的危险性，可能会导致无法修复的数据损失，这在两个软件的文档中都有提及。同时，因为软硬件环境的多样性，也可能无法成功实现从虚拟机的启动。 我选择克隆一份已有的Windows分区来创建虚拟机。下面介绍一下我的步骤以及使用的辅助工具。 所需软件 vmware-workstation 6.0.4 for linux 安装文件 vmware-workstation 6.0.4 for linux Serial Number（30天评估 ） windows 98 启动盘，或者相应的.img 或者.iso 文件 windows 安装光盘，或者.iso 文件 ghost .img或者.iso文件 安装步骤 1. 安装vmware # emerge...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="vmware" label="vmware" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="windows" label="windows" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
如果已有安装配置好的Windows 系统分区，将其转化为虚拟机文件，或者直接将虚拟机运行在其上，都是可能的，<a href="http://www.vmware.com">vmware</a>  与另一个虚拟机软件<a href="http://www.virtualbox.org/">VirtualBox</a>  均支持此功能。
</p>
<p>
NOTE：VirtualBox 的开源版本 VirtualBox OSE 不支持直接在物理分区的系统上运行虚拟机，仅仅二进制分发版本支持此功能，当前版本：1.5.7。
</p>
<p>
无论如何，通过虚拟机启动物理分区上的操作系统，并同时希望某个时候还可以像平常那样直接从物理分区启动，实现这一目标的过程，以及使用的过程，都是带有一定的危险性，可能会导致无法修复的数据损失，这在两个软件的文档中都有提及。同时，因为软硬件环境的多样性，也可能无法成功实现从虚拟机的启动。
</p>
<p>
我选择克隆一份已有的Windows分区来创建虚拟机。下面介绍一下我的步骤以及使用的辅助工具。 
</p>
<h4>所需软件</h4>
<ul>
	<li><a href="http://www.vmware.com/download/ws/">vmware-workstation 6.0.4</a>  for linux 安装文件</li>
	<li>vmware-workstation 6.0.4 for linux Serial Number（<a href="https://www.vmware.com/tryvmware/login.php?eval=workstation-l">30天评估</a> ）<br />
	</li>
	<li>windows 98 启动盘，或者相应的.img 或者.iso 文件</li>
	<li>windows 安装光盘，或者.iso 文件<br />
	</li>
	<li>ghost .img或者.iso文件</li>
</ul>
<h4>安装步骤</h4>
<p>
1. 安装vmware 
</p>
<pre class="cmd">
# emerge -av1 vmware-workstation
</pre>
<p>
NOTE: 安装完成之后，应该先读本地<a href="file:///opt/vmware/workstation/lib/help-manual/index.html ">文档</a> ，尤其是<a href="file:///opt/vmware/workstation/lib/help-manual/disks_ws.html">Using Disks</a> 一章，事实上，如vmware 这样，如行云流水一般组织的文档，非常少见。这些文档位于：
</p>
<p>
 /opt/vmware/workstation/lib/help-manual/index.html 
</p>
<p>
2. 选择运行虚拟机的用户（不要用root），将其加入vmware 组
</p>
<pre class="cmd">
# usermod -aG vmware yourusername 
</pre>
<p>
3. 运行软件，输入Serial Number。
</p>
<p>
NOTE：如果运行软件遇到错误，可能需要重新emerge以下两个packages：
</p>
<pre class="output">
x11-libs/libview
x11-libs/libsexy
</pre>
<p>
4. 按通常步骤创建一个Windows 虚拟机A。使用Windows 98 启动盘启动虚拟机。
</p>
<p>
5. 启动后，首先用fdisk 命令安需要分区虚拟机的磁盘，要求分区与想要克隆的物理分区在数量上相对应，并且至少要分别大于物理分区的已占用空间。
</p>
<p>
6. 重启虚拟机，格式化分区，Power Off 虚拟机。
</p>
<p>
7. 回到Linux 系统，接下来需要临时更改Windows 分区所在的磁盘的权限，将所有者由root 改为运行vmware 软件的用户。假设你的磁盘设备名为/dev/sda:
</p>
<pre class="cmd">
# chown yourusername /dev/sda*
</pre>
<p>
在Linux 系统，确认Windows 所在分区当前没有在Linux 下挂载(mount)，否则必须要umount 掉！才能进行接下来的步骤！ 
</p>
<p>
NOTE：如果使用udev，在Linux 系统重启后，修改的磁盘所有者会自动复原，也可以在下面克隆的步骤（10）完成之后，手工修改回来，以减少可能的风险。
</p>
<pre class="cmd">
# chown root /dev/sda*
</pre>
<p>
8. 回到vmware，使用定制方式创建一个新的虚拟机B，选择使用物理磁盘以及单独的分区，并选择Windows 所在分区。保存退出，不必启动此虚拟机。
</p>
<p>
9. 回到前面创建的第一个虚拟机A的设定，在虚拟机中添加一个磁盘，选择已有的文件，并指向到虚拟机B 的vmdk 文件。保存，并使用windows 启动盘启动虚拟机A。
</p>
<p>
10. 配置虚拟机访问ghost 工具，在DOS 下运行ghost，进行分区到分区的克隆，源分区选择新添加的磁盘（来自于虚拟机B 的vmdk文件）中的分区，目标分区是前面使用fdisk 创建的相对应分区。一一克隆完毕。
</p>
<p>
在虚拟机A的设定中删除第9步新添加的磁盘，此时可以删除虚拟机B，并恢复/dev/sda* 的所有者为root。
</p>
<p>
NOTE: 如果使用DOS 的xcopy 命令代替ghost可能会遇到长文件名截短的问题，同时速度也更慢。 
</p>
<p>
11. 配置虚拟机访问windows 安装文件，在DOS 下进入i386目录，运行winnt.exe启动系统安装程序，目标安装分区选择前面克隆的目标系统分区，待文件复制完毕，Power Off虚拟机。这步的目的是在目标系统分区写入Windows 引导记录。
</p>
<p>
12. 使用Windows 98 启动盘再次启动虚拟机，在DOS 下进入到系统分区根目录，一般会是C盘，需要编辑boot.ini，首先去除其系统／隐藏／只读 属性：
</p>
<pre class="cmd">
C:\&gt; attrib -s -h -r boot.ini
</pre>
<p>
编辑此文件：
</p>
<pre class="cmd">
C:\&gt; edit boot.ini
</pre>
<p>
13. 根据实际情况修改启动条目中的分区编号，使其符合虚拟机环境中的磁盘配置。修改默认启动条目，并删除windows 安装的启动条目，保存退出。
</p>
<p>
重启虚拟机，选择从硬盘启动。
</p>
<p>
如果顺利应该可以进入windows 启动界面，并启动成功。
</p>
<p>
14. 如果启动失败，可尝试进入安全模式。如果依然失败，可尝试重启Linux 系统，进入物理分区上的windows 系统，创建一个新的硬件profile作为backup，并在当前硬件profile 中，删去一些在虚拟机中不需要，或者认为可能引起问题的硬件，然后重启回到Linux 系统，从第7步重新做起，最后在虚拟机中使用修改后的硬件profile 尝试进行启动。
</p>
<p>
NOTE：当然，这一步也可以在第8步之前就准备好。 
</p>
<p>
15. 启动成功后，可以在系统分区删除前面安装windows 导致的临时文件，比如：
</p>
<pre class="output">
C:\$win_nt$.~bt
C:\$win_nt$.~ls
...
</pre>
<p>
&nbsp;
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux: 我安装的软件</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/04/gentoo_linux_apps_on_my_box.html" />
    <id>tag:www.aiview.com,2008://1.972</id>

    <published>2008-04-09T14:14:58Z</published>
    <updated>2008-11-05T18:54:59Z</updated>

    <summary><![CDATA[ 经过一段时间的磨合，Gentoo Linux使用起来已经很顺手，下面是我对一些常用软件的选择，采用与Windows 平台对照的方式列出。每一种软件Linux 下可能都有很多种选择，有的我进行过对比，有的直接就采用了我认为最合适的。 我的评论可能会比较主观，欢迎讨论！ 用途／Windows 软件 Linux 软件 支持情况 MSN, Gtalk, Netmeeting, QQ, ICQ Pidgin-2.4.0 (old Gaim) 不支持语音、视频、群聊、Netmeeting Gtalk: check SSL option in advanced tab page, mail notification works! Kopete 功能丰富，支持视频、群聊、Netmeeting，但在我的环境经常crash，基本不用。 浏览器 Firefox &nbsp; Skype Linux 版 官方二进制代码发布...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="软件" label="软件" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
经过一段时间的磨合，Gentoo Linux使用起来已经很顺手，下面是我对一些常用软件的选择，采用与Windows 平台对照的方式列出。每一种软件Linux 下可能都有很多种选择，有的我进行过对比，有的直接就采用了我认为最合适的。
我的评论可能会比较主观，欢迎讨论！ 
</p>
<table border="1" cellspacing="0" cellpadding="0" width="899" height="1198">
	<tbody>
		<tr>
			<td>用途／Windows 软件<br />
			</td>
			<td>Linux 软件 </td>
			<td>支持情况<br />
			</td>
		</tr>
		<tr>
			<td rowspan="2">MSN, Gtalk, Netmeeting, QQ, ICQ </td>
			<td>Pidgin-2.4.0 (old Gaim) <br />
			</td>
			<td>
			<p>
			不支持语音、视频、群聊、Netmeeting
			</p>
			<p>
			Gtalk: check SSL option in advanced tab page, mail notification works! 
			</p>
			</td>
		</tr>
		<tr>
			<td>Kopete <br />
			</td>
			<td>功能丰富，支持视频、群聊、Netmeeting，但在我的环境经常crash，基本不用。</td>
		</tr>
		<tr>
			<td>浏览器<br />
			</td>
			<td>Firefox <br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Skype <br />
			</td>
			<td>Linux 版 <br />
			</td>
			<td>官方二进制代码发布<br />
			</td>
		</tr>
		<tr>
			<td>图片浏览<br />
			</td>
			<td>Gpicview</td>
			<td>比gThumb更轻量化，用于不想启动Picasa 时<br />
			</td>
		</tr>
		<tr>
			<td>Picasa <br />
			</td>
			<td>Linux 版</td>
			<td>通过Google 内部优化版wine支持 <br />
			</td>
		</tr>
		<tr>
			<td>GoogleEarth <br />
			</td>
			<td>Linux 版<br />
			</td>
			<td>T43 上速度很慢，可能是我配置的问题（Windows 版很快） <br />
			</td>
		</tr>
		<tr>
			<td>MS Office <br />
			</td>
			<td>OpenOffice <br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Lotus Notes <br />
			</td>
			<td>
			<p>
			Linux 版 
			</p>
			</td>
			<td>T43 的配置运行Notes 7比较合适，版本8界面响应迟钝 <br />
			</td>
		</tr>
		<tr>
			<td>光盘刻录<br />
			</td>
			<td>Brasero<br />
			</td>
			<td>Brasero 比Gnomebaker 更成熟易用 <br />
			</td>
		</tr>
		<tr>
			<td>TotalCommander <br />
			</td>
			<td>Krusader <br />
			</td>
			<td>配合diff、打包压缩等工具</td>
		</tr>
		<tr>
			<td>文本编辑器（开发）UltraEdit
			</td>
			<td>Emacs <br />
			</td>
			<td><a href="http://www.aiview.com/2008/02/emacs_study_notes.html" title="Tags: emacs, study notes ">emacs 学习笔记</a> <br />
			</td>
		</tr>
		<tr>
			<td>文本编辑器（普通）&nbsp;&nbsp;&nbsp;<br />
			</td>
			<td>gedit <br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>P2P <br />
			</td>
			<td>aMule <br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>金山词霸</td>
			<td>StarDict <br />
			</td>
			<td>单词朗读可通过任何语音合成软件支持，比如：festival, WyabdcRealPeopleTTS </td>
		</tr>
		<tr>
			<td>中文输入法<br />
			</td>
			<td>Scim <br />
			</td>
			<td><a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_6_chinese_environment.html" title="Tags: chinese, gentoo, linux, locale, t43, thinkpad, 中文 ">Gentoo Linux on T43 (6) 中文环境</a> <br />
			</td>
		</tr>
		<tr>
			<td>Adobe Reader（PDF） <br />
			</td>
			<td>kpdf <br />
			</td>
			<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
		</tr>
		<tr>
			<td>Windows 远程桌面 <br />
			</td>
			<td>grdesktop<br />
			</td>
			<td><a href="http://pinker.vicp.net/?p=46">Howto: linux远程连接windows | 品可的blog</a>&nbsp;
			<br />
			</td>
		</tr>
		<tr>
			<td>MS AcitveSync (PDA) <br />
			</td>
			<td>&nbsp;<br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td rowspan="2">BeyondCompare（文本比较）</td>
			<td>
			<p>
			Meld 
			</p>
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>wine + BeyondCompare </td>
			<td>用过的最好的文本比较工具<br />
			</td>
		</tr>
		<tr>
			<td rowspan="3">分区魔法师 PQ Magic</td>
			<td>
			<p>
			GParted 
			</p>
			</td>
			<td>不支持系统分区调整，支持Windows 扩展分区resize<br />
			</td>
		</tr>
		<tr>
			<td>QTParted&nbsp; <br />
			</td>
			<td>未测试<br />
			</td>
		</tr>
		<tr>
			<td>fdisk 手工修改分区表<br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td rowspan="2">股票<br />
			</td>
			<td>Gnome Invest Applet <br />
			</td>
			<td>使用Yahoo 数据，支持国外以及国内股票查询，可查看均线图<br />
			</td>
		</tr>
		<tr>
			<td>wine 0.9.60 + 招商证券全能版 v6.27(已升级至v6.33) （通信达软件）<br />
			</td>
			<td>
			<p>
			行情与交易，除菜单条与右键菜单中文乱码，其它正常。
			</p>
			<p>
			如果旧的wine 版本需要打补丁： <a href="http://tech.ccidnet.com/art/302/20080321/1397347_1.html">Wine安装一些Windows软件的错误以及处理</a>
			</p>
			</td>
		</tr>
		<tr>
			<td>HDAPS <br />
			</td>
			<td>tp_smapi, hdapsd, gnome_hdaps_applet <br />
			</td>
			<td>支持一块硬盘<br />
			<a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_9_hdaps.html" title="Tags: gentoo, hdaps, linux, t43, thinkpad ">Gentoo Linux on T43 (9) HDAPS 硬盘动态保护系统</a><br />
			</td>
		</tr>
		<tr>
			<td>RamDisk<br />
			</td>
			<td>tmpfs <br />
			</td>
			<td><a href="http://www.aiview.com/2008/02/gentoo_linux_on_t43_14_ramdisk.html">Gentoo Linux on T43 (14) 内存虚拟盘加速系统</a> <br />
			</td>
		</tr>
		<tr>
			<td rowspan="2">TTS 语音合成 <br />
			</td>
			<td>festival </td>
			<td>语音合成<br />
			</td>
		</tr>
		<tr>
			<td>WyabdcRealPeopleTTS</td>
			<td>真人发声<br />
			</td>
		</tr>
		<tr>
			<td>蓝牙<br />
			</td>
			<td>
			<p>
			bluez-utils<br />
			bluez-gnome<br />
			gnome-bluetooth
			</p>
			</td>
			<td>GUI文件发送／接收<br />
			<a href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_16_bluetooth.html" title="Tags: bluetooth, gentoo, linux, t43, 蓝牙 ">Gentoo Linux on T43 (16) 蓝牙传输文件</a><br />
			</td>
		</tr>
		<tr>
			<td>VGA 输出</td>
			<td>xrandr</td>
			<td><a href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_17_vga-out.html" title="Tags: gentoo, linux, t43, VGA-Out ">Gentoo Linux on T43 (17) VGA输出</a> <br />
			</td>
		</tr>
		<tr>
			<td>红外<br />
			</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>网上银行<br />
			</td>
			<td>Firefox <br />
			</td>
			<td>上海浦发银行动态密码网银（支持Firefox）
			</td>
		</tr>
		<tr>
			<td>淘宝／支付宝<br />
			</td>
			<td>Firefox + alipay安全控件 <br />
			</td>
			<td>淘宝、支付宝支持Firefox，但支付宝不支持数字证书（2008-11-06更新）<br />
			<a href="http://blog.alipay.com/301.html" title="支付宝针对 Linux 下 Firefox 的安全控件 _ 支付志">支付宝针对 Linux 下 Firefox 的安全控件</a><br />
			</td>
		</tr>
		<tr>
			<td>Thinkpad 指纹识别 <br />
			</td>
			<td>thinkfinger-0.3 <br />
			</td>
			<td><a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_10_fingerprint_reader.html">Gentoo Linux on T43 (10) Fingerprint Reader 指纹认证</a>&nbsp;
			<br />
			</td>
		</tr>
		<tr>
			<td>Intel CPU StepSpeed <br />
			</td>
			<td>acpi-cpufreq (kernel)</td>
			<td>在我的T43 上当温度上升到60度左右，便强制降频到800MHz，目前已禁用</td>
		</tr>
		<tr>
			<td>Web Java applet<br />
			</td>
			<td>USE: nsplugin <br />
			java<br />
			</td>
			<td><a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_12_java_environment.html">Gentoo Linux on T43 (12) Java 环境</a>&nbsp;
			<br />
			</td>
		</tr>
		<tr>
			<td>数据恢复/FinalData</td>
			<td>TestDisk <br />
			</td>
			<td><a href="http://www.aiview.com/2008/03/testdisk_recover_my_partition_table.html" title="Tags: partition table, testdisk ">TestDisk 找回丢失的硬盘分区表</a> <br />
			</td>
		</tr>
		<tr>
			<td>Thinkpad 热键 <br />
			</td>
			<td>thinkpad-acpi (kernel) + acpid<br />
			</td>
			<td><a href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html" title="Tags: Fn, gentoo, linux, t43, thinkpad ">Gentoo Linux on T43 (15) Fn + Keys</a> <br />
			</td>
		</tr>
		<tr>
			<td>鼠标键盘即插即用<br />
			</td>
			<td>hal-0.5.10<br />
			xf86-input-evdev-1.2.0<br />
			xorg-server-1.4.0</td>
			<td><a href="http://forums.gentoo.org/viewtopic-t-641870-start-0.html?sid=95bb661a51943968eefe49cbb144fc5b">Gentoo Forums :: 阅读主题 - x11-drivers/xf86-input-evdev-1.2.0 keyboard problem</a>&nbsp;
			<a href="http://www.aiview.com/2008/03/xorg_allows_hotplug.html"><br />
			Linux 支持鼠标、键盘即插即用</a> <br />
			</td>
		</tr>
		<tr>
			<td>虚拟机VMWare<br />
			</td>
			<td>VirtualBox<br />
			VMWare
			</td>
			<td>
			<p>
			VirtualBox 是开源项目，可以在物理Windows 安装之上直接建立vmdk虚拟机（Portage 版本不支持vmdk，到VirtualBox 项目主页自行下载）。 
			</p>
			</td>
		</tr>
		<tr>
			<td>PowerDesigner 15 Beta 2 <br />
			</td>
			<td>wine 1.1.0 +&nbsp;PowerDesigner 15 Beta 2</td>
			<td><a href="http://www.aiview.com/2008/07/powerdesigner_15_beta_2_under_linux.html">在linux 下运行PowerDesigner 15 Beta 2</a>&nbsp;
			<br />
			</td>
		</tr>
	</tbody>
</table>
<h4>参考资源</h4>
<ul>
	<li><a href="http://www.linuxrsp.ru/win-lin-soft/table-eng.html">Windows 软件类似替代列表</a>&nbsp; <br />
	</li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux on T43 (15) Fn + Keys</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html" />
    <id>tag:www.aiview.com,2008://1.980</id>

    <published>2008-03-30T18:04:42Z</published>
    <updated>2008-11-05T17:54:59Z</updated>

    <summary> 对于Linux 对Thinkpad Fn 组合键的支持的了解一直比较模糊，有很多内核中的支持以及软件包，不太清楚具体的分工以及关系，今天查阅了一些资料，试图清理一下自己的思路，也把自己的配置共享一下。 下面给一些包及内核Module加一些注释： 内核Thinkpad ACPI 在2.6.20 中叫做IBM ACPI，这里是它的项目主页。如果编译为module，名字为thinkpad_acpi，它的功能是把Fn 组合按键的事件export 到/proc/acpi（在kernel-2.6.24 中应该选择此项：[*] Deprecated /proc/acpi/event support ），但其并不负责处理事件，需要其它userspace 程序来处理。 app-laptop/tp_smapi 来自Tpctl 项目 ，将thinkpad 硬件的信息export 到sysfs，供其它程序使用，目前主要实现了电池管理和HDAPS的功能。Fn keys应该不需要这个软件包，但我一直使用patched kernel + tp_smapi 来驱动HDAPS。 包含moduels： hdaps thinkpad_ec tp_smapi app-laptop/thinkpad 也来自Tpctl 项目 ，但目前已经被上面的tp_smapi 所取代，除非使用很古老的笔记本（before 2001），应该不需要这个软件包。...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Thinkpad and PDA" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="fn" label="Fn" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="t43" label="T43" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="thinkpad" label="Thinkpad" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
对于Linux 对Thinkpad Fn 组合键的支持的了解一直比较模糊，有很多内核中的支持以及软件包，不太清楚具体的分工以及关系，今天查阅了一些资料，试图清理一下自己的思路，也把自己的配置共享一下。
</p>
<p>
下面给一些包及内核Module加一些注释：
</p>
<h4>内核Thinkpad ACPI</h4>
<p>
在2.6.20 中叫做IBM ACPI，这里是它的<a href="http://ibm-acpi.sourceforge.net/">项目主页</a>。如果编译为module，名字为thinkpad_acpi，它的功能是把Fn 组合按键的事件export 到/proc/acpi（在kernel-2.6.24 中应该选择此项：[*]   Deprecated /proc/acpi/event support ），但其并不负责处理事件，需要其它userspace 程序来处理。
</p>
<h4>app-laptop/tp_smapi</h4>
<p>
来自<a href="http://tpctl.sourceforge.net/">Tpctl 项目</a> ，将thinkpad 硬件的信息export 到sysfs，供其它程序使用，目前主要实现了电池管理和HDAPS的功能。Fn keys应该不需要这个软件包，但我一直使用patched kernel + tp_smapi 来驱动HDAPS。
</p>
<p>
包含moduels：
</p>
<pre class="output">
hdaps
thinkpad_ec
tp_smapi
</pre>
<h4>app-laptop/thinkpad</h4>
<p>
也来自<a href="http://tpctl.sourceforge.net/">Tpctl 项目</a> ，但目前已经被上面的tp_smapi 所取代，除非使用很古老的笔记本（before 2001），应该不需要这个软件包。
</p>
<h4>sys-power/acpid</h4>
<p>
<a href="http://acpid.sourceforge.net">acpid</a>需要配合thinkpad-acpi使用，它默认读取/proc/acpi/event 中的条目，并将其传递给事件处理脚本，作出相应动作，比如关闭屏幕、待机等。 这些条目由/etc/acpi/events/default 捕获，并传递给/etc/acpi/default.sh 处理，但默认的/etc/acpi/default.sh 功能十分有限，必须自己修改。
</p>
<h4>配置Fn＋Keys<br />
</h4>
<p>
这里已经<a href="http://www2.informatik.hu-berlin.de/~pilop/HOWTO_Gentoo_T43/#ACPI-handler">有人写好了一些常用脚本</a>，我根据他的内容整理了一份<a href="/ref/2008/03/default.sh">default.sh</a>，目前可以处理Fn+F3(关屏), Fn+F4(Suspend to ram), Fn+F5(开关蓝牙), Fn+F6(开关wifi)，Fn+F7(Toggle VGA-out)，Fn+F12(Suspend to disk) 。这个脚本会用到radeontool，如果系统没有这么命令，merge它（也可以使用xset，但需要自己更改default.sh）。
</p>
<pre class="cmd">
# emerge -av1 radeontool
</pre>
<p>
另外，我注释了脚本中的xosd 命令，如果你有GUI 程序需要显示Fn控制程序的状态，那么可以去掉注释（需要merge xosd）
</p>
<h4>调试 <br />
</h4>
<p>
共享一下调试Fn 组合键的方法，thinkpad_acpi 会将按键事件写入/proc/acpi/event，但acpid 运行时我们无法读取这个文件，先停掉服务：
</p>
<pre class="cmd">
# /etc/init.d/acpid stop
</pre>
<p>
然后cat这个文件（确保module thinkpad_acpi 已经装载，或者内建在内核）
</p>
<pre class="cmd">
# cat /proc/acpi/event
</pre>
<p>
接着按Fn 组合键，console 中会打印出事件条目，括号中是我的注释。default.sh 将解析这些条目，并调用不同的命令进行处理。
</p>
<pre class="output">
ibm/hotkey HKEY 00000080 00001001 (Fn+F1)
ibm/hotkey HKEY 00000080 00001002 (Fn+..)
ibm/hotkey HKEY 00000080 00001003
ibm/hotkey HKEY 00000080 00001004
ibm/hotkey HKEY 00000080 00001005
ibm/hotkey HKEY 00000080 00001006
ibm/hotkey HKEY 00000080 00001007
ibm/hotkey HKEY 00000080 00001008
ibm/hotkey HKEY 00000080 00001009
ibm/hotkey HKEY 00000080 0000100a
ibm/hotkey HKEY 00000080 0000100b
ibm/hotkey HKEY 00000080 0000100c (Fn+F12)
ibm/hotkey HKEY 00000080 00001018 (Access IBM)
ibm/hotkey HKEY 00000080 00001014 (Fn+Space)
</pre>
<p>
在我这里，调整屏幕亮度、屏幕灯、音量几个按键thinkpad_acpi 似乎是捕获不到的，event 没有输出，但功能正常，是不是xmodmap 处理了？
</p>
<p>
另外，内核中还有一个ACPI Button 支持，如果编译为module，在rmmod thinkpad_acpi之后，并且已经装在button，诸如Fn+F4 的事件会被其捕获，同样写入/proc/acpi/event：
</p>
<pre class="output">
button/sleep SLPB 00000080 00000001
button/sleep SLPB 00000080 00000002
</pre>
<h4>下载</h4>
<p>
使用<a href="/ref/2008/03/default.sh">default.sh</a> 覆盖acpid 默认的文件/etc/acpi/default.sh 即可，/etc/acpi/events/default 不用更改。
</p>
<p class="emphasis">
更新了default.sh，加入了toggleVGA-out 的脚本。（2008-11-06）
</p>
<h4>更新 2008-04-09&nbsp;</h4>
<p>
今天偶然发现hal (0.5.10)中已经包含全系列thinkpad 型号hotkey的policy 配置文件，包括最新的T/X 6系列，这个文件位于：/usr/share/hal/fdi/information/10freedesktop/30-keymap-module-thinkpad-acpi.fdi，对于T4&nbsp; 系列，有如下定义：
</p>
<pre class="code">
&lt;match key=&quot;/org/freedesktop/Hal/devices/computer:system.hardware.version&quot; contains=&quot;T4&quot;&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x02:screenlock&lt;/append&gt; &lt;!-- Fn+F3 lock --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x03:sleep&lt;/append&gt; &lt;!-- Fn+F4 suspend --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x04:radio&lt;/append&gt; &lt;!-- Fn+F5 switch radio --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x06:switchvideomode&lt;/append&gt; &lt;!-- Fn+F7 switch video output device --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x0b:suspend&lt;/append&gt; &lt;!-- Fn+F12 hibernate --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x0f:brightnessup&lt;/append&gt; &lt;!-- Fn+Home --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x10:brightnessdown&lt;/append&gt; &lt;!-- Fn+End --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x13:zoom&lt;/append&gt; &lt;!-- Fn+Space --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x17:vendor&lt;/append&gt; &lt;!-- ThinkPad/ThinkVantage button --&gt;
&lt;append key=&quot;info.capabilities&quot; type=&quot;strlist&quot;&gt;input.keymap&lt;/append&gt;
&lt;/match&gt; 
</pre>
<p>
我猜想如果使用这个配置文件，应该可以免去上面手工配置Fn keys的步骤，或者不再使用/proc/acpi/event 这个interface，代之使用经由hal 提供的事件绑定？
</p>
<p>
尝试将其copy 至/etc/hal/fdi/policy 或者/usr/share/hal/fdi/policy/10osvendor，然后重启/etc/init.d/hald 服务，同时关闭了可能与其冲突的acpid 服务，但并没有预期的作用。查看lshal，似乎也都符合配置文件：
</p>
<pre class="cmd">
$ lshal |grep input.product 
</pre>
<pre class="output">
  input.product = &#39;ThinkPad Extra Buttons&#39;  (string)
...
</pre>
<pre class="cmd">
$ lshal |grep system.hardware.vendor
</pre>
<pre class="output">
  system.hardware.vendor = &#39;IBM&#39;  (string)
</pre>
<pre class="cmd">
$ lshal |grep system.hardware.version
</pre>
<pre class="output">
  system.hardware.version = &#39;ThinkPad T43&#39;  (string)
</pre>
<p>
继续关注这个问题。
</p>
<p>
下面添加了一篇Gentoo 配置的参考文章。
</p>
<h4>延展阅读</h4>
<ul>
	<li><a href="http://www2.informatik.hu-berlin.de/%7Epilop/HOWTO_Gentoo_T43/#download">DE.STRUCTION:private - Gentoo on IBM ThinkPad T43</a> （参考其事件处理脚本）</li>
	<li><a href="http://www.thinkwiki.org/wiki/How_to_get_special_keys_to_work" title="How to get special keys to work">How to setup/configure the extra keys</a></li>
	<li><a href="http://www.linuxsir.org/bbs/lastpostinthread313431.html" target="_blank" onmousedown="return clk(0,'','','res','1','')">[分享]在IBM ThinkPad X41上安装Gentoo全记录!（第二部分）</a>（一篇不错的参考）</li>
	<li><a href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_17_vga-out.html" title="Tags: gentoo, linux, VGA-Out ">Gentoo Linux on T43 (17) VGA输出</a></li>
	<li><a href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_16_bluetooth.html" title="Tags: bluetooth, gentoo, linux, t43, 蓝牙 ">Gentoo Linux on T43 (16) 蓝牙传输文件</a></li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>Linux 支持鼠标、键盘即插即用</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/xorg_allows_hotplug.html" />
    <id>tag:www.aiview.com,2008://1.979</id>

    <published>2008-03-29T20:04:50Z</published>
    <updated>2008-04-09T06:21:39Z</updated>

    <summary><![CDATA[ xorg-server-1.4 发布了有一段时间，配合hal-0.5.10 以及evdev-1.2 可以支持鼠标、键盘的即插即用（hotplug）。 上一次的evdev 升级允许在xorg.conf 中仅仅指定Device 名称即可，不需要指定Driver，xorg 会自动搜索合适的驱动程序，这一此更彻底，在xorg.conf 中不需要进行任何InputDevice 有关的设置。 如果升级到了以上版本，可以修改xorg.conf 来使用hotplug 功能，修改非常简单，移除所有的InputDevice Section 和相关行即可。 Section &quot;InputDevice&quot; ... EndSection Section &quot;ServerLayout&quot; ... InputDevice &quot;Trackpoint&quot; &quot;CorePointer&quot; InputDevice &quot;Logitech MX1000&quot; &quot;SendCoreEvents&quot; InputDevice &quot;Externel USB Mouse&quot; &quot;SendCoreEvents&quot; InputDevice &quot;Generic Keyboard&quot; &quot;CoreKeyboard&quot;...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hotplug" label="hotplug" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
xorg-server-1.4 发布了有一段时间，配合hal-0.5.10 以及evdev-1.2 可以支持鼠标、键盘的即插即用（hotplug）。
</p>
<p>
上一次的evdev 升级允许在xorg.conf 中仅仅指定Device 名称即可，不需要指定Driver，xorg 会自动搜索合适的驱动程序，这一此更彻底，在xorg.conf 中不需要进行任何InputDevice 有关的设置。
</p>
<p>
如果升级到了以上版本，可以修改xorg.conf 来使用hotplug 功能，修改非常简单，移除所有的InputDevice Section 和相关行即可。
</p>
<pre class="code">
<del>Section &quot;InputDevice&quot;
...
EndSection</del>
</pre>
<pre class="code">
Section &quot;ServerLayout&quot;
...<del>
InputDevice	&quot;Trackpoint&quot; &quot;CorePointer&quot;
InputDevice &quot;Logitech MX1000&quot; &quot;SendCoreEvents&quot;
InputDevice	&quot;Externel USB Mouse&quot; &quot;SendCoreEvents&quot;
InputDevice	&quot;Generic Keyboard&quot; &quot;CoreKeyboard&quot;</del>
EndSection
</pre>
<p>
移除之后，重启X，我的trackpoint、无线鼠标都工作得很好，甚至罗技的四向滚轮也可以正常驱动（仅仅横滚的方向弄反了:) ）。
</p>
<p>
Xake 在这个讨论中对这次升级做了<a href="http://forums.gentoo.org/viewtopic-t-641870-postdays-0-postorder-asc-start-50.html?sid=6a3dfd503c879abc707c0ab41190d803#4790294">一些更详细的描述</a>，同时也澄清了一些问题。在升级到这些版本之后，有些人遇到了Up键与PrintScreen键混在一起的情况，也包括我，尝试了Xake 的<a href="http://forums.gentoo.org/viewtopic-t-641870-postdays-0-postorder-asc-start-100.html#4988510">清空所有自定义属性</a> 的方法，但不奏效。最终<a href="http://ubuntuforums.org/showthread.php?t=29114" title="Arrow keys bring up &quot;save screenshot&quot; dialog - Ubuntu Forums">Disable 了PrintScreen 键</a>，Up键恢复正常，等待fix。
</p>
<p>
一点题外话，在升级后，很多人遇到了类似的问题，并且抱怨xorg, evdev, 或是hal，Xake 很乐于帮助人们解决问题，但一再强调：
</p>
<blockquote>
	<p>
	HAL is not the problem. DBUS is not the problem. xf86-input-evdev is not the problem.
	You configuration is the problem. 
	</p>
</blockquote>
<p>
的确，如果希望使用最易用的linux，那么应该选择Ubuntu，而不是Gentoo，而遇到了以上问题，也是因为指定了允许升级不稳定版的关键字 ~arch：
</p>
<pre class="code">
ACCEPT_KEYWORDS=&quot;~x86&quot;
</pre>
<p>
每一次emerge --sync，看到成百上千的包更新，心里都会莫名的感动，理解Xake，想起几篇老文章，翻出来：
</p>
<ul>
	<li><a href="http://www.aiview.com/v_3/favorites/whats_opensource.htm">什么是Open Source |
	What&#39;s Open Source</a> by E. Raymond</li>
	<li><a href="http://www.aiview.com/v_3/favorites/gnu_manifesto.htm">GNU 宣言 | GNU Manifesto</a>
	by R. Stallman</li>
	<li><a href="http://www.aiview.com/v_3/favorites/cathedral_bazaar.htm">大教堂和市集 |
	Cathedral and Bazaar</a> by E. Raymond</li>
	<li><a href="http://www.aiview.com/v_3/favorites/homesteading.htm">开拓智域 | Homesteading</a>
	by E. Raymond</li>
	<li><a href="http://www.aiview.com/v_3/favorites/magic_cauldron.htm">魔法大锅炉 Magic
	Cauldron</a> by E. Raymond</li>
</ul>
<p>
&nbsp;
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>TestDisk 找回丢失的硬盘分区表</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/testdisk_recover_my_partition_table.html" />
    <id>tag:www.aiview.com,2008://1.978</id>

    <published>2008-03-29T15:07:08Z</published>
    <updated>2008-03-31T07:08:43Z</updated>

    <summary>分区表丢失 早晨启动笔记本，被告知未找到操作系统，有点心惊，用Linux 启动U盘引导系统，查看我的主硬盘设备：fdisk -l /dev/sda ，找不到任何分区，应该是分区表丢了，原因不知道。 从前使用Windows 软件FinalData 恢复过被快速格式化甚至重新分过区的硬盘数据，于是把硬盘拆下，装在第二块硬盘托架内，借了台thinkpad，装了FanalData，但发现它只能恢复文件，不能恢复分区表，而且对Linux 分区数据也无能为力。 恢复分区表 在尝试易我分区表医生未果之后，Google到这篇文章： 介绍一个 GPL 的分区表修复工具 TestDisk | BT的花，找到TestDisk，下载了Windows 版，先读了一遍Using TestDisk 下面的文档，然后开始对故障硬盘进行Analyse ，但经过Deeper Search 之后，仅仅找前三个主分区，位于Windows 扩展分区内的两个对我而言最重要的逻辑分区未找到。记起帮助文档中介绍 Geometry下面可以调整柱面(C)、磁道(H)、扇区(S)、扇区size(SS)等参数，目前设定为：9730、255、63、512，将Head修改为240 （柱面数没有进行修改，TestDisk会自动读取剩余的柱面，如果需要计算的话，SS 不变，应该满足：new_C=9730*255/240），再次执行Analyse，TestDisk读出了所有的分区信息！ 使用p 命令可以列出每个分区上的文件，经过仔细确认，分区信息无误之后，执行写入分区表。 修复MBR grub 装回硬盘，启动，屏幕左上角出现了几个字母后停住，估计是MBR grub 损坏，从U盘引导，mount 主硬盘的/boot 分区，进入/boot/grub 目录，执行grub，重新写入主硬盘MBR： # grub...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="未分类" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="partitiontable" label="partition table" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="testdisk" label="testdisk" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<h4>分区表丢失<br />
</h4>
<p>
早晨启动笔记本，被告知未找到操作系统，有点心惊，用Linux 启动U盘引导系统，查看我的主硬盘设备：fdisk -l /dev/sda ，找不到任何分区，应该是分区表丢了，原因不知道。
</p>
<p>
从前使用Windows 软件FinalData 恢复过被快速格式化甚至重新分过区的硬盘数据，于是把硬盘拆下，装在第二块硬盘托架内，借了台thinkpad，装了FanalData，但发现它只能恢复文件，不能恢复分区表，而且对Linux 分区数据也无能为力。
</p>
<h4>恢复分区表<br />
</h4>
<p>
在尝试易我分区表医生未果之后，Google到这篇文章：
<a href="http://www.dup2.org/node/347" title="介绍一个 GPL 的分区表修复工具 TestDisk | BT的花">介绍一个 GPL 的分区表修复工具 TestDisk | BT的花</a>，找到<a href="http://www.cgsecurity.org/wiki/TestDisk">TestDisk</a>，下载了Windows 版，先读了一遍Using TestDisk 下面的文档，然后开始对故障硬盘进行Analyse ，但经过Deeper Search 之后，仅仅找前三个主分区，位于Windows 扩展分区内的两个对我而言最重要的逻辑分区未找到。记起帮助文档中介绍 <a href="http://www.cgsecurity.org/wiki/Menu_Geometry" title="Menu Geometry">Geometry</a>下面可以调整柱面(C)、磁道(H)、扇区(S)、扇区size(SS)等参数，目前设定为：9730、255、63、512，将Head修改为240 （柱面数没有进行修改，TestDisk会自动读取剩余的柱面，如果需要计算的话，SS 不变，应该满足：new_C=9730*255/240），再次执行Analyse，TestDisk读出了所有的分区信息！
</p>
<p>
使用p 命令可以列出每个分区上的文件，经过仔细确认，分区信息无误之后，执行写入分区表。
</p>
<h4>修复MBR grub </h4>
<p>
装回硬盘，启动，屏幕左上角出现了几个字母后停住，估计是MBR grub 损坏，从U盘引导，mount 主硬盘的/boot 分区，进入/boot/grub 目录，执行grub，重新写入主硬盘MBR：
</p>
<pre class="cmd">
# grub
grub&gt; root (hd0,0)
grub&gt; setup (hd0)
grub&gt; quit 
</pre>
<p>
&nbsp;
</p>
<p>
再次硬盘启动成功，进入系统，所有分区数据访问正常。
</p>
<h4>后记</h4>
<p>
如果有分区表备份，在这种情况下，可以使用Linux fdisk 按照原来的起止柱面，直接建立原类型分区，数据也同样可以找到。
</p>
<p>
看来备份分区表很重要，可以添加这样一条命令到crontab，来备份最近7天的分区表信息（还应该有机制自动将备份文件mail 出去或者同步到移动存储器，也可以scp 到本地硬盘以外的主机）：
</p>
<pre class="cmd">
00 12 * * * fdisk -l &gt; ~/.pt_backup_$(date &#39;+%Y%m%d&#39;); find ~ -name &quot;.pt_backup_*&quot; -mtime +7 -exec rm -f {} \;
</pre>
<p>
TestDisk Windows 版本在系统安装有cygwin 的情况下，启动出错，大概是因为系统中的cygwin1.dll 版本更新，删除了TestDisk 解压目录中的cygwin1.dll 之后可正常启动TestDisk。
</p>
<p>
为软件作者实现了一个在Amazon的wish：<strong>
</strong><a href="http://www.amazon.fr/Engines-God-Jack-McDevitt/dp/0441002846/ref=wl_it_dp?ie=UTF8&amp;coliid=I11GR62M4ESYVJ&amp;colid=3RJB6AKCR77KD">The Engines of God</a>，为了省运费，使用了amazon.fr，不过还好有<a href="http://www.google.cn/language_tools">Google 语言工具</a>。
</p>
<h4>延展阅读<br />
</h4>
<ul>
	<li class="toclevel-1"><a href="http://www.cgsecurity.org/wiki/Data_Recovery_Examples#Problem_of_disk_geometry_-_When_all_partitions_are_deleted"><span class="tocnumber"></span><span class="toctext">Problem of disk geometry - When all partitions are deleted</span></a></li>
	<li class="toclevel-1"><a href="http://www.cgsecurity.org/wiki/TestDisk">TestDisk wiki</a></li>
	<li class="toclevel-1"><a href="http://www.dup2.org/search/node/testdisk">http://www.dup2.org/search/node/testdisk</a> <br />
	</li>
	<li class="toclevel-1"><a href="http://linux.chinaitlab.com/administer/740415.html">Linux下恢复EXT3&nbsp;Superblock的正确方法 </a> </li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux: /var/db/pkg 这个文件夹很重要！</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/gentoo_linux_deleted_var_db_pkg.html" />
    <id>tag:www.aiview.com,2008://1.970</id>

    <published>2008-03-23T19:15:28Z</published>
    <updated>2008-11-11T23:57:31Z</updated>

    <summary> 前段时间折腾tmpfs 文件系统，不小心弄丢了/var/db/pkg 下面所有的文件，在查资料的过程中，才了解这个文件夹的重要。 这个文件夹对于Gentoo 的作用，相当于Windows 应用程序的Uninstall 文件，所有通过Portage 安装的程序包信息都保存在这，每个程序包包含哪些文件，以及文件的路径信息是最重要的，缺少这些信息，将无法正常的卸载程序包，其他一些重要的信息丢失也导致Portage 系统混乱。 这个文件夹丢失，虽然系统中的应用程序可以照常运行，但却是最大的灾难，除非不再打算通过Portage 对包进行任何维护工作，比如升级，安装新的软件等。解决方法只有一个：重新merge 所有软件包，重新生成这部分信息。一般来说，系统中软件包的规模在几百，甚至上千个，里面还有一些重磅角色，全部重新编译一遍，可能需要几十个小时（OpenOffice 在我的T43 上花去10个小时进行编译）。 文件夹丢失后，我最初找到了这个讨论(en)，参考hielvc 写的脚本，希望通过读取/var/log/emerge.log 恢复丢失的信息，但这个方法只能恢复出系统中所有已安装软件包名称和版本信息，无法找回已安装文件的列表，能不能通过某个Gentoo 工具得到每个软件包默认的文件列表呢，答案应该是不可以，因为Gentoo 是一个定制性的系统，大部分文件都是编译后生成的，并没有一个默认的库能够告诉这些文件的具体信息。换句话说，我的/var/db/pkg 是唯一的，如果没有备份，只能重新编译一遍系统来生成它们，下面这个讨论中，didymos很清楚的解释了这个问题，也证实了我的想法：PANIC! I deleted /var/db/pkg 所幸，在把我的/var/db/pkg 放入内存之前，我留下一个备份，但随后，我merge了约50个软件包，这些信息被写入内存中的/var/db/pkg ，随后就在一次重启后彻底丢失了。 在具有备份的情况下，我使用以下步骤重建了/var/db/pkg，时间成本主要花费在重新merge 约50个软件包。 步骤 恢复备份的/var/db/pkg 文件夹 恢复之后，/var/db/pkg 代表了merge 50个包之前我的系统的状况，但我的系统实际多出了一些包，或者一些已存在包的升级。 找出/var/db/pkg 与实际系统的不一致 前面提到的hielvc 写的脚本可以派上用场，但hielvc 忽略了一些情况（emerge...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rebuildpkgdb" label="rebuildpkgdb" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
前段时间折腾<a href="http://www.aiview.com/2008/02/gentoo_linux_on_t43_14_ramdisk.html">tmpfs 文件系统</a>，不小心弄丢了/var/db/pkg 下面所有的文件，在查资料的过程中，才了解这个文件夹的重要。 
</p>
<p>
这个文件夹对于Gentoo 的作用，相当于Windows 应用程序的Uninstall 文件，所有通过Portage 安装的程序包信息都保存在这，每个程序包包含哪些文件，以及文件的路径信息是最重要的，缺少这些信息，将无法正常的卸载程序包，其他一些重要的信息丢失也导致Portage 系统混乱。 
</p>
<p>
这个文件夹丢失，虽然系统中的应用程序可以照常运行，但却是最大的灾难，除非不再打算通过Portage 对包进行任何维护工作，比如升级，安装新的软件等。解决方法只有一个：重新merge 所有软件包，重新生成这部分信息。一般来说，系统中软件包的规模在几百，甚至上千个，里面还有一些重磅角色，全部重新编译一遍，可能需要几十个小时（OpenOffice 在我的T43 上花去10个小时进行编译）。 
</p>
<p>
文件夹丢失后，我最初找到了<a href="http://forums.gentoo.org/viewtopic-t-513191-start-0-postdays-0-postorder-asc-highlight-.html">这个讨论</a>(en)，参考<span class="name"><strong>hielvc </strong>写的脚本</span>，希望通过读取/var/log/emerge.log 恢复丢失的信息，但这个方法只能恢复出系统中所有已安装软件包名称和版本信息，无法找回已安装文件的列表，能不能通过某个Gentoo 工具得到每个软件包默认的文件列表呢，答案应该是不可以，因为Gentoo 是一个定制性的系统，大部分文件都是编译后生成的，并没有一个默认的库能够告诉这些文件的具体信息。换句话说，我的/var/db/pkg 是唯一的，如果没有备份，只能重新编译一遍系统来生成它们，下面这个讨论中，<span class="name"><strong>didymos</strong></span>很清楚的解释了这个问题，也证实了我的想法：<a href="http://forums.gentoo.org/viewtopic-t-665198.html" class="postdetails">PANIC! I deleted /var/db/pkg</a> 
</p>
<p>
所幸，在把我的/var/db/pkg 放入内存之前，我留下一个备份，但随后，我merge了约50个软件包，这些信息被写入内存中的/var/db/pkg ，随后就在一次重启后彻底丢失了。 
</p>
<p>
在具有备份的情况下，我使用以下步骤重建了/var/db/pkg，时间成本主要花费在重新merge 约50个软件包。 
</p>
<h4>步骤</h4>
<h5>恢复备份的/var/db/pkg 文件夹</h5>
<p>
恢复之后，/var/db/pkg 代表了merge 50个包之前我的系统的状况，但我的系统实际多出了一些包，或者一些已存在包的升级。 
</p>
<h5>找出/var/db/pkg 与实际系统的不一致</h5>
<p>
前面提到的<span class="name"><strong>hielvc </strong>写的脚本可以派上用场，但<strong>hielvc</strong> 忽略了一些情况（emerge -&gt; unmerge -&gt; emerge again），结果可能并不准确，我重写了一个脚本</span><a href="http://www.aiview.com/ref/2008/03/rebuildpkgdb">rebuildpkgdb</a>，用法： 
</p>
<pre class="cmd">
# ./rebuildpkgdb -p
</pre>
<pre class="output">
This is a dry-run, Nothing really changed.Done! Please check package.lst
</pre>
<p>
这将得到系统中实际安装的所有包列表（包含版本），再使用下面命令获取/var/db/pkg 记录的列表。 
</p>
<pre class="cmd">
#  find /var/db/pkg/ -type d |cut -d/ -f 5- |awk -F/ &#39;NF &gt; 1&#39; |sort &gt; package.db
</pre>
<p>
然后比较两个文件，找到以下包： 
</p>
<ol>
	<li>存在于package.lst，但不存在于package.db</li>
	<li>存在于package.db，但不存在于package.lst</li>
	<li>都存在，但版本不同（取 package.lst）</li>
</ol>
<p>
对于第一种情况，是因为我在/var/db/pkg 丢失之后，unmerge 了一些包，虽然emerge.log 显示unmerge 成功，但因为丢失/var/db/pkg，实际文件并没有从文件系统真正删除。 
</p>
<p>
而后两种情况是我备份/var/db/pkg 之后，丢失的信息。 
</p>
<p>
因此对于上面三种情况，都执行一次merge 即可。 
</p>
<h5>remerge</h5>
<p>
将上个步骤取得的包列表格式化成类似下面的命令，重新merge一遍，这个过程将重建正确的/var/db/pkg。 
</p>
<pre class="cmd">
# sudo emerge -av =app-admin/eselect-ctags-1.3 =app-admin/eselect-wxwidgets-0.8 \
=app-admin/sudo-1.6.9_p14 =app-editors/emacs-22.1-r3 ...
</pre>
<pre class="output">
These are the packages that would be merged, in order:Calculating dependencies... done![ebuild  N    ] sys-fs/mtools-3.9.10  USE=&quot;X&quot; 0 kB [ebuild     U ] kde-base/kpdf-3.5.9 [3.5.8] USE=&quot;xinerama -arts -debug -kdeenablefinal&quot; 0 kB [ebuild     U ] kde-misc/krusader-1.80.0-r1 [1.80.0] USE=&quot;xinerama -arts -debug -javascript -kde&quot; 0 kB [ebuild  N    ] sys-boot/syslinux-3.52  0 kB  ...Total: 49 packages (42 upgrades, 6 new, 1 in new slot), Size of downloads: 3 kBWould you like to merge these packages? [Yes/No] 
</pre>
<h5>检查系统</h5>
<p>
列出那些在/usr/lib/portage/world，但不在/var/db/pkg 中的软件包： 
</p>
<pre class="cmd">
# emaint --check world 
</pre>
<p>
如果上面命令找到了任何包，那么应该先merge 它们，如果事实不需要它们，再进行unmerge ，这样可以保证world, /var/db/pkg/, 以及文件系统三者的一致性。 
</p>
<h5>revdep-rebuild</h5>
<p>
最后执行revdep-rebuild 查找系统中的任何共享库以及依赖关系的缺失，如果需要，会自动merge 需要的软件包。这个命令可能需要运行多次，直到没有任何问题发现为止。 
</p>
<pre class="cmd">
# revdep-rebuild 
</pre>
<h4>如果没有/var/db/pkg 备份</h4>
<p>
这是个很不幸的状况，如果真正希望world, /var/db/pkg/, 以及文件系统这三者具有一致性，那么似乎没有别的选择，找个空闲时间依次执行下面的命令，来重建/var/db/pkg 
</p>
<pre class="cmd">
# emaint --check world# emerge -e system# emerge -e world# revdep-rebuild 
</pre>
<p>
这个过程可能很漫长，视机器的速度，如果有其他Gentoo 系统可以利用，那么可以尝试<a href="http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=2&amp;chap=3#doc_chap2" class="altlink">分布式编译</a>来节省时间。&nbsp; 
</p>
<h4>延展阅读</h4>
<ul>
	<li><a href="http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=2&amp;chap=1">Gentoo Linux文档 -- Portage入门</a>&nbsp;&nbsp;</li>
	<li><a href="http://forums.gentoo.org/viewtopic-t-665198.html">Gentoo Forums :: 阅读主题 - PANIC! I deleted /var/db/pkg</a> </li>
	<li><a href="http://forums.gentoo.org/viewtopic-t-513191-start-0-postdays-0-postorder-asc-highlight-.html">Gentoo Forums :: 阅读主题 - deleted /var/db/pkg [solved]</a></li>
	<li><a href="http://gentoo-wiki.com/HOWTO_Use_Portage_Correctly">HOWTO Use Portage Correctly - Gentoo Linux Wiki</a></li>
	<li><a href="http://forums.gentoo.org/viewtopic-t-136627-start-0-postdays-0-postorder-asc-highlight-.html" class="maintitle">GF16: Corrupt or empty world file, what do I do?</a></li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux: Subversion</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/gentoo_linux_subversion.html" />
    <id>tag:www.aiview.com,2008://1.971</id>

    <published>2008-03-21T06:37:24Z</published>
    <updated>2008-03-21T06:59:24Z</updated>

    <summary><![CDATA[安装 添加需要的USE 标记：（如果愿意加入到/etc/make.conf 中作为全局配置也可以） # echo &#39;dev-util/subversion svnserve apache2&#39; &gt;&gt; /etc/portage/package.use emerge subversion 服务器与客户端程序： # emerge subversion [ebuild R ] dev-util/subversion-1.4.6-r1 USE=&quot;apache2 berkdb emacs java nls perl python ruby svnserve* -bash-completion -debug -doc -extras -nowebdav -vim-syntax&quot; 0 kB &nbsp; 注意：subversion...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="软件开发" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="subversion" label="subversion" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="svn" label="svn" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<h4>安装</h4>
<p>
添加需要的USE 标记：（如果愿意加入到/etc/make.conf 中作为全局配置也可以）
</p>
<pre class="cmd">
# echo &#39;dev-util/subversion svnserve apache2&#39; &gt;&gt; /etc/portage/package.use
</pre>
<p>
emerge subversion 服务器与客户端程序：
</p>
<pre class="cmd">
# emerge subversion
</pre>
<pre class="output">
[ebuild   R   ] dev-util/subversion-1.4.6-r1  USE=&quot;apache2 berkdb emacs java nls perl python ruby <span class="hilite2">svnserve*</span> -bash-completion -debug -doc -extras -nowebdav -vim-syntax&quot; 0 kB &nbsp;
</pre>
<p>
注意：subversion 依赖于apache 服务，如果系统中没有apache，会自动添加入emerge 列表。 
</p>
<p>
安装好后产生以下主要的文件：
</p>
<pre>
/usr/bin/svnadmin&nbsp;&nbsp;&nbsp;		用于建立一个repository，也就是一个svn版本库服务
/usr/bin/svn&nbsp;&nbsp;&nbsp;			svn客户端命令行程序
/etc/init.d/svnserve		svn后台服务程序
/etc/conf.d/svnserve &nbsp;&nbsp;&nbsp;	svn服务配置文件
</pre>
<h4>配置<br />
</h4>
<p>
默认的配置文件使用/var/svn 作为repository 的根目录，不做修改。
</p>
<p>
使用root 建立/var/svn 目录，然后建立独立的repository目录: prj。
</p>
<pre class="cmd">
# mkdir /var/svn
# mkdir /var/svn/prj
</pre>
<p>
现在使用前面创建的路径建立一个repository。
</p>
<pre class="cmd">
# svnadmin create /var/svn/prj&nbsp;
</pre>
<p>
这会生成一些目录结构与文件在/var/svn/prj 下面，编辑配置文件/var/svn/prj/conf/passwd，加入svn 授权连接用户与密码。
</p>
<pre>
myusername - mypassword&nbsp;
</pre>
<p>
接下来编辑repository配置文件/var/svn/prj/conf/svnserve.conf，去除掉以下行的注释：
</p>
<pre>
anon-access = read
auth-access = write
password-db = passwd
</pre>
<p class="emphasis">
注意：行首不要留有空格。&nbsp;
</p>
下面还需要给svn root 目录/var/svn 以及下面的repository 正确的授权，以使以apache用户运行的svnserver 能够正确的存取它们。执行以下命令：
<pre class="cmd">
# chown -R apache:root /var/svn&nbsp;
</pre>
<p>
&nbsp;现在repository 已经准备好了，可以启动svn 服务，并设置为跟随系统自动启动。
</p>
<pre class="cmd">
# /etc/init.d/svnserve start
# rc-update add svnserve default 
</pre>
<p>
至此，svn server已经在运行，并且为一个叫做prj的项目建立了一个repository，同时为这个repository设置了连接用户。
</p>
<p>
下面我们选择一个路径作为保存working copy 的目录，比如位于$HOME ，进入此目录，并首先将prj 项目check out，执行以下命令：
</p>
<pre class="cmd">
$ cd $HOME
$ svn checkout svn://localhost/prj
</pre>
<p>
第一次执行此命令，svn会提示输入用户名与密码，然后保存在$HOME/.subversion 目录中。以上会在HOME 中目录建立目录$HOME/prj ，并包含$HOME/prj/.svn 用于保存版本控制的文件。
</p>
<p>
现在可以向$HOME/prj 中copy 项目文件。使用svn add PATH 命令加入版本控制信息，svn -m &quot;message&quot; commit PATH 命令进行提交。<br />
</p>
<h4>
参考信息</h4>
<ul>
	<li> <a href="http://svnbook.red-bean.com/">subversion online book</a></li>
	<li><a href="http://www.aiview.com/2007/07/subversion_install_notes.html">Subversion 安装笔记</a> </li>
</ul>
 
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux on T43 总结：环境与配置文件</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_env_and_conf.html" />
    <id>tag:www.aiview.com,2008://1.965</id>

    <published>2008-03-15T19:11:08Z</published>
    <updated>2008-03-16T07:55:56Z</updated>

    <summary><![CDATA[ 这篇笔记将集中给出一些系统中的环境设置与配置文件，有些配置文件在前面可能有所提及，有些并未涉及到，算作对前面内容的总结和补充。 环境&nbsp; $ emerge --info&nbsp; Portage 2.1.3.18 (default-linux/x86/2007.0, gcc-4.2.2, glibc-2.6.1-r0, 2.6.23-gentoo i686) ================================================================= System uname: 2.6.23-gentoo i686 Intel(R) Pentium(R) M processor 2.00GHz Timestamp of tree: Mon, 05 Nov 2007 13:20:01 +0000 app-shells/bash: 3.2_p17-r1 dev-java/java-config: 1.3.7, 2.1.2-r1 dev-lang/python: 2.5.1-r3 sys-apps/baselayout:...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Thinkpad and PDA" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="conf" label="conf" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="environment" label="environment" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="t43" label="T43" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="thinkpad" label="Thinkpad" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
这篇笔记将集中给出一些系统中的环境设置与配置文件，有些配置文件在前面可能有所提及，有些并未涉及到，算作对<a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_3_the_manual_of_manual.html">前面内容</a>的总结和补充。
</p>
<h4>环境&nbsp;</h4>
<pre class="cmd">
$ emerge --info&nbsp;
</pre>
<pre class="output">
Portage 2.1.3.18 (default-linux/x86/2007.0, gcc-4.2.2, glibc-2.6.1-r0, 2.6.23-gentoo i686)
=================================================================
System uname: 2.6.23-gentoo i686 Intel(R) Pentium(R) M processor 2.00GHz
Timestamp of tree: Mon, 05 Nov 2007 13:20:01 +0000
app-shells/bash:     3.2_p17-r1
dev-java/java-config: 1.3.7, 2.1.2-r1
dev-lang/python:     2.5.1-r3
sys-apps/baselayout: 1.12.10-r5
sys-apps/sandbox:    1.2.18.1-r2
sys-devel/autoconf:  2.13, 2.61-r1
sys-devel/automake:  1.9.6-r2, 1.10
sys-devel/binutils:  2.18-r1
sys-devel/gcc-config: 1.4.0-r1
sys-devel/libtool:   1.5.24
virtual/os-headers:  2.6.23
ACCEPT_KEYWORDS=&quot;x86 ~x86&quot;
CBUILD=&quot;i686-pc-linux-gnu&quot;
CFLAGS=&quot;-Os -march=pentium-m -pipe&quot;
CHOST=&quot;i686-pc-linux-gnu&quot;
CONFIG_PROTECT=&quot;/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config&quot;
CONFIG_PROTECT_MASK=&quot;/etc/env.d /etc/env.d/java/ /etc/gconf /etc/revdep-rebuild /etc/splash /etc/terminfo /etc/udev/rules.d&quot;
CXXFLAGS=&quot;-Os -march=pentium-m -pipe&quot;
DISTDIR=&quot;/usr/portage/distfiles&quot;
FEATURES=&quot;distlocks metadata-transfer sandbox sfperms strict unmerge-orphans userfetch&quot;
GENTOO_MIRRORS=&quot;http://ftp.ncnu.edu.tw/Linux/Gentoo/     http://distro.ibiblio.org/pub/linux/distributions/gentoo/     http://ftp.ucsb.edu/pub/mirrors/linux/gentoo/&quot;
LANG=&quot;en_US&quot;
LINGUAS=&quot;en zh zh_CN&quot;
MAKEOPTS=&quot;-j3&quot;
PKGDIR=&quot;/usr/portage/packages&quot;
PORTAGE_RSYNC_OPTS=&quot;--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*&quot;
PORTAGE_TMPDIR=&quot;/var/tmp&quot;
PORTDIR=&quot;/usr/portage&quot;
PORTDIR_OVERLAY=&quot;/usr/local/portage&quot;
SYNC=&quot;rsync://rsync.asia.gentoo.org/gentoo-portage&quot;
USE=&quot;X a52 aac aalib acl acpi alsa apache2 asf avahi avi berkdb bitmap-fonts bluetooth bzip2 cdparanoia cdr cjk cli console cracklib crypt cups dbus divx4linux dri dv dvd dvdr dvdread emacs encode esd exif ffmpeg firefox flac foomatic fortran gdbm gif glitz gnome gphoto2 gpm gstreamer gtk hal hdaps iconv immqt-bc irda isdnlog java jpeg lame live mad madwifi midi mjpeg mmx mp3 mp4 mpeg msn mudflap mysql ncurses nls nptl nptlonly nsplugin ogg opengl openmp oss pam pcre pda pdf perl png ppds pppd python qq quicktime rar readline real reflection ruby session sound spell spl sse sse2 ssl svg symlink tcpd tiff truetype truetype-fonts type1 type1-fonts unicode usb userlocales vcd vidix vorbis wav win32codecs wmv x86 xcb xine xinerama xml xorg xv xvid zip zlib&quot; ALSA_CARDS=&quot;intel8x0&quot; ALSA_PCM_PLUGINS=&quot;adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol&quot; ELIBC=&quot;glibc&quot; INPUT_DEVICES=&quot;keyboard evdev mouse synaptics&quot; KERNEL=&quot;linux&quot; LCD_DEVICES=&quot;bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text&quot; LINGUAS=&quot;en zh zh_CN&quot; USERLAND=&quot;GNU&quot; VIDEO_CARDS=&quot;radeon vesa&quot;
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LDFLAGS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS&nbsp;
</pre>
<pre class="cmd">
$ set&nbsp;
</pre>
<pre class="output">
ANT_HOME=/usr/share/ant-core
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]=&quot;3&quot; [1]=&quot;2&quot; [2]=&quot;17&quot; [3]=&quot;1&quot; [4]=&quot;release&quot; [5]=&quot;i686-pc-linux-gnu&quot;)
BASH_VERSION=&#39;3.2.17(1)-release&#39;
CLASSPATH=/home/db2amor/sqllib/java/db2java.zip:/home/db2amor/sqllib/java/db2jcc.jar:/home/db2amor/sqllib/java/sqlj.zip:/home/db2amor/sqllib/function:/home/db2amor/sqllib/java/db2jcc_license_cisuz.jar:/home/db2amor/sqllib/java/db2jcc_license_cu.jar:.
COLORTERM=gnome-terminal
COLUMNS=152
CONFIG_PROTECT=&#39;/usr/share/X11/xkb /usr/kde/3.5/share/config /usr/kde/3.5/env /usr/kde/3.5/shutdown /usr/share/config&#39;
CONFIG_PROTECT_MASK=&#39;/etc/env.d/java/ /etc/udev/rules.d /etc/gconf /etc/terminfo /etc/revdep-rebuild /etc/splash&#39;
CVS_RSH=ssh
DB2INSTANCE=db2amor
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-S9K8WiCEnf,guid=d7447ddfa94cec100759df0047da3397
DIRSTACK=()
DISPLAY=:0.0
EDITOR=/usr/bin/emacs
EUID=1000
FLTK_DOCDIR=/usr/share/doc/fltk-1.1.7-r2/html
GCC_SPECS=
GDK_USE_XFT=1
GENERATION=2
GNOME_DESKTOP_SESSION_ID=Default
GNOME_KEYRING_SOCKET=/tmp/keyring-HarWwA/socket
GROUPS=()
GTK_IM_MODULE=scim
GTK_RC_FILES=/etc/gtk/gtkrc:/home/alex/.gtkrc-1.2-gnome2
G_BROKEN_FILENAMES=1
HISTFILE=/home/alex/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/home/alex
HOSTTYPE=i686
HUSHLOGIN=FALSE
IFS=$&#39; \t\n&#39;
INFOPATH=/usr/share/info:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/info:/usr/share/gcc-data/i686-pc-linux-gnu/4.2.2/info:/usr/share/info/emacs-22
JAVAC=/home/alex/.gentoo/java-config-2/current-user-vm/bin/javac
JAVA_HOME=/home/alex/.gentoo/java-config-2/current-user-vm
JDK_HOME=/home/alex/.gentoo/java-config-2/current-user-vm
KDEDIRS=/usr:/usr/local:/usr/kde/3.5
LANG=en_US
LC_CTYPE=zh_CN
LD_LIBRARY_PATH=/opt/ibm-jdk-bin-1.4.2.9/bin:/opt/ibm-jdk-bin-1.4.2.9/jre/bin:/home/db2amor/sqllib/lib
LESS=&#39;-R -M --shift 5&#39;
LESSOPEN=&#39;|lesspipe.sh %s&#39;
LIBPATH=/home/db2amor/sqllib/lib
LINES=51
LOGNAME=alex
LS_COLORS=&#39;no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:&#39;
MACHTYPE=i686-pc-linux-gnu
MAIL=/var/mail/alex
MAILCHECK=60
MANPATH=/home/alex/.gentoo/java-config-2/current-user-vm/man:/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/man:/usr/share/gcc-data/i686-pc-linux-gnu/4.2.2/man:/etc/java-config/system-vm/man/:/usr/kde/3.5/share/man:/usr/qt/3/doc/man
OPENGL_PROFILE=xorg-x11
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PAGER=/usr/bin/less
PATH=/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.2.2:/opt/mts-client:/opt/mts:/opt/ibm-jdk-bin-1.4.2.9/bin:/opt/ibm-jdk-bin-1.4.2.9/jre/bin:/usr/kde/3.5/bin:/usr/qt/3/bin:/usr/games/bin:/home/alex/bin:/home/alex/foo:/home/alex/foo/order:/home/db2amor/sqllib/bin:/home/db2amor/sqllib/adm:/home/db2amor/sqllib/misc:/home/alex/bin:/home/alex/foo:/home/alex/foo/order
PIPESTATUS=([0]=&quot;2&quot;)
PKG_CONFIG_PATH=/usr/qt/3/lib/pkgconfig
PPID=7553
PRELINK_PATH_MASK=/usr/lib/gstreamer-0.10:/usr/lib/klibc
PYTHONPATH=/usr/lib/portage/pym
QMAKESPEC=linux-g++
QTDIR=/usr/qt/3
QT_IM_MODULE=scim
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=3
SSH_AGENT_PID=7403
SSH_AUTH_SOCK=/tmp/ssh-VHqDnq7373/agent.7373
TERM=xterm
USER=alex
VMHANDLE=ibm-jdk-bin-1.4
VWSPATH=/home/db2amor/sqllib
VWS_LOGGING=/home/db2amor/sqllib/logging
VWS_TEMPLATES=/home/db2amor/sqllib/templates
WINDOWID=20980933
WINDOWPATH=7
XAUTHORITY=/home/alex/.Xauthority
XDG_DATA_DIRS=/usr/share:/usr/kde/3.5/share:/usr/local/share
XDG_SESSION_COOKIE=
XMODIFIERS=@im=SCIM
</pre>
<h4>配置文件</h4>
<ul>
	<li><a href="http://www.aiview.com/ref/2008/03/make.conf">/etc/make.conf</a> </li>
	<li><a href="http://www.aiview.com/ref/2008/03/.config">/usr/src/linux/.config</a> </li>
	<li><a href="http://www.aiview.com/ref/2008/03/fstab">/etc/fstab</a> </li>
	<li><a href="http://www.aiview.com/ref/2008/03/xorg.conf">/etc/X11/xorg.conf</a> </li>
	<li><a href="http://www.aiview.com/ref/2008/03/locale.gen">/etc/locale.gen</a> </li>
	<li><a href="http://www.aiview.com/ref/2008/03/kernel-2.6">/etc/modules.autoload/kernel-2.6</a></li>
	<li><a href="http://www.aiview.com/ref/2008/03/wpa_supplicant.conf">/etc/wpa_supplicant/wpa_supplicant.conf</a> </li>
	<li><a href="http://www.aiview.com/ref/2008/03/jdk.conf&quot;">/etc/java-config-2/build/jdk.conf</a> </li>
	<li><a href="http://www.aiview.com/ref/2008/03/clock">/etc/conf.d/clock</a> </li>
	<li><a href="http://www.aiview.com/ref/2008/03/hdapsd">/etc/conf.d/hdapsd</a></li>
	<li><a href="http://www.aiview.com/ref/2008/03/package.use">/etc/portage/package.use</a> </li>
	<li><a href="http://www.aiview.com/ref/2008/03/package.keywords">/etc/portage/package.keywords</a> </li>
	<li><a href="http://www.aiview.com/ref/2008/03/.fonts.conf">/home/alex/.fonts.conf</a></li>
</ul>
<h4>后记<br />
</h4>
<p>
这篇笔记不会是这个系列的最后一篇，因为有些部分自己还没有整理清楚，待合适的时候，将继续更新。 
</p>
<h4>延展阅读</h4>
<ul>
	<li><a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_3_the_manual_of_manual.html">Gentoo Linux on T43 (3) 安装指南的指南</a>&nbsp; <br />
	</li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>IBM DB2 信息中心 v8.2 在Gentoo Linux 上安装的一些问题</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/ibm_db2_v82_on_gentoo_linux.html" />
    <id>tag:www.aiview.com,2008://1.963</id>

    <published>2008-03-07T18:37:44Z</published>
    <updated>2008-03-07T20:01:24Z</updated>

    <summary><![CDATA[Gentoo 支持 IBM DB2 信息中心 并不提供对Gentoo Linux 的额外支持，如果使用Gentoo，在以下几个地方，需要额外的工作。 rpm DB2 信息中心安装文件内部使用rpm 包，Gentoo 默认没有rpm 引擎，需要先emerge rpm，否则安装无法继续。 # emerge -av rpm&nbsp; 信息中心自v9.1 版本，使用tar包，不再需求rpm。 服务daemon 不会自动启动 安装脚本使用Redhat Linux 发布的chkconfig 命令来为Linux 环境设置自动启动daemon，Gentoo 不支持，需要手工配置。 ＃ rc-update add db2icd default&nbsp; 安装中文帮助文档包 命令行安装仅仅安装基本的英文版本，如果需要中文，手工运行： # rpm -ivh --nodeps...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="DB2 数据库" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="db2" label="DB2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<h4>Gentoo 支持</h4>
<p>
<a href="http://publib.boulder.ibm.com/infocenter/db2help/">IBM DB2 信息中心</a> 并不提供对Gentoo Linux 的额外支持，如果使用Gentoo，在以下几个地方，需要额外的工作。
</p>
<h5>rpm </h5>
<p>
DB2 信息中心安装文件内部使用rpm 包，Gentoo 默认没有rpm 引擎，需要先emerge rpm，否则安装无法继续。
</p>
<pre class="cmd">
# emerge -av rpm&nbsp;
</pre>
<p>
信息中心自v9.1 版本，使用tar包，不再需求rpm。
</p>
<h5>服务daemon 不会自动启动</h5>
<p>
安装脚本使用Redhat Linux 发布的chkconfig 命令来为Linux 环境设置自动启动daemon，Gentoo 不支持，需要手工配置。
</p>
<pre class="cmd">
＃ rc-update add db2icd default&nbsp;
</pre>
<h5>安装中文帮助文档包 <br />
</h5>
<p>
命令行安装仅仅安装基本的英文版本，如果需要中文，手工运行：
</p>
<pre class="cmd">
# rpm -ivh --nodeps db2/linux/IBM_db2decn81-8.1.0-64.i386.rpm 
</pre>
<p>
繁体中文：IBM_db2detw81-8.1.0-64.i386.rpm&nbsp;
</p>
<h4>Truableshooting <br />
</h4>
<h5>GUI安装：Installing DB2 file sets:.......Failure</h5>
<p>
图形安装方式运行： 
</p>
<pre class="cmd">
# ./db2setup
</pre>
<p>
启动了图形安装界面，services name 和端口使用默认值：db2icserver, 51000，最后一步安装失败，/tmp/db2setup.log 如下：<br />
</p>
<pre class="output">
DB2 Setup log file started at: Sat 01 Mar 2008 01:43:06 AM CST CST
============================================================
Operating system information: Linux 2.6.23-gentoo.#7 PREEMPT Tue Nov 6 17:01:35 CST 2007 i686
Product to install:                        IBM DB2 Information Center
Installation type:                         Custom
Previously Installed Components:        
Selected Components:                    
Languages:                              
Target directory:                          /opt/IBM/db2/V8.1
Space required:                            0 MB
DB2 Information Center Server settings: 
Service Name:                          db2icserver
Port number:                           51000
Checking license agreement acceptance:.......Success
Installing DB2 file sets:.......Failure
ERROR:A major error occurred while installing &quot;IBM DB2 Information Center&quot; on 
this computer. The installation can not continue. If the problem persists 
please contact your technical service representative.
DB2 Setup log file finished at: Sat 01 Mar 2008 01:47:33 AM CST CST
============================================================ 
</pre>
<p>
尚不知如何解决。
</p>
<h5>命令行安装：error: Failed dependencies:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/opt/IBM/db2/V8.1 is needed by IBM_db2deen81-8.1.0-64.i386</h5>
<p>
执行命令行安装： 
</p>
<pre class="cmd">
# cd ./261_DOCE_LNX_3264_NLV
# ./db2_install -p DB2.DOCE
</pre>
<p>
提示错误：<br />
</p>
<pre class="output">
&nbsp;&nbsp; IBM_db2deen81...
error: Failed dependencies:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /opt/IBM/db2/V8.1 is needed by IBM_db2deen81-8.1.0-64.i386
The installation logfile can be found in /tmp/db2_install_log.16033.
db2_install program terminated prematurely.
</pre>
<p>
这是rpm 包的依赖问题，具体原因不清楚。 
</p>
<p>
临时解决方法：
</p>
修改安装目录的文件 261_DOCE_LNX_3264_NLV/db2/linux/db2_install ，573行，为rpm 命令增加参数--nodeps。
<pre class="code">
573              ( rpm -ivh <span class="hilite">--nodeps</span> ${INSTDEV?}/${pkg?}${RPMEXTN?} 2&gt;&amp;1; echo $? &gt; ${TMPRC?} ) | tee -a ${DB2INSTLOG?}
</pre>
<h5>服务端口冲突  <br />
</h5>
<p>
如果在系统中安装了多个版本的信息中心，比如同时安装了v8 与v9，那么可能需要考虑以下问题。 
</p>
<p>
信息中心v8 版本的命令行安装脚本不能自动配置服务端口，总是使用默认值51000，可能会与其它版本的信息中心引起冲突（比如在安装v8版本之前安装了v9），需要手工修改 /var/db2/v81/db2icd.conf，挑选一个未被占用的端口，这里使用51002。
</p>
<pre class="code">
## TCP/IP port for DB2 Information Center
DB2_ECLIPSEIC_PORT=<span class="hilite">51002</span>
## Temporary workspace file location for DB2 Information Center
## Default location is DB2 install location (&lt;DB2DIR&gt;/doc/eclipse)
DB2_ECLIPSEIC_DATA=
## Suggested alternate location 
#DB2_ECLIPSEIC_DATA=/tmp/db2icd/workspace
DB2HELP_DIR=/opt/IBM/db2/V8.1/bin/../doc/eclipse
</pre>
<p>
注意，/opt/IBM/db2/V8.1/cfg/db2ic.conf&nbsp;  是个类似的配置文件，但/etc/init.d/db2icd 并没有使用它，使用的是/var/db2/v81/db2icd.conf。
</p>
<h5>启动服务失败：su: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory</h5>
<p>
启动服务，输出大量的错误信息，100秒超时后，启动失败。 
</p>
<pre class="cmd">
# /etc/init.d/db2icd start
</pre>
<pre class="output">
Initializing startup.
su: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
ps: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
grep: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
awk: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
grep: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
ps: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
awk: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
sleep: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
expr: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
./db2icd: line 204: [: : integer expression expected
... 
</pre>
<p>
此问题由daemon脚本使用的Java 虚拟机版本和内核环境参数引起。
</p>
<p>
/etc/init.d/db2icd 使用安装程序自带的Java虚拟机，版本为1.3.1。
</p>
<pre class="cmd">
# /opt/IBM/db2/V8.1/doc/eclipse/jre/bin/java -version
</pre>
<pre class="output">
java version &quot;1.3.1&quot;
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1)
Classic VM (build 1.3.1, J2RE 1.3.1 IBM build cxia32131-20031021 (JIT enabled: jitc))
</pre>
<p>
/etc/init.d/db2icd
为Linux 环境设置了内核环境参数。
</p>
<pre class="code">
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL 
</pre>
<p>
完成下面2个步骤可以解决问题：
</p>
<ol>
	<li>修改daemon脚本，更换为系统的Java虚拟机</li>
	<li>修改daemon脚本，取消内核环境参数 LD_ASSUME_KERNEL <br />
	</li>
</ol>
<p>
我的系统中安装两个版本的Java 环境，经测试，任何一个都可以，关于如何切换Java 环境版本，可参考<a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_12_java_environment.html"> Gentoo Linux on T43 (12) Java 环境</a>。
</p>
<pre class="cmd">
# java-config -L
</pre>
<pre class="output">
The following VMs are available for generation-2:
*)      IBM JDK 1.4.2.9 [ibm-jdk-bin-1.4]
2)      IBM JDK 1.5.0.5a [ibm-jdk-bin-1.5]&nbsp;
</pre>
<p>
我的内核版本是2.6.23-gentoo：
</p>
<pre class="cmd">
# uname -svr
</pre>
<pre class="output">
Linux 2.6.23-gentoo #7 PREEMPT Tue Nov 6 17:01:35 CST 2007
</pre>
<p>
两处代码更改如下：&nbsp;
</p>
<pre class="cmd">
# diff /etc/init.d/db2icd /etc/init.d/db2icd.bak
</pre>
<pre class="code">
76,77c76
<span class="hilite">&lt; #     DB2HELP_JRE=&quot;$DB2HELP_DIR/jre/bin/java&quot;
&lt;       DB2HELP_JRE=&quot;java&quot;</span>
---
&gt;       DB2HELP_JRE=&quot;$DB2HELP_DIR/jre/bin/java&quot;
195,196c194,195
<span class="hilite">&lt;              #LD_ASSUME_KERNEL=2.4.19
&lt;              #export LD_ASSUME_KERNEL</span>
---
&gt;              LD_ASSUME_KERNEL=2.4.19
&gt;              export LD_ASSUME_KERNEL 
</pre>
<p>
通过<a href="http://localhost:51002/">http://localhost:51002</a>  访问DB2 Information Center v8.2 成功。
</p>
<h5>安装路径与卸载问题&nbsp;</h5>
<p>
DB2 数据库v8 版本安装不允许修改安装路径/opt/IBM/db2/V8.1/（Solaris 平台除外），同样，信息中心v8 也是如此，虽然其安装脚本db2_install 具有-d
参数，但指定安装目录无效，无论如何都安装在默认目录/opt/IBM/db2/V8.1，会与DB2 数据库v8 混在一起，如果执行Information Center 的卸载程序db2_deinstall，也会将DB2 数据库v8
一并卸载掉，这点需要特别注意。
</p>
<p>
如果意外卸载了DB2 数据库 v8，用原有的选项重新安装即可，无须重新创建或者修改实例。
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux on T43 (14) 内存虚拟盘加速系统</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/02/gentoo_linux_on_t43_14_ramdisk.html" />
    <id>tag:www.aiview.com,2008://1.957</id>

    <published>2008-02-18T17:52:39Z</published>
    <updated>2008-03-23T19:41:48Z</updated>

    <summary><![CDATA[ 对于一个喜欢折腾系统的人来说，为笔记本电脑建立内存虚拟盘，来弥补笔记本小硬盘天然的性能瓶颈问题，总是免不了的。 内核选项&nbsp; Linux 内核内建了ramdisk支持，正常情况下，内核中下列选项应该是enable 的。 $ zcat /proc/config.gz |grep -i tmpfs CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y 这就表明，可以直接利用mount 命令创建一个内存虚拟盘。 创建内存盘 我打算把内存虚拟盘放在/mnt/ram 。使用以下简单的命令： # mkdir /mnt/ram # mount -t tmpfs -o 128m none /mnt/ram 也可以不指定内存盘大小： # mount -t tmpfs none /mnt/ram&nbsp; 在内存盘建立之后，查看top 或者系统监视器，可用内存并未相应减少（明确指定大小的内存盘也是如此）。经过测试，未明确指定大小的内存盘会动态分配内存，可以持续向内存盘中写入文件，当再无可用物理内存时才会报空间不足的错误。 tmpfs...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ramdisk" label="ramdisk" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tmpfs" label="tmpfs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
对于一个喜欢折腾系统的人来说，为笔记本电脑建立内存虚拟盘，来弥补笔记本小硬盘天然的性能瓶颈问题，总是免不了的。
</p>
<h4>内核选项&nbsp;</h4>
<p>
Linux 内核内建了ramdisk支持，正常情况下，内核中下列选项应该是enable 的。
</p>
<pre class="cmd">
$ zcat /proc/config.gz |grep -i tmpfs
</pre>
<pre class="output">
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
</pre>
<p>
这就表明，可以直接利用mount 命令创建一个内存虚拟盘。
</p>
<h4>创建内存盘<br />
</h4>
<p>
我打算把内存虚拟盘放在/mnt/ram 。使用以下简单的命令：
</p>
<pre class="cmd">
# mkdir /mnt/ram 
# mount -t tmpfs -o 128m none /mnt/ram
</pre>
<p>
也可以不指定内存盘大小：
</p>
<pre class="cmd">
# mount -t tmpfs none /mnt/ram&nbsp;
</pre>
<p>
<del datetime="2008-03-24T03:35:31">在内存盘建立之后，查看top 或者系统监视器，可用内存并未相应减少（明确指定大小的内存盘也是如此）。经过测试，未明确指定大小的内存盘会动态分配内存，可以持续向内存盘中写入文件，当再无可用物理内存时才会报空间不足的错误。</del> tmpfs 文件系统默认采用1G 的容量，但并未实际分配并占用这部分内存，而是动态分配。这要比<a href="http://www.aiview.com/2006/02/running_firefox_on_ram_disk.html">Windows下流行的内存虚拟盘方案</a> 方便得多。
</p>
<h4>启动时自动创建<br />
</h4>
<p>
接下来，将以下行加入/etc/fstab，让系统在每次启动时自动创建内存盘。
</p>
<pre class="code">
none            /mnt/ram    tmpfs       noatime 0 0 
</pre>
<h4>利用内存盘&nbsp;</h4>
<p>
最后，可以把一些常用软件的临时文件夹指定到/mnt/ram，如果应用程序不支持临时文件夹配置，也可以将其转换成到/mnt/ram 的符号链接。
</p>
<h5>Lotus Notes 8</h5>
<p>
notes 8会在$HOME目录自动建立workplace-tmp 目录来存储临时文件，我们可以将其转移到内存盘中。先关闭notes，然后执行以下命令：
</p>
<pre class="cmd">
$ mkdir /mnt/ram/workplace-tmp
$ echo &#39; mkdir /mnt/ram/workplace-tmp&#39; &gt;&gt; ~/.bash_profile
$ mv ~/workplace-tmp ~/workplace-tmp.bak
$ ln -s /mnt/ram/workplace-tmp ~/workplace-tmp
$ ls -l ~/workplace-tmp
</pre>
<pre class="output">
lrwxrwxrwx 1 alex users 22 2008-02-19 09:36 /home/alex/workplace-tmp -&gt; /mnt/ram/workplace-tmp &nbsp;
</pre>
<h4>更新 2008-03-24</h4>
<p>
将/var/tmp 与/tmp 也加入到tmpfs
</p>
<p>
/etc/fstab 
</p>
<pre class="output">
none			/tmp	    tmpfs		noatime	0 0
none			/var/tmp    tmpfs		noatime	0 0
</pre>
<p>
设置Notes
</p>
<p>
修改~/.bash_profile
</p>
<pre class="output">
if [ ! -e /var/tmp/workplace-tmp ]; then
mkdir /var/tmp/workplace-tmp
fi
</pre>
<p>
重启后，修改Notes临时文件夹符号连接 
</p>
<pre class="output">
$ rm ~/workplace-tmp
$ ln -s /var/tmp/workplace-tmp ~/workplace-tmp
</pre>
<p>
将/var/tmp/ 放入tmpfs 之后，在merge一些巨大的软件包时，中途可能因为临时空间不足而失败退出，这种情况下，可以指定PORTAGE_TMPDIR 到其它具有足够空间的路径来解决。比如：
</p>
<pre class="cmd">
# PORTAGE_TMPDIR=~/tmp emerge -av openoffice
$ sudo PORTAGE_TMPDIR=~/tmp emerge -av openoffice 
</pre>
<h4>延展阅读</h4>
<ul>
	<li><a href="http://prefetch.net/blog/index.php/2006/11/30/creating-a-ramdisk-with-linux/">Creating a Linux ramdisk</a> <br />
	</li>
	<li><a href="http://www.aiview.com/2006/02/running_firefox_on_ram_disk.html">running firefox on Ram disk</a></li>
</ul>
（未完）<br />
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux on T43 (13) 应用程序中字体的纠正</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/02/gentoo_linux_on_t43_13_application_fonts.html" />
    <id>tag:www.aiview.com,2008://1.956</id>

    <published>2008-02-17T17:14:49Z</published>
    <updated>2008-02-29T07:52:51Z</updated>

    <summary><![CDATA[ 这篇日志打算对Gentoo Linux on T43 (7) 中文字体 进行一些补充，继续讨论一些需要单独对字体有所调整的应用程序，这里不追求字体的完美显示，只记录一些必要的调整步骤，以解决字体乱码，或者字体严重变形以至影响辨认的问题。 wine 一些依靠wine 模拟器运行的Windows 应用程序，字体会严重变形，比如BeyondCompare，虽然应用程序选项提供了字体选项，调整后也无法令所有界面显示易于辨识的字体。经过参考设置wine程序的字体一文，我做出调整，将Linux系统主要字体复制给wine使用，解决了问题。 $ ls -1 /usr/local/share/fonts/TTF/*.ttf msyhbd.ttf msyh.ttf simhei.ttf simsun18030.ttf simsun.ttf sthei.ttf wqy-zenhei.ttf&nbsp; $ cp /usr/local/share/fonts/TTF/*.ttf ~/.wine/drive_c/windows/fonts/ $ ls -1 ~/.wine/drive_c/windows/fonts/ msyhbd.ttf msyh.ttf simhei.ttf simsun18030.ttf simsun.ttf sthei.ttf wqy-zenhei.ttf&nbsp; 仅此一步即可，没有按上文修改.wine/system.reg ，默认的96dpi...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="font" label="font" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="picasa" label="picasa" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wine" label="wine" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
这篇日志打算对<a href="http://www.aiview.com/2008/01/gentoo_linuxon_t43_7_chinese_fonts.html">Gentoo Linux on T43 (7) 中文字体</a> 进行一些补充，继续讨论一些需要单独对字体有所调整的应用程序，这里不追求字体的完美显示，只记录一些必要的调整步骤，以解决字体乱码，或者字体严重变形以至影响辨认的问题。
</p>
<h4>wine</h4>
<p>
一些依靠wine 模拟器运行的Windows 应用程序，字体会严重变形，比如BeyondCompare，虽然应用程序选项提供了字体选项，调整后也无法令所有界面显示易于辨识的字体。经过参考<a href="http://www.linux-wiki.cn/index.php/%E8%AE%BE%E7%BD%AEwine%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%AD%97%E4%BD%93">设置wine程序的字体</a>一文，我做出调整，将Linux系统主要字体复制给wine使用，解决了问题。
</p>
<pre class="cmd">
$ ls -1 /usr/local/share/fonts/TTF/*.ttf
</pre>
<pre class="output">
msyhbd.ttf
msyh.ttf
simhei.ttf
simsun18030.ttf
simsun.ttf
sthei.ttf
wqy-zenhei.ttf&nbsp;
</pre>
<pre class="cmd">
$ cp /usr/local/share/fonts/TTF/*.ttf ~/.wine/drive_c/windows/fonts/ 
$ ls -1 ~/.wine/drive_c/windows/fonts/
</pre>
<pre class="output">
msyhbd.ttf
msyh.ttf
simhei.ttf
simsun18030.ttf
simsun.ttf
sthei.ttf
wqy-zenhei.ttf&nbsp;
</pre>
<p>
仅此一步即可，没有按上文修改.wine/system.reg ，默认的96dpi 很合适，否则字体会过大。
</p>
<p>
以上几种中文字体，被我的配置文件~/.fonts.conf所引用，你可以使用自己的字体。
</p>
<pre class="cmd">
$ wine --version
</pre>
<pre class="output">
wine-0.9.48&nbsp;
</pre>
<h4>picasa2</h4>
<p>
pciasa2 是Google 的一款非常出色的免费图片管理软件，已经推出了Linux版本，并且包含在Gentoo官方Package列表中，Gentoo用户可以直接emerge安装。
</p>
<p>
其实它不是真正的Linux版本，而是通过wine 来模拟的，但其不依赖于系统的wine， 而是自动单独安装一份经过google team 优化的版本，其也有菜单字体严重变形问题。前面对系统wine 做的配置对picasa2 无效，需要单独配置。
</p>
<pre class="cmd">
＃ cp /home/yourname/.wine/drive_c/windows/fonts/* /home/yourname/.picasa/drive_c/windows/fonts/
</pre>
<p>
注意，上一步需要root 权限，因为 .picasa/drive_c/windows/fonts/ 是一个符号连接。
</p>
<p>
copy 完字体后，picasa2 有以下字体可用： 
</p>
<pre class="cmd">
&nbsp;$ ls -1 .picasa/drive_c/windows/fonts/
</pre>
<pre class="output">
couree.fon
coure.fon
courer.fon
cvgasys.fon
marlett.ttf
<span class="hilite2">msyhbd.ttf
msyh.ttf
simhei.ttf
simsun18030.ttf
simsun.ttf</span>
sserifee.fon
sserife.fon
sserifer.fon
<span class="hilite2">sthei.ttf</span>
svgasys.fon
VeraBd.ttf
VeraBI.ttf
VeraIt.ttf
VeraMoBd.ttf
VeraMoBI.ttf
VeraMoIt.ttf
VeraMono.ttf
VeraSeBd.ttf
VeraSe.ttf
Vera.ttf
vgasyse.fon
vgasys.fon
vgasysr.fon
wineding.ttf
<span class="hilite2">wqy-zenhei.ttf</span>
</pre>
<p>
经过以上配置，菜单中的字体变形问题得到解决，但文件夹管理的文件夹树中，中文显示为黑块，其它的方中文均正常，目前不知道解决方案（据<a href="http://ch-linghu.3322.org/blog/entry/162">令狐虫介绍</a> ，Picasa 2.7 beta for linux 已经解决了此问题）。
</p>
<p>
我的picasa2 版本是2.2-2820-5。
</p>
<h4>emacs</h4>
<p>
TODO&nbsp;
</p>
<p>
（未完）&nbsp;
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux on T43 (12) Java 环境</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_12_java_environment.html" />
    <id>tag:www.aiview.com,2008://1.954</id>

    <published>2008-01-30T18:11:04Z</published>
    <updated>2008-03-12T09:00:49Z</updated>

    <summary><![CDATA[安装IBM JDK 对于jdk有很多种选择，可以通过emerge -s jdk列出，我的环境以IBM产品为主，因此选择安装ibm jdk，其已经包含在Gentoo官方ebuild中，可以直接emerge，但jdk安装文件因为license 问题没有放入Gentoo mirror，需要自己下载，手工放入Portage，再继续emerge。 ibm jdk 目前最新版本是1.5（也称为 5.0)，下面会安装此版本，为了兼容性，jdk 1.4.2 也一并安装，如果愿意，再安装1.3.1 也不是问题，Gentoo 的java 环境控制非常方便。 以上jdk 在IBM Java download 可以找到，页面中包含各个版本，选择32-bit xSeries (Intel compatible)平台，tar/tgz 格式的文件下载。下载时需要登录ibm.com，如果还没有帐户可以免费注册（前段时间IBM 已经将各语言版本的ibm.com 帐户统一）。&nbsp; USE flag USE flag 中加入java 与nsplugin ，没有nsplugin支持，基于浏览器的java applet 无法使用。 jdk 1.5&nbsp; 直接emerge...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jdk" label="jdk" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<h4>安装IBM JDK</h4>
<p>
对于jdk有很多种选择，可以通过emerge -s jdk列出，我的环境以IBM产品为主，因此选择安装ibm jdk，其已经包含在Gentoo官方ebuild中，可以直接emerge，但jdk安装文件因为license 问题没有放入Gentoo mirror，需要自己下载，手工放入Portage，再继续emerge。
</p>
<p>
ibm jdk 目前最新版本是1.5（也称为 5.0)，下面会安装此版本，为了兼容性，jdk 1.4.2 也一并安装，如果愿意，再安装1.3.1 也不是问题，Gentoo 的java 环境控制非常方便。
</p>
<p>
以上jdk 在<a href="http://www.ibm.com/developerworks/java/jdk/linux/download.html">IBM Java download</a> 可以找到，页面中包含各个版本，选择32-bit xSeries (Intel compatible)平台，tar/tgz 格式的文件下载。下载时需要登录ibm.com，如果还没有帐户可以免费注册（前段时间IBM 已经将各语言版本的ibm.com 帐户统一）。&nbsp; 
</p>
<h5>USE flag</h5>
<p>
USE flag 中加入java 与nsplugin ，没有nsplugin支持，基于浏览器的java applet 无法使用。
</p>
<h5>jdk 1.5&nbsp;</h5>
<p>
直接emerge 会出错：
</p>
<pre class="cmd">
# emerge -av =ibm-jdk-bin-1.5.0.5a
</pre>
<p>
或者&nbsp;
</p>
<pre class="cmd">
# emerge -av ibm-jdk-bin
</pre>
<pre class="output">
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild   R<span class="hilite">F</span>  ] dev-java/ibm-jdk-bin-1.5.0.5a  USE=&quot;X alsa nsplugin -doc -examples -javacomm&quot; 61,611 kB 
Total: 1 package (1 reinstall), Size of downloads: 61,611 kB
Fetch Restriction: 1 package (1 unsatisfied)
Would you like to merge these packages? [Yes/No] 
&gt;&gt;&gt; Verifying ebuild Manifests...
&gt;&gt;&gt; Emerging (1 of 1) dev-java/ibm-jdk-bin-1.5.0.5a to /
<span class="hilite">!!! dev-java/ibm-jdk-bin-1.5.0.5a has fetch restriction turned on.</span>
!!! This probably means that this ebuild&#39;s files must be downloaded
!!! manually.  See the comments in the ebuild for more information.
* Due to license restrictions, we cannot redistribute or fetch the distfiles
<span class="hilite"> * Please visit: http://www.ibm.com/developerworks/java/jdk/linux/download.html
* Under J2SE 5.0, download SR5 for your arch:</span>
* (note that we switched to tgz format because it&#39;s now versioned)
<span class="hilite"> * ibm-java2-sdk-5.0-5.1-linux-i386.tgz</span>
* You can use direct link to your arch download page:
* https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=sdk5&amp;S_PKG=intel5sr5a&amp;S_TACT=105AGX05&amp;S_CMP=JDK
* Place the file(s) in: /usr/portage/distfiles
* Then restart emerge: &#39;emerge --resume&#39;
* Note: if SR5 is not available at http://www.ibm.com/developerworks/java/jdk/linux/download.html
* it may have been moved to http://www.ibm.com/developerworks/java/jdk/linux/older_download.html. Lately that page
* isn&#39;t updated, but the files should still available through the
* direct link to arch download page. If it doesn&#39;t work, file a bug.
* Fetch failed for &#39;dev-java/ibm-jdk-bin-1.5.0.5a&#39;
* Messages for package dev-java/ibm-jdk-bin-1.5.0.5a:
* Fetch failed for &#39;dev-java/ibm-jdk-bin-1.5.0.5a&#39;&nbsp;
</pre>
<p>
自己从ibm.com下载，保存为 /usr/portage/distfiles/ibm-java2-sdk-5.0-5.1-linux-i386.tgz，再次执行emerge ，安装成功。
</p>
<h5>jdk 1.4.2</h5>
<p>
与jdk 1.5 相同，同样需要自己下载，保存为 /usr/portage/distfiles/IBMJava2-SDK-1.4.2-9.0.tgz，指定版本执行emerge。
</p>
<pre class="cmd">
# emerge -av =ibm-jdk-bin-1.4.2.9&nbsp;
</pre>
<h4>java 环境切换</h4>
<p>
Gentoo Linux 允许不同版本的Java 环境共存，支持对系统和用户级别java 环境的独立控制，提供方便的机制对其进行管理，实现即时切换。有以下2种工具可以利用：
</p>
<ul>
	<li>java环境配置工具java-config</li>
	<li>系统命令eselsect</li>
</ul>
<p>
通过以下命令，可以实现java环境动态切换，任何已存在的session 无需重新登录或者重新执行profile，新的环境设定会即刻生效。
</p>
<p>
注意：带# 提示符的命令需要在root 权限下执行。 
</p>
<h5>java-config</h5>
<pre class="cmd">
$ java-config -L
</pre>
<pre class="output">
The following VMs are available for generation-2:<br />
1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IBM JDK 1.4.2.9 [ibm-jdk-bin-1.4]<br />
<span class="hilite2">*)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IBM JDK 1.5.0.5a [ibm-jdk-bin-1.5] </span>
</pre>
<pre class="cmd">
$ java-config -s 1
</pre>
<pre class="output">
Now using ibm-jdk-bin-1.4 as your <span class="emphasis">user JVM</span> 
</pre>
<pre class="cmd">
# java-config -S 1
</pre>
<pre class="output">
Now using ibm-jdk-bin-1.4 as your generation-2 <span class="emphasis">system JVM</span> 
</pre>
<h5>eselect</h5>
<p>
eselect 命令也可以做以上工作。 
</p>
<pre class="cmd">
$ eselect java-vm list
</pre>
<pre class="output">
Available Java Virtual Machines:<br />
&nbsp; [1]&nbsp;&nbsp; ibm-jdk-bin-1.4 <br />
&nbsp; [2]&nbsp;&nbsp; ibm-jdk-bin-1.5&nbsp; <span class="hilite2">system-vm user-vm</span>
</pre>
<pre class="cmd">
$ eselect java-vm set user 1 
# eselect java-vm set system 1
</pre>
<h4>延展阅读</h4>
<ul>
	<li><a href="http://www.gentoo.org/doc/en/java.xml">Gentoo Linux Documentation -- Gentoo Java Guide</a></li>
	<li><a href="http://www.gentoo.org/proj/en/java/java-upgrade.xml">Gentoo Linux Documentation -- Gentoo Java Upgrade Guide</a></li>
	<li><a href="http://www.ibm.com/developerworks/java/jdk/linux/download.html">developerWorks : Java&trade; technology : IBM developer kits : Linux : Download information</a></li>
</ul>
（未完）
]]>
        
    </content>
</entry>

</feed>
