<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6940637973783721202</id><updated>2024-09-10T07:45:03.657+08:00</updated><category term="embedded"/><category term="openmoko"/><category term="hacker"/><category term="emulation"/><category term="qemu"/><category term="arm"/><category term="font"/><category term="unicode"/><category term="cross development"/><category term="olpc"/><category term="orzlab"/><category term="ajax"/><category term="openembedded"/><category term="s3c2410"/><category term="fon"/><category term="kernel"/><category term="rt nanokernel"/><category term="ucimf"/><category term="culture"/><category term="open source"/><category term="osdc.tw"/><category term="revision control"/><category term="virtualization"/><category term="web"/><category term="webkit"/><category term="zhongwen"/><category term="La Fonera"/><category term="community"/><category term="eglibc"/><category term="gui"/><category term="i18n"/><category term="kexec"/><category term="l4"/><category term="mozilla"/><category term="pxa27x"/><category term="svk"/><category term="xscale"/><category term="0xlab"/><category term="bdf"/><category term="cacao"/><category term="cldc"/><category term="debugging"/><category term="desktop"/><category term="disassembly"/><category term="eabi"/><category term="etsi"/><category term="fontforge"/><category term="freetype"/><category term="gadgetfs"/><category term="gdb"/><category term="gentoo"/><category term="graphics"/><category term="gsm"/><category term="gtk+"/><category term="handwriting"/><category term="hg"/><category term="irc"/><category term="irssi"/><category term="java"/><category term="maemo"/><category term="mascot"/><category term="midori"/><category term="mokomakefile"/><category term="monotone"/><category term="moztw"/><category term="mutex"/><category term="okl4"/><category term="opengl"/><category term="openvanilla"/><category term="openwrt"/><category term="optimization"/><category term="palm"/><category term="pcf"/><category term="poky"/><category term="ports"/><category term="qpf"/><category term="rtos"/><category term="screen"/><category term="semaphore"/><category term="svn"/><category term="tex"/><category term="tossug"/><category term="ucimf. orzlab"/><category term="usb"/><category term="user-mode-linux"/><category term="win32"/><category term="xul"/><title type='text'>Planet OrzLab</title><subtitle type='html'>Open RazzmatazZ Laboratory (OrzLab) funds an environment for freedom and creativity based on Free Software and Open Source efforts.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default?start-index=26&amp;max-results=25'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKheeOl5zJxCtt2yk8kYw-n_PTPaL4HYGAK08rgwwNOglOgU4rvExdc6M1-0tAYhzntbrl-hZMwv-t72O3wRxbBxoQdTCYzUhf7it9VCyJUY4J2uB3SWpc_LkO8Gij1E0/s1600-r/icon-penguin.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>80</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2158827806016111735</id><published>2009-06-22T04:51:00.004+08:00</published><updated>2009-06-22T05:33:37.128+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="0xlab"/><category scheme="http://www.blogger.com/atom/ns#" term="community"/><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="open source"/><category scheme="http://www.blogger.com/atom/ns#" term="orzlab"/><title type='text'>從 OrzLab 移轉到 0xlab</title><content type='html'>2007年的愚人節，我們做了一個小實驗，藉由號召熱衷於電腦技術的朋友，透過&lt;a href=&quot;http://orzlab.blogspot.com/2007/04/orzlab.html&quot;&gt;OrzLab的成立&lt;/a&gt;，嘗試聚焦作些有趣的Hacking。儘管所有成員都是出於自願並得挪用下班與課後的有限空檔時間，但仍累積一些成果，並在這個過程中，無私地分享與交流，的確已達到當初的期望，並建立初步的人際互動。&lt;br /&gt;&lt;br /&gt;不過礙於現實的考量，成員們要不從學校畢業，就是邁入新的工作里程碑，既然當初聚焦作些Hacking的目標已達成，接著就該讓台灣本土的軟體創作走入國際，嘗試與全球多元的環境互動。在寂靜了好長一段時間後，我們有機會從&lt;a href=&quot;http://blog.linux.org.tw/%7Ejserv/archives/002102.html&quot;&gt;剛創立的 0xlab&lt;/a&gt;，得到新的希望，我們之中，開始有人能全職作free and open source software，也有人試著與台灣的電子產業建立聯繫，並試著將這些聲音，以行動的方式，傳遞到更遠更廣的區域。回首來時路，只能用愛因斯坦的話語，來表達我們的初衷：「對一個人來說，所斯望的不是別的，而僅僅是他能全力以赴和獻身於一種美好事業」。&lt;br /&gt;&lt;br /&gt;目前，&lt;a href=&quot;http://0xlab.org/&quot;&gt;0xlab&lt;/a&gt;不僅從&lt;a href=&quot;http://0xlab.org/projects.html&quot;&gt;過去開發的專案&lt;/a&gt;中累積經驗，也積極地透過自由軟體的力量，追尋更多元、益於嵌入式與移動裝置開發的協同創作模式，除了已釋出的原始程式碼之外，也可一併參照開發日誌&lt;a href=&quot;http://planet.0xlab.org/&quot;&gt;Planet 0xlab&lt;/a&gt;。相當榮幸能跟這群熱血並才華洋溢的朋友共事，彼此也能融洽的合作，一同獻身於自由軟體與嵌入式系統開發的美好事業，但，這一切只是開端。&lt;br /&gt;&lt;br /&gt;本文不是宣告&lt;a href=&quot;http://orzlab.blogspot.com/&quot;&gt;OrzLab&lt;/a&gt;的終止，而是聲明正面的蛻變，在許多人不看好台灣軟體產業的同時，其實一小群執著的人們，不斷地爭取嶄新的舞台，以不同的視角觀望著資訊產業的巨變。因此，從&lt;a href=&quot;http://orzlab.blogspot.com/&quot;&gt;OrzLab&lt;/a&gt;移轉到&lt;a href=&quot;http://0xlab.org/&quot;&gt;0xlab&lt;/a&gt;，不僅是從業餘走向專業的過程，更可以說從實驗到實際的體驗，希望舊雨新知能繼續指導，更感謝所有為OrzLab付出、參與討論與開發的朋友們。&lt;br /&gt;&lt;br /&gt;關於&lt;a href=&quot;http://0xlab.org/&quot;&gt;0xlab&lt;/a&gt;的資訊與動態，可參考以下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://0xlab.org/about.html&quot;&gt;About 0xlab&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://asleepfromday.wordpress.com/2009/05/30/what-we-are-doing-now-and-how-to-join-force/&quot; rel=&quot;bookmark&quot;&gt;What we are doing now, and how to join force.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;而原本&lt;a href=&quot;http://orzlab.blogspot.com/&quot;&gt;OrzLab&lt;/a&gt;的資源仍會公開存取 (只要hosting沒出問題)，但更新與軟硬體整合的部份，會全面移往&lt;a href=&quot;http://0xlab.org/&quot;&gt;0xlab&lt;/a&gt;，再次感謝！</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2158827806016111735/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/2158827806016111735' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2158827806016111735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2158827806016111735'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2009/06/orzlab-0xlab.html' title='從 OrzLab 移轉到 0xlab'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2706774192511959596</id><published>2007-12-11T22:46:00.000+08:00</published><updated>2007-12-12T01:02:03.918+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gtk+"/><category scheme="http://www.blogger.com/atom/ns#" term="midori"/><category scheme="http://www.blogger.com/atom/ns#" term="webkit"/><title type='text'>WebKit/QT &amp; WebKit/GTK+ on Ubuntu Linux初體驗</title><content type='html'>前兩篇「&lt;a href=&quot;http://orzlab.blogspot.com/2007/06/webkitgtk.html&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;WebKit&lt;/span&gt;的&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;Gtk&lt;/span&gt;+支援&lt;/a&gt;」與「&lt;a href=&quot;http://orzlab.blogspot.com/2007/11/owbwebkit.html&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;OWB&lt;/span&gt;：以&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;WebKit&lt;/span&gt;為基礎的嵌入式網路瀏覽器&lt;/a&gt;」介紹了些 &lt;a href=&quot;http://webkit.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;WebKit&lt;/span&gt;&lt;/a&gt;的開發現況後，這邊大概講一下在&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;Ubuntu&lt;/span&gt; Linux底下如何無痛進行初體驗。依據官方首頁的訊息，&lt;a href=&quot;http://webkit.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;WebKit&lt;/span&gt;&lt;/a&gt; 簡介如下：  &lt;blockquote&gt;&lt;a href=&quot;http://webkit.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;WebKit&lt;/span&gt;&lt;/a&gt;是一種&lt;b&gt;開放原始碼瀏覽器引擎&lt;/b&gt;，同時也是 Mac OS X 底下的&lt;a href=&quot;http://www.apple.com/safari/&quot;&gt;Safari&lt;/a&gt; 、 Dashboard、Mail、與其他Apple Mac OS X所使用的系統框架版本。&lt;a href=&quot;http://webkit.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;WebKit&lt;/span&gt;&lt;/a&gt;所使用的&lt;a href=&quot;http://www.kde.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;KDE&lt;/span&gt;&lt;/a&gt;函式庫&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;KHTML&lt;/span&gt;與&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;KJS&lt;/span&gt;是屬於HTML與JavaScript實做的分支。&lt;br /&gt;&lt;/blockquote&gt;先來體驗一下原生於&lt;a href=&quot;http://zh.wikipedia.org/wiki/Qt&quot;&gt;Qt&lt;/a&gt;的&lt;a href=&quot;http://webkit.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;WebKit&lt;/span&gt;&lt;/a&gt;瀏覽器，動手打造個「&lt;b&gt;&lt;i&gt;仿&lt;a href=&quot;http://www.apple.com/safari/&quot;&gt;Safari&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;」。以&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;Ubuntu&lt;/span&gt; Linux 7.10為例，操作程序如下：&lt;br /&gt;1. 先安裝編譯時所需的軟體與套件庫&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_14&quot;&gt;sudo&lt;/span&gt; apt-get install &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_15&quot;&gt;libqt&lt;/span&gt;4-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_16&quot;&gt;dev&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_17&quot;&gt;libxslt&lt;/span&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_18&quot;&gt;dev&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_19&quot;&gt;gperf&lt;/span&gt; bison &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_20&quot;&gt;libsqlite&lt;/span&gt;3-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_21&quot;&gt;dev&lt;/span&gt; flex build-essential subversion&lt;/blockquote&gt;2.取得Subversion中的原始碼 (筆者花了近20分鐘才下載完畢，所以請保持耐心)&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_22&quot;&gt;svn&lt;/span&gt; checkout http://svn.webkit.org/repository/webkit/trunk &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_23&quot;&gt;WebKit&lt;/span&gt;&lt;/blockquote&gt;3.建立一個&lt;a href=&quot;http://zh.wikipedia.org/wiki/Qt&quot;&gt;Qt&lt;/a&gt; for &lt;a href=&quot;http://webkit.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_24&quot;&gt;WebKit&lt;/span&gt;&lt;/a&gt;的瀏覽器&lt;br /&gt;(安裝的機器 Intel &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_25&quot;&gt;CoreDue&lt;/span&gt; L2300@1.5GHZ 跑了近45 min )&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_26&quot;&gt;QTDIR&lt;/span&gt;=/&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_27&quot;&gt;usr&lt;/span&gt;/share/qt4/ &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_28&quot;&gt;WebKit&lt;/span&gt;/&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_29&quot;&gt;WebKitTools&lt;/span&gt;/Scripts/build-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_30&quot;&gt;webkit&lt;/span&gt;&lt;/blockquote&gt;4.安裝完後，打以下指令開啟剛剛建立的瀏覽器。&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_31&quot;&gt;WebKit&lt;/span&gt;/&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_32&quot;&gt;WebKitBuild&lt;/span&gt;/Release/bin/&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_33&quot;&gt;QtLauncher&lt;/span&gt;&lt;/blockquote&gt;有圖有真相!!&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrIS3dUq-UaSIgorS2ruCKlSfqxgx2BHV-JPIy7mtdJ145HqnWbDdoiwrz0BHXnqsEe_Mbvo4j4WS2zANDeWHfgjXlXzrM3PO4rZR14TJkHqV6RxpQlZnULLn35A2f3Ps7JSRBwsxUglk/s1600-h/screenshot1.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrIS3dUq-UaSIgorS2ruCKlSfqxgx2BHV-JPIy7mtdJ145HqnWbDdoiwrz0BHXnqsEe_Mbvo4j4WS2zANDeWHfgjXlXzrM3PO4rZR14TJkHqV6RxpQlZnULLn35A2f3Ps7JSRBwsxUglk/s320/screenshot1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5142331755006399586&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;接著，嘗試原生於&lt;a href=&quot;http://www.gnome.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_34&quot;&gt;Gtk&lt;/span&gt;+&lt;/a&gt;的&lt;a href=&quot;http://webkit.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_35&quot;&gt;WebKit&lt;/span&gt;&lt;/a&gt;，不過這次就直接介紹個剛成立的一個新軟體專案 &lt;a href=&quot;http://software.twotoasts.de/?page=midori&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_36&quot;&gt;Midori&lt;/span&gt;&lt;/a&gt;來體驗一下 &lt;a href=&quot;http://webkit.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_37&quot;&gt;WebKit&lt;/span&gt;&lt;/a&gt;/&lt;a href=&quot;http://www.gnome.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_38&quot;&gt;Gtk&lt;/span&gt;+&lt;/a&gt;。&lt;blockqoute&gt;&lt;a href=&quot;http://software.twotoasts.de/?page=midori&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_39&quot;&gt;Midori&lt;/span&gt;&lt;/a&gt; 是一個輕量化的瀏覽器，有以下特點：&lt;br /&gt;&lt;/blockqoute&gt;&lt;ul&gt;&lt;li&gt;&lt;blockqoute&gt;完全採用&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_40&quot;&gt;Gtk&lt;/span&gt;+ 2.x打造&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;以&lt;a href=&quot;http://webkit.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_41&quot;&gt;WebKit&lt;/span&gt;&lt;/a&gt; &lt;/blockqoute&gt;進行快速網頁繪製&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;分頁、視窗與任務對話管理&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;書籤的儲存採用&lt;a href=&quot;http://pyxml.sourceforge.net/topics/xbel&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_42&quot;&gt;XBEL&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;搜尋框則基於&lt;a href=&quot;http://www.opensearch.org/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_43&quot;&gt;OpenSearch&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;可自訂前後選單動作&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;支援使用者腳本與樣式自訂&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;可透過 &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_44&quot;&gt;Lua&lt;/span&gt; scripts 擴充&lt;/blockqoute&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockqoute&gt;然而，這個專案目前還是屬於alpha測試版的狀態，所以可能會比較不穩定些，而且有些功能還沒實做出來。&lt;br /&gt;&lt;br /&gt;&lt;/blockqoute&gt;&lt;a href=&quot;http://software.twotoasts.de/?page=midori&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_45&quot;&gt;Midori&lt;/span&gt;&lt;/a&gt;目前則可透過apt的方式去安裝預先編譯的套件，但得先編輯設定：&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_46&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_47&quot;&gt;gedit&lt;/span&gt; /etc/apt/sources.list&lt;/blockquote&gt;然後加入以下兩行：&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;code&gt;deb http://ppa.launchpad.net/stemp/ubuntu gutsy main&lt;br /&gt;deb-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_48&quot;&gt;src&lt;/span&gt; http://ppa.launchpad.net/stemp/ubuntu gutsy main&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;儲存後離開，並進行更新：&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_49&quot;&gt;sudo&lt;/span&gt; apt-get update&lt;/blockquote&gt;然後就可安裝&lt;a href=&quot;http://software.twotoasts.de/?page=midori&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_50&quot;&gt;Midori&lt;/span&gt;&lt;/a&gt;：&lt;br /&gt;&lt;code&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_51&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_51&quot;&gt;sudo&lt;/span&gt; apt-get install &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_52&quot;&gt;midori&lt;/span&gt;&lt;/blockquote&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_52&quot;&gt;&lt;/span&gt;跑完後，就可以直接從「應用程式」裡的「網際網路」選單開啟&lt;a href=&quot;http://software.twotoasts.de/?page=midori&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_53&quot;&gt;Midori&lt;/span&gt;&lt;/a&gt; ，其執行時期的快照如下：&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDt6E452mTVUCDrntJmaNoFSrfb4n6lvBwhW3wOvULs3fHb_YFpdmWXMaK7lTXI60ogqDAPT34_K1cmdGGupfMEEPJHyuZAPVFWDVN3Sb_hWTERFeTrJFQmGnwLFrq-hmJ93sXclLoC_k/s1600-h/screenshot1.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDt6E452mTVUCDrntJmaNoFSrfb4n6lvBwhW3wOvULs3fHb_YFpdmWXMaK7lTXI60ogqDAPT34_K1cmdGGupfMEEPJHyuZAPVFWDVN3Sb_hWTERFeTrJFQmGnwLFrq-hmJ93sXclLoC_k/s320/screenshot1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5142730292789224658&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;本文改寫於以下兩篇文章：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lzy-blah.blogspot.com/2007/12/webkit-on-linux-ubuntu-gtk.html&quot;&gt;[軟體介紹] &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_54&quot;&gt;WebKit&lt;/span&gt; on Linux (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_55&quot;&gt;ubuntu&lt;/span&gt;) -- &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_56&quot;&gt;GTK&lt;/span&gt;+ 篇&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lzy-blah.blogspot.com/2007/12/webkit-on-linux-ubuntu-qt.html&quot;&gt;[軟體介紹] &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_57&quot;&gt;WebKit&lt;/span&gt; on Linux (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_58&quot;&gt;ubuntu&lt;/span&gt;) -- QT 篇&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2706774192511959596/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/2706774192511959596' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2706774192511959596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2706774192511959596'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/12/webkitqt-webkitgtk-on-linux-ubuntu.html' title='WebKit/QT &amp; WebKit/GTK+ on Ubuntu Linux初體驗'/><author><name>lzy</name><uri>http://www.blogger.com/profile/04728542796614839731</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFJLI6AOMuqjyiFEKEx7eQdX5sjMO4-rUNycADRDiwsWgdlJlkMV6ZcAgus5b5FlOjdfM1P-T7jTZFwMQo2SKBTeTfeVGvzYBbRXWkC6M1dki-bNFsREYQnie3zUPAaBA/s220/IMAG0169_r.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrIS3dUq-UaSIgorS2ruCKlSfqxgx2BHV-JPIy7mtdJ145HqnWbDdoiwrz0BHXnqsEe_Mbvo4j4WS2zANDeWHfgjXlXzrM3PO4rZR14TJkHqV6RxpQlZnULLn35A2f3Ps7JSRBwsxUglk/s72-c/screenshot1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-3156348567939681490</id><published>2007-11-20T09:13:00.000+08:00</published><updated>2007-11-20T21:24:39.663+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="revision control"/><category scheme="http://www.blogger.com/atom/ns#" term="svn"/><title type='text'>svn http, user-password and access control</title><content type='html'>&lt;p&gt;使用http protocol作為Subversion的URL，可利用apache的dav_svn module達成。&lt;/p&gt;&lt;blockquote&gt;dav是distribution authorization and versioning，為http協定的一個擴充&lt;/blockquote&gt;&lt;pre&gt;AuthUserFile  /etc/apache2/dav_svn.passwd&lt;br /&gt;AuthzSVNAccessFile /etc/apache2/dav_svn.authz&lt;/pre&gt;所以：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;要先準備好這兩個擋案，並依據.conf 的內容，擺在對應的路徑中&lt;/li&gt;&lt;li&gt;user-passwd file的內容是用 htpasswd  操作的，add user、change password都要用htpasswd來作&lt;/li&gt;&lt;li&gt;svn下各個目錄的存取權限就由dav_svn.authz設定，該檔案為純文字檔&lt;/li&gt;&lt;/ol&gt;Add User :&lt;pre&gt;htpasswd  &#39;target .passwd file&#39; user-name&lt;/pre&gt;這裡&#39;target.passwd file&#39;就是/etc/apache2/dav_svn.passwd.&lt;br /&gt;&lt;br /&gt;權限設定方式 ：&lt;blockquote&gt;&lt;pre&gt;[/]&lt;br /&gt;* =&lt;br /&gt;guest = r&lt;br /&gt;svntest = rw&lt;br /&gt;charles-chang = rw&lt;/pre&gt;&lt;/blockquote&gt;意思是對 [/] 目錄的權限設定：&lt;br /&gt;* - 所有人 - 無法access&lt;br /&gt;guest - 僅能讀取，無法修改&lt;br /&gt;svntest, charles-chang 都是一般user，可以讀取、修改。&lt;blockquote&gt;&lt;blockkquote&gt;當然，要用htpasswd把 guest, svntest, charles-chang都加到 user-passwd file 中&lt;/blockkquote&gt;&lt;/blockquote&gt;僅能讀取的user一樣可作check-out、add file等操作，但在commit時會出現error，svn log上也不會有該user的更動紀錄。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/3156348567939681490/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/3156348567939681490' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3156348567939681490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3156348567939681490'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/11/svn-http-user-password-and-access.html' title='svn http, user-password and access control'/><author><name>checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6952841985512802607</id><published>2007-11-20T08:59:00.000+08:00</published><updated>2007-11-20T12:32:24.356+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hg"/><category scheme="http://www.blogger.com/atom/ns#" term="revision control"/><title type='text'>使用hg內建的web server</title><content type='html'>&lt;p&gt;hg( &lt;a href=&quot;http://www.selenic.com/mercurial/wiki/&quot;&gt;Mercurial&lt;/a&gt;)內建 web server。&lt;br /&gt;&lt;br /&gt;一般使用方式如下：&lt;br /&gt;&lt;br /&gt;到已開啟好(hg init完畢)的repository (例如 c:\writeMLC)目錄下，執行以下指令：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;hg serve -p 8002&lt;/pre&gt;&lt;/blockquote&gt;然後開啟web browser，開啟以下網址： &lt;blockquote&gt;&lt;pre&gt;http://127.0.0.1:8002/&lt;/pre&gt;&lt;/blockquote&gt;即可看到該repository的資訊：&lt;br /&gt;&lt;a title=&quot;hg_serve.jpg&quot; href=&quot;http://flickr.com/photos/88606158@N00/2045090505&quot;&gt;&lt;img src=&quot;http://static.flickr.com/2170/2045090505_2ae912ec5c_d.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;此功能一方面可以作為command line模式的&quot;friendly front end&quot; ，另一方面，可以跟合作夥伴共享程式碼。&lt;br /&gt;&lt;br /&gt;若有多個repository ，就要用webdir-conf 這個選項。使用方式先編輯一個設定檔，指定web server path和repository的關聯性：&lt;br /&gt;編輯 一個檔案 (假設為webdirconf)&lt;blockquote&gt;&lt;pre&gt;[paths]&lt;br /&gt;writeMLC = C:\Whimery\DownloadWriteMLC&lt;br /&gt;UseYagarto = C:\Yagarto\UseYagarto&lt;br /&gt;BootRun = C:\BootRun\BootRun_Robert&lt;/pre&gt;&lt;/blockquote&gt;在啟動hg server時，加上以下參數：&lt;blockquote&gt;&lt;pre&gt;hg serve -p 8002 --webdir-conf webdirconf&lt;/pre&gt;&lt;/blockquote&gt;然後在web browser上的顯示會像是以下：&lt;br /&gt;&lt;img src=&quot;file:///C:/Documents%20and%20Settings/CharlesCY.Chang/My%20Documents/My%20Pictures/blog/hg_serve2.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;&lt;a title=&quot;hg_serve2.jpg&quot; href=&quot;http://flickr.com/photos/88606158@N00/2045913054&quot;&gt;&lt;img src=&quot;http://static.flickr.com/2345/2045913054_fc58e0ef40_d.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;每個 repository 可以自行設定一些特徵，諸如：web style、authorization、zip download support，指定方式即利用每個 repository 下.hg目錄裡的hgrc 檔 (要自行建立與編輯）。&lt;br /&gt;&lt;br /&gt;以下就是為了方便所寫的hgrc內容：&lt;blockquote&gt;&lt;pre&gt;[web]&lt;br /&gt;style = gitweb&lt;br /&gt;allow_archive = bz2 gz zip&lt;br /&gt;push_ssl = false&lt;br /&gt;allow_push = *&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt; 說明：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;改用git style 的wen interface (較詳細)&lt;/li&gt;&lt;li&gt;增加 bz2、gz、zip的source snapshoot下載&lt;/li&gt;&lt;li&gt;不使用ssl (因為不知道在windows command 下怎麼用 :P)&lt;/li&gt;&lt;li&gt;允許經由http作push的動作 (允許他人check-in)&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6952841985512802607/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/6952841985512802607' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6952841985512802607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6952841985512802607'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/11/hg-web-server.html' title='使用hg內建的web server'/><author><name>checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-26593500121487513</id><published>2007-11-13T03:46:00.000+08:00</published><updated>2007-11-13T11:49:15.249+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="openmoko"/><category scheme="http://www.blogger.com/atom/ns#" term="webkit"/><title type='text'>OWB：以WebKit為基礎的嵌入式網路瀏覽器</title><content type='html'>幾個月前介紹了「&lt;a href=&quot;http://orzlab.blogspot.com/2007/06/webkitgtk.html&quot;&gt;WebKit的Gtk+支援&lt;/a&gt;」新進展，現在&lt;a href=&quot;http://www.openmoko.org/&quot;&gt;openmoko&lt;/a&gt;已正式採納為web engine，提供為網頁瀏覽與RSS reader使用。&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;a href=&quot;http://www.sand-labs.org/owb&quot;&gt;Origyn Web Browser&lt;/a&gt; (OWB)則是另一個以&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;為基礎的開放原始碼網路瀏覽器 (BSD license + LGPL + misc)，針對嵌入式環境做了許多微調與修正，引入一層簡化描繪與底層操作的軟體層，稱為&lt;/span&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;a href=&quot;http://www.sand-labs.org/OWBAL_doc/&quot; target=&quot;new&quot;&gt;&lt;u&gt;OWB Abstraction Layer&lt;/u&gt;&lt;/a&gt; (OwBal)，得以銜接&lt;/span&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;與消費性電子產品需求。具體來說，原本的&lt;/span&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;需要heavyweight UI toolkit去作widget/font描繪，但&lt;/span&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;a href=&quot;http://www.sand-labs.org/owb&quot;&gt;OWB&lt;/a&gt;以&lt;/span&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;a href=&quot;http://www.sand-labs.org/OWBAL_doc/&quot; target=&quot;new&quot;&gt;&lt;u&gt;OwBAL&lt;/u&gt;&lt;/a&gt;巧妙地補齊介面部份，並允許lightweight UI呈現，也就是 &quot;render itself by its own toolkit&quot;。詳細的技術介紹可參考「&lt;/span&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:85%;&quot;  &gt;&lt;a href=&quot;http://www.linuxdevices.com/articles/AT5894497943.html&quot;&gt;Introducing OWB, an open-source browser for consumer devices&lt;/a&gt;」一文。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;建構方式如下：&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;取得開發中的程式碼：&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;blockquote&gt;svn checkout http://www.sand-labs.org/svn/trunk owb&lt;/blockquote&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;以&lt;a href=&quot;http://www.cmake.org/&quot;&gt;CMake&lt;/a&gt;調整組態設定：&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;blockquote&gt;cd owb &amp;amp;&amp;amp; ccmake .&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;    具體情況如下圖：&lt;/span&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzJaDVbmWy5cD1YUod0WvEqgwj0UfeyKrA2OSpnCZL0grsHgs0NZR5EouSQZp4IQGnMDenX3efFKrB27p1JPzhSoX_KlT90ZdPBRdzIozpbu68034CZGO0Y-gGXl8y6iN5mLmmEr14bp4/s1600-h/ccmake-owb.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzJaDVbmWy5cD1YUod0WvEqgwj0UfeyKrA2OSpnCZL0grsHgs0NZR5EouSQZp4IQGnMDenX3efFKrB27p1JPzhSoX_KlT90ZdPBRdzIozpbu68034CZGO0Y-gGXl8y6iN5mLmmEr14bp4/s320/ccmake-owb.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5132047324444753858&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;        按下[c]則可進行組態設定，過程中會提示缺乏的開發套件。&lt;br /&gt;  最後按下[g]即可產生必要的Makefile&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;開始建構，當然是執行make&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;目錄下應該會有名為&quot;owb&quot;的執行檔。注意，建議安裝&lt;a href=&quot;http://www.freedesktop.org/wiki/Software/CJKUnifonts&quot;&gt;CJKUnifonts&lt;/a&gt;以支援中日韓文顯示支援，並且需作以下修正：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Index: BAL/Implementations/Fonts/freetype/BTFont.cpp&lt;br /&gt;===================================================================&lt;br /&gt;--- BAL/Implementations/Fonts/freetype/BTFont.cpp       (revision 147)&lt;br /&gt;+++ BAL/Implementations/Fonts/freetype/BTFont.cpp       (working copy)&lt;br /&gt;@@ -114,7 +114,7 @@&lt;br /&gt;int size = static_cast&amp;lt;int&amp;gt;(m_fontDescription.specifiedSize());&lt;br /&gt;&lt;br /&gt;if (m_fontMap[size] == 0)&lt;br /&gt;-        m_fontMap[size] = d-&amp;gt;open(&quot;/usr/share/fonts/owb.ttf&quot;, size, 0);&lt;br /&gt;+        m_fontMap[size] = d-&amp;gt;open(&quot;/usr/share/fonts/truetype/arphic/ukai.ttf&quot;, size, 0);&lt;br /&gt;d-&amp;gt;m_ttfFont = m_fontMap[size];&lt;br /&gt;if (d-&amp;gt;m_ttfFont == NULL)&lt;br /&gt;   logml(MODULE_FONTS, LEVEL_EMERGENCY, make_message(&quot;open : \n&quot;));&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;以「&lt;a href=&quot;http://blog.linux.org.tw/%7Ejserv/&quot;&gt;Jserv&#39;s blog&lt;/a&gt;」為例，&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;a href=&quot;http://www.sand-labs.org/owb&quot;&gt;OWB&lt;/a&gt;的呈現效果如下：&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid1R_21LKA6C70lDVi2IXdSM8hYZZ61NSJdGbRejhvoVQWGmvPjhZOZ7fSt7VFlZ66PmhG7lvn__yAsxcVWkJ02aSIqPrJQHDhwlNAZ9Mr_nvK8Wibfvk8Q3k8iEYbYWy7P_TwnVe_a_g/s1600-h/owb.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid1R_21LKA6C70lDVi2IXdSM8hYZZ61NSJdGbRejhvoVQWGmvPjhZOZ7fSt7VFlZ66PmhG7lvn__yAsxcVWkJ02aSIqPrJQHDhwlNAZ9Mr_nvK8Wibfvk8Q3k8iEYbYWy7P_TwnVe_a_g/s320/owb.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5132049201345462226&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;在組態設定時，指定了以&lt;a href=&quot;http://www.freetype.org/&quot;&gt;FreeType&lt;/a&gt;作為字型描繪引擎 (即 &quot;WEBKIT_USE_FONTS_FREETYPE&quot; 選項)，以取得更加的顯示效果。可發現網頁周圍沒有視覺捲軸 (但可使用方向鍵或PageUp/Down)，而且HTML按鈕則是&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;a href=&quot;http://www.sand-labs.org/owb&quot;&gt;OWB&lt;/a&gt;自行描繪的，輸入框亦然。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;int&gt;&lt;/int&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;a href=&quot;http://www.sand-labs.org/owb&quot;&gt;OWB&lt;/a&gt;現在的空間使用量與網頁呈現正確度相當不錯，除了使用&lt;a href=&quot;http://curl.haxx.se/&quot;&gt;curl&lt;/a&gt;的方式還需要效能調整外，整體已相當穩定，目前的參考圖形引擎實做為&lt;a href=&quot;http://www.libsdl.org/&quot;&gt;SDL&lt;/a&gt;，官方網頁提供相當好的移植文件「&lt;/span&gt;&lt;a class=&quot;wiki&quot; href=&quot;http://www.sand-labs.org/owb/wiki/OwbalPortingGuide&quot;&gt;OWBAL Porting Guide to Embedded Systems&lt;/a&gt;」。依據發展方向，&lt;int&gt;&lt;/int&gt;&lt;span style=&quot;;font-family:Arial,Helvetica;font-size:100%;&quot;  &gt;&lt;a href=&quot;http://www.sand-labs.org/owb&quot;&gt;OWB&lt;/a&gt;適合應用於Set-Top Box、數位電視、Kiosk等環境，並且對&lt;a href=&quot;http://www.directfb.org/&quot;&gt;DirectFB&lt;/a&gt;的支援也開始進行。&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/26593500121487513/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/26593500121487513' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/26593500121487513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/26593500121487513'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/11/owbwebkit.html' title='OWB：以WebKit為基礎的嵌入式網路瀏覽器'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzJaDVbmWy5cD1YUod0WvEqgwj0UfeyKrA2OSpnCZL0grsHgs0NZR5EouSQZp4IQGnMDenX3efFKrB27p1JPzhSoX_KlT90ZdPBRdzIozpbu68034CZGO0Y-gGXl8y6iN5mLmmEr14bp4/s72-c/ccmake-owb.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-5355024398348904895</id><published>2007-10-21T22:47:00.000+08:00</published><updated>2007-11-13T04:35:01.520+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arm"/><category scheme="http://www.blogger.com/atom/ns#" term="eglibc"/><category scheme="http://www.blogger.com/atom/ns#" term="openembedded"/><category scheme="http://www.blogger.com/atom/ns#" term="openmoko"/><title type='text'>EGLIBC於S3C2410 ARM SoC的體驗</title><content type='html'>稍早於「&lt;a href=&quot;http://orzlab.blogspot.com/2007/05/eglibc.html&quot;&gt;EGLIBC初探&lt;/a&gt;」提過&lt;a href=&quot;http://www.codesourcery.com/&quot;&gt;CodeSourcery&lt;/a&gt;與諸多系統廠商合作，針對&lt;a href=&quot;http://www.gnu.org/software/libc/libc.html&quot;&gt;glibc&lt;/a&gt;的改進計畫 (自2.5版開始)，實做出更適合Embedded環境的C Library實做 ── &lt;a href=&quot;http://www.eglibc.org/&quot;&gt;EGLIBC&lt;/a&gt;，前文也提及快速建構的script，而&lt;a href=&quot;http://www.openembedded.org/&quot;&gt;OpenEmbedded&lt;/a&gt;也正式納入對&lt;a href=&quot;http://www.eglibc.org/&quot;&gt;EGLIBC&lt;/a&gt;的支援。所以現在要建構與測試都可以相當快速，以下是參考的option groups組態：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;a href=&quot;http://blog.linux.org.tw/%7Ejserv/&quot;&gt;jserv&lt;/a&gt;@venux:/home/moko/build$ cat ../org.openembedded.dev/packages/glibc/eglibc-svn/option-groups.config&lt;br /&gt;# This file sets default values for all option group variables&lt;br /&gt;# mentioned in option-groups.def; see that file for a description of&lt;br /&gt;# each option group.&lt;br /&gt;&lt;br /&gt;OPTION_EGLIBC_ADVANCED_INET6 = n&lt;br /&gt;OPTION_EGLIBC_BSD = n&lt;br /&gt;OPTION_EGLIBC_CATGETS = n&lt;br /&gt;OPTION_EGLIBC_CHARSETS = n&lt;br /&gt;OPTION_EGLIBC_DB_ALIASES = n&lt;br /&gt;OPTION_EGLIBC_ENVZ = n&lt;br /&gt;OPTION_EGLIBC_FSTAB = n&lt;br /&gt;OPTION_EGLIBC_GETLOGIN = n&lt;br /&gt;OPTION_EGLIBC_INET = y&lt;br /&gt;OPTION_EGLIBC_LIBM = y&lt;br /&gt;OPTION_EGLIBC_LOCALES = n&lt;br /&gt;OPTION_EGLIBC_LOCALE_CODE = n&lt;br /&gt;OPTION_EGLIBC_NIS = n&lt;br /&gt;OPTION_EGLIBC_NSSWITCH = y&lt;br /&gt;OPTION_EGLIBC_RCMD = n&lt;br /&gt;OPTION_EGLIBC_SPAWN = n&lt;br /&gt;OPTION_EGLIBC_SUNRPC = n&lt;br /&gt;OPTION_EGLIBC_UTMP = y&lt;br /&gt;OPTION_EGLIBC_UTMPX = n&lt;br /&gt;OPTION_EGLIBC_WORDEXP = n&lt;br /&gt;OPTION_POSIX_REGEXP = y&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;具體的細節可參考Jim Blandy發表於mailing-list的文章「&lt;a href=&quot;http://www.eglibc.org/archives/patches/msg00345.html&quot;&gt;EGLIBC size measurements for option groups&lt;/a&gt;」，&lt;a href=&quot;http://www.eglibc.org/&quot;&gt;EGLIBC&lt;/a&gt;透過option groups可讓C runtime的建構更加模組化，可輕易挑選Embedded環境所需的特徵，大幅降低code size與memory footprint，以常見組態來說，後者相較於&lt;a href=&quot;http://www.gnu.org/software/libc/libc.html&quot;&gt;glibc&lt;/a&gt;縮減為85%。筆者實際在&lt;a href=&quot;http://www.openmoko.org/&quot;&gt;openmoko&lt;/a&gt; GTA01bv4硬體 (based on S3C2410 ARM SoC)測試，在Smartphone的使用情境中，free memory從原本58444 bytes (glibc) 增加到67404 bytes (eglibc)，幅度達13%，功能卻沒有因此打折，這與&lt;a href=&quot;http://www.uclibc.org/&quot;&gt;uClibc&lt;/a&gt;或其他小型的C Runtime來說，是很大的優勢。&lt;br /&gt;&lt;br /&gt;取得筆者建構的&lt;a href=&quot;http://www.eglibc.org/&quot;&gt;EGLIBC&lt;/a&gt;-based &lt;a href=&quot;http://www.openmoko.org/&quot;&gt;openmoko&lt;/a&gt; 2007.2 image：&lt;a href=&quot;http://people.openmoko.org/jserv/images/&quot;&gt;http://people.openmoko.org/jserv/images/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/5355024398348904895/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/5355024398348904895' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5355024398348904895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5355024398348904895'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/10/eglibcs3c2410-arm-soc.html' title='EGLIBC於S3C2410 ARM SoC的體驗'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6620712943938612011</id><published>2007-08-27T22:20:00.000+08:00</published><updated>2007-08-29T17:44:08.620+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="irc"/><category scheme="http://www.blogger.com/atom/ns#" term="irssi"/><category scheme="http://www.blogger.com/atom/ns#" term="screen"/><title type='text'>教學：透過screen + irssi使用IRC</title><content type='html'>最近身旁許多在上 &lt;a href=&quot;http://zh.wikipedia.org/wiki/IRC&quot;&gt;IRC&lt;/a&gt; (Internet Relay Chat)的朋友都問我哪個IRC client 比較好用？其實，只要問過我的，而且又是UNIX-like的系統使用者時，基本上都會被我推薦&lt;a href=&quot;http://www.irssi.org/&quot;&gt;irssi&lt;/a&gt;這個command mode的純文字IRC程式。若有server可用的朋友們，更是會被我力推screen + irssi的組合。好處是，可以遠端持續掛著IRC，到哪邊都可以ssh進去繼續看IRC log，這樣真的很方便，也不用擔心因為沒開自己的電腦，就看不到別人的對話或別人要留給自己的訊息。&lt;br /&gt;&lt;br /&gt;以下是針對irssi這軟體所寫的簡易基本介紹與使用和一些需要使用到IRC與&lt;a href=&quot;http://www.gnu.org/software/screen/&quot;&gt;GNU screen&lt;/a&gt;的基本指令，如需IRC或screen的其他更詳細指令與資料，文末會補上相關連結，如有不足，歡迎補充。&lt;br /&gt;&lt;br /&gt;irssi的程式安裝不贅述，可由apt-get或yum等工具自套件庫裡面找尋並安裝。&lt;br /&gt;&lt;br /&gt;先在這邊建立第一次使用screen + irssi操作IRC的朋友們觀念，確定遇到的問題跟操作，該是由screen還是由irssi的程式部份來處理，或者本身只是IRC上的指令操作罷了。screen只是方便讓使用者可以利用server不關機的優勢，讓irssi可以連續開著不中斷，使得下次再透過screen來接軌回到上次開啟還未被關閉的irssi來繼續IRC這樣子。所以，這樣看下面的簡介操作後比較不會搞混狀況，如果請教朋友也比較能問到問題處。&lt;br /&gt;&lt;br /&gt;以下例子皆以irssi 0.8.10或以上版本，經實驗都可順利執行，且都以在&lt;a href=&quot;http://freenode.net/&quot;&gt;FreeNode&lt;/a&gt;上的#orzlab IRC channel 為例。&lt;br /&gt;&lt;br /&gt;(如果不掛 screen 者，這一段請直接跳過) 首先ssh login到server後，請輸入：&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;screen -RD&lt;/code&gt;&lt;br /&gt;-R            Reattach if possible, otherwise start a new session.&lt;br /&gt;-D (-r)       Detach and logout remote (and reattach here).&lt;/blockquote&gt;然後會進入到新開啟的screen，並且screen會自動開啟一個新的window讓我們使用，接下來直接輸入：&lt;br /&gt;&lt;code&gt;irssi&lt;/code&gt;&lt;br /&gt;就會在screen底下的第一個視窗執行irssi這隻程式。&lt;br /&gt;&lt;br /&gt;如果沒有要掛著screen執行irssi的朋友，那直接輸入&lt;br /&gt;&lt;code&gt;irssi&lt;/code&gt;&lt;br /&gt;就可以直接執行 irssi 這隻程式。&lt;br /&gt;&lt;br /&gt;進入irssi後，直接在提示輸入字元處輸入&lt;br /&gt;&lt;code&gt;/connect irc_server&lt;/code&gt;&lt;br /&gt;就會直接連到該個IRC server，例如：&lt;br /&gt;&lt;code&gt;/connect irc.freenode.net&lt;/code&gt;&lt;br /&gt;這樣就會直接連接到freenode的IRC server上，此時，可以先在這邊修改自己要在該IRC server 上的暱稱，如果要修改，則輸入以下格式：&lt;br /&gt;&lt;code&gt;/nick you_want_nickname&lt;/code&gt;&lt;br /&gt;例如當我輸入&lt;br /&gt;&lt;code&gt;/nick lzy&lt;/code&gt;&lt;br /&gt;時，那我顯示出來的暱稱將會是「lzy」的字樣( irssi 預設的暱稱會是 login 的使用者名稱)。&lt;br /&gt;搞定暱稱後，接著我們就可以加入其他頻道了。&lt;br /&gt;只要輸入&lt;br /&gt;&lt;code&gt;/j #channel_name&lt;/code&gt;&lt;br /&gt;就可以直接加入了，例如：&lt;br /&gt;&lt;code&gt;/j #orzlab&lt;/code&gt;&lt;br /&gt;這樣就完成加入#orzlab這個IRC channel(即&lt;a href=&quot;http://orzlab.blogspot.com/&quot;&gt;OrzLab&lt;/a&gt;的主要IRC channel)，如果該IRC channel需要key/password的話，則輸入：&lt;br /&gt;&lt;code&gt;/j #channel_name password&lt;/code&gt;&lt;br /&gt;如果要離開單一IRC channel ，則直接輸入&lt;br /&gt;&lt;code&gt;/wc&lt;/code&gt;&lt;br /&gt;就可以離開這個IRC頻道。&lt;br /&gt;若是要離開一個IRC server的連線，則輸入&lt;br /&gt;&lt;code&gt;/disconnect irc_server_name&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;剛剛是教如何連線，現在則是教一些常用的熱鍵與功能。&lt;br /&gt;先來看圖說故事一下：&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH1W4HXnHix1ezwrCIAr64PFNl1I6gkXEmLhl0RsOxAZVE3FCepXYtSmzUGj05KZ8wipsWgjN210m06J-UU5NpcBQxhV77o4z7vO2VE99oWnjb3Mlc_R-rGP3T7yiNiXCEgkyrhsCilgE/s1600-h/irssi.png&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH1W4HXnHix1ezwrCIAr64PFNl1I6gkXEmLhl0RsOxAZVE3FCepXYtSmzUGj05KZ8wipsWgjN210m06J-UU5NpcBQxhV77o4z7vO2VE99oWnjb3Mlc_R-rGP3T7yiNiXCEgkyrhsCilgE/s400/irssi.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5100677963358599570&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;上面的這張圖，我們在&lt;br /&gt;&lt;code&gt;[Act: 1,2,4,6,9,10]&lt;/code&gt;&lt;br /&gt;這邊發現了幾個不一樣的標示數字，Act這一欄位會提示你在第幾編號的channel上對話狀況，而你還沒切換到該IRC channel 上觀看。顏色對應的意思如下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;灰色一般體的是代表有人登入或登出此 irc channel (如 1,9,10)&lt;/li&gt;&lt;li&gt;白色粗體的是代表有人正在此 irc channel 上談話(如 4,6)&lt;/li&gt;&lt;li&gt;灰色粗體的則是有人在對話中提起你的名字或者呼叫你，總之就是有出現你的名字(如 2)&lt;/li&gt;&lt;/ul&gt;這是基本識別，再來是知道哪個channel有什麼狀況後，就是切換到該IRC channel上查看：&lt;br /&gt;&lt;blockquote&gt;Alt + 1~0 對應 1~10 的 irc channel 編號；&lt;br /&gt;Alt + q~p 對應 11~20 的 irc channel 編號；&lt;br /&gt;Ctrl + n/p 可切換 上/下 一個 irc channel；&lt;br /&gt;按鍵盤上的 PageUP/PageDn 可以直接切換 上/下 頁訊息。&lt;/blockquote&gt;如發現有編碼上的問題，需要轉編碼的話，則可輸入&lt;br /&gt;&lt;code&gt;/recode add #channel_name code_type&lt;/code&gt;&lt;br /&gt;例如要把#orzlab的UTF-8格式加入，則輸入&lt;br /&gt;&lt;code&gt;/recode add #orzlab utf8&lt;/code&gt;&lt;br /&gt;即可加入此頻道的編碼格式。&lt;br /&gt;然後輸入&lt;br /&gt;&lt;code&gt;/recode&lt;/code&gt;&lt;br /&gt;就可以看到加入的編碼列表。&lt;br /&gt;(註：因 /recode add會寫入到設定檔裡，所以僅需要寫入一次即可)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; color: rgb(102, 0, 204);font-size:130%;&quot; &gt;Ｑ＆Ａ TIME：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ｑ：如何同時有連接多個IRC server呢？又該怎樣切換不同IRC server來加入該server的IRC channel呢？&lt;br /&gt;Ａ：&lt;blockquote&gt;請直接再下一次&lt;code&gt; /connect irc_server &lt;/code&gt; 就可以再連接一個新的 irc server ，然後按&lt;code&gt;Alt + 1&lt;/code&gt;切換到第一個的特殊頻道上，再按 &lt;code&gt;Ctrl + x&lt;/code&gt;來切換目前要下達指令的 IRC server名稱。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如何查看該頻道的所有人呢？&lt;br /&gt;Ａ：&lt;blockquote&gt;請下達&lt;code&gt;/who&lt;/code&gt;的IRC指令即可，然後也是一樣按&lt;code&gt;Alt + 1&lt;/code&gt;切換到第一個伺服器狀態頻道上觀看&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如何查看單一網友的基本連線資料呢？&lt;br /&gt;Ａ：&lt;blockquote&gt;請下達&lt;code&gt;/whois nickname&lt;/code&gt;的IRC指令即可，然後也是一樣按Alt + 1切換到第一個伺服器狀態頻道上觀看&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如何傳送私人訊息到指定的朋友暱稱呢？&lt;br /&gt;Ａ：&lt;blockquote&gt;請下達&lt;code&gt;/msg nickname&lt;/code&gt;即可開啟一個名為指定暱稱的訊息頻道，一樣用&lt;code&gt;alt + 1~0/q~p&lt;/code&gt; 來選擇(注意：某些IRC server 會限制此功能，傳訊前請先確認是否有權限，如FreeNode)。&lt;/blockquote&gt;Ｑ：已使用上面所講的方式操作screen + irssi ，那我離開時，是否得下達任何參數或指令？又下次ssh login 後，需要打什麼指令呢？&lt;br /&gt;Ａ：&lt;blockquote&gt;為了簡化登入與記憶上的方面，採用-RD的參數，所以每次要離開irssi時，直接關閉該視窗就好，不需下達任何參數或指令。然後下一次ssh login後，只要打&lt;code&gt;screen -RD&lt;/code&gt; 這樣就可以接軌回上次開啟的irssi了。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如果遠端連線到編碼為Big5 的主機掛screen + irssi，且client端是採用UTF-8編碼時，編碼的亂碼問題如何處理？&lt;br /&gt;Ａ：&lt;blockquote&gt;首先，先處理screen的編碼問題，從utf8端要檢視big5 server時，先&lt;code&gt;Ctrl + a&lt;/code&gt;，然後輸入 &lt;code&gt;:encoding big5 utf8&lt;/code&gt; ，把從server將送出的Big5編碼先轉成UTF-8後再送出，然後輸入 &lt;code&gt;&quot;/recode&quot;&lt;/code&gt; 觀看頻道編碼是否指定正確，照上述設定，理應能順利顯示。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如果不小心按到&lt;code&gt;Ctrl + z&lt;/code&gt;或鍵盤上的Pause時， irssi被suspend了，該如何恢復？&lt;br /&gt;Ａ：&lt;blockquote&gt;請直接輸入&lt;code&gt;fg&lt;/code&gt;後按Enter ，就可以把剛剛被suspend的irssi給喚醒。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如果我要關閉一個irssi，該如何下達指令？&lt;br /&gt;Ａ：&lt;blockquote&gt;請直接關閉開啟irssi的screen ，請按&lt;code&gt;Ctrl + k&lt;/code&gt;來關閉screen window，然後可以再重新開啟一個全新的 rssi出來。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：要如何自動儲存IRC log ？&lt;br /&gt;Ａ：&lt;blockquote&gt;在需要auto irc log的IRC channel上輸入&lt;code&gt;/SET autolog ON&lt;/code&gt;，即可打開autolog功能。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：要如何指定當開啟irssi後，自動連接IRC server與自動連接IRC channel ？&lt;br /&gt;Ａ：&lt;blockquote&gt;直接看例子會比較快，先假設我要讓他自動用 lzy 的暱稱連接到Freenode的IRC server 上的#orzlab：&lt;br /&gt;&lt;code&gt;/network add -nick lzy Freenode&lt;br /&gt;/server add -auto -network Freenode irc.freenode.net 7000&lt;br /&gt;/channel add -auto #orzlab Freenode&lt;/code&gt;&lt;br /&gt;如果是需要key/password的IRC channel的話，則把最後一行改為&lt;br /&gt;&lt;code&gt;/channel add -auto #irc_channel_name irc_server_name password&lt;/code&gt;&lt;br /&gt;也就是直接把密碼接在後面就可以了&lt;br /&gt;如果需要自動對註冊的暱稱進行認證登入的話 (設口令為abcde)：&lt;br /&gt;&lt;code&gt;/network add -autosendcmd &quot;/^msg nickserv ident abcde;wait 2000&quot; Freenode&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如何讓irssi發出有人提起自己暱稱時的訊息警告(或響鈴)？&lt;br /&gt;Ａ：&lt;blockquote&gt;在irssi裡輸入以下指令，讓irssi適時發出聲音訊號：&lt;br /&gt;&lt;code&gt;/set beep_when_window_active ON&lt;br /&gt;/set beep_when_away ON&lt;br /&gt;/set beep_msg_level MSGS NOTICES DCC DCCMSGS HILIGHT&lt;br /&gt;/set bell_beeps ON&lt;/code&gt;&lt;br /&gt;在screen中按下&lt;code&gt;Ctrl +a&lt;/code&gt; ,  &lt;code&gt;Ctrl + g&lt;/code&gt;的按鍵，讓screen把irssi發出來的聲音訊號傳出來&lt;br /&gt;或參考Jedi的blog一文「&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://jedi.org/blog/archives/003191.html&quot;&gt;會響的 PuTTY + screen + irssi&lt;/a&gt;」&lt;br /&gt;&lt;/blockquote&gt;Ｑ：如何更換irssi的theme ？&lt;br /&gt;Ａ：&lt;blockquote&gt;把抓好的 theme(可從&lt;a href=&quot;http://irssi.org/themes&quot;&gt;官網&lt;/a&gt;選擇偏好的)，然後複製該theme的檔案到~/.irssi/路徑，並下達&lt;code&gt;/SET theme theme_name&lt;/code&gt;來更改該 theme 。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如何自訂irssi的IRC訊息熱鍵？&lt;br /&gt;Ａ：&lt;blockquote&gt;因為設定比較繁雜，故只提供&lt;a href=&quot;http://irssi.org/documentation/tips&quot;&gt;官網網址&lt;/a&gt;，讓有興趣的朋友可以自己去翻閱。&lt;/blockquote&gt;&lt;br /&gt;提供幾個額外補充的網站，沒標示語言者，皆為中文&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ircle.com/reference/commands.shtml&quot;&gt;irc 指令介紹 （英文）&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://irssi.org/documentation/startup&quot;&gt;irssi startup （英文）&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.shsh.ylc.edu.tw/index.php/Screen&quot;&gt;screen 基本觀念與操作介紹&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;※本文另有較鄉民版本：「&lt;a href=&quot;http://lzy-blah.blogspot.com/2007/08/screen-irssi-irc-q.html&quot;&gt;用 screen + irssi 上 irc 之鄉民版教學 (含Q&amp;amp;A)&lt;/a&gt;」</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6620712943938612011/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/6620712943938612011' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6620712943938612011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6620712943938612011'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/08/screen-irssi-irc.html' title='教學：透過screen + irssi使用IRC'/><author><name>lzy</name><uri>http://www.blogger.com/profile/04728542796614839731</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFJLI6AOMuqjyiFEKEx7eQdX5sjMO4-rUNycADRDiwsWgdlJlkMV6ZcAgus5b5FlOjdfM1P-T7jTZFwMQo2SKBTeTfeVGvzYBbRXWkC6M1dki-bNFsREYQnie3zUPAaBA/s220/IMAG0169_r.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH1W4HXnHix1ezwrCIAr64PFNl1I6gkXEmLhl0RsOxAZVE3FCepXYtSmzUGj05KZ8wipsWgjN210m06J-UU5NpcBQxhV77o4z7vO2VE99oWnjb3Mlc_R-rGP3T7yiNiXCEgkyrhsCilgE/s72-c/irssi.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-3381470806328206603</id><published>2007-07-31T08:51:00.000+08:00</published><updated>2007-09-24T13:18:12.196+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arm"/><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="s3c2410"/><title type='text'>SLC ECC Correction in S3C2440</title><content type='html'>&lt;p&gt;S3C24xx都內建有NAND Flash Controller，而且都支援NAND Flash Boot。NAND Flash 和NOR Flash 相比，除了不能用linear addressing的方式來access外，就是NAND Flash有「允許bit error」的特性，所以在實際的使用上，就要配合ECC 來correct。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;NAND Flash Controller中NFECCSAT0就NFESTAT0 (0x4E000024) ，用來表示以下：&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Main Area&lt;/li&gt;&lt;li&gt;Spare Area&lt;/li&gt;&lt;/ul&gt;兩個區域的「哪個byte中的哪個bit是錯的」，這就是NAND flash Controller提供的hardware ECC 功能。&lt;br /&gt;&lt;br /&gt;S3C2440只支援SLC，因為只有內建1 bite ECC，也就是說只能correct 1 bit的錯誤。S3C2443則內建4 bit的ECC，最多可以correct到4 bit的錯誤，所以可以support MLC。&lt;br /&gt;&lt;br /&gt;SLC和MLC除了1 time programming的限制外，就是容易產生的Error bit 數。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SLC保證 99.9999% 的chip 只會產生最多 1 bit的error。&lt;/li&gt;&lt;li&gt;MLC要到99.9999%的程度，會有 4 bit error。&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-weight: bold; color: rgb(153, 153, 153);font-size:85%;&quot; &gt;(以上的% 是僅供參考)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;回到NFESTAT0，要correct bit error，首先要check一下 error的狀態，以bit[1.0],[3.2] 分別代表兩個區域的error狀態：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;00 : No Error  - Lucky &lt;img src=&quot;http://benjamin0331.googlepages.com/smile.png&quot; style=&quot;border: 0pt none ; margin: 0pt; padding: 0pt;&quot; id=&quot;new&quot; /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;01 : 1 bit error - Correct 回來&lt;/li&gt;&lt;li&gt;10 : Multiple error - 沒救了&lt;/li&gt;&lt;li&gt;11 : ECC area error - 沒救 (?)&lt;/li&gt;&lt;/ul&gt;所以，需要作ECC correct的，只有在 01 的時候。&lt;br /&gt;&lt;br /&gt;然後讀出 Error bit 所在的byte位置和bit位置，分別是&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Byte 位置  bit[17:7], bit[24:21]&lt;/li&gt;&lt;li&gt;Bit 位置 bit[6:4], bit[20:18]&lt;/li&gt;&lt;/ul&gt;所以correction 的動作&lt;blockquote&gt;&lt;pre&gt; *(ReadBuf + ByteNo) ^= ( 1 &amp;lt;&amp;lt; BitNo ) &lt;hr /&gt;&lt;br /&gt;SECCD 就是 Spare-area ECC Data&lt;br /&gt;MECCD 就是 Main-area ECC Data&lt;/pre&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/3381470806328206603/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/3381470806328206603' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3381470806328206603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3381470806328206603'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/07/slc-ecc-correction-in-s3c2440.html' title='SLC ECC Correction in S3C2440'/><author><name>checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4287186746250145378</id><published>2007-07-30T08:49:00.000+08:00</published><updated>2007-08-04T20:11:04.610+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arm"/><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="s3c2410"/><title type='text'>Baudrate set in S3C2443</title><content type='html'>&lt;p&gt;S3C2442 的UART Baurdate可設定的更細微，提供兩個register :&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;UBDIV : 整數部份&lt;br /&gt;&lt;/li&gt;&lt;li&gt;UDIVSLOT  : 小數部份&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;設定的計算為：&lt;br /&gt;&lt;blockquote&gt;整數 + 小數 = SRCCLK/ (baudratex16)  - 1&lt;/blockquote&gt;以115200, SRCCLK=40MHz為例&lt;br /&gt;&lt;blockquote&gt;整數 + 小數 = 40000000/(115200 x 16) - 1 = 20.7&lt;/blockquote&gt;所以&lt;br /&gt;&lt;blockquote&gt;整數 = 20&lt;br /&gt;小數 = 0.7&lt;/blockquote&gt;因此，UBRDIV = 20&lt;br /&gt;&lt;br /&gt;小數部份與UDIVSLOT的關係是&lt;br /&gt;&lt;blockquote&gt;小數 = UDIVSLOT 中 bit是1的數量 / 16&lt;/blockquote&gt;所以&lt;br /&gt;&lt;blockquote&gt;0.7 = 1&#39;s number in UDIVSLOT  / 16&lt;br /&gt;1&#39;s number in UDIVSOLT = 11&lt;br /&gt;&lt;/blockquote&gt;UDIVSLOT有很多種組合，只要讓1的個數是11即可，Samsung建議，個數為11時，UDIVSOLT用 0xDDDD。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4287186746250145378/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/4287186746250145378' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4287186746250145378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4287186746250145378'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/07/baudrate-set-in-s3c2443.html' title='Baudrate set in S3C2443'/><author><name>checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2968291885159738833</id><published>2007-07-28T11:57:00.000+08:00</published><updated>2007-07-28T13:46:45.777+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arm"/><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="s3c2410"/><title type='text'>筆記：Into Idle</title><content type='html'>在設定完chip register，進入idle mode後，還要program co-processor：&lt;br /&gt;這一篇 &lt;a title=&quot;http://nocash.emubase.de/gbatek.htm&quot; href=&quot;http://nocash.emubase.de/gbatek.htm&quot;&gt;http://nocash.emubase.de/gbatek.htm&lt;/a&gt; 有說明到ARM CP15 Cache Control。&lt;blockquote&gt;&lt;pre&gt;Cn,Cm,Op2 Rd   Command&lt;br /&gt;C7,C0,4   0    Wait For Interrupt (Halt)&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;另外在linux kernel code中也有：&lt;blockquote&gt;&lt;pre&gt;/*&lt;br /&gt;* cpu_arm926_do_idle()&lt;br /&gt;*/&lt;br /&gt;.align 5&lt;br /&gt;ENTRY(cpu_arm926_do_idle)&lt;br /&gt;#if defined(CONFIG_CPU_ARM926_CPU_IDLE)&lt;br /&gt;mcr p15, 0, r0, c7, c0, 4  @ Wait for interrupt&lt;br /&gt;#endif&lt;br /&gt;mov pc, lr&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;ref  SystemIdle Function:&lt;br /&gt;MMU_WaitInterrupt(void)&lt;blockquote&gt;&lt;pre&gt;mov  r0,#0x0&lt;br /&gt;mcr  p15,0,r0,c7,c0,4&lt;br /&gt;mov pc,lr&lt;/pre&gt;&lt;/blockquote&gt;所以，這是要cache 進入idle mode，等待interrupt 的意思 ?&lt;br /&gt;&lt;br /&gt;S3C2412有三種Power mode:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;IDLE&lt;/li&gt;&lt;li&gt;STOP&lt;/li&gt;&lt;li&gt;SLEEP&lt;/li&gt;&lt;/ol&gt;是利用PWRMODECON 這個register來設定。&lt;br /&gt;&lt;br /&gt;說是這樣說，但是Samsung的BSP code卻沒有這樣作，完全沒用PWRMODECON，反而是用 PWRCFG。其中的STANDBYWFI 佔2 bit，設定後，可以進入：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IDLE : 01b&lt;/li&gt;&lt;li&gt;STOP : 10b&lt;/li&gt;&lt;li&gt;SLEEP : 11b&lt;/li&gt;&lt;/ul&gt;這種利用寫入 PWRMODECON 的STANDBYWFIbit 的作法，在datasheet 中稱作是  &quot;&lt;span style=&quot;font-weight: bold;&quot;&gt;mcr    p15, 0, r0, c7, c0, 4&lt;/span&gt;&quot;。&lt;br /&gt;&lt;p&gt;datasheet 中「很好心」地為大家提供一個 &quot;alternat method to set STANDBYWFI&quot; :就是用剛剛的cp15 command:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;pre&gt;mcr  p15,0,r0,c7,c0,4&lt;/pre&gt;&lt;/blockquote&gt;但是沒有說明相當於command的哪一個信號? 01b, 10b, 11b ?&lt;br /&gt;&lt;br /&gt;對照datasheet和BSP code：&lt;p&gt;&lt;/p&gt;STANDBYWFI 進入IDLE是 01b。&lt;br /&gt;BSP code用 mcr cp15 command 進入時，Rd (在此用r0)，卻是設定成 #0x0。&lt;br /&gt;&lt;p&gt;而且這是datasheet中有關&quot;進入STOP Mode&quot;的說明中寫的，BSP code卻是在進入idle mode 的code中使用的。&lt;/p&gt;接著有一個table，說明進入三個mode的方法：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IDLE - STANDBYWFI&lt;/li&gt;&lt;li&gt;STOP - CMD or STANDBYWFI&lt;/li&gt;&lt;li&gt;SLEEP - CMD or STANDBYWFI&lt;/li&gt;&lt;/ul&gt;STANDBYWFI 的意思大概可瞭解，雖然有點不清楚，那麼&quot;CMD&quot;是什麼 ?是寫入command到PWRMODECON的MODESLEEP 嗎?</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2968291885159738833/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/2968291885159738833' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2968291885159738833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2968291885159738833'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/07/into-idle.html' title='筆記：Into Idle'/><author><name>checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-7868529839892008624</id><published>2007-07-27T08:33:00.000+08:00</published><updated>2007-10-14T07:18:50.023+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arm"/><category scheme="http://www.blogger.com/atom/ns#" term="s3c2410"/><title type='text'>External Interrupt in S3C2440</title><content type='html'>&lt;p&gt;S3C2440的EINT (Extend INT)中斷示意&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/checkoblog/381542995/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/123/381542995_e0063f451a_o.jpg&quot; alt=&quot;s3c2440int&quot; height=&quot;144&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;EINT也算是SUB INTERRUPT，但是完全沒有相似於SUBSRCPND的解說。只有register 說明，而且是安排在GPIO的部份... &lt;span style=&quot;color: rgb(153, 153, 153);font-size:85%;&quot; &gt;(好吧，該GPIO的mux function有Interrupt，所以算OK吧)&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;偉大的EINT的registerg的說明中，EINTMASK、EINTPEND這兩個register只有table，沒有多餘的說明。&lt;br /&gt;&lt;br /&gt;本來以為EINTPEND是指「經過mask後的interrupt」，結果不是，是mask前。所以要處理 EINT時要這注意，要將 EINTPEND和EINTMASK「處理」後，才是真正產生中斷的中斷源。&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;跟trigger mode有關係，當是外部controller觸發，設定成edge trigger時，因為未回應外部controller時，trigger signal不會改變，不會再有一次edge波形發生，所以即使先ACK這個INT也沒關係。反而是未能要能正確，無漏失的catch next edge，ISR要儘快的ACK這個interrupt，免得edge 出現時，interrupt還未ACK而miss。&lt;br /&gt;&lt;br /&gt;.. 真是麻煩呀...&lt;br /&gt;&lt;br /&gt;這樣的連動是不是要用class包裝起來？當設定edge trigger，該isr先ACK。當設定level triiger，作post ACK?&lt;br /&gt;&lt;hr /&gt;回到上面的圖，SRCPND經過priority arbitration，Mask後，選出一個bit 到INTPND。實際產生中斷。&lt;br /&gt;&lt;br /&gt;INTPND和SRCPND都是要「手動」清除的。&lt;br /&gt;DataSheet (14. Interrupt Controller - Interrupt Pending Register) 是說..&lt;br /&gt;&lt;blockquote&gt;Like the SRCPND register, this reister has to be cleaned in interrupt service routine after cleaning the SRCPND register.&lt;/blockquote&gt;所以，中斷發生後，一定要clear SRCPND和INTPND。而且順序是&lt;br /&gt;&lt;ol&gt;&lt;li&gt;SRCPND&lt;/li&gt;&lt;li&gt;INTPND&lt;/li&gt;&lt;/ol&gt;原因和上面說的一樣..如果先clear到INTPND，但是SRCPND還沒清，則同一個中斷馬上又從SRCPND浮上來，導致一樣的INTPND。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/7868529839892008624/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/7868529839892008624' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/7868529839892008624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/7868529839892008624'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/07/external-interrupt-in-s3c2440.html' title='External Interrupt in S3C2440'/><author><name>checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8899437914734259724</id><published>2007-07-26T09:49:00.000+08:00</published><updated>2007-09-26T07:15:47.473+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="etsi"/><category scheme="http://www.blogger.com/atom/ns#" term="gsm"/><category scheme="http://www.blogger.com/atom/ns#" term="openmoko"/><title type='text'>SMS PDU</title><content type='html'>&lt;p&gt;ETSI (GSM 03.40 and GSM 03.38)中規範SMS的encoding可有以下幾類：&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;7 bit encoding：最多可以包含160個characters，其中每個character只用一個或兩個byte的 7-bit data來作encoding。7 - bit encoding table 在.. &lt;a href=&quot;http://www.dreamfabric.com/sms/default_alphabet.html&quot;&gt;http://www.dreamfabric.com/sms/default_alphabet.html&lt;/a&gt; 和ASCII Code比較後，除了0123456789、A-Z、a-z，和%$!*&amp;amp; &#39; &#39; 相同外，其他都不一樣。&lt;/li&gt;&lt;li&gt;8 bits encoding：最多可以包含140 個字。通常用作非文字SMS，而拿來當作Data傳輸使用。&lt;/li&gt;&lt;li&gt;16 bit encoding：最多只可以有 70 個&#39;字&#39;，是用來傳送Unicode text messages。 可以當作文字讀取。&lt;/li&gt;&lt;/ul&gt;另外，還規範傳送的方式(Mode)：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Text Mode&lt;/li&gt;&lt;li&gt;Pdu Mode&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;PDU (Protocol Description Unit)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PDU封包中，除了內文外，還包含其他的information，像是：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sender&lt;/li&gt;&lt;li&gt;SMS service center&lt;/li&gt;&lt;li&gt;time stamp&lt;/li&gt;&lt;/ul&gt;傳送的data是以&quot;hexa-decimal&quot; or &quot;decimal semi-octents&quot;。&lt;br /&gt;&lt;br /&gt;這個encoding有點麻煩，採用7 bit encoding是為了減少資料量。所以一個「字」就佔不滿一個byte，多的bit，就拿下一個「字」的bit，拿法是：&lt;br /&gt;&lt;blockquote&gt;從下一個「字」中 ，從後算起，還沒被拿走的bit 拿起。&lt;/blockquote&gt;這一篇文章，有很好的示範.. &lt;a href=&quot;http://www.dreamfabric.com/sms/hello.html&quot;&gt;http://www.dreamfabric.com/sms/hello.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8899437914734259724/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/8899437914734259724' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8899437914734259724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8899437914734259724'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/07/sms-pdu.html' title='SMS PDU'/><author><name>checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-635825925971149136</id><published>2007-06-29T23:18:00.000+08:00</published><updated>2007-06-30T11:33:04.167+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cross development"/><category scheme="http://www.blogger.com/atom/ns#" term="emulation"/><category scheme="http://www.blogger.com/atom/ns#" term="hacker"/><category scheme="http://www.blogger.com/atom/ns#" term="olpc"/><category scheme="http://www.blogger.com/atom/ns#" term="qemu"/><title type='text'>OLPC Hacking Meet-up心得</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR5DUixyW8VrTU9b9uZLgqjQ9CFYRioSx9ZGAJrESYa5QtS9r6nGTZR-FvE6NGDxlOLnBILc71HMQ4fGr_fM3DZucT1IT1-h2ZhJ-_MSccIM-L-GhRWN3-kXN0U3qoE62Hk7J3DcpOatk/s1600-h/p1010006.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR5DUixyW8VrTU9b9uZLgqjQ9CFYRioSx9ZGAJrESYa5QtS9r6nGTZR-FvE6NGDxlOLnBILc71HMQ4fGr_fM3DZucT1IT1-h2ZhJ-_MSccIM-L-GhRWN3-kXN0U3qoE62Hk7J3DcpOatk/s400/p1010006.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5081508646785901586&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;經過十天的等待，於於完成了這次「&lt;a href=&quot;http://orzlab.blogspot.com/2007/06/olpc-hack-meet-up-day.html&quot;&gt;OLPC Hack Meet-Up Day&lt;/a&gt;」的活動。活動期間，感謝jollen、jserv、PingYeh、 Andrew、...等人提供不少對活動的經驗和建議。這段期間也感謝BV1AL、KC、olv、 FourDollars、linanne、aguai、wesley、thinker、yungyuc、gaso、yuren...等人的幫忙，才能順利將活動完成。&lt;br /&gt;&lt;br /&gt;活動開始，先是由Mat簡單介紹一下如何用&lt;a href=&quot;http://fabrice.bellard.free.fr/qemu/&quot;&gt;QEMU&lt;/a&gt;模擬&lt;a href=&quot;http://www.laptop.org/&quot;&gt;OLPC&lt;/a&gt;和測試程式。之後則是共同開發和交流討論。21:10-22:00 則是展示時間，首先是jserv展示了&lt;a href=&quot;http://fabrice.bellard.free.fr/qemu/&quot;&gt;QEMU&lt;/a&gt;用於模擬系統開發的各個應用，也現場展示了他最新的成果「&lt;a href=&quot;http://orzlab.blogspot.com/2007/06/tablet-webpad.html&quot;&gt;親手打造Tablet / WebPad&lt;/a&gt;」。接著，FourDollars也跟著和大家分享影音串流程式最新的發展，分析未來的驅勢。並同時展示了一個他參考&lt;a href=&quot;http://pcman.sayya.org/&quot;&gt;pcman&lt;/a&gt;的程式而改出來的影音外掛程式。可以非常方便的點選網路廣播並收聽，並發想也能整合進&lt;a href=&quot;http://www.laptop.org/&quot;&gt;OLPC&lt;/a&gt;，提高&lt;a href=&quot;http://www.laptop.org/&quot;&gt;OLPC&lt;/a&gt;的娛樂性。&lt;br /&gt;&lt;br /&gt;而在&lt;a href=&quot;http://wiki.tossug.org/OLPCHackMeetUp&quot;&gt;PCMan on OLPC&lt;/a&gt;這個主題上，由國內開發LiveCD(USB)系列的BV1AL將&lt;a href=&quot;http://cle.linux.org.tw/trac&quot;&gt;gcin&lt;/a&gt;在&lt;a href=&quot;http://www.laptop.org/&quot;&gt;OLPC&lt;/a&gt;上的成果作成LiveCD的映像檔，並設定好網路等相關部分。而&lt;a href=&quot;http://pcmanx.csie.net/&quot;&gt;PCMan X&lt;/a&gt;開發團隊的字型好手olv ，則是解決&lt;a href=&quot;http://www.laptop.org/&quot;&gt;OLPC&lt;/a&gt;上&lt;a href=&quot;http://pcmanx.csie.net/&quot;&gt;PCMan X&lt;/a&gt;中文字型顯示的問題。在經過一段時間修改，順利將兩方的成果結合起來，如下：&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieX2-Nmrppr-JSfpyPFGgANkAvnmzHiQsNMR9Y_dIrKMYV8YyWWO6eG3ekjmYgLtJs1ONowITecVcVKiNF5VhR1z_P9gQSTZdAt0thPwOQ8A5jKh0VE__uOp099LibXzenmlTx4c6x-rU/s1600-h/olpc-pcman-gcin.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieX2-Nmrppr-JSfpyPFGgANkAvnmzHiQsNMR9Y_dIrKMYV8YyWWO6eG3ekjmYgLtJs1ONowITecVcVKiNF5VhR1z_P9gQSTZdAt0thPwOQ8A5jKh0VE__uOp099LibXzenmlTx4c6x-rU/s400/olpc-pcman-gcin.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5081521321234392098&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;雖然還是有許多小缺點，但這張快照也象徵了我們用行動來實踐我們的信念，也呼應了活動發起的訴求。&lt;br /&gt;&lt;br /&gt;在活動期間，wesley、aguai、annelin... 也嘗試利用&lt;a href=&quot;http://fabrice.bellard.free.fr/qemu/&quot;&gt;QEMU&lt;/a&gt;建立多個&lt;a href=&quot;http://www.laptop.org/&quot;&gt;OLPC&lt;/a&gt;來模擬mesh network的測試環境。而Andrew、PingYeh、BV1AL、...在Tick偶然拿到&lt;a href=&quot;http://www.laptop.org/&quot;&gt;OLPC&lt;/a&gt;實機的root console後，也著手研究了&lt;a href=&quot;http://www.laptop.org/&quot;&gt;OLPC&lt;/a&gt;的系統更新、開機流程，相信不久之後也能見到相關的經驗分享。&lt;br /&gt;&lt;br /&gt;最後希望能持續將這些成果整理出來，以開放的方式回饋給upstream和社群。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/635825925971149136/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/635825925971149136' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/635825925971149136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/635825925971149136'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/olpc-hacking-meet-up.html' title='OLPC Hacking Meet-up心得'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKheeOl5zJxCtt2yk8kYw-n_PTPaL4HYGAK08rgwwNOglOgU4rvExdc6M1-0tAYhzntbrl-hZMwv-t72O3wRxbBxoQdTCYzUhf7it9VCyJUY4J2uB3SWpc_LkO8Gij1E0/s1600-r/icon-penguin.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR5DUixyW8VrTU9b9uZLgqjQ9CFYRioSx9ZGAJrESYa5QtS9r6nGTZR-FvE6NGDxlOLnBILc71HMQ4fGr_fM3DZucT1IT1-h2ZhJ-_MSccIM-L-GhRWN3-kXN0U3qoE62Hk7J3DcpOatk/s72-c/p1010006.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1691896259608956297</id><published>2007-06-28T02:44:00.000+08:00</published><updated>2007-06-28T03:22:03.506+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arm"/><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="emulation"/><category scheme="http://www.blogger.com/atom/ns#" term="mozilla"/><title type='text'>親手打造Tablet / WebPad</title><content type='html'>從事嵌入式系統開發，很大層面就是想體會「親手打造」的成就感。以往最大的問題就是進入的門檻較高，不僅得有開發硬體，還得要耗費大量的時間進行驗證測試，然而，這些繁瑣的過程會讓我們失焦，是的，最重要的部份，還是賦予硬體生命的軟體，這才是具備長遠價值的產物，一旦有了足夠的經驗與系統軟體，要在相容的硬體移植或加強功能設計，那就如魚得水了。&lt;br /&gt;&lt;br /&gt;之前選定一個用以「練功」的題目「&lt;a href=&quot;http://orzlab.blogspot.com/2007/04/embedded-linux-mozilla.html&quot;&gt;構想：Embedded Linux + Mozilla&lt;/a&gt;」，作法可有很多種，不過筆者嘗試以系統模擬的途徑，驗證「&lt;a href=&quot;http://orzlab.blogspot.com/2007/03/blog-post_15.html&quot;&gt;視覺化系統模擬與偵錯&lt;/a&gt;」一文中提出的概念：引入針對嵌入式裝置的基礎建設，作以system prototype、進階分析，以及快速軟體開發之用。上個月則於討論群組提出具體的想法「&lt;span id=&quot;thread_subject_site&quot;&gt;&lt;a href=&quot;http://groups.google.com/group/orzlab/browse_thread/thread/9dbbc64174e01837&quot;&gt;RFC: Tablet/WebPad 參考設計&lt;/a&gt;」，目前已稍有成果，在Google Code Hosting上申請了新專案「&lt;/span&gt;&lt;a href=&quot;http://code.google.com/p/mind/&quot; style=&quot;text-decoration: none; color: rgb(0, 0, 0);&quot;&gt;mind - MIND stands for &quot;Mind Is Not a Device&lt;/a&gt;&quot;」，可透過&lt;a href=&quot;http://www.openembedded.org/&quot;&gt;OpenEmbedded&lt;/a&gt;的迷你子集合去建構整個Embedded Linux作業系統，並調整為Tablet / WebPad的系統組態，以Xscale與x86作為參考開發的硬體平台，本階段已可使用&lt;a href=&quot;http://fabrice.bellard.free.fr/qemu/&quot;&gt;Qemu&lt;/a&gt;為基礎的系統模擬進行驗證 (GNU Toolchain、Emulator，與Debugger均移植到Win32)，以下是運作中的展示畫面：&lt;br /&gt;&lt;div style=&quot;font-size: 95%; margin-top: 3px;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVrwifiOueUkgfd6T-4gh7B-fg_K30wRHneuxn6072oiOwVrSxAZvn0EyJ1gl9KFkYKlk-2LPeLaYt-FrZL349K1544zFB_hVApf6zY9g9zXhaCVv5jtUGI0lgg5wrjI5XshUPAx_oNEw/s1600-h/mind-qemu-1.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVrwifiOueUkgfd6T-4gh7B-fg_K30wRHneuxn6072oiOwVrSxAZvn0EyJ1gl9KFkYKlk-2LPeLaYt-FrZL349K1544zFB_hVApf6zY9g9zXhaCVv5jtUGI0lgg5wrjI5XshUPAx_oNEw/s400/mind-qemu-1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5080821702098722610&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;這呈現了我們Embedded Linux平台的應用程式，即精簡版的&lt;a href=&quot;http://www.mozilla.org/&quot;&gt;Mozilla&lt;/a&gt; web browser，輔以XUL打造進階的使用者介面。這個系統主要是作概念性呈現，所以其他應用程式則相對單純，程式主畫面如下：&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPEtidX8SbD5aDbvaxgaA9xA2QxrvrZk8Ykx2E8qPLySY7Ier9_xHDX87j9sbzvYuS5IJnKST9x5CDk5RHncayZHa7JB0ldNPhTPTM5L4ahvF7N91GElJ_1h9YxoHD_WEFB9kvQ_tv6fw/s1600-h/mind-qemu-2.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPEtidX8SbD5aDbvaxgaA9xA2QxrvrZk8Ykx2E8qPLySY7Ier9_xHDX87j9sbzvYuS5IJnKST9x5CDk5RHncayZHa7JB0ldNPhTPTM5L4ahvF7N91GElJ_1h9YxoHD_WEFB9kvQ_tv6fw/s320/mind-qemu-2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5080823467330281282&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;待作事項：&lt;br /&gt;&lt;/div&gt;&lt;span id=&quot;thread_subject_site&quot;&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;thread_subject_site&quot;&gt;針對ARM平台規範新的虛擬硬體組態，加入Wifi / Bluetooth裝置模擬&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;thread_subject_site&quot;&gt;加入網路管理程式，如&lt;a href=&quot;http://linetconf.csie.net/&quot;&gt;Linetconf&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;thread_subject_site&quot;&gt;透過內建的&lt;a href=&quot;http://oprofile.sourceforge.net/&quot;&gt;OProfile&lt;/a&gt;進行深入的效能調校&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;thread_subject_site&quot;&gt;提供x86 LiveCD&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1691896259608956297/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/1691896259608956297' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1691896259608956297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1691896259608956297'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/tablet-webpad.html' title='親手打造Tablet / WebPad'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVrwifiOueUkgfd6T-4gh7B-fg_K30wRHneuxn6072oiOwVrSxAZvn0EyJ1gl9KFkYKlk-2LPeLaYt-FrZL349K1544zFB_hVApf6zY9g9zXhaCVv5jtUGI0lgg5wrjI5XshUPAx_oNEw/s72-c/mind-qemu-1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-806737648071472847</id><published>2007-06-27T00:09:00.000+08:00</published><updated>2007-06-30T11:27:03.841+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emulation"/><category scheme="http://www.blogger.com/atom/ns#" term="olpc"/><category scheme="http://www.blogger.com/atom/ns#" term="qemu"/><title type='text'>在Ubuntu / Debian上啟動kqemu加速OLPC的執行</title><content type='html'>Mat 已經寫了一篇簡單的文件「&lt;a href=&quot;http://orzlab.blogspot.com/2007/06/olpc-hello-world.html&quot;&gt;Hello World for OLPC&lt;/a&gt;」，只要照著做就可以很容易的把 OLPC 利用 qemu 模擬跑起來了。不過如果可以先把kqemu的kernel module裝起來的話，那麼執行OLPC的模擬會更加的快速順暢。以下簡單介紹Debian/Ubuntu上啟動kqemu的方法：&lt;br /&gt;&lt;br /&gt;1. 首先把相關的套件裝好&lt;br /&gt;&lt;blockquote&gt;# sudo aptitude install module-assistant&lt;/blockquote&gt;2. 然後利用module-assistant編譯出kqemu的kernel module並且安裝到系統中&lt;br /&gt;&lt;blockquote&gt;# sudo module-assistant auto-install kqemu-source&lt;/blockquote&gt;3. 最後載入模組並建立裝置節點&lt;br /&gt;&lt;blockquote&gt;# sudo modprobe kqemu major=250&lt;br /&gt;# sudo mknod /dev/kqemu c 250 0&lt;br /&gt;# sudo chmod 666 /dev/kqemu&lt;br /&gt;&lt;/blockquote&gt;然後就可以照著Mat寫的文件跟著做即可。&lt;br /&gt;&lt;br /&gt;另外~ 目前OLPC底層的作業系統是Fedora Core 6 (zod)，所以啦，知道FC6怎麼玩的，基本上OLPC也是一樣地玩。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/806737648071472847/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/806737648071472847' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/806737648071472847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/806737648071472847'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/ubuntudebian-kqemu-olpc.html' title='在Ubuntu / Debian上啟動kqemu加速OLPC的執行'/><author><name>$4</name><uri>http://www.blogger.com/profile/05027047996196141367</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4594709943165485928</id><published>2007-06-25T02:41:00.000+08:00</published><updated>2007-06-26T22:41:55.420+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arm"/><category scheme="http://www.blogger.com/atom/ns#" term="emulation"/><category scheme="http://www.blogger.com/atom/ns#" term="palm"/><category scheme="http://www.blogger.com/atom/ns#" term="qemu"/><title type='text'>模擬Linux on Palm 5</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjklJoXJDO3esLNHqifjuyfTs5cz6oeB-mnrLVjR8VnuXAJZnDPkqjOUOwkGkPYYGpdc6OsbZujfzqgZ4ztgRXIrIhcYeWAZIds8EchgDQMBKZV_d0cVtoCKiICfb-O1JZTb99te0Kw7Z4/s1600-h/qemu-palmld-fnw-launcher.png&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjklJoXJDO3esLNHqifjuyfTs5cz6oeB-mnrLVjR8VnuXAJZnDPkqjOUOwkGkPYYGpdc6OsbZujfzqgZ4ztgRXIrIhcYeWAZIds8EchgDQMBKZV_d0cVtoCKiICfb-O1JZTb99te0Kw7Z4/s320/qemu-palmld-fnw-launcher.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5079708098574816674&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.palm.com/intl/&quot;&gt;Palm&lt;/a&gt;產品家族自第五代開始，部份採用Intel Xscale處理器，日前&lt;a href=&quot;http://fabrice.bellard.free.fr/qemu/&quot;&gt;qemu&lt;/a&gt;的CVS tree也正式納入支援，於是熱血的hackers又開始鑽研是否可模擬&lt;a href=&quot;http://www.palm.com/intl/&quot;&gt;Palm&lt;/a&gt; 5的硬體，並在其上運作Linux。在一番嘗試後，&lt;a href=&quot;http://hhtinker.blogspot.com/&quot;&gt;Alex&lt;/a&gt;很高興跟大家宣佈這個訊息，請見「&lt;a href=&quot;http://hhtinker.blogspot.com/2007/06/testing-linux4palm-on-qemu.html&quot;&gt;Testing Linux4Palm on qemu&lt;/a&gt;」一文。他在                 &lt;a href=&quot;http://sourceforge.net/projects/hackndev/&quot;&gt;Hack&amp;Dev&lt;/a&gt;計畫 (目標即是將Linux移植到原本運作PalmOS的硬體環境) 的程式碼加入以&lt;a href=&quot;http://fabrice.bellard.free.fr/qemu/&quot;&gt;qemu&lt;/a&gt;為基礎的&lt;a href=&quot;http://www.palm.com/intl/&quot;&gt;Palm&lt;/a&gt; 5的硬體模擬器，目前支援的硬體列表如下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;palmtc - Palm Tungsten|C (PXA255)&lt;/li&gt;&lt;li&gt;palmz72 - Palm Zire72 (PXA270)&lt;/li&gt;&lt;li&gt;palmtx - Palm TX (PXA270)&lt;/li&gt;&lt;li&gt;palmld - Palm LifeDrive (PXA270)&lt;/li&gt;&lt;/ul&gt;取得與編譯方式如下：&lt;br /&gt;&lt;blockquote&gt;# svn co https://hackndev.svn.sourceforge.net/svnroot/hackndev/qemu/trunk qemu-hnd&lt;br /&gt;# cd qemu-hnd&lt;br /&gt;# ./configure --target-list=arm-softmmu --cc=gcc-3.4&lt;br /&gt;# make -j2&lt;br /&gt;&lt;/blockquote&gt;&lt;a href=&quot;http://trac.hackndev.com/projects/palmld/wiki/ReleaseFnW&quot;&gt;預先取得&lt;/a&gt;必要的核心與檔案系統影像檔，假設解開壓縮檔後位於./palm/0.0.3-fnw目錄，則可透過以下方式執行： (其中一個hardware model)&lt;br /&gt;&lt;blockquote&gt;$ cat RUN.sh&lt;br /&gt;#!/bin/sh&lt;br /&gt;BASE_DIR=`pwd`/palm/0.0.3-fnw&lt;br /&gt;./arm-softmmu/qemu-system-arm \&lt;br /&gt; -M &lt;span style=&quot;font-weight: bold;&quot;&gt;palmld&lt;/span&gt; \&lt;br /&gt; -kernel $BASE_DIR/zImage \&lt;br /&gt; -sd $BASE_DIR/Angstrom-opie-image-palmld-0.0.3-alpha.rootfs.ext2 \&lt;br /&gt; -append &quot;root=/dev/mmcblk0  psplash=false&quot;&lt;/blockquote&gt;啟動畫面如下：&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNKeY_nJY0kqBGB6la635PWbKhol8W5zjvMGRey0Lnx3nqc_PZTkrNCU7z4M_DHyjRTL_yCCSgcI4MJYeuSeKOhvqJCofJ2MvUgF8XfBeWLa6hIYYfkz8gGv6zeAVE8j4Nk8BZug9V52o/s1600-h/qemu-palmld-fnw-boot.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNKeY_nJY0kqBGB6la635PWbKhol8W5zjvMGRey0Lnx3nqc_PZTkrNCU7z4M_DHyjRTL_yCCSgcI4MJYeuSeKOhvqJCofJ2MvUgF8XfBeWLa6hIYYfkz8gGv6zeAVE8j4Nk8BZug9V52o/s320/qemu-palmld-fnw-boot.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5079706999063188850&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;過程中可透過&lt;a href=&quot;http://fabrice.bellard.free.fr/qemu/&quot;&gt;qemu&lt;/a&gt;作LCD panel與終端機顯示 (serial) 的切換，也就是 Ctrl-Alt-[13]。以下是終端機操作畫面：&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzacIsclLhMXoZLK79WbE1eN9sH5iFXQHr3BuKZBvjBQUAtY6jm8YfWAVQy6dlY50XvjkrdGJ3pH3OChRlIAXWHE9gr9gE2KBHDTt_a8FsNRYL_1WIv9wafjrbQ1bUDVAV4fGbh47qaqA/s1600-h/qemu-palmld-fnw-serial2.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzacIsclLhMXoZLK79WbE1eN9sH5iFXQHr3BuKZBvjBQUAtY6jm8YfWAVQy6dlY50XvjkrdGJ3pH3OChRlIAXWHE9gr9gE2KBHDTt_a8FsNRYL_1WIv9wafjrbQ1bUDVAV4fGbh47qaqA/s320/qemu-palmld-fnw-serial2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5079707157976978834&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;系統模擬越來越多元了。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4594709943165485928/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/4594709943165485928' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4594709943165485928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4594709943165485928'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/palm-5linux.html' title='模擬Linux on Palm 5'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjklJoXJDO3esLNHqifjuyfTs5cz6oeB-mnrLVjR8VnuXAJZnDPkqjOUOwkGkPYYGpdc6OsbZujfzqgZ4ztgRXIrIhcYeWAZIds8EchgDQMBKZV_d0cVtoCKiICfb-O1JZTb99te0Kw7Z4/s72-c/qemu-palmld-fnw-launcher.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1481846166790900306</id><published>2007-06-21T00:31:00.000+08:00</published><updated>2007-06-21T09:10:14.275+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emulation"/><category scheme="http://www.blogger.com/atom/ns#" term="olpc"/><category scheme="http://www.blogger.com/atom/ns#" term="qemu"/><title type='text'>Hello World for OLPC</title><content type='html'>&lt;span style=&quot;font-size:100%;&quot;&gt;許多朋友好奇前天的螢幕快照怎麼來的，其實過程並沒有想像中的那麼難。小弟就以作一個Hello World的程式作範例。&lt;br /&gt;&lt;br /&gt;在開始之前，先假設你手邊已俱備下列幾個主要的工具：&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;QEMU i386 ( OLPC的平台是x86 )&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;操作步驟如下：&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;1. 首先取得OLPC的映像檔：&lt;a href=&quot;http://olpc.download.redhat.com/olpc/streams/development/LATEST-STABLE-BUILD/devel_ext3/olpc-redhat-stream-development-devel_ext3.img.bz2&quot;&gt;按這裡下載&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;   &lt;span style=&quot;font-size:100%;&quot;&gt;2.  啟動qemu&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;  &lt;span style=&quot;font-size:100%;&quot;&gt;qemu &lt;tt&gt;-redir tcp:2222::22 &lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;olpc-redhat-stream-development-devel_ext3.img&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;其中 &quot;-redir tcp:2222::22&quot;的意思是將 QEMU中的OLPC的:22 Port和本機端的:2222 Port接在一起。&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;3.  取得終端機&lt;br /&gt;&lt;br /&gt;進入到OLPC視窗環境後，在OLPC的模擬環境按 “&lt;/span&gt;&lt;span style=&quot;font-weight: bold;font-size:100%;&quot; &gt;Ctrl-Alt-3&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;”，就會進到console模式（要回到視窗模式請按 &lt;/span&gt;&lt;span style=&quot;font-weight: bold;font-size:100%;&quot; &gt;“Ctrl-Alt-1”&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; ）。接著用root登入（預設沒有密碼），就可以順利取得root console。&lt;/span&gt;&lt;span style=&quot;font-weight: bold;font-size:100%;&quot; &gt;記得順便設定一下root的密碼&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;4. 下一步?&lt;br /&gt;&lt;br /&gt;根據&lt;a href=&quot;http://wiki.laptop.org/go/Emulating_the_XO/Help_and_tips#Development&quot;&gt;官網上的說明&lt;/a&gt;，下一步應該就可以直接連線進去，但是實際上卻不行，為什麼呢?因為這時候的OLPC還沒有將網路啟動，需要先設定網路才行。&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;5. 設定網路&lt;br /&gt;&lt;br /&gt;在root console下執行&lt;br /&gt;&lt;/span&gt;   &lt;span style=&quot;font-weight: bold;font-size:100%;&quot; &gt;&lt;blockquote&gt;ifup eth0&lt;/blockquote&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;或是&lt;br /&gt;&lt;/span&gt;   &lt;blockquote&gt;&lt;span style=&quot;font-weight: bold;font-size:100%;&quot; &gt;echo ifup eth0 &gt;&gt; /etc/rc.local&lt;/span&gt;    &lt;/blockquote&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;設成下次自動啟動&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;6. 確定啟動sshd&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;font-size:100%;&quot; &gt;&lt;blockquote&gt;    /etc/init.d/sshd start&lt;/blockquote&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;執行到這裡，我們已經有能力可以連線到QEMU中的OLPC了。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;7. 連線到OLPC&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;blockquote&gt;    ssh -X -o NoHostAuthenticationForLocalhost=yes -p 2222 root@localhost&lt;/blockquote&gt;其中 &quot;-X&quot; 是設定視窗轉送的參數。（可以執行xterm看看，所產生的視窗會將送到本機端來）。進行到這裡，我們已經有操控整個OLPC系統的能力，可以像使用一般Linux的方式去使用。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;8. 如何作一個最簡單的Hello World?&lt;br /&gt;&lt;br /&gt;目前OLPC並沒有內建gcc等開發工具。不過uname一下，可以發現OLPC的平台是i686。也就是說，我們可以先在本機端開發好程式，編譯好了再上傳執行即可。&lt;br /&gt;&lt;br /&gt;而在OLPC裡的視窗程式執行環境為gtk、pygtk。我們不妨利用現在的pygtk來作為試驗。在這裡我們就直接引用pygtk給的&lt;a href=&quot;http://www.moeraki.com/pygtktutorial/pygtk2tutorial/examples/helloworld.py&quot;&gt;官方範例&lt;/a&gt;。&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;9. 如何上傳?&lt;br /&gt;&lt;br /&gt;最直接的方式就是透過scp的方式上傳。&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;scp -o NoHostAuthenticationForLocalhost=yes -P 2222 ./helloworld.py \ root@localhost:/home/olpc/hello_world.py&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;10. 如何執行：&lt;br /&gt;&lt;br /&gt;由於OLPC的XWindow是用olpc這個使用者的身份執行。所以在執行前記得切換成olpc這個使用者&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; su - olpc&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;之後用視窗轉送的方式來執行&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; DISPLAY=:0.0 ./helloworld.py&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;就可以看到簡單的Hello World的畫面了&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4U4zWUNTNLwIjmpLyrcaFB3OVQy9rh7HmKKu9mtzIdRq0NcG6VDfYo_CtnsoZEaRhDz4sXO-STQzSk3Wors_Sf9zOJE7J120hA-ZvXSveD6Qb-MnwaJJeNEkOxFOG9W_rfEHQCt1AqfE/s1600-h/helloworld.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4U4zWUNTNLwIjmpLyrcaFB3OVQy9rh7HmKKu9mtzIdRq0NcG6VDfYo_CtnsoZEaRhDz4sXO-STQzSk3Wors_Sf9zOJE7J120hA-ZvXSveD6Qb-MnwaJJeNEkOxFOG9W_rfEHQCt1AqfE/s400/helloworld.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5078229054723054818&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1481846166790900306/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/1481846166790900306' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1481846166790900306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1481846166790900306'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/olpc-hello-world.html' title='Hello World for OLPC'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKheeOl5zJxCtt2yk8kYw-n_PTPaL4HYGAK08rgwwNOglOgU4rvExdc6M1-0tAYhzntbrl-hZMwv-t72O3wRxbBxoQdTCYzUhf7it9VCyJUY4J2uB3SWpc_LkO8Gij1E0/s1600-r/icon-penguin.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4U4zWUNTNLwIjmpLyrcaFB3OVQy9rh7HmKKu9mtzIdRq0NcG6VDfYo_CtnsoZEaRhDz4sXO-STQzSk3Wors_Sf9zOJE7J120hA-ZvXSveD6Qb-MnwaJJeNEkOxFOG9W_rfEHQCt1AqfE/s72-c/helloworld.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6100660454892289282</id><published>2007-06-20T14:41:00.000+08:00</published><updated>2007-06-22T11:32:42.619+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="i18n"/><category scheme="http://www.blogger.com/atom/ns#" term="kexec"/><category scheme="http://www.blogger.com/atom/ns#" term="olpc"/><title type='text'>多國語言支援的圖形化kboot</title><content type='html'>上週二 (Jun 12) 在TOSSUG聚會活動「&lt;a href=&quot;http://wiki.tossug.org/SignUp:2007-07&quot;&gt;2007 年第 7 場心得分享 - 組字的核心：字的結構&lt;/a&gt;」時，展示「&lt;a href=&quot;http://orzlab.blogspot.com/2007/06/xorzembedded.html&quot;&gt;Xorz/Embedded的動態組字實做&lt;/a&gt;」並提及可能的應用形式，我舉了關於boot loader的例子，作為說明動態組字技術在嵌入式系統的重要性。的確，隨著虛擬化技術與能源管理技術的突破，boot loader越來越多元，針對前者，得配合virtualization executive做出不同的啟動程序，而對後者來說，動態進階能源管理所建立的「中間資訊」(suspend to RAM / suspend to Disk)，也需要作合理的處理，這都需要高度彈性的boot loader涉入。另外，我們可從&lt;a href=&quot;http://www.dslinux.org/&quot;&gt;DSLinux&lt;/a&gt; (port Linux to the Nintendo DS gaming console) 與&lt;a href=&quot;http://cell.fixstars.com/ps3linux/&quot;&gt;PS3 Linux&lt;/a&gt; (SONY PlayStation 3的Linux移植) 等計畫發現，其移植的途徑不同以往，而是大膽採用&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;/kexec的機制來降低移植的難度，並提供多樣的應用方式，詳情可參考之前的文章「&lt;a href=&quot;http://orzlab.blogspot.com/2007/06/kboot.html&quot;&gt;kboot初探與模擬驗證&lt;/a&gt;」。&lt;br /&gt;&lt;br /&gt;早上在hack &lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;時，又想到上述議題，所以我決定作個概念性驗證的實做，驗證&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;這個「功能強大的Linux boot loader」對&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;的影響。以往的boot loader雖然實做了圖形介面，但功能是很侷限的，頂多只能產生靜態選單與底圖，筆者的想法就是，用一個簡單的圖形系統取而代之，提供真正有彈性的使用者互動機制，而我們有Xorz/Embedded。另外一個議題是，我們應該允許不同的開機方式，比方說透過網路或USB隨身碟，而且可在任何時間切換，使用情境很直覺，可以假設一開始運作缺乏中文系統的&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;預設Sugar UI，等有需要的時候，插入USB隨身碟，系統會彈出一個boot畫面，提示使用者是否要重新開機，因為透過kexec系統呼叫，這一切將會非常快速 (跳過BIOS與硬體初始化)，而USB隨身碟上面的系統當然就可以有中文或者其他客制化的環境。&lt;br /&gt;&lt;br /&gt;同時，筆者也想藉此彰顯在「&lt;a href=&quot;http://orzlab.blogspot.com/2007/05/blog-post.html&quot;&gt;組字技術與手持式裝置的新機會&lt;/a&gt;」一文表達的想法，為何我們千方百計想把CJK (中日韓) 語文整合到嵌入式系統設計呢？或許我們會犧牲美觀，但是可帶來對於多國語文最基本的顯示能力，這大可整合到boot loader或kernel中。聽起來很玄，俗語說：「一圖勝千言」，看看現在的進度：&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwmUeUTlvHAR5S3_9aRQGDNxVokMK_JbAWrZwMpDD0uNDKLPqAKb8mSaGXgjU0HEMC2lMGi4QVlwVYIaSkAhDfSXh7Xy-h_OOzz2iW1AtGkKP9dxsSQDTR_25k010FQBndYrAHb8CIdtM/s1600-h/kboot-xorz-embedded.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwmUeUTlvHAR5S3_9aRQGDNxVokMK_JbAWrZwMpDD0uNDKLPqAKb8mSaGXgjU0HEMC2lMGi4QVlwVYIaSkAhDfSXh7Xy-h_OOzz2iW1AtGkKP9dxsSQDTR_25k010FQBndYrAHb8CIdtM/s400/kboot-xorz-embedded.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5078045675648324962&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;以上呈現的想法就是動態讀取裝置列表 (透過udev與&lt;a href=&quot;http://www.freedesktop.org/wiki/Software/hal&quot;&gt;FreeDesktop HAL&lt;/a&gt;)，讓&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;的軟體建設得以作基本的probing處理，進而在小型的圖形環境中產生對應的動態選單與動作描述。圖片展示了讀取USB Disk，並取出其中的中文標籤，以選單方式讓使用者決定系統的啟動與否，甚至，我們可透過網路來啟動或更新整個&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;，這一切將可相當有彈性。&lt;br /&gt;&lt;br /&gt;附帶一提，右下角的圖示就是「&lt;a href=&quot;http://orzlab.blogspot.com/2007/04/orzlab_4287.html&quot;&gt;OrzLab的吉祥物&lt;/a&gt;」：「囧囧」，正準備跳出傳統的PC，走向多種嵌入式系統裝置的新應用。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6100660454892289282/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/6100660454892289282' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6100660454892289282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6100660454892289282'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/kboot_20.html' title='多國語言支援的圖形化kboot'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwmUeUTlvHAR5S3_9aRQGDNxVokMK_JbAWrZwMpDD0uNDKLPqAKb8mSaGXgjU0HEMC2lMGi4QVlwVYIaSkAhDfSXh7Xy-h_OOzz2iW1AtGkKP9dxsSQDTR_25k010FQBndYrAHb8CIdtM/s72-c/kboot-xorz-embedded.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4900900245196454410</id><published>2007-06-20T12:19:00.000+08:00</published><updated>2007-06-20T15:38:50.610+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="emulation"/><category scheme="http://www.blogger.com/atom/ns#" term="hacker"/><category scheme="http://www.blogger.com/atom/ns#" term="i18n"/><category scheme="http://www.blogger.com/atom/ns#" term="olpc"/><title type='text'>OLPC Hack Meet-Up Day</title><content type='html'>Mat稍早寫了「&lt;a href=&quot;http://orzlab.blogspot.com/2007/06/pcmanx-on-olpc.html&quot;&gt;PCManX on OLPC&lt;/a&gt;」一文，提到他最近對&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;所作的修改，並試圖移植知名的BBS連線程式&lt;a href=&quot;http://pcmanx.csie.net/&quot;&gt;PCManX&lt;/a&gt;到該平台上，不過礙於&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;底層未能提供足夠的基礎建設，所以Mat發起一個活動「&lt;a target=&quot;_blank&quot; rel=&quot;nofollow&quot; href=&quot;http://wiki.tossug.org/OLPCHackMeetUp&quot;&gt;OLPCHackMeetUp&lt;/a&gt;」，邀請更多同好齊聚hacking。以下引述介紹文字：&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;== 活動宗旨 ==&lt;br /&gt;國際知名的&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;（One Latop Per Child，百元電腦）計劃正在進行，硬體製造的業務也由國內的廣達代工。然而國內社群對&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;相關的知識並不多，軟體方面也參與的很少。 因此希望能藉著發起這個活動，引介自由軟體愛好者實際參與&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;的軟體開發，同時能互相交流軟體開發的經驗和心得，並以開放的方式回饋給&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;計劃與自由軟體社群。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;== 活動目標 ==&lt;br /&gt;在目標的選定上，我們希望能以一個近程目標來秀出我們的特有的特色軟體。於是我們選定開放的BBS軟體&lt;a href=&quot;http://pcmanx.csie.net/&quot;&gt;PCManX&lt;/a&gt;作為目標，同時也希望能在實作過程中，找出&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;的中文支援的方法：&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;將&lt;a href=&quot;http://pcmanx.csie.net/&quot;&gt;PCManX&lt;/a&gt;放進&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;環境執行，並調整成符合Sugar (&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;的外觀風格) 的應用程式風格&lt;br /&gt;&lt;/li&gt;&lt;li&gt;實作glibc locale + Fontconfig data + TTF + SCIM以提供中文顯示、輸入環境 &lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;p&gt;時間預定於June 28, 2007 (四)，晚間19:00~22:00舉辦，歡迎參與&lt;a href=&quot;http://orzlab.blogspot.com/&quot;&gt;OrzLab&lt;/a&gt;的討論「&lt;a href=&quot;http://groups.google.com/group/orzlab/browse_thread/thread/1f045973f966c408/&quot;&gt;OLPC Hack Meet-Up Day&lt;/a&gt;」。至少有以下議題需要思考：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;輸入法的型態：傳統的GTK+ IM module或Ajax web IM&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;的軟體開發方式與模擬器的整合&lt;/li&gt;&lt;li&gt;底層i18/L10n基礎建設&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;期待您的參與及指教！&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4900900245196454410/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/4900900245196454410' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4900900245196454410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4900900245196454410'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/olpc-hack-meet-up-day.html' title='OLPC Hack Meet-Up Day'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-9055894840844155192</id><published>2007-06-18T03:46:00.000+08:00</published><updated>2007-06-18T22:22:14.783+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="emulation"/><category scheme="http://www.blogger.com/atom/ns#" term="olpc"/><title type='text'>PCManX on OLPC</title><content type='html'>感謝&lt;a href=&quot;http://www.jollen.org/blog/&quot;&gt;jollen&lt;/a&gt;前輩的幫忙，讓我有進一步接觸&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;（傳說中的百元電腦）的機會。&lt;br /&gt;&lt;br /&gt;去年年底時就聽了好幾次&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;的新聞，能真的用到實品，興奮之情真是難以言喻。期待歸期待，真實世界的&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;用起來感覺倒還不是很順暢。可能是裡頭的軟體版本還沒跟到最新版，或是還不夠成熟，沒有完全發揮硬體完全的效能的原因吧。&lt;br /&gt;&lt;br /&gt;想要更新到最新的版本，然而手邊又沒有工具也是沒輒。幸好，拜模擬器之賜，軟體的開發不再死死侷限在硬體上。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;的組織已經有提供好相關的軟體模擬環境和開發工具，讓參與者即使沒有機器也能進行軟體測試與開發的工作。其相關的聯結如下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.laptop.org/go/Emulating_the_XO/Help_and_tips&quot;&gt;Emulating the XO/Help and tips&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;幸運的是，&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;的本質就是Linux系統，只有表面的介面看起來不太一樣，其他的系統設定跟程式環境都一樣。只要拿到&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;裡的super-user，理論上幾乎可以作到任何在Linux上的事。&lt;br /&gt;&lt;blockquote&gt;「理論上？！」&lt;/blockquote&gt;我們總是需要作一些嘗試來堅定我們的信念。&lt;br /&gt;BBS可說是咱在地特有的文化，適逢(Open-) PCMan於日前釋出2007的&lt;a href=&quot;http://pcman.openfoundry.org/&quot;&gt;最新版本&lt;/a&gt;。何不移稙一個BBS軟體到&lt;a href=&quot;http://laptop.org/&quot;&gt;OLPC&lt;/a&gt;上呢？經過幾天的嘗試，終於有了初步的成果如下：&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgocdrI6m5PnRa9HwF3LwyVwH-SQujzvTsWgil2N8mqJs2slb5xopkpE6Z6pWlapCbLOhGPPOMvEdrl7tZeymp0T8Es_bZEL73Ve5ZkUTAE7bqRRQ9R4h-3GJaUPdDSi67R1z275E9_888/s1600-h/pcman-on-olpc.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgocdrI6m5PnRa9HwF3LwyVwH-SQujzvTsWgil2N8mqJs2slb5xopkpE6Z6pWlapCbLOhGPPOMvEdrl7tZeymp0T8Es_bZEL73Ve5ZkUTAE7bqRRQ9R4h-3GJaUPdDSi67R1z275E9_888/s400/pcman-on-olpc.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5077122538003619026&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/9055894840844155192/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/9055894840844155192' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/9055894840844155192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/9055894840844155192'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/pcmanx-on-olpc.html' title='PCManX on OLPC'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKheeOl5zJxCtt2yk8kYw-n_PTPaL4HYGAK08rgwwNOglOgU4rvExdc6M1-0tAYhzntbrl-hZMwv-t72O3wRxbBxoQdTCYzUhf7it9VCyJUY4J2uB3SWpc_LkO8Gij1E0/s1600-r/icon-penguin.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgocdrI6m5PnRa9HwF3LwyVwH-SQujzvTsWgil2N8mqJs2slb5xopkpE6Z6pWlapCbLOhGPPOMvEdrl7tZeymp0T8Es_bZEL73Ve5ZkUTAE7bqRRQ9R4h-3GJaUPdDSi67R1z275E9_888/s72-c/pcman-on-olpc.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8346533693962996293</id><published>2007-06-16T20:11:00.000+08:00</published><updated>2007-06-17T23:01:31.874+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="emulation"/><category scheme="http://www.blogger.com/atom/ns#" term="kernel"/><category scheme="http://www.blogger.com/atom/ns#" term="kexec"/><category scheme="http://www.blogger.com/atom/ns#" term="qemu"/><title type='text'>kboot初探與模擬驗證</title><content type='html'>&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;本質上是個小型Linux作業系統，但功能卻是個boot loader，何解？&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;本身提供簡單的系統工具，支援檔案與網路操作，可自外界取得kernel image或其他檔案，進而&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;利用了kexec的機制，讓Linux kernel可快速重新啟動，於是具備boot loader的功能。&lt;br /&gt;&lt;br /&gt;kexec是一組新的系統呼叫，包含在2.6 kernel中 (視支援架構而定)，搭配其user-space的工具&lt;a href=&quot;http://www.xmission.com/%7Eebiederm/files/kexec/&quot;&gt;kexec-tools&lt;/a&gt;，則可在既有的Linux kernel (支援kexec系統呼叫) 中載入其他的kernel (不需要有kexec支援)，並給予必要之參數或檔案，如kernel command line與initrd等，這方面的資訊可參考以下文章：&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/cn/linux/l-kexec/&quot;&gt;使用 kexec 快速重啟 Linux&lt;/a&gt; (DeveloperWorks)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lwn.net/Articles/15468/&quot;&gt;kexec&lt;/a&gt; (LWN)&lt;/li&gt;&lt;/ul&gt;目前，kexec的硬體支援不限定x86，包含ARM與PPC都已有patch現身。那麼，如此的機制到底有什麼價值呢？以往的boot程序是很單純，清一色就是boot loader載入kernel，然後跳到user-mode或者是特定的工作，但現在的系統設計往往不是單一硬體、單一架構就可勝任的，諸如RAID或高負載的備援系統設計，都需要相當繁複的規劃，很顯然就非普通的boot loader可以應付，也很難修改&lt;a href=&quot;http://www.etherboot.org/&quot;&gt;Etherboot&lt;/a&gt;去圓滿符合需求，這時候，我們聯想到Linux，搭配到上述的kexec，不就是最美妙的boot loader嗎？在載入新的kernel之前，我們可作任何Linux能做的事情，像是載入firmware並進行設定、掛載NFS、掛載NTFS (透過&lt;a href=&quot;http://www.linux-ntfs.org/&quot;&gt;Linux-NTFS&lt;/a&gt;)、... 等等，只要能提供新kernel給&lt;a href=&quot;http://www.xmission.com/%7Eebiederm/files/kexec/&quot;&gt;kexec-tools&lt;/a&gt;工具作載入，最後再透過kexec系統呼叫，就可完成這個「功能強大的boot loader」的終極任務。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;就是這樣的概念驗證實做品，使用的情境相當多元。舉例來說，&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;想進行遠端開機 (Diskless)，但只有Wireless LAN或3G network可用，這時候就掛載對應的kernel module (包附在&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;中)，然後透過user-space的應用程式進行設定，等待連線建立並確保檔案擷取成功，接著就在裝置上執行自遠端取得核心。另一種情境也很有趣，以往Linux distribution都得作通用性與最佳化的妥協，前者往往得將系統劃分諸多核心模組與大量的設定程式，後者往往得針對硬體作多次嘗試，那麼，透過&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;可先啟動generic kernel，然後進行硬體偵測，參考所需的硬體與最佳化組態，重新編譯核心，最後將該核心載入，而這個過程可透過一些設計得當的效能評估工具，一次又一次的重複自動微調，有別於以往的boot loader。關於&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;的應用，可參考以下簡報：&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://jserv.sayya.org/kernel/kboot/kboot-lca2007-talk.pdf&quot;&gt;kboot - A Boot Loader Based on Kexec&lt;/a&gt; (&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;作者提供的slides)&lt;/li&gt;&lt;li&gt;於Linux Conference AU的&lt;a href=&quot;http://www.linux.org.au/conf/2007/talk/191.html&quot;&gt;演講錄影&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://jserv.sayya.org/kernel/kboot/elc07_yagi.pdf&quot;&gt;HTTP-FUSE PS3 Linux : an internet boot framework with kboot&lt;/a&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Linux_for_PlayStation_3&quot;&gt;PS3 Linux&lt;/a&gt; hackers)&lt;/li&gt;&lt;/ul&gt;後者給予我們極大的想像空間，當我們在新的硬體進行核心與週邊移植時，的確可先把能運作的最低限度核心置入&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;，然後再從不同的開發分支取得新核心並啟動，而這些過程都是透明的，而且不需要燒錄到傳統儲存裝置中，只要資源允許，可在RAM中做到繁瑣的事情。&lt;br /&gt;&lt;br /&gt;昨天做了一個小hack，將原本的&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt; (Version 11) 進行調整，更動紀錄如下：&lt;blockquote&gt;Enhancements:&lt;br /&gt;. Provided qemu specific configurations for verifying kboot&lt;br /&gt;. Enable Visibility for gcc-3.4 (symbol hidden)&lt;br /&gt;. Perform size optimizations against user-space packages.&lt;br /&gt;Upgraded:&lt;br /&gt;. kernel - 2.6.21&lt;br /&gt;. binutils - 2.17.50.0.16&lt;br /&gt;. uClibc - 0.9.29&lt;br /&gt;&lt;/blockquote&gt;我們甚至不需要單獨的x86機器，就能測試kexec與&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;，只要有能夠運作&lt;a href=&quot;http://fabrice.bellard.free.fr/qemu/&quot;&gt;Qemu&lt;/a&gt;的環境即可。首先，取得&lt;a href=&quot;http://orzlab.blogspot.com/&quot;&gt;OrzLab&lt;/a&gt;修改的版本：&lt;a href=&quot;http://people.debian.org.tw/%7Ejserv/kboot-11-orzlab.tar.bz2&quot;&gt;kboot-11-orzlab.tar.bz2&lt;/a&gt;，解開後直接打 &quot;make&quot; 就會建構整個系統，包含下載必要的套件、工具，以及編譯與安裝等。搭載於&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;的Linux kernel是精簡的版本，只提供TCP/IP stack、procfs、initrd/initramfs、ne2k NIC driver、VESA VGA framebuffer console等，但足以讓我們作許多應用。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://fabrice.bellard.free.fr/qemu/&quot;&gt;Qemu&lt;/a&gt;提供DHCP與TFTP server的模擬，完全省下我們佈署的難度，所以在模擬環境中，所需的操作甚至大幅少於實體。筆者提供了簡單的script名為 &quot;qemu-launcher.sh&quot;，直接執行即可，&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;啟動後的畫面如下：&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBeRJ_1_EfnlY2DAP7c-FPdDmPbGLsJy-j3DcZyH-FUXfZ4udb4WuHajN3AyLhLrj2JDIPqT-r3HA3CAilEZAU8Z6ke0abkwF_xeUZhAxEQKbaVit1wZLJNWMC0NNylWxz_pp9MxS5Jl4/s1600-h/kexec-on-qemu-1.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBeRJ_1_EfnlY2DAP7c-FPdDmPbGLsJy-j3DcZyH-FUXfZ4udb4WuHajN3AyLhLrj2JDIPqT-r3HA3CAilEZAU8Z6ke0abkwF_xeUZhAxEQKbaVit1wZLJNWMC0NNylWxz_pp9MxS5Jl4/s320/kexec-on-qemu-1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5076655313130231074&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;依據&lt;a href=&quot;http://fabrice.bellard.free.fr/qemu/user-doc.html&quot;&gt;Qemu的操作文件&lt;/a&gt;，預設透過模擬的DHCP server取得的IP是10.0.2.15，而server自己則是10.0.2.2，上面的畫面展示&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;已經載入一個小型的Linux kernel並出現提示訊息，等待命令操作，我們可打一些指令如下：&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQpUsovadMjXeDUXvN_F1il1s_gQViU96UJfjKbR-6l4z8JsU-DsFVxgYSNsGq2R1k0deiLtc5G5jT6ijJgLV-RbrGx2NzKJF5zRZ696nIJbsP0iTkIG_K8NnUeICcfMySUErQ9Wd-rfo/s1600-h/kexec-on-qemu-2.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQpUsovadMjXeDUXvN_F1il1s_gQViU96UJfjKbR-6l4z8JsU-DsFVxgYSNsGq2R1k0deiLtc5G5jT6ijJgLV-RbrGx2NzKJF5zRZ696nIJbsP0iTkIG_K8NnUeICcfMySUErQ9Wd-rfo/s320/kexec-on-qemu-2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5076656575850616130&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;看到kernel version 2.6.21與ping連線的狀況，除此之外，還有ssh/sshd可用，所以大可連線到某台server，重新編譯核心程式碼，然後放到某個網路伺服器上。接著我們就要來驗證kexec/&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;的功能。Qemu內建的TFTP server相當好用，直接對應於host上的目錄架構，而就Debian/Ubuntu來說，host的核心會在根目錄建立symbolic link，而vmlinuz與initrd.img就指向目前運作的核心與initrd。&lt;br /&gt;&lt;br /&gt;於是，我們在模擬的環境只要下簡單的一行指令即可載入並重新啟動： (鍵入粗體字部份)&lt;br /&gt;&lt;blockquote&gt;kboot: &lt;span style=&quot;font-weight: bold;&quot;&gt;tftp://10.0.2.2/vmlinuz&lt;/span&gt;&lt;/blockquote&gt;然後我們會看到 &quot;Start Kernel&quot; 的字樣跳過，然後我們就在Qemu的模擬環境看到啟動目前host上的核心：&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie9PlGeZK9Ye4KyjmI6OwG1eQQGsEkU0ihMACE9wVgW9xKS6Hiqpk9Rr2qDf2ePd2XEHgtrsXgwpCR0tInHb-7N5ZbysKdhJ_RhfOb2z7Cd40FFczi0BbAHpl3H2PchsiBRVL0H4wYsr4/s1600-h/kexec-on-qemu-3.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie9PlGeZK9Ye4KyjmI6OwG1eQQGsEkU0ihMACE9wVgW9xKS6Hiqpk9Rr2qDf2ePd2XEHgtrsXgwpCR0tInHb-7N5ZbysKdhJ_RhfOb2z7Cd40FFczi0BbAHpl3H2PchsiBRVL0H4wYsr4/s320/kexec-on-qemu-3.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5076658710449362258&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;因為在之前提供的qemu啟動script中省略root file system的指派，所以會停在kernel panic的畫面，不過這也達到我們的目的，驗證kexec/&lt;a href=&quot;http://kboot.sourceforge.net/&quot;&gt;kboot&lt;/a&gt;，有了這個便利的模擬測試環境，未來也可作不同的變化。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8346533693962996293/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/8346533693962996293' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8346533693962996293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8346533693962996293'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/kboot.html' title='kboot初探與模擬驗證'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBeRJ_1_EfnlY2DAP7c-FPdDmPbGLsJy-j3DcZyH-FUXfZ4udb4WuHajN3AyLhLrj2JDIPqT-r3HA3CAilEZAU8Z6ke0abkwF_xeUZhAxEQKbaVit1wZLJNWMC0NNylWxz_pp9MxS5Jl4/s72-c/kexec-on-qemu-1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-282734114155562982</id><published>2007-06-14T03:46:00.000+08:00</published><updated>2007-06-16T21:54:11.363+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="maemo"/><category scheme="http://www.blogger.com/atom/ns#" term="openmoko"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><category scheme="http://www.blogger.com/atom/ns#" term="webkit"/><title type='text'>WebKit的Gtk+支援</title><content type='html'>khtml是在&lt;a href=&quot;http://www.kde.org/&quot;&gt;KDE&lt;/a&gt; 2中，集合檔案檢視系統與網頁瀏覽器於一身的Konqueror內部主幹，是極為精美細膩的設計，如果說為一窺 KDE 技術最佳的進入點，那真是一點都不為過。由於khtml卓越的設計，很快就出現以khtml為基礎的網路瀏覽器專案，比方說運作於Qtopia (Core)之下的&lt;a href=&quot;http://www.konqueror.org/embedded/&quot;&gt;Konqueror/Embedded&lt;/a&gt;，而Apple Inc.也採納khtml，部分重新設計與最佳化就變成WebCore (MacOS X內建瀏覽器Safari的核心基礎建設)。而業界的應用也很廣泛，像是韓國嵌入式系統廠商&lt;a href=&quot;http://www.mizi.com/&quot;&gt;Mizi Research&lt;/a&gt;就曾將&lt;a href=&quot;http://www.konqueror.org/embedded/&quot;&gt;Konqueror/Embedded&lt;/a&gt;經過一番調整，成為相當強悍的瀏覽器。&lt;br /&gt;&lt;br /&gt;Apple Inc.提供了大量的修改，讓khtml的品質獲得極大的提昇，又在KDE開發者的斡旋下，Apple Inc.終於採納了社群開放發展的模式，於是KDE與Apple Inc.兩組開發人馬傾向共享&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;的程式碼基礎 (codebase)。接著，Nokia也宣佈&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;為基礎的&lt;a href=&quot;http://opensource.nokia.com/projects/S60browser/&quot;&gt;S60WebKit&lt;/a&gt; (針對S60手機平台)與&lt;a href=&quot;http://gtk-webcore.sourceforge.net/&quot;&gt;gtk+-webcore&lt;/a&gt; (針對Gtk+/X11環境)，並依循LGPL與BSD License的方式，將修改貢獻回&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;專案。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;在這三年內蓬勃發展，提供了許多不同軟硬體平台的移植，值得一提的是新出現的GDK (Gtk+的低階圖形處理部份) 移植，這意味著&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;可運作於GDK支援的環境，就嵌入式系統來說，我們會關注linux-fb與&lt;a href=&quot;http://www.directfb.org/&quot;&gt;DirectFB&lt;/a&gt;兩個Gtk+/GDK所支援的backend。在近半年來的發展，&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;的Gtk+/GDK移植已到堪用的地步，針對Nokia770/&lt;a href=&quot;http://maemo.org/&quot;&gt;Maemo&lt;/a&gt;與&lt;a href=&quot;http://www.openmoko.org/&quot;&gt;OpenMoko&lt;/a&gt;的硬體移植也出現成功案例。&lt;br /&gt;&lt;br /&gt;為了降低建構&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;/Gtk+的難度，我做了簡單的建構系統 (檔案：&lt;a href=&quot;http://jserv.sayya.org/khtml/webkit-build-script.tar.bz2&quot;&gt;webkit-build-script.tar.bz2&lt;/a&gt;)，允許從Subversion取出最新的發展版本，並作必要的設定，最後進行編譯。下載並解開後，直接執行以下script：&lt;br /&gt;&lt;blockquote&gt;# ./BUILD.sh&lt;/blockquote&gt;中間會透過apt-get取得必要的開發套件。建構完畢後，大致的執行畫面如下：&lt;br /&gt;(1) wiki.openmoko.org&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCrnJvRU1cAERA-eocP_0mI1kuD_Tz219ZD9uDap1PKPcUA_RBqmnQSEfbwH_w-mIW53f2CodbqtJOjlJrH2dzfcfUrFNARzE5-1yLtouJJ83O_hWsYVX5-3C01SNRfkg-eTvOxGxGShU/s1600-h/webkit-gtk-openmoko.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCrnJvRU1cAERA-eocP_0mI1kuD_Tz219ZD9uDap1PKPcUA_RBqmnQSEfbwH_w-mIW53f2CodbqtJOjlJrH2dzfcfUrFNARzE5-1yLtouJJ83O_hWsYVX5-3C01SNRfkg-eTvOxGxGShU/s320/webkit-gtk-openmoko.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5075643929936401666&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;(2) Google Maps&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSRUOkyGz6qmq_eTld02oWFUmVHOsyJx0cYiYdzo_dhFd4RK_iDLOucwYRliQ8h7oASIVwHxsU8KKCfJE7w8zBAOJLpkWoJrbxThwir7-kOLzQFdXM5NWWdH8UeZQFMur3MtJrbwkKGgw/s1600-h/webkit-gtk-maps.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSRUOkyGz6qmq_eTld02oWFUmVHOsyJx0cYiYdzo_dhFd4RK_iDLOucwYRliQ8h7oASIVwHxsU8KKCfJE7w8zBAOJLpkWoJrbxThwir7-kOLzQFdXM5NWWdH8UeZQFMur3MtJrbwkKGgw/s320/webkit-gtk-maps.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5075644307893523730&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;在&lt;a href=&quot;http://www.openmoko.org/&quot;&gt;OpenMoko&lt;/a&gt; GTA01也開始運作了，但還是有很多需要調整之處，這也是今年Google &lt;a href=&quot;http://code.google.com/soc/&quot;&gt;Summer of Code&lt;/a&gt;的項目之一，期待這方面的新進展。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/282734114155562982/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/282734114155562982' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/282734114155562982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/282734114155562982'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/webkitgtk.html' title='WebKit的Gtk+支援'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCrnJvRU1cAERA-eocP_0mI1kuD_Tz219ZD9uDap1PKPcUA_RBqmnQSEfbwH_w-mIW53f2CodbqtJOjlJrH2dzfcfUrFNARzE5-1yLtouJJ83O_hWsYVX5-3C01SNRfkg-eTvOxGxGShU/s72-c/webkit-gtk-openmoko.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2491055097775757592</id><published>2007-06-11T03:33:00.000+08:00</published><updated>2007-06-11T04:24:59.849+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="font"/><category scheme="http://www.blogger.com/atom/ns#" term="handwriting"/><category scheme="http://www.blogger.com/atom/ns#" term="openmoko"/><title type='text'>從Chrasis談手寫辨識引擎在移動裝置的機會</title><content type='html'>&lt;a href=&quot;http://www.gentoo.tw/&quot;&gt;Gentoo Taiwan&lt;/a&gt;的&lt;a href=&quot;http://palatis.blogspot.com/&quot;&gt;Palatis&lt;/a&gt;日前公開他發展中的手寫辨識引擎與訓練程式，可參考blog文章「&lt;a href=&quot;http://palatis.blogspot.com/2007/06/chrasis-010-alpha.html&quot;&gt;Chrasis 0.1.0 alpha!&lt;/a&gt;」，專案發展紀錄可參考&lt;span style=&quot;font-size:100%;&quot;&gt;「                                                  &lt;a href=&quot;http://chrasis.blogspot.com/&quot;&gt;Chrasis -           &lt;span&gt;Chinese Handwriting Recognition As-Is&lt;/span&gt;&lt;/a&gt;」，正如版本號所宣示的，現在還有很大的改進空間，不過已經初步可運作，以下是其訓練手寫辨識程式的執行畫面：&lt;br /&gt;&lt;/span&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIfDKTqax_o6_8YTr3Ppwzx9A4XOgVzHcW3h0u2HrEYGkzN8tS17ukNgyXWj48zIljy1CFlIsov7e8qKcWF9ujQ3kdiy8WcF4XOuBbgPA3L-bs3-QVdGZRBPXZF4zEWg7anASjy8DZPrs/s1600-h/chrasis.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIfDKTqax_o6_8YTr3Ppwzx9A4XOgVzHcW3h0u2HrEYGkzN8tS17ukNgyXWj48zIljy1CFlIsov7e8qKcWF9ujQ3kdiy8WcF4XOuBbgPA3L-bs3-QVdGZRBPXZF4zEWg7anASjy8DZPrs/s320/chrasis.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5074523059436262642&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;程式碼可透過Subversion存取：&lt;br /&gt;&lt;blockquote&gt;# svn co svn://svn.berlios.de/chrasis/Engine/libchrasis/trunk libchrasis&lt;br /&gt;# svn co svn://svn.berlios.de/chrasis/Linux/ChrasisTrainer/trunk ChrasisTrainer&lt;br /&gt;&lt;/blockquote&gt;libchrasis為手寫辨識引擎，其相依性有： (以Ubuntu 7.04為例)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;libxml++2.6-dev&lt;/li&gt;&lt;li&gt;libsqlite3-dev&lt;/li&gt;&lt;li&gt;sqlite3&lt;/li&gt;&lt;li&gt;libboost-dev&lt;/li&gt;&lt;/ul&gt;ChrasisTrainer顧名思義就是訓練程式，以Gtk+打造，其相依性如下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;libgtkmm-2.4-dev&lt;/li&gt;&lt;li&gt;llibxml++-2.6-dev&lt;/li&gt;&lt;/ul&gt;測試了幾個簡單的中文字，都能正確辨識，算是不錯了。當然，手寫辨識的議題很複雜，以下是筆者在wiki - &lt;a href=&quot;http://openvanilla.org/wiki/zh/index.php?title=ChineseInformationProcessing&quot;&gt;ChineseInformationProcessing&lt;/a&gt;的「手寫輸入」段落紀錄的部份資訊l：&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;Kanji Pad - Japanese Handwriting recognition &lt;a href=&quot;http://www.gtk.org/%7Eotaylor/kanjipad/&quot; class=&quot;external free&quot; title=&quot;http://www.gtk.org/~otaylor/kanjipad/&quot; rel=&quot;nofollow&quot;&gt;http://www.gtk.org/~otaylor/kanjipad/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Kanji Pad 的新網頁 (演算法不變，新增 GTK2 的移植) &lt;a href=&quot;http://fishsoup.net/software/kanjipad/&quot; class=&quot;external free&quot; title=&quot;http://fishsoup.net/software/kanjipad/&quot; rel=&quot;nofollow&quot;&gt;http://fishsoup.net/software/kanjipad/&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;以下為 rabit 的個人見解 (Modified by &lt;a href=&quot;http://openvanilla.org/wiki/zh/index.php?title=%E4%BD%BF%E7%94%A8%E8%80%85:Jserv&amp;amp;action=edit&quot; class=&quot;new&quot; title=&quot;使用者:Jserv&quot;&gt;User:jserv&lt;/a&gt;)： &lt;/p&gt; &lt;ul&gt;&lt;li&gt; KanjiPad 本身使用的辨識方法是很簡單的字典法，當使用者透過手寫版或滑鼠寫出字時，程式辨識出筆劃種類，並紀錄每個筆劃的順序，然後根據字典查出候選字。也因此，KanjiPad 根本不考慮寫出來的字形貌是否相似，只求筆劃順序相符。 &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;img src=&quot;http://www.opencjk.org/%7Eyumj/chinput/chinput_5.gif&quot; alt=&quot;chinput_5.gif&quot; /&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt; 以 Cinput (修改自 Kanji Pad) 的圖為例，「林」這個字辨識出來的候選字有「林、杯、枝、板、茂」，這幾個字右半邊的「木、不、支、反」筆劃順序都是跟「木」是相似的。這樣的演算法辨識 率是不高的，一但筆順不對，就很難辨識出來，不過話說回來，也不能太苛求 KanjiPad，因為它原本的用途就是日本人寫來學習漢字用的，可以說本來就是當作字典使用。 &lt;/li&gt;&lt;li&gt; 中文手寫辨識是難度相當高的, 困難的地方有二： &lt;ul&gt;&lt;li&gt; 就技術而言，在辨識方面會用到許多數學模型，如 Baysian Decision Theory hidden Markov models、類神經網路等，而辨識中文還必須對中文字作分析，找出每個中文字的特徵 (筆形、筆順等)，若要更精準，需拆解中文字成基本的部件，來作分析 (有點像漢字跡因工程)，這時就要處理寫字上連筆的問題，技術上有實現的複雜度，但或許還不是最困難的。 &lt;/li&gt;&lt;li&gt;   必須對每一個字的分析，建立資料庫，這是需要大量的成本 (包含時間、人力等)，中文字尤其複雜，除了大量的漢字，還有異體字、罕用字等，我想這對 open source 是最困難之處，這跟 open source license 中文字型的狀況有些類似。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;看似這是NP-Hard的問題，但如果我們思考Mobile 2.0對我們的衝擊，可以發現，大多數的手持裝置都需要手寫、筆跡、觸碰軌跡辨識的技術，而且也依賴原本在桌面系統的軟體元件與操作習慣，此時，危機反而就是轉機。具體來說，我們可思考「&lt;a href=&quot;http://chewing.csie.net/&quot;&gt;新酷音&lt;/a&gt;」一類智慧型輸入法如何移植到手持式裝置如PDA或SmartPhone一類的裝置，基本上，運算速度與儲存裝置都不是大問題 (早在兩年前，「&lt;a href=&quot;http://chewing.csie.net/&quot;&gt;新酷音&lt;/a&gt;」輸入法系統就證明在某隻SmartPhone上正確運作)，真正的難題反而是輸入法的「輸入」本身。是的，以「&lt;a href=&quot;http://chewing.csie.net/&quot;&gt;新酷音&lt;/a&gt;」來說，支援兩種基本符號：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;注音符號&lt;/li&gt;&lt;li&gt;拼音字母&lt;/li&gt;&lt;/ul&gt;這兩者背後也有學問，光是注音符號對照的鍵盤排列就可玩許多花樣，諸如許氏注音、倚天26鍵等等，拼音系統就不必多說，在台灣根本就是多頭馬車。以往，「&lt;a href=&quot;http://chewing.csie.net/&quot;&gt;新酷音&lt;/a&gt;」的開發者花了很大的心力去維護這些子系統的可用性與正確度，整合到libchewing (核心函式) 中，但如今要整合到手持式裝置，就面臨新問題：&lt;br /&gt;&lt;blockquote&gt;「如何將傳統鍵盤的行為導入輸入法系統？」&lt;/blockquote&gt;我們首先會想到手寫辨識，就目前的系統來說，多半會內建OSK (On-Screen Keyboard)，所以「&lt;a href=&quot;http://chewing.csie.net/&quot;&gt;新酷音&lt;/a&gt;」理所當然可架構於OSK之上，不過這與我們中文打字者的思維有很大的落差。何以此說？試想，「&lt;a href=&quot;http://chewing.csie.net/&quot;&gt;新酷音&lt;/a&gt;」的中文簡介是什麼？就是「智慧型注音輸入法」，透過統計與預測方式，大幅降低同音字詞的出現率，進而改善注音輸入的速度，使用鍵盤只是一種過度，真正使用者腦海中的思維，仍是「注音」(或拼音）本身，所以，日前筆者也跟&lt;a href=&quot;http://palatis.blogspot.com/&quot;&gt;Palatis&lt;/a&gt;聊到一種新途徑：&lt;br /&gt;&lt;blockquote&gt;「何不直接辨識注音符號，然後導入新酷音輸入法引擎去作猜字處理？」&lt;/blockquote&gt;這種技術難度對於&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://chrasis.blogspot.com/&quot;&gt;Chrasis&lt;/a&gt;一類的簡化手寫辨識引擎來說，算是綽綽有餘，如果不討論太複雜的連寫與草寫議題的話。某種角度來說，這說明了Mobile 2.0的思維方式：「過去的桌面技術有機會走入移動裝置之中」與「打破過去封閉技術的藩籬，個人也得以貢獻新的技術元素到移動裝置設計」，如今，我們有完全開放程式碼並開放手機規格與實做的&lt;a href=&quot;http://www.openmoko.org/&quot;&gt;openmoko&lt;/a&gt;、有高效率的動態組字技術，以及最寶貴的資源，也就是富有高度創意的自由軟體開發者，其整體的影響將會很有趣，手持裝置才正要作更有意義的應用，咱們拭目以待。&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2491055097775757592/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/2491055097775757592' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2491055097775757592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2491055097775757592'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/chrasis.html' title='從Chrasis談手寫辨識引擎在移動裝置的機會'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIfDKTqax_o6_8YTr3Ppwzx9A4XOgVzHcW3h0u2HrEYGkzN8tS17ukNgyXWj48zIljy1CFlIsov7e8qKcWF9ujQ3kdiy8WcF4XOuBbgPA3L-bs3-QVdGZRBPXZF4zEWg7anASjy8DZPrs/s72-c/chrasis.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4261477079325308579</id><published>2007-06-11T00:12:00.000+08:00</published><updated>2007-06-11T01:49:42.247+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="font"/><category scheme="http://www.blogger.com/atom/ns#" term="unicode"/><title type='text'>Xorz/Embedded的動態組字實做</title><content type='html'>之前的文章「&lt;a href=&quot;http://orzlab.blogspot.com/2007/05/xorzembeddedphone-ui.html&quot;&gt;Xorz/Embedded作為Phone UI&lt;/a&gt;」與「&lt;a href=&quot;http://orzlab.blogspot.com/2007/05/blog-post.html&quot;&gt;組字技術與手持式裝置的新機會&lt;/a&gt;」提到輕量級視窗圖形系統的實做進度，同時也思考組字技術帶來的新契機，無論是技術與實務規劃面來說，都還有很大的商議空間，但筆者認為這是必要的基礎建設。利用週末，終於在Xorz/Embedded實做出基本的中文動態組字功能，執行畫面如下：&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia1d7TDWVM6_GFoH6AFXd0K3AQyF_ODyGnXepW-fsSN9PWJHfdrT8lNe1t07GzoWMGL_JKXOhn5iMVJwvHP0uuYodRJTZs8yXwrz2jyEaS_nfNgyPFoKML0xtYIydh9rW-u7R9qZ8Z72U/s1600-h/xorz-embedded-chinese.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia1d7TDWVM6_GFoH6AFXd0K3AQyF_ODyGnXepW-fsSN9PWJHfdrT8lNe1t07GzoWMGL_JKXOhn5iMVJwvHP0uuYodRJTZs8yXwrz2jyEaS_nfNgyPFoKML0xtYIydh9rW-u7R9qZ8Z72U/s320/xorz-embedded-chinese.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5074481561462248658&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;以上展示「黃」(Unicode 0x9EC3)與其搭配不同組件 (部首) 的呈現方式。原本single.fnt (&lt;a href=&quot;http://www.ksana.tw/&quot;&gt;剎那&lt;/a&gt;單線體) 定義為：&lt;br /&gt;&lt;blockquote&gt;!009EC300|黃0=0000162E0001F02E00005A1100015A5E0000A8110001A85F0000595F0001AC5F00000A5F0001F55F00003C7300013CCE00003D7B0001CA7B0001CACF00003B9E0001C99E00008066000180C1000062D6000242EB000116FA00009AD00002D0E50001DEF700003CC00001CAC0&lt;/blockquote&gt;又，考慮美觀，我從文鼎楷體轉出了stroked font，從而做了細部的調整，這方面還得與&lt;a href=&quot;http://www.ksana.tw/&quot;&gt;剎那搜尋工坊&lt;/a&gt;討論如何整合，但基本上組字的概念是可以延續的。「黈」這字在single.fnt是如此定義：&lt;blockquote&gt;009EC800|黈0=黃0131272E1主0811078D9&lt;/blockquote&gt;相當明顯就是「黃」與「主」兩部件的左右結合，同理，「黌」則定義如下：&lt;br /&gt;&lt;blockquote&gt;009ECC00|黌0=00D07E66B黃0156AD78A&lt;/blockquote&gt;改為上下部件的結合。當然，目前的實做還很陽春，但已經看得出效益，以目前的stroked font engine來說，只要先描述以上三個組件，如「黃」與「主」：&lt;br /&gt; &lt;blockquote&gt;/* 0x9ec3 (黃) */&lt;br /&gt;     3, 66, 56, 0,&lt;br /&gt;     &#39;m&#39;, 28, -36,&lt;br /&gt;     &#39;2&#39;, 29, -36, 29, -36,&lt;br /&gt;     &#39;2&#39;, 33, -37, 39, -37,&lt;br /&gt;   ...&lt;br /&gt;&lt;/blockquote&gt;接著就採用single.fnt所定義的組字表示，去作遞迴表示即可，大幅省下儲存空間，也可避免許多維護成本，更重要的是，這一舉克服以往字型檔與程式碼不對稱的問題。除了中文動態組字外，其實Xorz/Embedded的繪字引擎也允許一些變化，比方說「Q版」的呈現，&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihV7nA-hXx8BrxeqzLCpAAoZF3jyV1SaD86FjDeXDXQRarGMLyNHvP4lvv6fdVpXnxtKe5IYi9tvPbUkACG1LOX-_MrfmZ1JFSquc9d8o90ltK40o4YxzbnlIyCm-lR-e3t-ULXjcY7u4/s1600-h/xorz-embedded-chinese2.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihV7nA-hXx8BrxeqzLCpAAoZF3jyV1SaD86FjDeXDXQRarGMLyNHvP4lvv6fdVpXnxtKe5IYi9tvPbUkACG1LOX-_MrfmZ1JFSquc9d8o90ltK40o4YxzbnlIyCm-lR-e3t-ULXjcY7u4/s320/xorz-embedded-chinese2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5074491598800819426&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;有點像是塗鴉文字，行文甚至有互相疊合的效果，這是為了配合某些特殊的應用，如廣告文字，所特別設計的系統，畢竟Xorz/Embedded一開始的定位就是針對嵌入式系統的特製輕量級圖形系統。&lt;br /&gt;&lt;br /&gt;恰好&lt;a href=&quot;http://wiki.tossug.org/&quot;&gt;TOSSUG&lt;/a&gt;在本週二也請到國內在動態組字學有專精的前輩，為我們分享中文缺字議題、動態組字技術，以及進行中的變革，詳情可參考「&lt;a href=&quot;http://wiki.tossug.org/SignUp:2007-07&quot;&gt;Tossug 2007 年第 7 場心得分享&lt;/a&gt;」，如果當天有空檔，或許筆者也可來作些介紹與展示。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4261477079325308579/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/4261477079325308579' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4261477079325308579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4261477079325308579'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/xorzembedded.html' title='Xorz/Embedded的動態組字實做'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='//jserv.sayya.org/jserv-small.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia1d7TDWVM6_GFoH6AFXd0K3AQyF_ODyGnXepW-fsSN9PWJHfdrT8lNe1t07GzoWMGL_JKXOhn5iMVJwvHP0uuYodRJTZs8yXwrz2jyEaS_nfNgyPFoKML0xtYIydh9rW-u7R9qZ8Z72U/s72-c/xorz-embedded-chinese.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-3923232159268570223</id><published>2007-06-01T11:53:00.000+08:00</published><updated>2007-11-01T02:37:50.936+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cross development"/><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="openmoko"/><title type='text'>build u-boot from sources</title><content type='html'>因為openmoko patch的u-boot有支援Samsung S3C24xx的stepping stone，所以build看看。&lt;br /&gt;&lt;br /&gt;主要是follow這一篇文章 &quot;&lt;a href=&quot;http://wiki.openmoko.org/wiki/Migration_to_bad_block_tolerant_builds&quot;&gt;Migration to bad block tolerant builds&lt;/a&gt;&quot;，說明比u-boot那一篇仔細 (但是我apply 609的patch沒有成功，所以還是使用main stream)。&lt;br /&gt;&lt;br /&gt;工作的目錄是 /home/openmoko&lt;br /&gt;&lt;br /&gt;裝好subvesion，設定svn使用proxy，在~./subversion/server中加入proxy server，port :&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;http-proxy-host = 10.1.1.200&lt;br /&gt;http-proxy-port = 3000&lt;/pre&gt;&lt;/blockquote&gt;checkout openmoko 到 openmoko 目錄&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ svn co https://svn.openmoko.org/ openmoko&lt;/pre&gt;&lt;/blockquote&gt;安裝git-core，改變default git tool (debian etch)&lt;blockquote&gt;&lt;pre&gt;$ aptitude install git-core&lt;br /&gt;$ update-alternatives --config git&lt;br /&gt;== 選 &quot;git-scm&quot;&lt;/pre&gt;&lt;/blockquote&gt;export 好http_proxy，checkout u-boot&lt;blockquote&gt;&lt;pre&gt;$ git clone http://www.denx.de/git/u-boot.git&lt;/pre&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-weight: bold; color: rgb(153, 153, 153);font-size:85%;&quot; &gt;(需要等待一段時間)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;取得cross toolchain : 因為monotone出不去proxy (雖然mailing list中聲稱新版的monotone可以經過proxy，可是我這裡還是出不去)，所以只好直接從 openmoko拿build 好的cross tool&lt;blockquote&gt;&lt;pre&gt;$ wget -r -L http://buildhost.openmoko.org/tmp/cross&lt;/pre&gt;&lt;/blockquote&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-weight: bold;font-size:85%;&quot; &gt;(需等待更長時間，且lib/下的檔案有些沒有抓回來，要確認一下，加上 &quot;-c&quot;抓沒抓到的folder。修改 bin 下的file，設為可執行。)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;把抓下來的toolchain copy到 ..&lt;blockquote&gt;&lt;pre&gt;/space/fic/openmoko/gta01/tmp/cross&lt;/pre&gt;&lt;/blockquote&gt;設好PATH:&lt;blockquote&gt;&lt;pre&gt;$ export PATH=/space/fic/openmoko/gta01/tmp/cross/bin:$PATH&lt;/pre&gt;&lt;/blockquote&gt;u-boot - apply patch: (要先裝好&lt;a href=&quot;http://savannah.nongnu.org/projects/quilt&quot;&gt;quilt&lt;/a&gt;)&lt;blockquote&gt;&lt;pre&gt;$ cd u-boot&lt;br /&gt;$ export QUILT_PATCHES=/home/openmoko/openmoko/trunk/src/target/u-boot/patches&lt;br /&gt;$ quilt push -a&lt;/pre&gt;&lt;/blockquote&gt;Ok，沒有error message。&lt;br /&gt;&lt;br /&gt;build u-boot - config and make: &lt;blockquote&gt;&lt;pre&gt;$ make ARCH=arm gta01bv2_config&lt;br /&gt;$ make ARCH=arm&lt;/pre&gt;&lt;/blockquote&gt;完成。</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/3923232159268570223/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6940637973783721202/3923232159268570223' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3923232159268570223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3923232159268570223'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/build-u-boot-from-sources.html' title='build u-boot from sources'/><author><name>checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>