<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Thinking more...-Linux 及其相關</title>
<link>http://blog.roodo.com/thinkingmore/archives/cat_82806.html</link>
<description>Just thinking more...&amp;nbsp;訂閱 RSS













  google.load(&quot;jquery&quot;, &quot;1.2&quot;);
  google.setOnLoadCallback( function() {
    _uacct = &quot;UA-97150-7&quot;;
    urchinTracker();
    if( dp!=&#039;undefined&#039; ) {
      $(&quot;pre &gt; br&quot;).each( function() { $(this).replaceWith( &quot;\n&quot; ); } );
      $(&quot;textarea &gt; br&quot;).each( function() { $(this).replaceWith( &quot;\n&quot; ); } );
      dp.SyntaxHighlighter.ClipboardSwf = &#039;http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/clipboard.swf&#039;;
      dp.SyntaxHighlighter.HighlightAll(&#039;code&#039;);
    }
  } );

</description>
<language>zh-tw</language>
<generator>Roodo Blog System</generator>
<copyright>All Rights Reserved</copyright>
<atom:link href="http://blog.roodo.com/thinkingmore/archives/cat_82806.xml" rel="self" type="application/rss+xml" />
<item>
	<title>在 Banshee 1.0 裡使用 BooScript</title>
	<description><![CDATA[
	有兩種方法：執行 Banshee 時，加上 --run-scripts your_boo_scripts.boo 表示要執行指定的 boo script將 boo script 檔案放在 ~/.config/banshee-1/boo-scripts/

如果你會 Boo 的話，基本上就不難幫 Banshee 增加功能。不過難就難在你必須要對 Banshee 的原始碼有一定程度的了解...除了看原始碼以外，也可以看看官方提供的 extension 怎麼寫...

	]]>
	</description>
	<content:encoded><![CDATA[
	有兩種方法：<ol><li>執行 Banshee 時，加上 --run-scripts your_boo_scripts.boo 表示要執行指定的 boo script</li><li>將 boo script 檔案放在 ~/.config/banshee-1/boo-scripts/</li></ol><br />
<br />
如果你會 <a href="http://boo.codehaus.org/">Boo</a> 的話，基本上就不難幫 <a href="http://banshee-project.org/">Banshee</a> 增加功能。不過難就難在你必須要對 <a href="http://banshee-project.org/">Banshee</a> 的原始碼有一定程度的了解...除了看原始碼以外，也可以看看官方提供的 extension 怎麼寫...<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/6293803.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/6293803.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Thu, 03 Jul 2008 14:06:22 +0800</pubDate>
</item>
<item>
	<title>幾個 launchpad 上的 apt repository</title>
	<description><![CDATA[
	要衝 banshee 1.0 版的話，可以試試這個：
deb http://ppa.launchpad.net/banshee-team/ubuntu hardy main multiverse restricted universe

上星期(2008/6/5)已經釋出了 1.0.0 版，跟 0.13 比起來，速度可說是兔子與烏龜，主要原因是 1.0 在資料庫上做了適當的索引與調整。

目前 ubuntu 上的 mono 是 1.2.6，要試最新版，除了下載官方網站的 installer 來安裝與 Mono for Debian(Mono - General - Mono 1.9.1 and MonoDevelop 1.0 Packages for Debian Etch) 之外，只能試這個了：
deb http://ppa.launchpad.net/mono-edge/ubuntu hardy main multiverse restricted universe

http://ppa.launchpad.net 上還蠻多 repository 可以試試看的，有遇到沒打包的軟體，就進去找找，或許已經有人在實驗了。

	]]>
	</description>
	<content:encoded><![CDATA[
	要衝 <a href="http://banshee-project.org">banshee</a> 1.0 版的話，可以試試這個：<br />
deb http://ppa.launchpad.net/banshee-team/ubuntu hardy main multiverse restricted universe<br />
<br />
上星期(2008/6/5)已經釋出了 1.0.0 版，跟 0.13 比起來，速度可說是兔子與烏龜，主要原因是 1.0 在資料庫上做了適當的索引與調整。<br />
<br />
目前 ubuntu 上的 <a href="http://www.mono-project.com">mono</a> 是 1.2.6，要試最新版，除了下載官方網站的 installer 來安裝與 <a href="http://pkg-mono.alioth.debian.org/">Mono for Debian</a>(<a href="http://go-mono.com/forums/#nabble-td16910740%7Ca17163057">Mono - General - Mono 1.9.1 and MonoDevelop 1.0 Packages for Debian Etch</a>) 之外，只能試這個了：<br />
deb http://ppa.launchpad.net/mono-edge/ubuntu hardy main multiverse restricted universe<br />
<br />
<a href="http://ppa.launchpad.net">http://ppa.launchpad.net</a> 上還蠻多 repository 可以試試看的，有遇到沒打包的軟體，就進去找找，或許已經有人在實驗了。<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/6152751.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/6152751.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Mon, 09 Jun 2008 16:33:57 +0800</pubDate>
</item>
<item>
	<title>LXPanel Plugin in Managed code?</title>
	<description><![CDATA[
	看到 Fred 寫的Fred's blog: 讓我們輕鬆自在設計自己的 LXPanel Plugin，心想，應該也可以用 mono c#、boo 等來寫吧～
於是想到gimp-sharp，這個 library 讓你可以使用 c#、vb.net、boo 寫給 gimp 使用的 plugin，下載來看以後，真是令人驚訝～
原來 gimp 是使用外部執行的方式去呼叫這些 plugin，而這些 plugin 以收取參數與呼叫 gimp library 的方式來與 gimp 主體進行溝通。
那麼這樣，似乎就行不通了。一般 C/C++ plugin 的處理方式，都是以 dl_xxxx 系列函數來開啟 plugin(.so) 進行操作，對於 managed code 來說，assembly(.dll)並沒有開放這些介面。
從 C/C++ 呼叫 Managed code 是可行的，目前只適用於 Mono，請參閱這裡：Embedding Mono
這裡有幾個範例，應該是夠用了。
看起來如果要作 Plugin 給 lxpanel 用的話，還是得用 C 寫一個 Plugin，然後這個 Plugin 負責載入 mono 的 assembly，再把必要的資訊傳進去給 managed code。
有可能作成 chain-loader 的形式，由這個 Plugin 再去把其他用 Managed code 做的 Plugin 載入嗎??
恐怕還是得再看 lxpanel 內部如何用 plugin 才能決定。

	]]>
	</description>
	<content:encoded><![CDATA[
	看到 Fred 寫的<a href="http://fred-zone.blogspot.com/2008/05/lxpanel-plugin.html">Fred's blog: 讓我們輕鬆自在設計自己的 LXPanel Plugin</a>，心想，應該也可以用 mono c#、boo 等來寫吧～<br />
於是想到<a href="http://gimp-sharp.sourceforge.net/">gimp-sharp</a>，這個 library 讓你可以使用 c#、vb.net、boo 寫給 gimp 使用的 plugin，下載來看以後，真是令人驚訝～<br />
原來 <a href="http://www.gimp.org">gimp</a> 是使用外部執行的方式去呼叫這些 plugin，而這些 plugin 以收取參數與呼叫 gimp library 的方式來與 gimp 主體進行溝通。<br />
那麼這樣，似乎就行不通了。一般 C/C++ plugin 的處理方式，都是以 dl_xxxx 系列函數來開啟 plugin(.so) 進行操作，對於 managed code 來說，assembly(.dll)並沒有開放這些介面。<br />
從 C/C++ 呼叫 Managed code 是可行的，目前只適用於 Mono，請參閱這裡：<a href="http://www.mono-project.com/Embedding_Mono">Embedding Mono</a><br />
<a href="http://anonsvn.mono-project.com/viewcvs/trunk/mono/samples/embed/">這裡</a>有幾個範例，應該是夠用了。<br />
看起來如果要作 Plugin 給 lxpanel 用的話，還是得用 C 寫一個 Plugin，然後這個 Plugin 負責載入 mono 的 assembly，再把必要的資訊傳進去給 managed code。<br />
有可能作成 chain-loader 的形式，由這個 Plugin 再去把其他用 Managed code 做的 Plugin 載入嗎??<br />
恐怕還是得再看 lxpanel 內部如何用 plugin 才能決定。<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/6099535.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/6099535.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Wed, 28 May 2008 09:40:22 +0800</pubDate>
</item>
<item>
	<title>LXDE in Ubuntu</title>
	<description><![CDATA[
	如果你想在 Ubuntu 裡試試 LXDE 的話，加入這個軟體來源：deb http://ppa.launchpad.net/lxde/ubuntu/ hardy main universe multiverse restricted，然後安裝 lxde、lxsession 即可 (sudo apt-get install lxde lxsession)。接下來登出，將作業階段選為 LXDE，再登入即可。

LXDE 的確速度蠻快的，不過，不能瀏覽網路上的芳鄰，這實在是讓我無法下定決心跳槽啊...

補充：啊，LXDE 的下載網頁也有提到一個來源：deb http://people.linux.org.tw/~pcman/ubuntu/ ./ 

	]]>
	</description>
	<content:encoded><![CDATA[
	如果你想在 <a href="http://www.ubuntulinux.com">Ubuntu</a> 裡試試 <a href="http://lxde.sourceforge.net">LXDE</a> 的話，加入這個軟體來源：<pre>deb http://ppa.launchpad.net/lxde/ubuntu/ hardy main universe multiverse restricted</pre>，然後安裝 lxde、lxsession 即可 (sudo apt-get install lxde lxsession)。接下來登出，將作業階段選為 <a href="http://lxde.sourceforge.net">LXDE</a>，再登入即可。<br />
<br />
<a href="http://lxde.sourceforge.net">LXDE</a> 的確速度蠻快的，不過，不能瀏覽網路上的芳鄰，這實在是讓我無法下定決心跳槽啊...<br />
<br />
補充：啊，<a href="http://lxde.sourceforge.net/download.html">LXDE 的下載網頁</a>也有提到一個來源：<pre>deb http://people.linux.org.tw/~pcman/ubuntu/ ./ </pre><br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/6096979.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/6096979.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Tue, 27 May 2008 17:40:41 +0800</pubDate>
</item>
<item>
	<title>gnome-settings-daemon 無法啟動</title>
	<description><![CDATA[
	由於很勇敢地衝了Ubuntu Hardy 的緣故，常常會有很多驚喜～
這幾天是遇到 gnome-settings-daemon 無法啟動的問題，開啟終端機試著以手動方式啟動會出現如下訊息：The program 'gnome-settings-daemon' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadRequest (invalid request code or no such operation)'.
  (Details: serial 107 error_code 1 request_code 151 minor_code 6)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)


爬文以後，發現已經有人回報，從 2.21.9 以後就是如此，但是都還沒有解。
依照訊息的建議，改以如下指令再試試：gnome-settings-daemon --debug --no-daemon --sync

這樣會丟出比較多的錯誤訊息，這邊只列出關鍵部份：** (gnome-settings-daemon:20265): DEBUG: Registering GsdXrandrPlugin
** (gnome-settings-daemon:20265): DEBUG: Creating object of type GsdXrandrPlugin
** (gnome-settings-daemon:20265): DEBUG: GsdXrandrPlugin initializing
** (gnome-settings-daemon:20265): DEBUG: Activating xrandr plugin
** (gnome-settings-daemon:20265): DEBUG: Starting xrandr manager
The program 'gnome-settings-daemon' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadRequest (invalid request code or no such operation)'.
  (Details: serial 107 error_code 1 request_code 151 minor_code 6)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)


喔～這樣看來應該是是 xrandr 的關係～
xrandr 是用來動態切換螢幕用的，舉例來說，接投影機或是額外螢幕時，就會用到～
不過，我現在用不到，那麼，要怎麼停用這個 plugin 呢?
這就得用 gconf-editor 了，使用 gconf-editor 去把 /apps/gnome_settings_daemon/plugins/xrandr/active 機碼改為 0，然後重新啟動 XServer 即可。

	]]>
	</description>
	<content:encoded><![CDATA[
	由於很勇敢地衝了<a href="http://www.ubuntulinux.com">Ubuntu</a> Hardy 的緣故，常常會有很多驚喜～<br />
這幾天是遇到 gnome-settings-daemon 無法啟動的問題，開啟終端機試著以手動方式啟動會出現如下訊息：<pre>The program 'gnome-settings-daemon' received an X Window System error.<br />
This probably reflects a bug in the program.<br />
The error was 'BadRequest (invalid request code or no such operation)'.<br />
  (Details: serial 107 error_code 1 request_code 151 minor_code 6)<br />
  (Note to programmers: normally, X errors are reported asynchronously;<br />
   that is, you will receive the error a while after causing it.<br />
   To debug your program, run it with the --sync command line<br />
   option to change this behavior. You can then get a meaningful<br />
   backtrace from your debugger if you break on the gdk_x_error() function.)<br />
</pre><br />
<br />
爬文以後，發現已經有人回報，從 2.21.9 以後就是如此，但是都還沒有解。<br />
依照訊息的建議，改以如下指令再試試：<pre>gnome-settings-daemon --debug --no-daemon --sync</pre><br />
<br />
這樣會丟出比較多的錯誤訊息，這邊只列出關鍵部份：<pre>** (gnome-settings-daemon:20265): DEBUG: Registering GsdXrandrPlugin<br />
** (gnome-settings-daemon:20265): DEBUG: Creating object of type GsdXrandrPlugin<br />
** (gnome-settings-daemon:20265): DEBUG: GsdXrandrPlugin initializing<br />
** (gnome-settings-daemon:20265): DEBUG: Activating xrandr plugin<br />
** (gnome-settings-daemon:20265): DEBUG: Starting xrandr manager<br />
The program 'gnome-settings-daemon' received an X Window System error.<br />
This probably reflects a bug in the program.<br />
The error was 'BadRequest (invalid request code or no such operation)'.<br />
  (Details: serial 107 error_code 1 request_code 151 minor_code 6)<br />
  (Note to programmers: normally, X errors are reported asynchronously;<br />
   that is, you will receive the error a while after causing it.<br />
   To debug your program, run it with the --sync command line<br />
   option to change this behavior. You can then get a meaningful<br />
   backtrace from your debugger if you break on the gdk_x_error() function.)<br />
</pre><br />
<br />
喔～這樣看來應該是是 <a href="http://en.wikipedia.org/wiki/XRandR">xrandr</a> 的關係～<br />
<a href="http://en.wikipedia.org/wiki/XRandR">xrandr</a> 是用來動態切換螢幕用的，舉例來說，接投影機或是額外螢幕時，就會用到～<br />
不過，我現在用不到，那麼，要怎麼停用這個 plugin 呢?<br />
這就得用 gconf-editor 了，使用 gconf-editor 去把 /apps/gnome_settings_daemon/plugins/xrandr/active 機碼改為 0，然後重新啟動 XServer 即可。<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/5713023.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/5713023.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Mon, 17 Mar 2008 17:33:28 +0800</pubDate>
</item>
<item>
	<title>如何在 CentOS 安裝 Ruby on Rails</title>
	<description><![CDATA[
	如果你照著這篇：在 CentOS 安裝 Ruby on Rails，卻怎麼樣也裝不起來的話，我想你碰到跟我一樣的問題了。錯誤訊息可能會是這樣子的：
ERROR:  While executing gem ... (Gem::GemNotFoundException)
    Could not find rails (> 0) in any repository


研究了一下，發現應該是因為 RubyWorks 所提供的Source 沒有 rails gem 的關係，這也跟 RubyWorks 定位為 Production server 有關係。

總之如果你想把 CentOS 當作開發環境的話，不妨用$sudo gem sources -a http://gems.rubyforge.org把官方的 gem source 加進去，然後再輸入$sudo gem install rails -y 即可。

	]]>
	</description>
	<content:encoded><![CDATA[
	如果你照著這篇：<a href="http://lightyror.thegiive.net/2007/06/centos-ruby-on-rails.html" title="Lighty RoR: 在 CentOS 安裝 Ruby on Rails">在 CentOS 安裝 Ruby on Rails</a>，卻怎麼樣也裝不起來的話，我想你碰到跟我一樣的問題了。錯誤訊息可能會是這樣子的：<br />
<blockquote>ERROR:  While executing gem ... (Gem::GemNotFoundException)<br />
    Could not find rails (> 0) in any repository<br />
</blockquote><br />
<br />
研究了一下，發現應該是因為 <a href="http://rubyworks.rubyforge.org">RubyWorks</a> 所提供的<a href="http://rubyworks.rubyforge.org/redhat/GEMS/i386">Source</a> 沒有 rails gem 的關係，這也跟 <a href="http://rubyworks.rubyforge.org">RubyWorks</a> 定位為 Production server 有關係。<br />
<br />
總之如果你想把 CentOS 當作開發環境的話，不妨用<pre>$sudo gem sources -a http://gems.rubyforge.org</pre>把官方的 gem source 加進去，然後再輸入<pre>$sudo gem install rails -y</pre> 即可。<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/4736895.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/4736895.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Fri, 28 Dec 2007 11:03:32 +0800</pubDate>
</item>
<item>
	<title>Show your bootchart</title>
	<description><![CDATA[
	之前安裝 bootchart 以後，就一直沒管他，沒有認真去研究該怎麼去把圖弄出來。
前幾天把圖弄出來了，這裡把步驟紀錄一下，我的環境是 Ubuntu 7.10(Gusty)：

安裝 bootchart，安裝完成以後，得重開機，讓 bootchart 能獲取必要的資訊。$sudo apt-get -y install bootchart重開機之後，bootchart 會把必要的資訊紀錄在 /var/log/bootchart.tgz。由於 bootchart 所提供的工具是用 Java 程式(/usr/share/bootchart/bootchart.jar)寫的，所以你還得確定有安裝 Java 或是 IKVM，我這邊是使用 ikvm。ikvm 是一個可以利用Mono(Linux 下的 .Net 執行環境)來執行 Java 程式的工具，一般來說，如果你有使用 Tomboy 或是 Beagle 的話，Mono就已經安裝了。$sudo apt-get -y install ikvm執行 bootchart.jar，這會解析 /var/log/bootchart.tgz，然後產生 bootchart.svgz 在當前目錄下。$ikvm -jar /usr/share/bootchart/bootchart.jar有了 bootchart.svgz，該怎麼去看這個圖呢？這邊提供兩種方法：利用 Firefox：把 bootchart.svgz 以 zcat 解開，再用 Firefox 打開即可。$zcat bootchart.svgz &gt; bootchart.svg用 Inkscape 開啟檔案。$sudo apt-get -y install inkscape

	]]>
	</description>
	<content:encoded><![CDATA[
	之前安裝 bootchart 以後，就一直沒管他，沒有認真去研究該怎麼去把圖弄出來。<br />
前幾天把圖弄出來了，這裡把步驟紀錄一下，我的環境是 Ubuntu 7.10(Gusty)：<br />
<br />
<ol><li>安裝 bootchart，安裝完成以後，得重開機，讓 bootchart 能獲取必要的資訊。<pre>$sudo apt-get -y install bootchart</pre></li><li>重開機之後，bootchart 會把必要的資訊紀錄在 /var/log/bootchart.tgz。由於 bootchart 所提供的工具是用 <a href="http://java.sun.com">Java</a> 程式(/usr/share/bootchart/bootchart.jar)寫的，所以你還得確定有安裝 <a href="http://java.sun.com">Java</a> 或是 <a href="http://www.ikvm.net/">IKVM</a>，我這邊是使用 ikvm。ikvm 是一個可以利用<a href="http://www.go-mono.com">Mono</a>(Linux 下的 .Net 執行環境)來執行 <a href="http://java.sun.com">Java</a> 程式的工具，一般來說，如果你有使用 Tomboy 或是 Beagle 的話，<a href="http://www.go-mono.com">Mono</a>就已經安裝了。<pre>$sudo apt-get -y install ikvm</pre></li><li>執行 bootchart.jar，這會解析 /var/log/bootchart.tgz，然後產生 bootchart.svgz 在當前目錄下。<pre>$ikvm -jar /usr/share/bootchart/bootchart.jar</pre></li><li>有了 bootchart.svgz，該怎麼去看這個圖呢？這邊提供兩種方法：<ul><li>利用 <a href="http://www.mozilla.com/en-US/firefox/">Firefox</a>：把 bootchart.svgz 以 zcat 解開，再用 <a href="http://www.mozilla.com/en-US/firefox/">Firefox</a> 打開即可。<pre>$zcat bootchart.svgz &gt; bootchart.svg</pre></li><li>用 Inkscape 開啟檔案。<pre>$sudo apt-get -y install inkscape</pre></li></ul></li></ol><br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/4510863.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/4510863.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Tue, 20 Nov 2007 12:25:48 +0800</pubDate>
</item>
<item>
	<title>How to purge at once in Debian/Ubuntu?</title>
	<description><![CDATA[
	經常性地安裝、移除套件，可是卻發現有些套件還留了一些設定沒刪掉？
試試這個指令，一次搞定：
sudo aptitude purge `dpkg -l | grep ^r | awk '{print $2}'`

	]]>
	</description>
	<content:encoded><![CDATA[
	經常性地安裝、移除套件，可是卻發現有些套件還留了一些設定沒刪掉？<br />
試試這個指令，一次搞定：<br />
<pre>sudo aptitude purge `dpkg -l | grep ^r | awk '{print $2}'`</pre><br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/4370065.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/4370065.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Fri, 26 Oct 2007 17:08:46 +0800</pubDate>
</item>
<item>
	<title>Ubuntu Gusty 播放影片不順 (如何關掉 Xgl)</title>
	<description><![CDATA[
	這幾天在更新 Gusty 以後，發現 SMPlayer 播放影片變得不順了。
傷腦筋，這下子影片不能看了，早知道就不要重開機。

不過問題還是要解決，我以為是 SMPlayer 的關係，但是在更新 SMPlayer 以後，仍然不行。
仔細再分析一下，我想應該是 xserver 設定的問題，所以就看了 xorg.conf
看來是沒什麼問題，於是加上 DRI 試試看，可是仍然沒用，甚至 xserver 還會無法啟動。
Google大神也沒什麼線索。

用 ps -ef 看了一下，發現 Xgl 有在執行，可是，這應該是在有支援 3D 加速繪圖晶片的環境下用的啊。我的 Intel i915G 似乎不需要這個，決定把Xgl關掉試試看。
參考 /etc/X11/Xsession.d/98xserver-xgl_start-server 以後，發現只要這樣作即可。
$mkdir ~/.config/xserver-xgl
$touch ~/.config/xserver-xgl/disable

果然重新啟動 xserver 以後，天下太平。
所以如果你的顯示晶片不夠力的話，不妨把 Xgl 關掉試試吧～

	]]>
	</description>
	<content:encoded><![CDATA[
	這幾天在更新 Gusty 以後，發現 <a href="http://smplayer.sourceforge.net">SMPlayer</a> 播放影片變得不順了。<br />
傷腦筋，這下子影片不能看了，早知道就不要重開機。<br />
<br />
不過問題還是要解決，我以為是 <a href="http://smplayer.sourceforge.net">SMPlayer</a> 的關係，但是在更新 <a href="http://smplayer.sourceforge.net">SMPlayer</a> 以後，仍然不行。<br />
仔細再分析一下，我想應該是 xserver 設定的問題，所以就看了 xorg.conf<br />
看來是沒什麼問題，於是加上 DRI 試試看，可是仍然沒用，甚至 xserver 還會無法啟動。<br />
<a href="http://www.google.com">Google</a>大神也沒什麼線索。<br />
<br />
用 ps -ef 看了一下，發現 <a href="http://zh.wikipedia.org/wiki/Xgl">Xgl</a> 有在執行，可是，這應該是在有支援 3D 加速繪圖晶片的環境下用的啊。我的 Intel i915G 似乎不需要這個，決定把<a href="http://zh.wikipedia.org/wiki/Xgl">Xgl</a>關掉試試看。<br />
參考 /etc/X11/Xsession.d/98xserver-xgl_start-server 以後，發現只要這樣作即可。<br />
<pre>$mkdir ~/.config/xserver-xgl<br />
$touch ~/.config/xserver-xgl/disable</pre><br />
<br />
果然重新啟動 xserver 以後，天下太平。<br />
所以如果你的顯示晶片不夠力的話，不妨把 <a href="http://zh.wikipedia.org/wiki/Xgl">Xgl</a> 關掉試試吧～<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/4126911.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/4126911.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Wed, 12 Sep 2007 12:31:13 +0800</pubDate>
</item>
<item>
	<title>如何在 CentOS 安裝 mod_proxy_html</title>
	<description><![CDATA[
	先到官方網站下載源碼，或是利用 subversion 直接 checkout 最新的 code。這裡直接 checkout 最新的 3.0：#svn co http://apache.webthing.com/svn/apache/filters/proxy_html/ mod_proxy_html安裝必要的開發套件：#yum install httpd-devel libxml2-devel進行安裝：#apxs -I /usr/include/libxml2 -c -i mod_proxy_html.c在 httpd.conf 裡面加上 LoadFile /usr/lib/libxml2.soLoadModule proxy_html_module modules/mod_proxy_html.so重新啟動 httpd 之後，就大功告成。(當然還是要參考官方文件，自己加上必要的設定啦。)

參考資料：Tses Weblog: ntop και mod_proxy_html στο CentOS

備註：曾幾何時，我居然也看懂希臘文了～ =_=&quot;

	]]>
	</description>
	<content:encoded><![CDATA[
	<ol><li>先到<a href="http://apache.webthing.com/mod_proxy_html/">官方網站</a>下載源碼，或是利用 <a href="http://subversion.tigris.org/">subversion</a> 直接 checkout 最新的 code。這裡直接 checkout 最新的 3.0：<pre>#svn co http://apache.webthing.com/svn/apache/filters/proxy_html/ mod_proxy_html</pre></li><li>安裝必要的開發套件：<pre>#yum install httpd-devel libxml2-devel</pre></li><li>進行安裝：<pre>#apxs -I /usr/include/libxml2 -c -i mod_proxy_html.c</pre></li><li>在 httpd.conf 裡面加上 <pre>LoadFile /usr/lib/libxml2.so<br/>LoadModule proxy_html_module modules/mod_proxy_html.so</pre></li><li>重新啟動 httpd 之後，就大功告成。(當然還是要參考<a href="http://apache.webthing.com/mod_proxy_html/config.html">官方文件</a>，自己加上必要的設定啦。)</li></ol><br />
<br />
參考資料：<ul><li><a href="http://www.tses.gr/weblog/2007/03/ntop_mod_proxy_html_centos.html">Tses Weblog: ntop και mod_proxy_html στο CentOS</a></li></ul><br />
<br />
備註：曾幾何時，我居然也看懂希臘文了～ =_=&quot;<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/3570269.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/3570269.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Tue, 03 Jul 2007 11:22:45 +0800</pubDate>
</item>
<item>
	<title>Wubuntu</title>
	<description><![CDATA[
	WebOS 因為 Javascript 越來越 powerful 的緣故，功能也越來越強大。
這一兩年也出了不少有名的專案，今天則是在Digg看到這個Wubuntu，畫面幾乎跟 Ubuntu 一樣啊～
只是目前裡面沒有什麼應用程式，也只有 FireFox 可用而已～
以後慢慢增加更多應用程式之後，或許就可以直接拿來當作 Ubuntu 的展示程式，不用 LiveCD 也可以馬上體驗 Ubuntu 的桌面。

	]]>
	</description>
	<content:encoded><![CDATA[
	WebOS 因為 Javascript 越來越 powerful 的緣故，功能也越來越強大。<br />
這一兩年也出了<a href="http://en.wikipedia.org/wiki/Web_operating_system#List_of_Web_operating_systems" title="List of Web operating systems">不少有名的專案</a>，今天則是在<a href="http://www.digg.com">Digg</a>看到這個<a href="http://wubuntu.weejewel.net/" title="Wubuntu ~ Web Ubuntu homepage">Wubuntu</a>，畫面幾乎跟 <a href="http://www.ubuntu.com/">Ubuntu</a> 一樣啊～<br />
只是目前裡面沒有什麼應用程式，也只有 <a href="http://getfirefox.com">FireFox</a> 可用而已～<br />
以後慢慢增加更多應用程式之後，或許就可以直接拿來當作 <a href="http://www.ubuntu.com/">Ubuntu</a> 的展示程式，不用 LiveCD 也可以馬上體驗 <a href="http://www.ubuntu.com/">Ubuntu</a> 的桌面。<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/3450957.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/3450957.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Mon, 11 Jun 2007 17:17:28 +0800</pubDate>
</item>
<item>
	<title>OpenSuSE 的套件管理</title>
	<description><![CDATA[
	最近同事玩起 Linux，試完了許多套之後，他選擇了 OpenSUSE，介面看來不錯。
但我實在是對 OpenSUSE 的更新與介面不熟，所以就利用 VMware 建了個 Virtual Machine，裝上 OpenSUSE 試試看。

安裝並不順利，最後 Virtual machine 的 type 是改成了 Other Linux，而非預設提供的 SuSE Linux。
完成安裝以後，也開不起來，boot option 參考 Fail safe，修改為 apm=off acpi=off noresume nosmp noapic maxcpus=0 edd=off 才順利開機成功。

OpenSUSE 使用 Yast2 在管理套件，從網路上諸多文章看來，可以改用 smart / yum / zypper ...等等。
但我最後還是用 Yast2。

官方提供了Additional YaST Package Repositories，從這兒你可以找到許多其他的來源。
黑眼珠這兒也提供了他自己維護的來源：黑眼珠的套件庫-http://software.opensuse.org/download/home:/swyear/openSUSE_10.2/
那麼該怎麼加入這些來源呢？答案是用 installation_sources 指令，舉例來說，如果要加入黑眼珠的套件庫的話：
#installation_sources -a http://software.opensuse.org/download/home:/swyear/openSUSE_10.2/
這樣就行了。

最後，就利用 YaST 來進行線上更新即可。
如果你跟我一樣還是偏愛指令列的話，改用 zypper 吧～
#zypper search package_name
#zypper install package_name
#zypper update
以 zypper 替代 installation_sources 的話，可用
#zypper service-add repository_url
更多的用法可以看
#zypper --help

參考資料：黑眼珠 » 套件庫黑眼珠 » Blog Archive » 安裝軟體(3)RPM的整合工具Additional YaST Package Repositories - openSUSESuSE Linux 論壇


	]]>
	</description>
	<content:encoded><![CDATA[
	最近同事玩起 Linux，試完了許多套之後，他選擇了 <a href="http://en.opensuse.org/Welcome_to_openSUSE.org">OpenSUSE</a>，介面看來不錯。<br />
但我實在是對 <a href="http://en.opensuse.org/Welcome_to_openSUSE.org">OpenSUSE</a> 的更新與介面不熟，所以就利用 VMware 建了個 Virtual Machine，裝上 <a href="http://en.opensuse.org/Welcome_to_openSUSE.org">OpenSUSE</a> 試試看。<br />
<br />
安裝並不順利，最後 Virtual machine 的 type 是改成了 Other Linux，而非預設提供的 SuSE Linux。<br />
完成安裝以後，也開不起來，boot option 參考 Fail safe，修改為 apm=off acpi=off noresume nosmp noapic maxcpus=0 edd=off 才順利開機成功。<br />
<br />
<a href="http://en.opensuse.org/Welcome_to_openSUSE.org">OpenSUSE</a> 使用 Yast2 在管理套件，從網路上諸多文章看來，可以改用 smart / yum / zypper ...等等。<br />
但我最後還是用 Yast2。<br />
<br />
官方提供了<a href="http://en.opensuse.org/Additional_YaST_Package_Repositories">Additional YaST Package Repositories</a>，從這兒你可以找到許多其他的來源。<br />
<a href="http://swyear.no-ip.org/wp/">黑眼珠</a>這兒也提供了他自己維護的來源：<a href="http://swyear.no-ip.org/wp/?page_id=450">黑眼珠的套件庫</a>-<a href="http://software.opensuse.org/download/home:/swyear/openSUSE_10.2/">http://software.opensuse.org/download/home:/swyear/openSUSE_10.2/</a><br />
那麼該怎麼加入這些來源呢？答案是用 installation_sources 指令，舉例來說，如果要加入<a href="http://swyear.no-ip.org/wp/?page_id=450">黑眼珠的套件庫</a>的話：<br />
#installation_sources -a http://software.opensuse.org/download/home:/swyear/openSUSE_10.2/<br />
這樣就行了。<br />
<br />
最後，就利用 YaST 來進行線上更新即可。<br />
如果你跟我一樣還是偏愛指令列的話，改用 zypper 吧～<br />
#zypper search package_name<br />
#zypper install package_name<br />
#zypper update<br />
以 zypper 替代 installation_sources 的話，可用<br />
#zypper service-add repository_url<br />
更多的用法可以看<br />
#zypper --help<br />
<br />
參考資料：<ul><li><a href="http://swyear.no-ip.org/wp/?page_id=450">黑眼珠 » 套件庫</a></li><li><a href="http://swyear.no-ip.org/wp/?p=513">黑眼珠 » Blog Archive » 安裝軟體(3)RPM的整合工具</a></li><li><a href="http://en.opensuse.org/Additional_YaST_Package_Repositories">Additional YaST Package Repositories - openSUSE</a></li><a href="http://www.suse.idv.tw/index.php?sid=0c446cecac0dfa0377cf19bfbe2934af">SuSE Linux 論壇</a></ul><br />
<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/2989535.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/2989535.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Wed, 11 Apr 2007 14:48:07 +0800</pubDate>
</item>
<item>
	<title>在 Ubuntu Linux 下製作 DVD</title>
	<description><![CDATA[
	首要之務，當然是先作功課，運氣很好，在Digg看到了不錯的文章：Making DVD in Linux。
文章裏面主要是介紹DVD styler這套軟體。

看到以後，當然是馬上來試試囉。很遺憾，在我的Ubuntu (Edgy)上裝不起來，官方也沒有對Ubuntu(Edgy)正式提供支援，他只支援到 Dapper 而已。

怎麼辦？就此打退堂鼓？

再次請Google大神出來幫忙，這時才發現，原來Ubuntu(Edgy)裏面已經有打包類似的軟體了，那就是DeVeDe。

安裝方法：sudo apt-get install devede vcdimager mencoder mplayer w32codecs dvdauthor gnomebaker

使用方法：點取選單：應用程式 &gt; 影音 ，執行 DeVeDe。選取 Video DVD右邊清單下有"新增"，會跳出另外一個對話盒，你可以從這邊去選取你要加入的影片，設置影片尺寸、縮放、輸出訊號(NTSC、PAL)等等。加入以後，畫面下方會顯示你使用了多少空間。不過據我的經驗，整個放滿以後製作出來的 DVD ISO 檔才約 2.1G。點取右下角的"下一頁"之後，DeVeDe就會開始進行轉檔與製作 DVD ISO 。最後再執行GnomeBaker來燒錄產生出來的 ISO檔案即可。

根據今天早上燒製出來的結果，確實可以拿到 DVD Player 上播放。實驗結果成功！

畫面：


	]]>
	</description>
	<content:encoded><![CDATA[
	首要之務，當然是先作功課，運氣很好，在<a href="http://www.digg.com" title="digg">Digg</a>看到了<a href="http://blogcritics.org/archives/2007/01/06/122323.php" title="Making DVD in Linux">不錯的文章：Making DVD in Linux</a>。<br />
文章裏面主要是介紹<a href="http://www.dvdstyler.de/" title="DVD styler">DVD styler</a>這套軟體。<br />
<br />
看到以後，當然是馬上來試試囉。很遺憾，在我的<a href="http://www.ubuntulinux.com" title="Ubuntu Linux">Ubuntu (Edgy)</a>上裝不起來，官方也沒有對<a href="http://www.ubuntulinux.com" title="Ubuntu Linux">Ubuntu(Edgy)</a>正式提供支援，他只支援到 Dapper 而已。<br />
<br />
怎麼辦？就此打退堂鼓？<br />
<br />
再次請<a href="http://www.google.com" title="Google">Google</a>大神出來幫忙，這時才發現，原來<a href="http://www.ubuntulinux.com" title="Ubuntu Linux">Ubuntu(Edgy)</a>裏面已經有打包類似的軟體了，那就是<a href="http://www.rastersoft.com/programas/devede.html" title="DeVeDe">DeVeDe</a>。<br />
<br />
安裝方法：<blockquote>sudo apt-get install devede vcdimager mencoder mplayer w32codecs dvdauthor gnomebaker</blockquote><br />
<br />
使用方法：<ol><li>點取選單：應用程式 &gt; 影音 ，執行 DeVeDe。</li><li>選取 Video DVD</li><li>右邊清單下有"新增"，會跳出另外一個對話盒，你可以從這邊去選取你要加入的影片，設置影片尺寸、縮放、輸出訊號(NTSC、PAL)等等。</li><li>加入以後，畫面下方會顯示你使用了多少空間。不過據我的經驗，整個放滿以後製作出來的 DVD ISO 檔才約 2.1G。點取右下角的"下一頁"之後，<a href="http://www.rastersoft.com/programas/devede.html" title="DeVeDe">DeVeDe</a>就會開始進行轉檔與製作 DVD ISO 。</li><li>最後再執行<a href="http://gnomebaker.sourceforge.net/" title="GnomeBaker">GnomeBaker</a>來燒錄產生出來的 ISO檔案即可。</li></ol><br />
<br />
根據今天早上燒製出來的結果，確實可以拿到 DVD Player 上播放。實驗結果成功！<br />
<br />
畫面：<br />
<a href="http://www.flickr.com/photos/elleryq/354344589/" title="Screenshot-DeVeDe (by elleryq)"><img src="http://static.flickr.com/132/354344589_e07f22123a.jpg" title="Screenshot-DeVeDe (by elleryq)" alt="Screenshot-DeVeDe (by elleryq)" width="500" height="344" /></a><a href="http://www.flickr.com/photos/elleryq/354344594/" title="Screenshot-DeVeDe-File properties (by elleryq)"><img src="http://static.flickr.com/129/354344594_94db1c5914.jpg" title="Screenshot-DeVeDe-File properties (by elleryq)" alt="Screenshot-DeVeDe-File properties (by elleryq)" width="408" height="500" /></a><br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/2639580.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/2639580.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Fri, 12 Jan 2007 09:20:28 +0800</pubDate>
</item>
<item>
	<title>How to install Kyocera Mita KM-3035 in your Ubuntu Linux</title>
	<description><![CDATA[
	公司用的印表機是Kyocera Mita KM-3035的四合一事務機，花了一點時間找到方法，讓它可以在 Linux 下使用。

請找到並下載 Kyocera_Mita_KM-3035_en.ppd. (用 Google 找！)執行系統 &gt; 管理 &gt; 列印選擇 "新增印表機"，選取"網路印表機"，然後再選取 HP JetDirect，填入 IP 位址，進入下一步選擇"安裝驅動程式"，然後選到剛剛步驟一所下載的Kyocera_Mita_KM-3035_en.ppd，下一步指定名稱、說明以後，選擇"套用"即可

接下來的操作其實很像 Windows，你可以用滑鼠右鍵選擇印表機，再選"屬性"去看印表機的各項設定，也可以列印測試頁。
如果覺得怪怪的，可以在終端機下執行 /etc/init.d/cupsys restart，讓 cups 重新載入設定。

我想其他類似 HP 的印表機應該也通用才對。

	]]>
	</description>
	<content:encoded><![CDATA[
	公司用的印表機是Kyocera Mita KM-3035的四合一事務機，花了一點時間找到方法，讓它可以在 Linux 下使用。<br />
<br />
<ol><li>請找到並下載 Kyocera_Mita_KM-3035_en.ppd. (<a href="http://www.google.com/search?q=Kyocera_Mita_KM-3035_en.ppd&ie=utf-8&oe=utf-8">用 Google 找！</a>)</li><li>執行<b>系統 &gt; 管理 &gt; 列印</b></li><li>選擇 "新增印表機"，選取"網路印表機"，然後再選取 HP JetDirect，填入 IP 位址，進入下一步</li><li>選擇"安裝驅動程式"，然後選到剛剛步驟一所下載的Kyocera_Mita_KM-3035_en.ppd，下一步</li><li>指定名稱、說明以後，選擇"套用"即可</li></ol><br />
<br />
接下來的操作其實很像 Windows，你可以用滑鼠右鍵選擇印表機，再選"屬性"去看印表機的各項設定，也可以列印測試頁。<br />
如果覺得怪怪的，可以在終端機下執行 /etc/init.d/cupsys restart，讓 cups 重新載入設定。<br />
<br />
我想其他類似 HP 的印表機應該也通用才對。<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/2616927.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/2616927.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Wed, 03 Jan 2007 10:32:44 +0800</pubDate>
</item>
<item>
	<title>如何在Ubuntu Edgy上安裝Google toolbar for Firefox</title>
	<description><![CDATA[
	前幾天剛裝好 Ubuntu，想把 FireFox 的一些 Addon 都裝起來，可是卻發現 Google toolbar for Firefox 裝不起來，老是告訴我版本不合。

我："Google 大神啊～請告訴我為什麼？"
Google 大神啊："你既有求於我，我必賞賜於你～這就是你要的解答～How to install Google Toolbar for Firefox"

是的，國外有人將原來的 Addon 解開以後，修改了一下組態檔，重新包裝起來，再分享出來，安裝這個就可以啦～
	]]>
	</description>
	<content:encoded><![CDATA[
	前幾天剛裝好 <a href="http://www.ubuntulinux.com" title="Ubuntu Linux">Ubuntu</a>，想把 FireFox 的一些 Addon 都裝起來，可是卻發現 <a href="http://toolbar.google.com" title="Google toolbar for Firefox">Google toolbar for Firefox</a> 裝不起來，老是告訴我版本不合。<br />
<br />
我："<a href="http://www.google.com" title="Google">Google 大神啊</a>～請告訴我為什麼？"<br />
<a href="http://www.google.com" title="Google">Google 大神啊</a>："你既有求於我，我必賞賜於你～這就是你要的解答～<a href="http://ubuntuguide.org/wiki/Ubuntu_Edgy#How_to_install_Google_Toolbar_for_Firefox" title="How to install Google Toolbar for Firefox">How to install Google Toolbar for Firefox</a>"<br />
<br />
是的，國外有人將原來的 Addon 解開以後，修改了一下組態檔，重新包裝起來，再分享出來，安裝這個就可以啦～		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/2512286.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/2512286.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Thu, 23 Nov 2006 09:05:22 +0800</pubDate>
</item>
<item>
	<title>聊 Linux 的安裝</title>
	<description><![CDATA[
	以前最熟悉的是 Fedora Core/Red Hat，這套不用說了，算是很簡單的了。

最近呢，則有幸裝了 Debian 3.x，發現跟以前 2.x 比起來，真的是方便很多。
不僅僅是安裝過程有中文，選擇上也很直覺簡單，下載也只要小小的 109M 就可搞定，其他東西大可等到 Base 安裝完成以後，再用 apt-get 來安裝。
基本上跟 Ubuntu 不遑多讓。

裝完以後，突然又興起裝 Linux 熱，於是又下載了 Gentoo 與 OpenSUSE 來玩。
Gentoo 本身網路安裝的話，只要下載 5xM 就搞定，可是安裝與設定上，肯定是讓你頭痛。我以前有裝起來過一次，這次是試到一半就放棄繼續了。不過裝完以後據說效能很好，因為所有套件幾乎都重新在你機器上編譯過。記得官方網站也有提供比較肥大的光碟可以讓你下載，對初學者來說，這應該會比較省事。
OpenSUSE 有提供網路安裝的版本，昨晚試了一下，真是很遜，也無法選擇安裝 Base system 就好，基本上是要下載完所有光碟，會比較好裝。

如果你是初學者，個人是推薦 Debian / Ubuntu / Fedora Core / OpenSUSE 這幾套。
	]]>
	</description>
	<content:encoded><![CDATA[
	以前最熟悉的是 Fedora Core/Red Hat，這套不用說了，算是很簡單的了。<br />
<br />
最近呢，則有幸裝了 Debian 3.x，發現跟以前 2.x 比起來，真的是方便很多。<br />
不僅僅是安裝過程有中文，選擇上也很直覺簡單，下載也只要小小的 109M 就可搞定，其他東西大可等到 Base 安裝完成以後，再用 apt-get 來安裝。<br />
基本上跟 Ubuntu 不遑多讓。<br />
<br />
裝完以後，突然又興起裝 Linux 熱，於是又下載了 Gentoo 與 OpenSUSE 來玩。<br />
Gentoo 本身網路安裝的話，只要下載 5xM 就搞定，可是安裝與設定上，肯定是讓你頭痛。我以前有裝起來過一次，這次是試到一半就放棄繼續了。不過裝完以後據說效能很好，因為所有套件幾乎都重新在你機器上編譯過。記得官方網站也有提供比較肥大的光碟可以讓你下載，對初學者來說，這應該會比較省事。<br />
OpenSUSE 有提供網路安裝的版本，昨晚試了一下，真是很遜，也無法選擇安裝 Base system 就好，基本上是要下載完所有光碟，會比較好裝。<br />
<br />
如果你是初學者，個人是推薦 Debian / Ubuntu / Fedora Core / OpenSUSE 這幾套。		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/2115321.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/2115321.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Thu, 07 Sep 2006 12:39:41 +0800</pubDate>
</item>
<item>
	<title>Ubuntu 的 Flash Video 沒聲音？</title>
	<description><![CDATA[
	這幾天迷上Youtube，可是在我 Ubuntu 上的 Firefox 播放影片時，卻像啞巴一樣。

於是我丟 "ubuntu flash sound" 這幾個關鍵字給 Google，於是第一個結果就是我要的答案：
*macewan » Howto fix Firefox Flash Video Sound on Ubuntu Linux Dapper

方法很簡單，先安裝 alsa-oss，然後修改 /etc/firefox/firefoxrc，加上 FIREFOX_DSP="aoss"。
$sudo install alsa-oss
$sudo vim /etc/firefox/firefoxrc


	]]>
	</description>
	<content:encoded><![CDATA[
	這幾天迷上<a href="http://www.youtube.com" title="Youtube">Youtube</a>，可是在我 Ubuntu 上的 Firefox 播放影片時，卻像啞巴一樣。<br />
<br />
於是我丟 "ubuntu flash sound" 這幾個關鍵字給 Google，於是第一個結果就是我要的答案：<br />
*<a href="http://www.macewan.org/2006/06/01/howto-firefox-flash-video-sound-on-ubuntu-linux-dapper/" title="macewan » Howto fix Firefox Flash Video Sound on Ubuntu Linux Dapper">macewan » Howto fix Firefox Flash Video Sound on Ubuntu Linux Dapper</a><br />
<br />
方法很簡單，先安裝 alsa-oss，然後修改 /etc/firefox/firefoxrc，加上 FIREFOX_DSP="aoss"。<br />
<blockquote>$sudo install alsa-oss<br />
$sudo vim /etc/firefox/firefoxrc<br />
</blockquote><br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/2109011.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/2109011.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Tue, 05 Sep 2006 20:23:30 +0800</pubDate>
</item>
<item>
	<title>mencoder</title>
	<description><![CDATA[
	突然對作 DVD 有興趣，畢竟也是要好好利用 Notebook 送的 PowerProducer 軟體與 DVD 燒錄機啊。
以前都是把 mpeg 檔轉成 mpeg4，現在可要反過來了，讓 PowerProducer 可以順利轉成 DVD。

用VirtualDub是很方便，只是懶得裝 Codec，也懶得裝大堆頭的 Codec 套件。(自從用了可以通吃的VLC media player以後，就懶了...)
是故，在這方面 Linux 的 MPlayer 就顯得可愛多了。
不但能播放還可以轉檔，摸蜆兼洗褲，一舉兩得。

這裡就貼一下我用來轉 mpeg4 以及現在轉 mpeg 的指令用法：
轉 mpeg 為 mpeg4#!/bin/sh
# usage: mpg2mp4.sh your_mpg your_avi
VBITRATE=500

mencoder "$1" -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3
mencoder "$1" -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$VBITRATE:vpass=1 -oac copy -o "$2"
mencoder "$1" -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$VBITRATE:vpass=2 -oac copy -o "$2"

rm -f frameno.avi
rm -f *.log
從 mpeg4 轉 mpeg(可合成字幕)#!/bin/sh
# usage: mp42mpg.sh your_avi your_srt your_mpg
# msjh.ttf 是微軟提供的中黑體，此處你可改用別的字體。
# -subcp 是字幕檔所使用的編碼，如果字幕檔是 unicode，可以直接把 -subcp cp950 改為 -unicode，這邊設為 -subcp cp950 表示是 big5。
mencoder -ovc lavc -oac lavc -of mpeg -mpegopts format=dvd:telecine -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:aspect=16/9 -ofps 24000/1001 -sub $2 -subcp cp950 -o $e -font ~/.fonts/msjh.ttf -subfont-text-scale 3 $1


官方的說明文件還蠻清楚的，有不知道怎麼轉的，不妨直接看說明文件。

參考資料：Using MEncoder to create VCD/SVCD/DVD-compliant files.
	]]>
	</description>
	<content:encoded><![CDATA[
	突然對作 DVD 有興趣，畢竟也是要好好利用 Notebook 送的 PowerProducer 軟體與 DVD 燒錄機啊。<br/>
以前都是把 mpeg 檔轉成 mpeg4，現在可要反過來了，讓 PowerProducer 可以順利轉成 DVD。<br/>
<br/>
用<a href="http://virtualdub.sourceforge.net" title="VirtualDub">VirtualDub</a>是很方便，只是懶得裝 Codec，也懶得裝大堆頭的 Codec 套件。(自從用了可以通吃的<a href="http://www.videolan.org/vlc/" title="VLC media player">VLC media player</a>以後，就懶了...)<br/>
是故，在這方面 Linux 的 <a href="http://www.mplayerhq.hu" title="MPlayer - The Movie Player">MPlayer</a> 就顯得可愛多了。<br/>
不但能播放還可以轉檔，摸蜆兼洗褲，一舉兩得。<br/>
<br/>
這裡就貼一下我用來轉 mpeg4 以及現在轉 mpeg 的指令用法：<br/>
<ul><li>轉 mpeg 為 mpeg4<pre>#!/bin/sh
# usage: mpg2mp4.sh your_mpg your_avi
VBITRATE=500

mencoder "$1" -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3
mencoder "$1" -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$VBITRATE:vpass=1 -oac copy -o "$2"
mencoder "$1" -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$VBITRATE:vpass=2 -oac copy -o "$2"

rm -f frameno.avi
rm -f *.log
</pre></li><li>從 mpeg4 轉 mpeg(可合成字幕)<pre>#!/bin/sh
# usage: mp42mpg.sh your_avi your_srt your_mpg
# msjh.ttf 是微軟提供的中黑體，此處你可改用別的字體。
# -subcp 是字幕檔所使用的編碼，如果字幕檔是 unicode，可以直接把 -subcp cp950 改為 -unicode，這邊設為 -subcp cp950 表示是 big5。
mencoder -ovc lavc -oac lavc -of mpeg -mpegopts format=dvd:telecine -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:aspect=16/9 -ofps 24000/1001 -sub $2 -subcp cp950 -o $e -font ~/.fonts/msjh.ttf -subfont-text-scale 3 $1
</pre></li></ul>
<br/>
官方的說明文件還蠻清楚的，有不知道怎麼轉的，不妨直接看說明文件。<br/>
<br/>
參考資料：<ul><li><a href="http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-vcd-dvd.html" title="13.7. Using MEncoder to create VCD/SVCD/DVD-compliant files.">Using MEncoder to create VCD/SVCD/DVD-compliant files.</a></li></ul>		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/1993913.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/1993913.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Wed, 09 Aug 2006 19:09:14 +0800</pubDate>
</item>
<item>
	<title>改變 bash 的按鍵行為</title>
	<description><![CDATA[
	詳情可以參考 /etc/inputrc 內的註解，如果改 /etc/inputrc，影響的是所有人。
如果只想改自己的，那就複製 /etc/inputrc 到 ~/.inputrc，然後編輯 ~/.inputrc 即可。

改完之後，記得要重新登入。

參考資料：
鳥哥的 Linux 私房菜 -- 學習 bash shellLearning Linux-第五章﹕Shell 和 Shell Script

	]]>
	</description>
	<content:encoded><![CDATA[
	詳情可以參考 /etc/inputrc 內的註解，如果改 /etc/inputrc，影響的是所有人。<br />
如果只想改自己的，那就複製 /etc/inputrc 到 ~/.inputrc，然後編輯 ~/.inputrc 即可。<br />
<br />
改完之後，記得要重新登入。<br />
<br />
參考資料：<br />
<ul><li><a href="http://linux.vbird.org/linux_basic/0320bash.php#settings_bashrc" title="鳥哥的 Linux 私房菜 -- 學習 bash shell">鳥哥的 Linux 私房菜 -- 學習 bash shell</a></li><li><a href="http://www.study-area.org/linux/system/linux_shell.htm" title="Learning Linux-第五章﹕Shell 和 Shell Script">Learning Linux-第五章﹕Shell 和 Shell Script</a></li></ul><br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/1958200.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/1958200.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Tue, 01 Aug 2006 12:22:28 +0800</pubDate>
</item>
<item>
	<title>以 script 產生 5000 首 mp3</title>
	<description><![CDATA[
	5000 首 mp3 ?!
去哪裡生啊，靈機一動，不如使用 script 來產生，快又有效。
最早的一個版本是拿一個樣板的 mp3 來複製，可是又怕內容有版權問題，所以後來改用 Text to Speech 的軟體來將文字轉成聲音...

我的環境：Fecora Core 5
會用到的套件：Festival (text2wave)、lame (轉 wave 為 mp3)、id3tag (為轉好的 mp3 上 id3 tag)。

程式碼如下：
#!/bin/sh
#
# run2.sh
# This script is used to generate short songs.
# You can decide how many songs should be generated by modify LIMITSONGS variable.
#
# Dependency:
#   festival (Text to speech by text2wave)
#   lame (convert wave to mp3)
#   id3tag (tag the generated mp3) 
#
# Tested environment:
#   Fedora Core 5
#
ITER=1
LIMITSONGS=5002
((TOTAL=LIMITEDSONGS - 1))

while (($ITER < $LIMITSONGS))
do
    NEWFILENAME=`printf "./%04d.mp3" $ITER`
    WAVEFILE=`printf "%d.wav" $ITER`
    ((ALBUMNUM=ITER / 20))
    ((ARTISTNUM=ITER / 20))
    ALBUM=`printf "Album%04d" $ALBUMNUM`
    ARTIST=`printf "Artist%04d" $ARTISTNUM`
    TITLE=`printf "Song%04d" $ITER`
    TEXT=`printf "Hello world! This is song %d which is generated by text2wave.  Here are %d songs, enjoy them.  See you later, baby." $ITER $TOTAL`
    
    echo Processing $NEWFILENAME
    echo $TEXT > text.txt
    text2wave -F 19200 -o $WAVEFILE text.txt
    lame $WAVEFILE $NEWFILENAME
    id3tag --artist=$ARTIST --album=$ALBUM --song=$TITLE --genre=classic --track=$ITER --desc="generated by script." --total=$TOTAL $NEWFILENAME
    ((ITER = ITER + 1 ))

    rm -f $WAVEFILE
done

rm -f text.txt
echo "done."


LIMITESONGS 用來控制要產生的數量。
TEXT 則是要說的文字，目前 festival 還不支援中文，所以只能放一些英文字串。
托福，也因此我學到 bash script 裡面可以運算變數內容，作加減乘除，以前我以為只能運算文字內容而已，真的是不經一事不長一智。

	]]>
	</description>
	<content:encoded><![CDATA[
	5000 首 mp3 ?!<br />
去哪裡生啊，靈機一動，不如使用 script 來產生，快又有效。<br />
最早的一個版本是拿一個樣板的 mp3 來複製，可是又怕內容有版權問題，所以後來改用 Text to Speech 的軟體來將文字轉成聲音...<br />
<br />
我的環境：Fecora Core 5<br />
會用到的套件：Festival (text2wave)、lame (轉 wave 為 mp3)、id3tag (為轉好的 mp3 上 id3 tag)。<br />
<br />
程式碼如下：<br />
<blockquote>#!/bin/sh<br />
#<br />
# run2.sh<br />
# This script is used to generate short songs.<br />
# You can decide how many songs should be generated by modify LIMITSONGS variable.<br />
#<br />
# Dependency:<br />
#   festival (Text to speech by text2wave)<br />
#   lame (convert wave to mp3)<br />
#   id3tag (tag the generated mp3) <br />
#<br />
# Tested environment:<br />
#   Fedora Core 5<br />
#<br />
ITER=1<br />
LIMITSONGS=5002<br />
((TOTAL=LIMITEDSONGS - 1))<br />
<br />
while (($ITER < $LIMITSONGS))<br />
do<br />
    NEWFILENAME=`printf "./%04d.mp3" $ITER`<br />
    WAVEFILE=`printf "%d.wav" $ITER`<br />
    ((ALBUMNUM=ITER / 20))<br />
    ((ARTISTNUM=ITER / 20))<br />
    ALBUM=`printf "Album%04d" $ALBUMNUM`<br />
    ARTIST=`printf "Artist%04d" $ARTISTNUM`<br />
    TITLE=`printf "Song%04d" $ITER`<br />
    TEXT=`printf "Hello world! This is song %d which is generated by text2wave.  Here are %d songs, enjoy them.  See you later, baby." $ITER $TOTAL`<br />
    <br />
    echo Processing $NEWFILENAME<br />
    echo $TEXT > text.txt<br />
    text2wave -F 19200 -o $WAVEFILE text.txt<br />
    lame $WAVEFILE $NEWFILENAME<br />
    id3tag --artist=$ARTIST --album=$ALBUM --song=$TITLE --genre=classic --track=$ITER --desc="generated by script." --total=$TOTAL $NEWFILENAME<br />
    ((ITER = ITER + 1 ))<br />
<br />
    rm -f $WAVEFILE<br />
done<br />
<br />
rm -f text.txt<br />
echo "done."<br />
</blockquote><br />
<br />
LIMITESONGS 用來控制要產生的數量。<br />
TEXT 則是要說的文字，目前 festival 還不支援中文，所以只能放一些英文字串。<br />
托福，也因此我學到 bash script 裡面可以運算變數內容，作加減乘除，以前我以為只能運算文字內容而已，真的是不經一事不長一智。<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/1749819.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/1749819.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Tue, 13 Jun 2006 15:58:09 +0800</pubDate>
</item>
<item>
	<title>SELinux tip</title>
	<description><![CDATA[
	今天要用到時，才驚覺以前的筆記居然不見了...，努力回想了好一陣子，才想起來。
一般來說，如果不熟的話，最好是關掉 SELinux 選項。
那我為甚麼要用？.....別問了吧....

SELinux 的 policy 真的是複雜，複雜到我實在是不太想看下去。
這裡有個簡單的方法可以幫你產生 policy，首先，先去執行被 SELinux 阻擋的程式，然後執行
#audit2allow -d -o xxx.policy
這會產生 xxx.policy

接著把這個檔案複製到 /etc/selinux/targeted/src/policy/domains/misc/local.te
切到 /etc/selinux/targeted/src/policy/
執行 make reload
這樣就大功告成了。

p.s. 我的環境是CentOS 4.3，RHEL、WHEL、Fedora應該都差不多。

	]]>
	</description>
	<content:encoded><![CDATA[
	今天要用到時，才驚覺以前的筆記居然不見了...，努力回想了好一陣子，才想起來。<br />
一般來說，如果不熟的話，最好是關掉 SELinux 選項。<br />
那我為甚麼要用？.....別問了吧....<br />
<br />
SELinux 的 policy 真的是複雜，複雜到我實在是不太想看下去。<br />
這裡有個簡單的方法可以幫你產生 policy，首先，先去執行被 SELinux 阻擋的程式，然後執行<br />
#audit2allow -d -o xxx.policy<br />
這會產生 xxx.policy<br />
<br />
接著把這個檔案複製到 /etc/selinux/targeted/src/policy/domains/misc/local.te<br />
切到 /etc/selinux/targeted/src/policy/<br />
執行 make reload<br />
這樣就大功告成了。<br />
<br />
p.s. 我的環境是CentOS 4.3，RHEL、WHEL、Fedora應該都差不多。<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/1707993.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/1707993.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Sun, 04 Jun 2006 19:27:55 +0800</pubDate>
</item>
<item>
	<title>Firewall: lokkit 的設定</title>
	<description><![CDATA[
	進入 console mode 之後，輸入 setup
選到 Firewall configuration (或直接輸入 lokkit)
再選 customize，至此即可設定允許哪些協定進入你 linux 防火牆。

到 Allow incoming 那邊，將協定勾選(按空白鍵勾選，Tab鍵切換)。
如果沒有列出來的，你可能要在 Other Ports 那欄自行輸入。
格式大致是這樣：
protocol_name:[tcp|udp]

拿我家裏的 server 來說，除了勾選 HTTP、SSH 之外，我還自行輸入了
pop3:tcp https:tcp netbios-ssn:tcp microsoft-ds:tcp netbios-ns:udp netbios-dgm:udp

不知道有哪些 protocol 的話，可以用 netstat -a 自己去看。
我也是嘗試之後，才發現 Other ports 那欄的輸入格式可以參考 netstat -a 的結果。


	]]>
	</description>
	<content:encoded><![CDATA[
	進入 console mode 之後，輸入 setup<br />
選到 Firewall configuration (或直接輸入 lokkit)<br />
再選 customize，至此即可設定允許哪些協定進入你 linux 防火牆。<br />
<br />
到 Allow incoming 那邊，將協定勾選(按空白鍵勾選，Tab鍵切換)。<br />
如果沒有列出來的，你可能要在 Other Ports 那欄自行輸入。<br />
格式大致是這樣：<br />
protocol_name:[tcp|udp]<br />
<br />
拿我家裏的 server 來說，除了勾選 HTTP、SSH 之外，我還自行輸入了<br />
pop3:tcp https:tcp netbios-ssn:tcp microsoft-ds:tcp netbios-ns:udp netbios-dgm:udp<br />
<br />
不知道有哪些 protocol 的話，可以用 netstat -a 自己去看。<br />
我也是嘗試之後，才發現 Other ports 那欄的輸入格式可以參考 netstat -a 的結果。<br />
<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/1398286.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/1398286.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Tue, 11 Apr 2006 16:16:17 +0800</pubDate>
</item>
<item>
	<title>XWindows bootstrap</title>
	<description><![CDATA[
	這是我的環境: Fedora Core 5, GNOME
簡單紀錄一下這幾天 Trace 的結果.

當你開機後預設模式是圖形(怎麼知道預設模式是甚麼??請參考 /etc/inittab.)的時候,順序大致是這樣子的:
1. Kernel
2. /etc/rc.d/rc.sysinit
3. /etc/rc.d/rc, /etc/rc5.d/ 下的 script
4. /etc/rc.local (其實是在 /etc/rc.d/rc.local)
5. prefdm, 這會把預設的 desktop manager 叫起來 (怎麼知道預設 desktop manager 是甚麼?請參考 /etc/sysconfig/desktop)
6. 登入以後,會執行 /etc/X11/xinit/Xsession
7. /etc/X11/xinit/xinitrc
8. /etc/X11/xinit/xinitrc-common
9. /etc/X11/xinit/xinitrc.d/* 下的 script, 這裡面的 xinput.sh 會把輸入法叫起來.
10. 完成.

為甚麼我沒事要去 Trace? 因為前一陣子我升級 Fedora Core 4 到 5 之後,GNOME 就爛掉了,無法登入.
搞了幾天,都不知道為甚麼,只能以克難的方式,先在 $HOME 佈置 .Xsession, .Xclients 來應急.
今天 Trace 之後,終於發現問題所在.
原因是 /etc/gdm/custom.conf 裡 BaseXsession 預設為 /etc/X11/xdm/Xsession.
gdm 登入後會去執行這個 script, 而 xdm/Xsession 只會跑 xdm 的一些東西,所以就只會登入到很簡陋的 xdm 畫面.
呼~~終於解決了.

參考資料:GDM/Configuration/The Script DirectoriesGDM

	]]>
	</description>
	<content:encoded><![CDATA[
	這是我的環境: Fedora Core 5, GNOME<br />
簡單紀錄一下這幾天 Trace 的結果.<br />
<br />
當你開機後預設模式是圖形(怎麼知道預設模式是甚麼??請參考 /etc/inittab.)的時候,順序大致是這樣子的:<br />
1. Kernel<br />
2. /etc/rc.d/rc.sysinit<br />
3. /etc/rc.d/rc, /etc/rc5.d/ 下的 script<br />
4. /etc/rc.local (其實是在 /etc/rc.d/rc.local)<br />
5. prefdm, 這會把預設的 desktop manager 叫起來 (怎麼知道預設 desktop manager 是甚麼?請參考 /etc/sysconfig/desktop)<br />
6. 登入以後,會執行 /etc/X11/xinit/Xsession<br />
7. /etc/X11/xinit/xinitrc<br />
8. /etc/X11/xinit/xinitrc-common<br />
9. /etc/X11/xinit/xinitrc.d/* 下的 script, 這裡面的 xinput.sh 會把輸入法叫起來.<br />
10. 完成.<br />
<br />
為甚麼我沒事要去 Trace? 因為前一陣子我升級 Fedora Core 4 到 5 之後,GNOME 就爛掉了,無法登入.<br />
搞了幾天,都不知道為甚麼,只能以克難的方式,先在 $HOME 佈置 .Xsession, .Xclients 來應急.<br />
今天 Trace 之後,終於發現問題所在.<br />
原因是 /etc/gdm/custom.conf 裡 BaseXsession 預設為 /etc/X11/xdm/Xsession.<br />
gdm 登入後會去執行這個 script, 而 xdm/Xsession 只會跑 xdm 的一些東西,所以就只會登入到很簡陋的 xdm 畫面.<br />
呼~~終於解決了.<br />
<br />
參考資料:<ul><li><a href="http://wiki.gentoo.tw/mediawiki/index.php/GDM/Configuration/The_Script_Directories" title="GDM/Configuration/The Script Directories - 維基百科">GDM/Configuration/The Script Directories</a></li><li><a href="http://wiki.gentoo.tw/mediawiki/index.php/GDM" title="GDM - 維基百科">GDM</a></li></ul><br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/1344820.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/1344820.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Fri, 31 Mar 2006 16:14:49 +0800</pubDate>
</item>
<item>
	<title>Upgrade FC4 to FC5</title>
	<description><![CDATA[
	公司用的 distribution 是 Fedora Core 4, 最近 Fedora Core 5 release 了,就想來升級看看.
世界上真的有很多人想法跟我一樣,用 yum 來升級就好了.

這篇寫的很詳細:How to upgrade from FC4 to FC5 via yum?

主要步驟:下載 fedora-release-5-5.noarch.rpm,然後安裝先更新 yum: yum update yum接著 upgrade: yum upgrade

比較麻煩的是步驟 2與步驟 3,這邊你可能會遇到蠻多麻煩,說有 dependency 問題,這時候就得參考這篇,他有提供一個perl script來解決這種鳥問題.
我自己的方法是,紀錄這些套件,把他們移除掉,等升級完再安裝回去.

現在我已經升級完啦,接下來就是調校了~

參考資料:YumUpgradeFaqUpgrading Red Hat Linux/Fedora Core with yumHow to upgrade from FC4 to FC5 via yum?

	]]>
	</description>
	<content:encoded><![CDATA[
	公司用的 distribution 是 Fedora Core 4, 最近 Fedora Core 5 release 了,就想來升級看看.<br />
世界上真的有很多人想法跟我一樣,用 yum 來升級就好了.<br />
<br />
這篇寫的很詳細:<a href="http://www.makuchaku.info/blog/how-to-upgrade-from-fc4-to-fc5-via-yum" title="MakuChaku's Blog: How to upgrade from FC4 to FC5 via yum?">How to upgrade from FC4 to FC5 via yum?</a><br />
<br />
主要步驟:<ol><li>下載 fedora-release-5-5.noarch.rpm,然後安裝</li><li>先更新 yum: yum update yum</li><li>接著 upgrade: yum upgrade</li></ol><br />
<br />
比較麻煩的是步驟 2與步驟 3,這邊你可能會遇到蠻多麻煩,說有 dependency 問題,這時候就得參考<a href="http://www.brandonhutchinson.com/Upgrading_Red_Hat_Linux_with_yum.html" title="Upgrading Red Hat Linux/Fedora Core with yum">這篇</a>,他有提供一個perl script來解決這種鳥問題.<br />
我自己的方法是,紀錄這些套件,把他們移除掉,等升級完再安裝回去.<br />
<br />
現在我已經升級完啦,接下來就是調校了~<br />
<br />
參考資料:<ul><li><a href="http://www.fedoraproject.org/wiki/YumUpgradeFaq" title="YumUpgradeFaq - Fedora Project Wiki">YumUpgradeFaq</a></li><li><a href="http://www.brandonhutchinson.com/Upgrading_Red_Hat_Linux_with_yum.html" title="Upgrading Red Hat Linux/Fedora Core with yum">Upgrading Red Hat Linux/Fedora Core with yum</a></li><li><a href="http://www.makuchaku.info/blog/how-to-upgrade-from-fc4-to-fc5-via-yum" title="MakuChaku's Blog: How to upgrade from FC4 to FC5 via yum?">How to upgrade from FC4 to FC5 via yum?</a></li></ul><br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/1330488.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/1330488.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Tue, 28 Mar 2006 16:38:43 +0800</pubDate>
</item>
<item>
	<title>Ubuntu live cd on Averatec 6200</title>
	<description><![CDATA[
	前一陣子有想把 Linux 裝到我的 notebook - Averatec 6200 (其實是 MSI M630)上.
正巧Ubuntu Linux又挺紅的,就決定用他.所以就下載了Ubuntu Linux的 Live CD,先行嚐鮮.
可是,怎麼弄都無法從 Live CD 開機,這是一個警訊,表示 Notebook 可能有些麻煩需要克服.

這時候想到,之前有看過一個網站,有提供很多 Notebook 與 Linux 相容問題的網站.利用Google找了一下,很輕易就找到了,就是這裡 Linux on Laptops. 遺憾的是,裡面並沒有 Averatec 6200 的資訊.

時光荏苒,匆匆數周又過去.

今天晚上,再次用 Live CD 開機,並仔細看了一下開機選項 (按 F2, F3, F4, F5, F6, F7 都可以看到不同的選項), 然後輸入這行指令進行開機:live vga=771 noapic nolapic gdth=disable:y

這次很順利就開起來囉~ :)

接下來就是無線網路問題啦~
Ubuntu Linux可以辨認到我的無線網路Driver, 所以接下來就是軟體設定問題.
摸索了一陣(會這麼久,其實有一部分也是因為我忘記我自己的 key index 與 key, :p ),最後在 /etc/network/interfaces 裡面作下列設定
iface ra0 inet dhcp
# 
wireless-essid your_essid

# keys
wireless-key1 your_key_1
wireless-key2 your_key_2
wireless-key3 your_key_3
wireless-key4 your_key_4

# 請根據你的 key 索引值來調整
# adjust the value according your key index.
wireless-defaultkey 1

# 我用的是restricted(受限制的),如果沒用的話,把這行註解掉吧
# I use restricted, you can comment this line.
wireless-keymode restricted

auto ra0


再重新啟動 networking service 就可以了.
sudo /etc/init.d/networking restart

參考資料:WiFiHowtoLinux on Laptops

	]]>
	</description>
	<content:encoded><![CDATA[
	前一陣子有想把 Linux 裝到我的 notebook - Averatec 6200 (其實是 MSI M630)上.<br />
正巧<a href="http://www.ubuntu.com/" title="Ubuntu Linux">Ubuntu Linux</a>又挺紅的,就決定用他.所以就下載了<a href="http://www.ubuntu.com/" title="Ubuntu Linux">Ubuntu Linux</a>的 Live CD,先行嚐鮮.<br />
可是,怎麼弄都無法從 Live CD 開機,這是一個警訊,表示 Notebook 可能有些麻煩需要克服.<br />
<br />
這時候想到,之前有看過一個網站,有提供很多 Notebook 與 Linux 相容問題的網站.利用<a href="http://www.google.com" title="Google">Google</a>找了一下,很輕易就找到了,就是這裡 <a href="http://www.linux-laptop.net/" title="Linux on Laptops">Linux on Laptops</a>. 遺憾的是,裡面並沒有 Averatec 6200 的資訊.<br />
<br />
時光荏苒,匆匆數周又過去.<br />
<br />
今天晚上,再次用 Live CD 開機,並仔細看了一下開機選項 (按 F2, F3, F4, F5, F6, F7 都可以看到不同的選項), 然後輸入這行指令進行開機:<blockquote>live vga=771 noapic nolapic gdth=disable:y</blockquote><br />
<br />
這次很順利就開起來囉~ :)<br />
<br />
接下來就是無線網路問題啦~<br />
<a href="http://www.ubuntu.com/" title="Ubuntu Linux">Ubuntu Linux</a>可以辨認到我的無線網路Driver, 所以接下來就是軟體設定問題.<br />
摸索了一陣(會這麼久,其實有一部分也是因為我忘記我自己的 key index 與 key, :p ),最後在 /etc/network/interfaces 裡面作下列設定<br />
<blockquote>iface ra0 inet dhcp<br />
# <br />
wireless-essid your_essid<br />
<br />
# keys<br />
wireless-key1 your_key_1<br />
wireless-key2 your_key_2<br />
wireless-key3 your_key_3<br />
wireless-key4 your_key_4<br />
<br />
# 請根據你的 key 索引值來調整<br />
# adjust the value according your key index.<br />
wireless-defaultkey 1<br />
<br />
# 我用的是restricted(受限制的),如果沒用的話,把這行註解掉吧<br />
# I use restricted, you can comment this line.<br />
wireless-keymode restricted<br />
<br />
auto ra0<br />
</blockquote><br />
<br />
再重新啟動 networking service 就可以了.<br />
<blockquote>sudo /etc/init.d/networking restart</blockquote><br />
<br />
參考資料:<ul><li><a href="https://wiki.ubuntu.com/WiFiHowto" title="WiFiHowto - Ubuntu Wiki">WiFiHowto</a></li><li><a href="http://www.linux-laptop.net/" title="Linux on Laptops">Linux on Laptops</a></li></ul><br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/1226209.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/1226209.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Wed, 08 Mar 2006 22:27:11 +0800</pubDate>
</item>
<item>
	<title>freenx on Fedora Core 4</title>
	<description><![CDATA[
	
以前裝過,可是忘記了
現在又想用,結果搞了半天,好不容易設定成功了,把方法記起來.

$su root
#yum install freenx

由於這一版的 freenx 使用的目錄有點改變
所以到 /var/lib/nxserver/ 下,多增加一個軟連結
#cd /var/lib/nxserver
#ln -s nxhome home

接著改一下設定
#cd /etc/nxserver
#cp node.conf.sample node.conf

打開 node.conf
把 SERVER_NAME 與 SSHD_PORT 這兩行前面的註解拿掉.
重新啟動 nxserver
#nxserver --restart

確定 user 是否已經自動幫你加入了,看有沒有自己的 linux 帳號
#nxserver --listuser
如果沒有的話,那麼就得新增 user
#nxserver --adduser your_name
#nxserver --passwd your_name

安裝 Windows 版的 nxclient, 這可以到NoMachine網站下載.
下載完成以後就進行安裝,基本上都是 step by step, 沒啥困難的.
主要的幾個設定就是 ip, port, 還有 key

接著回到 server, 處理 key 的部份
這邊我不清楚是否要重新產生,不過我還是做了.
#nxkeygen
產生完畢後,切換到 /var/lib/nxserver/home/.ssh,將 client.id_dsa.key 檔案的內容複製出來,這邊就不仔細描述複製的方法了,總之你自己看著辦.
#cd /var/lib/nxserver/home/.ssh
#cat client.id_dsa.key

把這內容貼到 nxclient for Windows 的 key 裡面 (在 configuration 的時候會有個按鈕叫做 "key",點下後可以貼東西 )
保存設定以後,輸入你的帳號與密碼,再進行連結,這樣就大功告成了.

參考資料:
*HOWTO FreeNX Server - Gentoo Linux Wiki
*NX/FreeNX HOWTO
*Linux-Tip.net - Remote access with FreeNX in 5 steps
*FedoraNEWS.ORG - HOWTO setup Freenx on Fedora

	]]>
	</description>
	<content:encoded><![CDATA[
	<br />
以前裝過,可是忘記了<br />
現在又想用,結果搞了半天,好不容易設定成功了,把方法記起來.<br />
<br />
$su root<br />
#yum install freenx<br />
<br />
由於這一版的 freenx 使用的目錄有點改變<br />
所以到 /var/lib/nxserver/ 下,多增加一個軟連結<br />
#cd /var/lib/nxserver<br />
#ln -s nxhome home<br />
<br />
接著改一下設定<br />
#cd /etc/nxserver<br />
#cp node.conf.sample node.conf<br />
<br />
打開 node.conf<br />
把 SERVER_NAME 與 SSHD_PORT 這兩行前面的註解拿掉.<br />
重新啟動 nxserver<br />
#nxserver --restart<br />
<br />
確定 user 是否已經自動幫你加入了,看有沒有自己的 linux 帳號<br />
#nxserver --listuser<br />
如果沒有的話,那麼就得新增 user<br />
#nxserver --adduser your_name<br />
#nxserver --passwd your_name<br />
<br />
安裝 Windows 版的 nxclient, 這可以到<a href="http://nomachine.com/" title="NoMachine">NoMachine</a>網站下載.<br />
下載完成以後就進行安裝,基本上都是 step by step, 沒啥困難的.<br />
主要的幾個設定就是 ip, port, 還有 key<br />
<br />
接著回到 server, 處理 key 的部份<br />
這邊我不清楚是否要重新產生,不過我還是做了.<br />
#nxkeygen<br />
產生完畢後,切換到 /var/lib/nxserver/home/.ssh,將 client.id_dsa.key 檔案的內容複製出來,這邊就不仔細描述複製的方法了,總之你自己看著辦.<br />
#cd /var/lib/nxserver/home/.ssh<br />
#cat client.id_dsa.key<br />
<br />
把這內容貼到 nxclient for Windows 的 key 裡面 (在 configuration 的時候會有個按鈕叫做 "key",點下後可以貼東西 )<br />
保存設定以後,輸入你的帳號與密碼,再進行連結,這樣就大功告成了.<br />
<br />
參考資料:<br />
*<a href="http://gentoo-wiki.com/HOWTO_FreeNX_Server" title="HOWTO FreeNX Server - Gentoo Linux Wiki">HOWTO FreeNX Server - Gentoo Linux Wiki</a><br />
*<a href="http://www.gnomeuser.org/documents/howto/nx.html" title="NX/FreeNX HOWTO">NX/FreeNX HOWTO</a><br />
*<a href="http://www.linux-tip.net/cms/index.php?option=content&task=view&id=158&Itemid=" title="Linux-Tip.net - Remote access with FreeNX in 5 steps">Linux-Tip.net - Remote access with FreeNX in 5 steps</a><br />
*<a href="http://fedoranews.org/contributors/rick_stout/freenx/" title="FedoraNEWS.ORG - HOWTO setup Freenx on Fedora">FedoraNEWS.ORG - HOWTO setup Freenx on Fedora</a><br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/858266.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/858266.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Tue, 13 Dec 2005 13:10:10 +0800</pubDate>
</item>
<item>
	<title>升級到CentOS 4.2</title>
	<description><![CDATA[
	今天把家裏的server 由 CentOS 3.6 升級到 CentOS 4.2 了.

方法很簡單,下載 CentOS 4.2 的 iso 檔案, 燒成光碟.
將 server 重新開機,並且改由光碟開機.
開機以後,輸入
linux upgradeany
接著進行安裝即可.

安裝完成以後,還有一些需要調整的,例如把一些沒更新到的 el3 rpm 移除掉,調整設定等等的.
這些應該就不必多提了吧. :)

	]]>
	</description>
	<content:encoded><![CDATA[
	今天把家裏的server 由 <a href="http://www.centos.org" title="CentOS">CentOS</a> 3.6 升級到 <a href="http://www.centos.org" title="CentOS">CentOS</a> 4.2 了.<br />
<br />
方法很簡單,下載 <a href="http://www.centos.org" title="CentOS">CentOS</a> 4.2 的 iso 檔案, 燒成光碟.<br />
將 server 重新開機,並且改由光碟開機.<br />
開機以後,輸入<br />
<blockquote>linux upgradeany</blockquote><br />
接著進行安裝即可.<br />
<br />
安裝完成以後,還有一些需要調整的,例如把一些沒更新到的 el3 rpm 移除掉,調整設定等等的.<br />
這些應該就不必多提了吧. :)<br />
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/802032.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/802032.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Wed, 30 Nov 2005 21:18:41 +0800</pubDate>
</item>
<item>
	<title>gpdf 無法顯示帶有中文的 pdf 文檔</title>
	<description><![CDATA[
	在網路上搜索了一下，找到這篇文章。
想不到真是超簡單的，只要安裝 xpdf 就好了。
如果需要更詳盡的設定，就把 /etc/xpdfrc 複製到 ~/.xpdfrc，然後修改 ~/.xpdfrc 即可。
	]]>
	</description>
	<content:encoded><![CDATA[
	在網路上搜索了一下，找到<a href="http://linuxfans.dazahui.com/html/2/89464.htm" title="使gpdf顯示中文,你要做的僅僅是這樣">這篇文章</a>。<br />
想不到真是超簡單的，只要安裝 xpdf 就好了。<br />
如果需要更詳盡的設定，就把 /etc/xpdfrc 複製到 ~/.xpdfrc，然後修改 ~/.xpdfrc 即可。		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554227.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554227.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Wed, 09 Mar 2005 12:42:55 +0800</pubDate>
</item>
<item>
	<title>mono xsp</title>
	<description><![CDATA[
	今天搞了一天...把心得記述一下...
其實安裝步驟很簡單:
1.因為我是用 rpm base 的 WhiteBox Enterprise Linux,所以先到 DAG:Apt/Yum RPM repository去安裝 mono / xsp / mod_mono 套件.懶得自己挑的話,就用 mono-complete / xsp / mod_mono.
2.到了這裡,其實已經裝好一半. 設定 MONO_PATH

export MONO_PATH=/usr/lib/mono/1.0/

3.在 /etc/httpd/conf.d/ 下,新增一個 mono.conf, 內容如下:

AddType application/x-asp-net .aspx .ashx .asmx .ascx .asax .config .ascx
LoadModule mono_module modules/mod_mono.so
MonoUnixSocket /tmp/mod_mono_server
Alias /mono "/usr/share/doc/xsp-0.9/xsp/test/"
&lt;Directory "/usr/share/doc/xsp-0.9/xsp/test"&gt;
    Options Indexes FollowSymLinks
    AllowOverride FileInfo
    Order allow,deny
    Allow from all
    AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx
&lt;/Directory&gt;
DirectoryIndex index.aspx Default.aspx


4.重新啟動 httpd
5.修改 /usr/share/doc/xsp-0.9/xsp/test/mod-mono-server.exe.config, 找到 MonoApplications, 將 value 改為 /mono:.
6.切換到 /usr/share/doc/xsp-0.9/xsp/test 下,執行:

#mono /usr/bin/mod-mono-server.exe --root . --applications /mono:.

7. 將 /tmp/mod_mono_server 的 owner 改為 apache :

#chown apache:apache /tmp/mod_mono_server


大功告成,接著你可以利用瀏覽器輸入 http://your_server/mono/ 來看結果了...

這邊其實 apache 的 mod_mono module 是利用 Unix Socket 與 mod-mono-server 溝通的,所以並不會去 listen 任何一個 port...
我之前以為他會與 xsp 一樣,會 listen 8080 port, 猜錯 @_@
	]]>
	</description>
	<content:encoded><![CDATA[
	今天搞了一天...把心得記述一下...<br />
其實安裝步驟很簡單:<br />
1.因為我是用 rpm base 的 <a href="http://www.whiteboxlinux.org" title="WhiteBox Enterprise linux">WhiteBox Enterprise Linux</a>,所以先到 <a href="http://dag.wieers.com/home-made/apt/" title="DAG:Apt/Yum RPM repository">DAG:Apt/Yum RPM repository</a>去安裝 mono / xsp / mod_mono 套件.懶得自己挑的話,就用 mono-complete / xsp / mod_mono.<br />
2.到了這裡,其實已經裝好一半. 設定 MONO_PATH<br />
<blockquote><br />
export MONO_PATH=/usr/lib/mono/1.0/<br />
</blockquote><br />
3.在 /etc/httpd/conf.d/ 下,新增一個 mono.conf, 內容如下:<br />
<blockquote><br />
AddType application/x-asp-net .aspx .ashx .asmx .ascx .asax .config .ascx<br />
LoadModule mono_module modules/mod_mono.so<br />
MonoUnixSocket /tmp/mod_mono_server<br />
Alias /mono "/usr/share/doc/xsp-0.9/xsp/test/"<br />
&lt;Directory "/usr/share/doc/xsp-0.9/xsp/test"&gt;<br />
    Options Indexes FollowSymLinks<br />
    AllowOverride FileInfo<br />
    Order allow,deny<br />
    Allow from all<br />
    AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx<br />
&lt;/Directory&gt;<br />
DirectoryIndex index.aspx Default.aspx<br />
</blockquote><br />
<br />
4.重新啟動 httpd<br />
5.修改 /usr/share/doc/xsp-0.9/xsp/test/mod-mono-server.exe.config, 找到 MonoApplications, 將 value 改為 /mono:.<br />
6.切換到 /usr/share/doc/xsp-0.9/xsp/test 下,執行:<br />
<blockquote><br />
#mono /usr/bin/mod-mono-server.exe --root . --applications /mono:.<br />
</blockquote><br />
7. 將 /tmp/mod_mono_server 的 owner 改為 apache :<br />
<blockquote><br />
#chown apache:apache /tmp/mod_mono_server<br />
</blockquote><br />
<br />
大功告成,接著你可以利用瀏覽器輸入 http://your_server/mono/ 來看結果了...<br />
<br />
這邊其實 apache 的 mod_mono module 是利用 Unix Socket 與 mod-mono-server 溝通的,所以並不會去 listen 任何一個 port...<br />
我之前以為他會與 xsp 一樣,會 listen 8080 port, 猜錯 @_@		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554216.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554216.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Sat, 12 Feb 2005 22:07:16 +0800</pubDate>
</item>
<item>
	<title>NTLM Authorization Proxy Server (APS)</title>
	<description><![CDATA[
	在這邊看到的, NTLM Authorization Proxy Server (APS).
架設這個以後,一些不知道怎麼用 NTLM 去跟 Microsoft Proxy Server 做認證的軟體,就可以知道怎麼跟 Microsoft Proxy server 溝通了.
簡單的說,他就是跟 Microsoft Proxy server 溝通的 Proxy server...
官方網址:http://ntlmaps.sourceforge.net/
晚點要來架設一個.....要不然很多軟體都會被公司的 proxy 綁死而無法更新 =_= ...
	]]>
	</description>
	<content:encoded><![CDATA[
	在<a href="http://toastytech.com/evil/msproxy.html">這邊</a>看到的, NTLM Authorization Proxy Server (APS).<br />
架設這個以後,一些不知道怎麼用 NTLM 去跟 Microsoft Proxy Server 做認證的軟體,就可以知道怎麼跟 Microsoft Proxy server 溝通了.<br />
簡單的說,他就是跟 Microsoft Proxy server 溝通的 Proxy server...<br />
官方網址:<a href="http://ntlmaps.sourceforge.net/">http://ntlmaps.sourceforge.net/</a><br />
晚點要來架設一個.....要不然很多軟體都會被公司的 proxy 綁死而無法更新 =_= ...		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554198.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554198.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Wed, 05 Jan 2005 22:35:19 +0800</pubDate>
</item>
<item>
	<title>coLinux (續)</title>
	<description><![CDATA[
	前一陣子終於把 coLinux 架起來了~
主要的目的是為了能用 lex 與 yacc ~

雖說自己也有 linux server, 不過並不想在 server 上搞 lex 與 yacc .....

架設 coLinux 的步驟蠻簡單的.
官方網站有Tutorial可供參考....
今天又看到PukiWiki@Taiwan上的這篇文章...
圖文並茂,蠻不錯的~~

這邊則是以前的介紹:coLinux
	]]>
	</description>
	<content:encoded><![CDATA[
	前一陣子終於把 coLinux 架起來了~<br />
主要的目的是為了能用 lex 與 yacc ~<br />
<br />
雖說自己也有 linux server, 不過並不想在 server 上搞 lex 與 yacc .....<br />
<br />
架設 coLinux 的步驟蠻簡單的.<br />
官方網站有<a href="http://www.colinux.org/wiki/index.php">Tutorial</a>可供參考....<br />
今天又看到<a href="http://pukiwiki.idv.tw/">PukiWiki@Taiwan</a>上的<a href="http://pukiwiki.idv.tw/index.php?Windows%2FcoLinux">這篇文章...</a><br />
圖文並茂,蠻不錯的~~<br />
<br />
這邊則是以前的介紹:<a href="000299.html">coLinux</a>		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554174.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554174.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Sat, 06 Nov 2004 22:16:28 +0800</pubDate>
</item>
<item>
	<title>Apache::Gallery</title>
	<description><![CDATA[
	官方網站:http://apachegallery.dk
這裡用的環境: WhiteBox Enterprise Linux 3.0

安裝:
以管理者權限登入 Linux, 確定有安裝 perl-CPAN, 一般預設都會裝進去.
接著,確定 mod_perl, imlib2, xfree86-devel 都有裝進去.

執行 cpan, 依序輸入
install URI::Escape
install Image::Info
install Image::Size
install Text::Template
install CGI
install Image::Imlib2
install Apache::Gallery

都安裝完以後,其實已經快要大功告成.
接著:
1. 到 /etc/httpd/conf.d/ 下新增一個 gallery.conf, 似乎只能以 virtual host 的方式存在,我試了其他方式,試不出來~~ =_=
&lt;VirtualHost *&gt;
&nbsp;&nbsp;ServerName   gallery.yourdomain.org
&nbsp;&nbsp;DocumentRoot /data/pictures/
&nbsp;&nbsp;ErrorLog     logs/gallery-error_log
&nbsp;&nbsp;TransferLog  logs/gallery-access_log
&nbsp;&nbsp;PerlSetVar   GalleryTemplateDir '/usr/local/apache/gallery/templates'
&nbsp;&nbsp;PerlSetVar   GalleryInfo 'Picture Taken => DateTimeOriginal, Flash => Flash'
&nbsp;&nbsp;PerlSetVar   GallerySizes '640 1024 1600 2272'
&nbsp;&nbsp;PerlSetVar   GalleryThumbnailSize '100x75'
&nbsp;&nbsp;PerlSetVar   GalleryCopyrightImage 'htdocs/c.png'
&nbsp;&nbsp;PerlOptions +GlobalRequest
&nbsp;&nbsp;&lt;Location /&gt;
&nbsp;&nbsp;&nbsp;&nbsp;SetHandler        modperl
&nbsp;&nbsp;&nbsp;&nbsp;PerlResponseHandler       Apache::Gallery
&nbsp;&nbsp;&lt;/Location&gt;
&lt;/VirtualHost&gt;


2. 切換到 ~/.cpan/build/Apache-Gallery-0.8
把 templates/default 下的東西複製到 /usr/local/apache/gallery/templates
把 templates/default/gallery.css 複製到 /data/pictures/
把 htdoc 複製到 /var/www/icons 下,並更名為 gallery

3.更新 /etc/httpd/conf/httpd.conf, 把有關 autoindex 模組的部分都註解掉
LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so
....這裡蠻多的....慢慢試~~

4.把你的照片複製到 /data/pictures/

5.重新啟動 httpd, 然後在你的瀏覽器上輸入 http://gallery.yourdomain.org, 應該就可以看到相簿了~~

不過很可惜....我沒有成功....我一直遇到
Image::Imlib2 load error: No loader for file format

這個錯誤~~

~_~, 可能是 imlib2 有問題吧~~
決定還是另覓相簿軟體~~
	]]>
	</description>
	<content:encoded><![CDATA[
	官方網站:<a href="http://apachegallery.dk">http://apachegallery.dk</a><br />
這裡用的環境: <a href="http://whiteboxlinux.org">WhiteBox Enterprise Linux 3.0</a><br />
<br />
安裝:<br />
以管理者權限登入 Linux, 確定有安裝 perl-CPAN, 一般預設都會裝進去.<br />
接著,確定 mod_perl, imlib2, xfree86-devel 都有裝進去.<br />
<br />
執行 cpan, 依序輸入<br />
install URI::Escape<br />
install Image::Info<br />
install Image::Size<br />
install Text::Template<br />
install CGI<br />
install Image::Imlib2<br />
install Apache::Gallery<br />
<br />
都安裝完以後,其實已經快要大功告成.<br />
接著:<br />
1. 到 /etc/httpd/conf.d/ 下新增一個 gallery.conf, 似乎只能以 virtual host 的方式存在,我試了其他方式,試不出來~~ =_=<br />
<blockquote>&lt;VirtualHost *&gt;<br />
&nbsp;&nbsp;ServerName   gallery.yourdomain.org<br />
&nbsp;&nbsp;DocumentRoot /data/pictures/<br />
&nbsp;&nbsp;ErrorLog     logs/gallery-error_log<br />
&nbsp;&nbsp;TransferLog  logs/gallery-access_log<br />
&nbsp;&nbsp;PerlSetVar   GalleryTemplateDir '/usr/local/apache/gallery/templates'<br />
&nbsp;&nbsp;PerlSetVar   GalleryInfo 'Picture Taken => DateTimeOriginal, Flash => Flash'<br />
&nbsp;&nbsp;PerlSetVar   GallerySizes '640 1024 1600 2272'<br />
&nbsp;&nbsp;PerlSetVar   GalleryThumbnailSize '100x75'<br />
&nbsp;&nbsp;PerlSetVar   GalleryCopyrightImage 'htdocs/c.png'<br />
&nbsp;&nbsp;PerlOptions +GlobalRequest<br />
&nbsp;&nbsp;&lt;Location /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;SetHandler        modperl<br />
&nbsp;&nbsp;&nbsp;&nbsp;PerlResponseHandler       Apache::Gallery<br />
&nbsp;&nbsp;&lt;/Location&gt;<br />
&lt;/VirtualHost&gt;<br />
</blockquote><br />
<br />
2. 切換到 ~/.cpan/build/Apache-Gallery-0.8<br />
把 templates/default 下的東西複製到 /usr/local/apache/gallery/templates<br />
把 templates/default/gallery.css 複製到 /data/pictures/<br />
把 htdoc 複製到 /var/www/icons 下,並更名為 gallery<br />
<br />
3.更新 /etc/httpd/conf/httpd.conf, 把有關 autoindex 模組的部分都註解掉<br />
LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so<br />
....這裡蠻多的....慢慢試~~<br />
<br />
4.把你的照片複製到 /data/pictures/<br />
<br />
5.重新啟動 httpd, 然後在你的瀏覽器上輸入 http://gallery.yourdomain.org, 應該就可以看到相簿了~~<br />
<br />
不過很可惜....我沒有成功....我一直遇到<br />
<blockquote>Image::Imlib2 load error: No loader for file format<br />
</blockquote><br />
這個錯誤~~<br />
<br />
~_~, 可能是 imlib2 有問題吧~~<br />
決定還是另覓相簿軟體~~		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554095.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554095.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Wed, 25 Aug 2004 21:30:34 +0800</pubDate>
</item>
<item>
	<title>監看網路封包程式設計概說</title>
	<description><![CDATA[
	以前同事寫的文章.

作者: 邵文琳

前一個禮拜花了不少時間在看網路封包方面的程式設計 ..覺得十分有興趣.
感謝charles 和 ellery 的幫助 . 讓我觀念比較清楚 ...
在這裡我把我這一個星期的學習心得寫下來.
讓大家以後若有機會寫到類似程式時, 可是事半功倍 ..
網路程式設計方面相關資料很多 . 但是都是對比較上層的tcp,或udp的應用在做介紹.
對於網路層和datalink層面則著墨較少 .
所以"對我而言" 學習起來比較困難. 希望寫下這個對大家會有幫助.

一個網路封包監看程式 . 說穿了 只有四個重點:

第一 . 開啟一個可接收raw packet 的socket .
一般我們開始socket接收tcp或udp的packet 時, 我們收到的內容就直接是資料內容 .
kernel 己經幫我們把ethernet header 和 ip 或 arp header 都拿掉了.
但是在寫網路封包程式時, 我們需要header . 因此我們在開啟socket 的時候,就可以針對我們要收集的封包總類做過濾. 要求接收到的資料裡要包涵完整的封包標頭檔...

第二 . 有條件的接收封包和無條件的接收封包.
網路卡只會接收到ethernet header 的target mac 是自己的mac 時, 或接收到TARGET MAC 為 ff:ff:ff:ff:ff 的封包, 或是multicasting 的封包(也就是target ip是224開頭的封包 . 這種情況叫做 nonPromiscuous . 當我們要監看網路封包時,希望收到的不只是broadcast 或是 multicasting 或是自己的封包時, 我就要把網路卡設定成 Promiscuous . 如此一來我們就可以接到實體網路上的所有封包了...

第三 . filter 的設定.
當我們把網路卡設成 Promiscuous , 而且看到了所有封包header 時, 我們就可以依照我們自己的意思去過濾出我們想要的封包 . 可是一個問題來了 .. 網路上的封包那麼多.我們全都要一個個的去把它的標頭打開, 看看是不是自己要看的封包. 這樣做花的時間太長.以致於後面進來的封包都塞在buffer 裡, 等你一個個的檢查..我們需要一個filter 建立在硬體層和聯結層中建立一個filter , 先過濾出我們要的封包,再交由程式處理 . 這就是filter的功用．這種filter 是由bpf code 寫出來的! 不會寫bpf code ? 沒關係. 我們還是有別的方法把它變出來 ,,,,,

第四 .  multiplexing I/O   (blocking VS noblocking)
就如我們所知道的當我們在receving packet 時. 如果沒有資料進來, 程式就會等在那裡 ,這種情況叫做blocking , 但是有時候我們不想要無止限的等在那裡時, 郤又沒法把break 出來時,怎麼辦呢?使用signal 嗎? 另一種解決方式就是把資料流做unblocking.但unblocking 郤不能完成解決我的需求, 於是我利用到了 multiplexing I/O.接下來我在對以上四項做詳細解釋和範例:

第一 socket .
要如何開一個可以接收raw_data 的socket呢 ?

         int sock;

         // 開一個接收所有走ip protocol 封包的完整封包
         sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));

         // 開一個接收所有走arp protocol 封包的完整封包
         sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ARP));

         // 開一個接收所有 protocol 封包的完整封包
         sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_All));

        // 在linux 下接收datalink 層的網路封包
         sock = socket(PF_INET, SOCK_PACKET, htons(ETH+P_ALL));


PF_PACKET 支援兩個socket type:SOCK_RAW 和 SOCK_DGRAM, SOCK_RAW 會留下完整的 ethernet 標頭.SOCK_DGRAM 會去掉ETHERNET 標頭.但在linux 下使用PF_SOCK , SOCK_RAW 會有問題.最好是使用 PF_INET, SOCKET_PACKET 也可以留下完整的實體層的標頭.

第二 Promiscuous.
網路卡預設當然都是nonPromiscuous , 要變成 Promiscuous 必須對網卡做設定.在socket 己經open 下

         #include &lt;linux/in.h&gt;
         #include &lt;linux/if_ether.h&gt;
          struct ifreq ifrq;

         strncpy(ethreq.ifr_name,"eth0",IFNAMSIZ);
         ioctl(sock,SIOCGIFFLAGS,&ifrq);
         ifrq.ifr_flags|=IFF_PROMISC;
         ioctl(sock,SIOCSIFFLAGS,&ifrq);

        若在打開之後,沒有在程式結束前關閉. 它就會一直打開哦 . 所以記得要關閉它.


         strncpy(ethreq.ifr_name,"eth0",IFNAMSIZ);
         ioctl(sock,SIOCGIFFLAGS,&ifrq);
         ifrq.ifr_flags&=~IFF_PROMISC;
         ioctl(sock,SIOCSIFFLAGS,&ifrq);


第三. 設filter
filter 的設定主要是使用在實體層和連接層中間 . 用一種近似組語的bpf code 組成.寫起來挺麻煩的 . 所以我們直接使用tcpdump -dd 來產生的binary code 來用 .

        for example:
         tcpdump -dd ip dst 172.16.0.3
         { 0x28, 0, 0, 0x0000000c },
         { 0x15, 0, 3, 0x00000800 },
         { 0x20, 0, 0, 0x0000001e },
         { 0x15, 0, 1, 0xac100003 },
         { 0x6, 0, 0, 0x00000044 },
         { 0x6, 0, 0, 0x00000000 },
         tcpdump -dd ip src 172.16.0.3
         { 0x28, 0, 0, 0x0000000c },
         { 0x15, 0, 3, 0x00000800 },
         { 0x20, 0, 0, 0x0000001a },
         { 0x15, 0, 1, 0xac100003 },
         { 0x6, 0, 0, 0x00000044 },
         { 0x6, 0, 0, 0x00000000 },
         tcpdump -dd arp dst 172.16.0.3
         { 0x28, 0, 0, 0x0000000c },
         { 0x15, 0, 3, 0x00000806 },
         { 0x2    0, 0, 0, 0x00000026 },
         { 0x15, 0, 1, 0xac100003 },
         { 0x6, 0, 0, 0x00000044 },
         { 0x6, 0, 0, 0x00000000 },

其實這些code 的產生是有跡可找的..我就把下面程式碼的binary code 原始bpf pesude code 列出來,可以相對應比較看看

          /*
            udp and host 192.168.9.10 and src port 5000
            (000) ldh      [12]
            (001) jeq      #0x800           jt 2        jf 14
            (002) ldb      [23]
            (003) jeq      #0x11            jt 4        jf 14
            (004) ld       [26]
            (005) jeq      #0xc0a8090a      jt 8        jf 6
            (006) ld       [30]
            (007) jeq      #0xc0a8090a      jt 8        jf 14
            (008) ldh      [20]
            (009) jset     #0x1fff          jt 14       jf 10
            (010) ldxb     4*([14]&0xf)
            (011) ldh      [x + 14]
            (012) jeq      #0x1388          jt 13       jf 14
            (013) ret      #68
            (014) ret      #0
          */


我們可以依我們的需要去下command 給tcpdump -dd 幫我們產生binary code. tcpdump, 不但區分不同的protocol. 來源,目的地, even 標頭的第幾個byte,和要接收封包的大小, 都可以變化. 實在是太神奇了.

接下來我們要把code 整合到程式裡去 ...

第四 . blocking VS noblocking multiplexing I/O
unblocking 最重要的意思是當有資料流進來時立刻就傳回. 當沒有資料流進來時, 也傳回0.於是我們就可以利用unblocking 和loop 來控制我們要的時間.
以下是程式的寫法:

          (fcntl(fd ,F_GETFL) & O_NONBLOCKING) // 1 成功 0 失敗


但是把資料一點一滴的傳進來也並不是我們要的 . 我們還是希望傳進來的資料是一個個block 過的資料,只是當沒有資料進來時, 能夠不要永遠的等在那而己.這就是multiplexing I/O 的概念.當我們read 和recvfrom 一個 file handle 時, 我們可以設定如何沒有資料進來時我要等多久,就能回到程式繼續執行我們要做的動作.
以下是程式的寫法:

          #include "sys/time.h"
          #include "sys/select.h"

          int sock;
          struct timeval tv;
          fd_set readfds;

          sock = socket(...);
          tv.tv_sec=1;
          tv.tv_usec=0;
          FD_ZERO(&readfds);    //  清空file handle set.
          FD_SET(sock,&readfds);  // 加入一個file handle 到file handle set
          FD_SET(xxx,&readfds);    // 如果還有別的file handle 也要加入同一個
set做控制的話 ..
          select(sock+1,&readfds,NULL,NULL,&tv);  //  對 file handle set 設
定時間控制
          if(FD_ISSET(sock,&readfds)){        // 依readfds的設定來看是否為
true , 依我們的
               例出來說,程式會在這裡等上一秒鐘. 如果在這一秒裡有data流進來,
               傳回true, 再交給recvfrom把data 接下來, 否則一秒鐘後傳回false
!
              // recvfrom(....)
          }


基本上把握這幾個主要的重點, 要變化出自己的sniffer 不是問題..剩下來比較討厭的就是把ip 轉成network address to host address..大小印地安,和 inetaddr, inet_addr, inet_aton, inet_ntoa ...這些變來變去的死東西了.
	]]>
	</description>
	<content:encoded><![CDATA[
	以前同事寫的文章.<br />
<br />
作者: 邵文琳<br />
<br />
前一個禮拜花了不少時間在看網路封包方面的程式設計 ..覺得十分有興趣.<br />
感謝charles 和 ellery 的幫助 . 讓我觀念比較清楚 ...<br />
在這裡我把我這一個星期的學習心得寫下來.<br />
讓大家以後若有機會寫到類似程式時, 可是事半功倍 ..<br />
網路程式設計方面相關資料很多 . 但是都是對比較上層的tcp,或udp的應用在做介紹.<br />
對於網路層和datalink層面則著墨較少 .<br />
所以"對我而言" 學習起來比較困難. 希望寫下這個對大家會有幫助.<br />
<br />
一個網路封包監看程式 . 說穿了 只有四個重點:<br />
<br />
第一 . 開啟一個可接收raw packet 的socket .<br />
一般我們開始socket接收tcp或udp的packet 時, 我們收到的內容就直接是資料內容 .<br />
kernel 己經幫我們把ethernet header 和 ip 或 arp header 都拿掉了.<br />
但是在寫網路封包程式時, 我們需要header . 因此我們在開啟socket 的時候,就可以針對我們要收集的封包總類做過濾. 要求接收到的資料裡要包涵完整的封包標頭檔...<br />
<br />
第二 . 有條件的接收封包和無條件的接收封包.<br />
網路卡只會接收到ethernet header 的target mac 是自己的mac 時, 或接收到TARGET MAC 為 ff:ff:ff:ff:ff 的封包, 或是multicasting 的封包(也就是target ip是224開頭的封包 . 這種情況叫做 nonPromiscuous . 當我們要監看網路封包時,希望收到的不只是broadcast 或是 multicasting 或是自己的封包時, 我就要把網路卡設定成 Promiscuous . 如此一來我們就可以接到實體網路上的所有封包了...<br />
<br />
第三 . filter 的設定.<br />
當我們把網路卡設成 Promiscuous , 而且看到了所有封包header 時, 我們就可以依照我們自己的意思去過濾出我們想要的封包 . 可是一個問題來了 .. 網路上的封包那麼多.我們全都要一個個的去把它的標頭打開, 看看是不是自己要看的封包. 這樣做花的時間太長.以致於後面進來的封包都塞在buffer 裡, 等你一個個的檢查..我們需要一個filter 建立在硬體層和聯結層中建立一個filter , 先過濾出我們要的封包,再交由程式處理 . 這就是filter的功用．這種filter 是由bpf code 寫出來的! 不會寫bpf code ? 沒關係. 我們還是有別的方法把它變出來 ,,,,,<br />
<br />
第四 .  multiplexing I/O   (blocking VS noblocking)<br />
就如我們所知道的當我們在receving packet 時. 如果沒有資料進來, 程式就會等在那裡 ,這種情況叫做blocking , 但是有時候我們不想要無止限的等在那裡時, 郤又沒法把break 出來時,怎麼辦呢?使用signal 嗎? 另一種解決方式就是把資料流做unblocking.但unblocking 郤不能完成解決我的需求, 於是我利用到了 multiplexing I/O.接下來我在對以上四項做詳細解釋和範例:<br />
<br />
第一 socket .<br />
要如何開一個可以接收raw_data 的socket呢 ?<br />
<blockquote><br />
         int sock;<br />
<br />
         // 開一個接收所有走ip protocol 封包的完整封包<br />
         sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));<br />
<br />
         // 開一個接收所有走arp protocol 封包的完整封包<br />
         sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ARP));<br />
<br />
         // 開一個接收所有 protocol 封包的完整封包<br />
         sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_All));<br />
<br />
        // 在linux 下接收datalink 層的網路封包<br />
         sock = socket(PF_INET, SOCK_PACKET, htons(ETH+P_ALL));<br />
</blockquote><br />
<br />
PF_PACKET 支援兩個socket type:SOCK_RAW 和 SOCK_DGRAM, SOCK_RAW 會留下完整的 ethernet 標頭.SOCK_DGRAM 會去掉ETHERNET 標頭.但在linux 下使用PF_SOCK , SOCK_RAW 會有問題.最好是使用 PF_INET, SOCKET_PACKET 也可以留下完整的實體層的標頭.<br />
<br />
第二 Promiscuous.<br />
網路卡預設當然都是nonPromiscuous , 要變成 Promiscuous 必須對網卡做設定.在socket 己經open 下<br />
<blockquote><br />
         #include &lt;linux/in.h&gt;<br />
         #include &lt;linux/if_ether.h&gt;<br />
          struct ifreq ifrq;<br />
<br />
         strncpy(ethreq.ifr_name,"eth0",IFNAMSIZ);<br />
         ioctl(sock,SIOCGIFFLAGS,&ifrq);<br />
         ifrq.ifr_flags|=IFF_PROMISC;<br />
         ioctl(sock,SIOCSIFFLAGS,&ifrq);<br />
</blockquote><br />
        若在打開之後,沒有在程式結束前關閉. 它就會一直打開哦 . 所以記得要關閉它.<br />
<br />
<blockquote><br />
         strncpy(ethreq.ifr_name,"eth0",IFNAMSIZ);<br />
         ioctl(sock,SIOCGIFFLAGS,&ifrq);<br />
         ifrq.ifr_flags&=~IFF_PROMISC;<br />
         ioctl(sock,SIOCSIFFLAGS,&ifrq);<br />
</blockquote><br />
<br />
第三. 設filter<br />
filter 的設定主要是使用在實體層和連接層中間 . 用一種近似組語的bpf code 組成.寫起來挺麻煩的 . 所以我們直接使用tcpdump -dd 來產生的binary code 來用 .<br />
<blockquote><br />
        for example:<br />
         tcpdump -dd ip dst 172.16.0.3<br />
         { 0x28, 0, 0, 0x0000000c },<br />
         { 0x15, 0, 3, 0x00000800 },<br />
         { 0x20, 0, 0, 0x0000001e },<br />
         { 0x15, 0, 1, 0xac100003 },<br />
         { 0x6, 0, 0, 0x00000044 },<br />
         { 0x6, 0, 0, 0x00000000 },<br />
         tcpdump -dd ip src 172.16.0.3<br />
         { 0x28, 0, 0, 0x0000000c },<br />
         { 0x15, 0, 3, 0x00000800 },<br />
         { 0x20, 0, 0, 0x0000001a },<br />
         { 0x15, 0, 1, 0xac100003 },<br />
         { 0x6, 0, 0, 0x00000044 },<br />
         { 0x6, 0, 0, 0x00000000 },<br />
         tcpdump -dd arp dst 172.16.0.3<br />
         { 0x28, 0, 0, 0x0000000c },<br />
         { 0x15, 0, 3, 0x00000806 },<br />
         { 0x2    0, 0, 0, 0x00000026 },<br />
         { 0x15, 0, 1, 0xac100003 },<br />
         { 0x6, 0, 0, 0x00000044 },<br />
         { 0x6, 0, 0, 0x00000000 },<br />
</blockquote><br />
其實這些code 的產生是有跡可找的..我就把下面程式碼的binary code 原始bpf pesude code 列出來,可以相對應比較看看<br />
<blockquote><br />
          /*<br />
            udp and host 192.168.9.10 and src port 5000<br />
            (000) ldh      [12]<br />
            (001) jeq      #0x800           jt 2        jf 14<br />
            (002) ldb      [23]<br />
            (003) jeq      #0x11            jt 4        jf 14<br />
            (004) ld       [26]<br />
            (005) jeq      #0xc0a8090a      jt 8        jf 6<br />
            (006) ld       [30]<br />
            (007) jeq      #0xc0a8090a      jt 8        jf 14<br />
            (008) ldh      [20]<br />
            (009) jset     #0x1fff          jt 14       jf 10<br />
            (010) ldxb     4*([14]&0xf)<br />
            (011) ldh      [x + 14]<br />
            (012) jeq      #0x1388          jt 13       jf 14<br />
            (013) ret      #68<br />
            (014) ret      #0<br />
          */<br />
</blockquote><br />
<br />
我們可以依我們的需要去下command 給tcpdump -dd 幫我們產生binary code. tcpdump, 不但區分不同的protocol. 來源,目的地, even 標頭的第幾個byte,和要接收封包的大小, 都可以變化. 實在是太神奇了.<br />
<br />
接下來我們要把code 整合到程式裡去 ...<br />
<br />
第四 . blocking VS noblocking multiplexing I/O<br />
unblocking 最重要的意思是當有資料流進來時立刻就傳回. 當沒有資料流進來時, 也傳回0.於是我們就可以利用unblocking 和loop 來控制我們要的時間.<br />
以下是程式的寫法:<br />
<blockquote><br />
          (fcntl(fd ,F_GETFL) & O_NONBLOCKING) // 1 成功 0 失敗<br />
</blockquote><br />
<br />
但是把資料一點一滴的傳進來也並不是我們要的 . 我們還是希望傳進來的資料是一個個block 過的資料,只是當沒有資料進來時, 能夠不要永遠的等在那而己.這就是multiplexing I/O 的概念.當我們read 和recvfrom 一個 file handle 時, 我們可以設定如何沒有資料進來時我要等多久,就能回到程式繼續執行我們要做的動作.<br />
以下是程式的寫法:<br />
<blockquote><br />
          #include "sys/time.h"<br />
          #include "sys/select.h"<br />
<br />
          int sock;<br />
          struct timeval tv;<br />
          fd_set readfds;<br />
<br />
          sock = socket(...);<br />
          tv.tv_sec=1;<br />
          tv.tv_usec=0;<br />
          FD_ZERO(&readfds);    //  清空file handle set.<br />
          FD_SET(sock,&readfds);  // 加入一個file handle 到file handle set<br />
          FD_SET(xxx,&readfds);    // 如果還有別的file handle 也要加入同一個<br />
set做控制的話 ..<br />
          select(sock+1,&readfds,NULL,NULL,&tv);  //  對 file handle set 設<br />
定時間控制<br />
          if(FD_ISSET(sock,&readfds)){        // 依readfds的設定來看是否為<br />
true , 依我們的<br />
               例出來說,程式會在這裡等上一秒鐘. 如果在這一秒裡有data流進來,<br />
               傳回true, 再交給recvfrom把data 接下來, 否則一秒鐘後傳回false<br />
!<br />
              // recvfrom(....)<br />
          }<br />
</blockquote><br />
<br />
基本上把握這幾個主要的重點, 要變化出自己的sniffer 不是問題..剩下來比較討厭的就是把ip 轉成network address to host address..大小印地安,和 inetaddr, inet_addr, inet_aton, inet_ntoa ...這些變來變去的死東西了.		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554037.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554037.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Fri, 21 May 2004 11:38:04 +0800</pubDate>
</item>
<item>
	<title>coLinux</title>
	<description><![CDATA[
	來源網址:http://www.linuxdevcenter.com/pub/a/linux/2004/04/29/colinux.html?page=1

ㄧ般來說,要能在 Windows 上執行 Linux,除非藉助 VMWare 或 Virtual PC 或 bochs 之外,否則就是要裝在另外一個 partition 然後重開機才能執行~~

但是近來出了一個 distro 叫 coLinux 的,就可以讓你在 Windows 上跑 Linux, 而且還可以進 GUI 畫面~~

詳細的使用方法,請直接參訪來源網址或官方 wiki~~
	]]>
	</description>
	<content:encoded><![CDATA[
	來源網址:<a href="http://www.linuxdevcenter.com/pub/a/linux/2004/04/29/colinux.html?page=1">http://www.linuxdevcenter.com/pub/a/linux/2004/04/29/colinux.html?page=1</a><br />
<br />
ㄧ般來說,要能在 Windows 上執行 Linux,除非藉助 <a href="http://www.vmware.com">VMWare</a> 或 <a href="http://www.microsoft.com/windowsxp/virtualpc/">Virtual PC</a> 或 <a href="sourceforge.net/projects/bosch/">bochs</a> 之外,否則就是要裝在另外一個 partition 然後重開機才能執行~~<br />
<br />
但是近來出了一個 distro 叫 <a href="http://www.colinux.org/">coLinux</a> 的,就可以讓你在 Windows 上跑 Linux, 而且還可以進 GUI 畫面~~<br />
<br />
詳細的使用方法,請直接參訪<a href="http://www.linuxdevcenter.com/pub/a/linux/2004/04/29/colinux.html?page=1">來源網址</a>或<a href="http://www.colinux.org/wiki/">官方 wiki</a>~~		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554031.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554031.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Fri, 14 May 2004 10:44:46 +0800</pubDate>
</item>
<item>
	<title>快速 reboot linux</title>
	<description><![CDATA[
	前幾天在 Linux Today 看到的,文章來源是在 IBM.
http://www-106.ibm.com/developerworks/linux/library/l-kexec.html?ca=dgr-lnxw02RebootFast

裡面有詳細解釋作法以及原理,主要是利用 kexec 這個軟件來達成這項任務.
挺有趣的,不過沒去玩...
	]]>
	</description>
	<content:encoded><![CDATA[
	前幾天在 <a href="http://linuxtoday.com">Linux Today</a> 看到的,文章來源是在 IBM.<br />
<a href="http://www-106.ibm.com/developerworks/linux/library/l-kexec.html?ca=dgr-lnxw02RebootFast">http://www-106.ibm.com/developerworks/linux/library/l-kexec.html?ca=dgr-lnxw02RebootFast</a><br />
<br />
裡面有詳細解釋作法以及原理,主要是利用 kexec 這個軟件來達成這項任務.<br />
挺有趣的,不過沒去玩...		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554030.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554030.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Fri, 14 May 2004 10:38:21 +0800</pubDate>
</item>
<item>
	<title>ACPI 速記</title>
	<description><![CDATA[
	閱讀 Linux Center 的兩篇有關電源管理 ACPI 文章時的速記.
這兩篇文章的網址如下:
電源管理在Linux系統上的應用
電源管理在Linux系統上的應用 II

ACPI
- 偵測 MB 溫度,fan轉速,電壓,電池用量
- 2.0 須週邊配合!! MB, Power, 顯示卡,網路卡,周邊...

Linux ACPI driver 有維護 bad BIOS List

APM -> check /proc/apm or "dmesg | grep apm"
apmd daemon
apm 控制用及顯示
xapm 給 XWindow 用的

redhat 9 基本上沒有支援 ACPI
Suse 有,開機參數可以指定
acpi=off 不用
acpi=oldboot 只支援部份
pci=acpi
pci=noacpi
acpi=force 強制啟動
check /proc/acpi
acpid daemon
acpictl 控制
pmtools package

xset -dpms 關閉 energy star 並修改 XF86Config-4 中的 dpms
	]]>
	</description>
	<content:encoded><![CDATA[
	閱讀 <a href="http://www.linuxcenter.com.tw">Linux Center</a> 的兩篇有關電源管理 ACPI 文章時的速記.<br />
這兩篇文章的網址如下:<br />
<a href="http://www.linuxcenter.com.tw/service/tech/?proc=cat&filename=%B9q%B7%BD%BA%DE%B2z%A6b%20Linux%20%A8t%B2%CE%A4W%AA%BA%C0%B3%A5%CE.htm&id=102">電源管理在Linux系統上的應用</a><br />
<a href="http://www.linuxcenter.com.tw/service/tech/?proc=cat&filename=%B9q%B7%BD%BA%DE%B2z%A6b%20Linux%20%A8t%B2%CE%A4W%AA%BA%C0%B3%A5%CE-II.html&id=103">電源管理在Linux系統上的應用 II</a><br />
<br />
ACPI<br />
- 偵測 MB 溫度,fan轉速,電壓,電池用量<br />
- 2.0 須週邊配合!! MB, Power, 顯示卡,網路卡,周邊...<br />
<br />
Linux ACPI driver 有維護 bad BIOS List<br />
<br />
APM -> check /proc/apm or "dmesg | grep apm"<br />
apmd daemon<br />
apm 控制用及顯示<br />
xapm 給 XWindow 用的<br />
<br />
redhat 9 基本上沒有支援 ACPI<br />
Suse 有,開機參數可以指定<br />
acpi=off 不用<br />
acpi=oldboot 只支援部份<br />
pci=acpi<br />
pci=noacpi<br />
acpi=force 強制啟動<br />
check /proc/acpi<br />
acpid daemon<br />
acpictl 控制<br />
pmtools package<br />
<br />
xset -dpms 關閉 energy star 並修改 XF86Config-4 中的 dpms		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554017.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554017.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Fri, 09 Apr 2004 13:46:38 +0800</pubDate>
</item>
<item>
	<title>Debian 2.2r6 設定</title>
	<description><![CDATA[
	雖說是 Debian 2.2r6 設定,但我想 Debian 的設定應該就是這樣了吧~~

1.網路
主機名稱:/etc/hostname
網路卡為 dhcp 或 static : /etc/network/interfaces
iface eth0 inet dhcp
or
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0


2.initscript
在 /etc/init.d 下建立 script
再使用 update-rc.d xxxx defaults 99 99 > /dev/nul
也有 update-inetd --add 針對 inetd 增加服務
	]]>
	</description>
	<content:encoded><![CDATA[
	雖說是 Debian 2.2r6 設定,但我想 Debian 的設定應該就是這樣了吧~~<br />
<br />
1.網路<br />
主機名稱:/etc/hostname<br />
網路卡為 dhcp 或 static : /etc/network/interfaces<br />
<blockquote>iface eth0 inet dhcp</blockquote><br />
or<br />
<blockquote>iface eth0 inet static<br />
address 192.168.0.1<br />
netmask 255.255.255.0<br />
</blockquote><br />
<br />
2.initscript<br />
在 /etc/init.d 下建立 script<br />
再使用 update-rc.d xxxx defaults 99 99 > /dev/nul<br />
也有 update-inetd --add 針對 inetd 增加服務		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554015.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554015.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Fri, 09 Apr 2004 12:43:31 +0800</pubDate>
</item>
<item>
	<title>ImageMagick</title>
	<description><![CDATA[
	某天從 IBM 電子報上看到這篇http://www-106.ibm.com/developerworks/library/l-graf2/?ca=dgr-lnxw02GraphicsLine,才知道 ImageMagick 這麼神奇,直接用指令列就可以做很多圖片編輯的工作了~

把圖片的右上角弄成圓角
composite -gravity NorthEast rounded-ne.png lake.png lake-1.png

rounded-ne.png 是一個圓角的圖案,背景設成白色,圓角部份則設為透明.
composite 會將 rounded-ne.png 與 lake.png 結合,並輸出到 lake-1.png
是故,同理可證,你可以搞定四個角
composite -gravity NorthEast rounded-ne.png lake.png lake-1.png
composite -gravity NorthWest? rounded-nw.png lake-1.png lake-2.png
composite -gravity SouthEast? rounded-se.png lake-2.png lake-3.png
composite -gravity SouthWest? rounded-sw.png lake-3.png lake-4.png


寫成 script 就變成了:
for img in *.png do composite -gravity NorthEast rounded-ne.png $img.png $img-1.png
composite -gravity NorthWest rounded-nw.png $img-1.png $img-2.png
composite -gravity SouthEast rounded-se.png $img-2.png $img-3.png
composite -gravity SouthWest rounded-sw.png $img-3.png $img-4.png
done


讓圖片浮起來,變成像按鈕的樣子
convert -raise 5x5 tree.png tree-raised.png

凹下去的話就是用
convert +raise 5x5 tree.png tree-lowered.png


加個邊框吧
convert -bordercolor red -border 5x5 flower.png flower-border.png


也是加框,不過有點巧妙...
convert -mattecolor black -frame 5x5 beach.png beach-frame.png
convert -mattecolor black -frame 5x5+2 beach.png beach-frame.png
convert -mattecolor black -frame 5x5+2+2 beach.png beach-frame.png

或是
convert -mattecolor gray -frame 25x25+0+25 rock.png rock-frame1.png
convert -mattecolor gray -frame 25x25+25+0 rock.png rock-frame2.png


把所有 .jpg 縮圖
for img in *.jpg
do
convert -sample 25%x25% $img thumb-$img
done


或是
mogrify -sample 25%x25% *.jpg
mogrify -format png -sample 25%x25% *.jpg


把 pdf 中的圖檔解出來
convert foo.pdf pages-%03d.png
of course, 也可以反過來,把圖檔作成 .pdf
convert dsc* foo.pdf
	]]>
	</description>
	<content:encoded><![CDATA[
	某天從 IBM 電子報上看到這篇<a href="http://www-106.ibm.com/developerworks/library/l-graf2/?ca=dgr-lnxw02GraphicsLine">http://www-106.ibm.com/developerworks/library/l-graf2/?ca=dgr-lnxw02GraphicsLine</a>,才知道 ImageMagick 這麼神奇,直接用指令列就可以做很多圖片編輯的工作了~<br />
<br />
<b>把圖片的右上角弄成圓角</b><br />
<blockquote>composite -gravity NorthEast rounded-ne.png lake.png lake-1.png<br />
</blockquote><br />
rounded-ne.png 是一個圓角的圖案,背景設成白色,圓角部份則設為透明.<br />
composite 會將 rounded-ne.png 與 lake.png 結合,並輸出到 lake-1.png<br />
是故,同理可證,你可以搞定四個角<br />
<blockquote>composite -gravity NorthEast rounded-ne.png lake.png lake-1.png<br />
composite -gravity NorthWest? rounded-nw.png lake-1.png lake-2.png<br />
composite -gravity SouthEast? rounded-se.png lake-2.png lake-3.png<br />
composite -gravity SouthWest? rounded-sw.png lake-3.png lake-4.png<br />
</blockquote><br />
<br />
寫成 script 就變成了:<br />
<blockquote>for img in *.png do composite -gravity NorthEast rounded-ne.png $img.png $img-1.png<br />
composite -gravity NorthWest rounded-nw.png $img-1.png $img-2.png<br />
composite -gravity SouthEast rounded-se.png $img-2.png $img-3.png<br />
composite -gravity SouthWest rounded-sw.png $img-3.png $img-4.png<br />
done<br />
</blockquote><br />
<br />
<b>讓圖片浮起來,變成像按鈕的樣子</b><br />
<blockquote>convert -raise 5x5 tree.png tree-raised.png<br />
</blockquote><br />
凹下去的話就是用<br />
<blockquote>convert +raise 5x5 tree.png tree-lowered.png<br />
</blockquote><br />
<br />
<b>加個邊框吧</b><br />
<blockquote>convert -bordercolor red -border 5x5 flower.png flower-border.png<br />
</blockquote><br />
<br />
也是加框,不過有點巧妙...<br />
<blockquote>convert -mattecolor black -frame 5x5 beach.png beach-frame.png<br />
convert -mattecolor black -frame 5x5+2 beach.png beach-frame.png<br />
convert -mattecolor black -frame 5x5+2+2 beach.png beach-frame.png<br />
</blockquote><br />
或是<br />
<blockquote>convert -mattecolor gray -frame 25x25+0+25 rock.png rock-frame1.png<br />
convert -mattecolor gray -frame 25x25+25+0 rock.png rock-frame2.png<br />
</blockquote><br />
<br />
<b>把所有 .jpg 縮圖</b><br />
<blockquote>for img in *.jpg<br />
do<br />
convert -sample 25%x25% $img thumb-$img<br />
done<br />
</blockquote><br />
<br />
或是<br />
<blockquote>mogrify -sample 25%x25% *.jpg<br />
mogrify -format png -sample 25%x25% *.jpg<br />
</blockquote><br />
<br />
<b>把 pdf 中的圖檔解出來</b><br />
<blockquote>convert foo.pdf pages-%03d.png</blockquote><br />
of course, 也可以反過來,把圖檔作成 .pdf<br />
<blockquote>convert dsc* foo.pdf</blockquote>		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554014.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554014.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Thu, 08 Apr 2004 22:23:58 +0800</pubDate>
</item>
<item>
	<title>利用 ssh + tar 作備份</title>
	<description><![CDATA[
	以前看網路上某篇文章時,節錄下來的,出處已經不可考了.它是利用 ssh + tar 來作備份,不僅安全,也兼顧了部分的效率.

$target 表示目的機器,指遠端機器
$backup_server 表示備份機器,同樣也是指遠端機器
$save 則是指備份目錄

要求遠端備份並拉回 local
ssh $target tar -cf - / --exclude /mnt | bzip2 -9 | cat > $target.tar.bz2
解開本地備份並回存到遠端去
bunzip2 -dc $target.tar.bz2 | ssh $target "cd /;tar -pxkf -"
備份 local 資料,丟到遠端去壓縮並存檔
tar cf - / --exclude xxx | ssh $backup_server "bzip2 -9 > $save/test.tar.bz2"
把遠端資料拉回 local,作解壓縮動作
ssh $backup_server "cat $save/test.tar.bz2" | bunzip2 | tar -xpkf -
	]]>
	</description>
	<content:encoded><![CDATA[
	以前看網路上某篇文章時,節錄下來的,出處已經不可考了.它是利用 ssh + tar 來作備份,不僅安全,也兼顧了部分的效率.<br />
<br />
$target 表示目的機器,指遠端機器<br />
$backup_server 表示備份機器,同樣也是指遠端機器<br />
$save 則是指備份目錄<br />
<br />
<b>要求遠端備份並拉回 local</b><br />
<blockquote>ssh $target tar -cf - / --exclude /mnt | bzip2 -9 | cat > $target.tar.bz2</blockquote><br />
<b>解開本地備份並回存到遠端去</b><br />
<blockquote>bunzip2 -dc $target.tar.bz2 | ssh $target "cd /;tar -pxkf -"</blockquote><br />
<b>備份 local 資料,丟到遠端去壓縮並存檔</b><br />
<blockquote>tar cf - / --exclude xxx | ssh $backup_server "bzip2 -9 > $save/test.tar.bz2"</blockquote><br />
<b>把遠端資料拉回 local,作解壓縮動作</b><br />
<blockquote>ssh $backup_server "cat $save/test.tar.bz2" | bunzip2 | tar -xpkf -</blockquote>		]]>
	</content:encoded>
	<link>http://blog.roodo.com/thinkingmore/archives/554013.html</link>
	<guid>http://blog.roodo.com/thinkingmore/archives/554013.html</guid>
	<category>Linux 及其相關</category>
	<pubDate>Thu, 08 Apr 2004 21:25:02 +0800</pubDate>
</item>
<item>
	<title>Gentoo</title>
	<description><![CDATA[
	因為前幾天,FAE 跟我說上海有個客戶用 gentoo, 結果我的程式執行有問題,雖然應該是可以執行,不過想說早就對 gentoo 蠻有興趣,所以就想說下載來玩玩看.
不過 .iso 檔案好幾天前就下載完,只是沒什麼時間來安裝,前幾天又卡到買房子的事情...昨天終於想說來玩玩看,於是就利用 vmware 試用版來裝裝看.

第一片 cd 放進去開機,就可以開出完整的 linux, 有點類似 knoppix.
只是要安裝到硬碟上,可就要花一番功夫了.
我參考了這篇 Gentoo 1.4 安裝指南 裡面的安裝步驟來做~~
我本來想說節省時間,從 stage 3 開始,可是一時手賤,改了 /etc/make.conf,結果反而多花了很多時間....這樣斷斷續續的一搞,花了很多時間~~最後卻又開不了機~~

只好再來一次,這一次,我才發現,原來我少了一些步驟,使得 gentoo 的 emerge 每次都得上網路去抓最新的 portage, 所以才會慢....這次就學聰明了,從光碟複製 portage ,然後盡量不改設定,這樣就快多了~~

安裝步驟大致摘錄如下:
1.光碟開機後,就是一個 live linux 可以用
2.切割你的 partition,自行格式化...等等.
3.把切割好的 partition 掛載到 /mnt/gentoo 下,並且把 swap 掛起來(swapon /dev/hdx),這樣速度會比較快
4.建議從stage 3開始,所以要
# cd /mnt/gentoo
# tar -xvjpf /mnt/cdrom/stages/stage3-*.tar.bz2
把 stage 3 的檔案放到 partition 中...
5.把光碟上的 portage 以及一些 gentoo 幫我們編譯好的檔案放到 /mnt/gentoo 中
# tar -xvjf /mnt/cdrom/snapshots/portage-yyyymmdd.tar.bz2 -C /mnt/gentoo/usr
# cp -R /mnt/cdrom/distfiles /mnt/gentoo/usr/portage/distfiles
# cp -a /mnt/cdrom/packages/ /mnt/gentoo/usr/portage/packages
6.再來就是 chroot, 切到剛剛都大致弄好的環境下
# mount -t proc proc /mnt/gentoo/proc
# cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
7. 更新到最新套件(emerge sync), 調整 make 參數(/etc/make.conf), 更新系統(CONFIG_PROTECT="-*" emerge -u system),省時間的話,這步驟可以跳過.
8.設定時區(從/usr/share/zoneinfo連結到/etc/localtime),以及設置 fstab.
9.安裝kernel, 若需要調整 kernel 參數,可以用 genkernel --config
# emerge -k gentoo-sources
# emerge -k genkernel
# genkernel 
# emerge -k hotplug
# rc-update add hotplug default
10.安裝 log daemon, 有這幾種可以選: sysklogd, msyslog, syslog-ng  metalog.
# emerge -k syslog-ng
# rc-update add syslog-ng default
11.安裝 cron daemon, 一樣也是有這幾種可選: dcron, fcron 和 vixie-cron
# emerge -k vixie-cron
# rc-update add vixie-cron default
12.檔案系統的相關工具: reiserfsprogs, xfsprogs, jfsutils, lvm-user
13.帳號,記得要設置 root 密碼,並且最好加入一個普通 user
# passwd
# useradd your_user -m -G users,wheel,audio -s /bin/bash
# passwd your_user
14.主機名稱以及網域名稱 /etc/hostname, /etc/dnsdomainname, /etc/hosts
15.網路設定 /etc/conf.d/net, 並把 eth0 加入開機順序中 rc-update add net.eth0 default , ethx 依此類推
16.調整鍵盤設定等, /etc/rc.conf
17. boot loader: grub 或 lilo,並修改 grub.conf 或 lilo.conf
# emerge -k grub
# grub
grub> root (hd0,0)
grub> setup (hd0)
18.把第二片的 portage 也放到硬碟中,並裝一些有的沒的
# mount /dev/cdrom /mnt/cdrom
# cp -a /mnt/cdrom/packages/* /usr/portage/packages/
# emerge -k xxxxx
19.最後的一些步驟,然後重開機啦
# etc-update
# exit
# reboot

:)
	]]>
	</description>
	<content:encoded><![CDATA[
	因為前幾天,FAE 跟我說上海有個客戶用 gentoo, 結果我的程式執行有問題,雖然應該是可以執行,不過想說早就對 gentoo 蠻有興趣,所以就想說下載來玩玩看.<br />
不過 .iso 檔案好幾天前就下載完,只是沒什麼時間來安裝,前幾天又卡到買房子的事情...昨天終於想說來玩玩看,於是就利用 vmware 試用版來裝裝看.<br />
<br />
第一片 cd 放進去開機,就可以開出完整的 linux, 有點類似 knoppix.<br />
只是要安裝到硬碟上,可就要花一番功夫了.<br />
我參考了這篇 <a href="http://www.gentoo.org/doc/tw/gentoo-x86-install.xml">Gentoo 1.4 安裝指南</a> 裡面的安裝步驟來做~~<br />
我本來想說節省時間,從 stage 3 開始,可是一時手賤,改了 /etc/make.conf,結果反而多花了很多時間....這樣斷斷續續的一搞,花了很多時間~~最後卻又開不了機~~<br />
<br />
只好再來一次,這一次,我才發現,原來我少了一些步驟,使得 gentoo 的 emerge 每次都得上網路去抓最新的 portage, 所以才會慢....這次就學聰明了,從光碟複製 portage ,然後盡量不改設定,這樣就快多了~~<br />
<br />
安裝步驟大致摘錄如下:<br />
1.光碟開機後,就是一個 live linux 可以用<br />
2.切割你的 partition,自行格式化...等等.<br />
3.把切割好的 partition 掛載到 /mnt/gentoo 下,並且把 swap 掛起來(swapon /dev/hdx),這樣速度會比較快<br />
4.建議從stage 3開始,所以要<br />
# cd /mnt/gentoo<br />
# tar -xvjpf /mnt/cdrom/stages/stage3-*.tar.bz2<br />
把 stage 3 的檔案放到 partition 中...<br />
5.把光碟上的 portage 以及一些 gentoo 幫我們編譯好的檔案放到 /mnt/gentoo 中<br />
# tar -xvjf /mnt/cdrom/snapshots/portage-yyyymmdd.tar.bz2 -C /mnt/gentoo/usr<br />
# cp -R /mnt/cdrom/distfiles /mnt/gentoo/usr/portage/distfiles<br />
# cp -a /mnt/cdrom/packages/ /mnt/gentoo/usr/portage/packages<br />
6.再來就是 chroot, 切到剛剛都大致弄好的環境下<br />
# mount -t proc proc /mnt/gentoo/proc<br />
# cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf<br />
# chroot /mnt/gentoo /bin/bash<br />
# env-update<br />
# source /etc/profile<br />
7. 更新到最新套件(emerge sync), 調整 make 參數(/etc/make.conf), 更新系統(CONFIG_PROTECT="-*" emerge -u system),省時間的話,這步驟可以跳過.<br />
8.設定時區(從/usr/share/zoneinfo連結到/etc/localtime),以及設置 fstab.<br />
9.安裝kernel, 若需要調整 kernel 參數,可以用 genkernel --config<br />
# emerge -k gentoo-sources<br />
# emerge -k genkernel<br />
# genkernel <br />
# emerge -k hotplug<br />
# rc-update add hotplug default<br />
10.安裝 log daemon, 有這幾種可以選: sysklogd, msyslog, syslog-ng  metalog.<br />
# emerge -k syslog-ng<br />
# rc-update add syslog-ng default<br />
11.安裝 cron daemon, 一樣也是有這幾種可選: dcron, fcron 和 vixie-cron<br />
# emerge -k vixie-cron<br />
# rc-update add vixie-cron default<br />
12.檔案系統的相關工具: reiserfsprogs, xfsprogs, jfsutils, lvm-user<br />
13.帳號,記得要設置 root 密碼,並且最好加入一個普通 user<br />
# passwd<br />
# useradd your_user -m -G users,wheel,audio -s /bin/bash<br />
# passwd your_user<br />
14.主機名稱以及網域名稱 /etc/hostname, /etc/dnsdomainname, /etc/hosts<br />
15.網路設定 /etc/conf.d/net, 並把 eth0 加入開機順序中 rc-update add net.eth0 default , ethx 依此類推<br />
16.調整鍵盤設定等, /etc/rc.conf<br />
17. boot loader: grub 或 lilo,並修改 grub.conf 或 lilo.conf<br />
# emerge -k grub<br />
# grub<br />
grub> root (hd0,0)<br />
grub> setup (hd0)<br />
18.把第二片的 portage 也放到硬碟中,並裝一些有的沒的<br />
# mount /dev/cdrom /mnt