2007年6月30日

M$的原罪?

M$一般受到反M$的大力批判的有,壟斷、漏洞一堆、不開放、破壞規格、價格太貴...等等

一般反M$對於他的壟斷手法都相當的不滿,還有早期的系統真的可以說得上是漏洞百出;最近M$堆出的vista仍就難免華而不實的批判

有一股力抗M$的力量是Open Source,他們的要求是,軟體是需要開放的,讓人們可以依照他們的需求去改善,然後大家可以交流這些Patch

接著夾雜了一堆其他的意見,跟Open Source做了某種程度的融合,也就是說,有些支持Open Source的人,不只是支持Open Source,他們還有其他的理念

例如說反盜版,開放標準格式(其實M$也不是單一方面的問題)等等,然後人們對於問題的認知就開始有了一點不確定性

我想M$可以詬病的地方很多,他硬塞了一堆人家不要的功能給你,然後還不準你改變,這是Open Source 最反感的吧,記得網路上有人比喻,廠商賣了一台車給你,你打開引擎蓋就犯法@@a

再來M$長期不跟標準合作,這某種方面也是牴觸Open Source的人,因為大家都使用同一套遊戲規則,M$在破壞規格上面是出了名的

如果說漏洞,其實M$在最近已經有所改善,他們的工程師畢竟也是有相當的素質,所以寫出來的程式應該不至於插到哪去,可能會出問題的是相容性的地方,為了跟過去程式相容,M$所背負的包袱,實在是讓他們的架構容易出問題

撇開這些不說,M$在商言商,所以獲利對他們來說,實在不是一個被該被責備的問題,不要說他賣得東西太貴,以此作為盜版的藉口(除了一些手段實在不正大光明外,例如賣給台灣的售價曾經有一度過高)

他最大的問題在於,不開放、破壞規格,以上是我個人的觀點

2007年6月29日

google推出linux desktop search

執行 Google 桌面搜索要求你的 Linux 系統至少滿足下列條件:

  • Linux 核心 2.4.x 及更高版本
  • glibc 2.3.2 及更高版本
  • XFree86-3.3.6 及更高版本
  • gtk+2.2 及更高版本
  • fontconfig/xft
  • Mozilla Firefox 1.5.0.1 或更高版本
  • /home 分區具有 1 GB 可用空間

要在你的 Linux 系統中安裝 Google 桌面搜尋軟體,可以採用以下三種方式之一:

  1. 如果你所用的 Linux 發行版基於 RPM 的包管理工具,那麼在下載 .rpm 包後,可以執行下列指令安裝:
    sudo rpm -U google-desktop-linux-1.0.1.0060.rpm
  2. 假如你使用 Debian/Ubuntu Linux 發行版,則可以下載 .deb 包並通過下列指令安裝:
    sudo dpkg -i google-desktop-linux_1.0.1.0060_i386.deb
  3. 或者你也可以使用 Google Linux 軟件庫,並通過該庫來安裝 Google 桌面搜索。

    Debian/Ubuntu 可以使用下列源:
    deb http://dl.google.com/linux/deb/ stable non-free

    並添加密鑰:
    wget -q -O - http://dl.google.com/linux/linux_signing_key.pub | apt-key add -

Google 桌面搜尋軟體預設的安裝位置為 /opt/google/desktop/。



http://bbs.blade-pig.net/redirect.php?tid=377&goto=lastpost

2007年6月25日

鳥哥筆記-Lesson 8

Shell二部曲,先來看兩個有用的指令alias跟history,單純的執行alias將會列出你目前有重新修改過的指令,比方說,一般在ubuntu下面會看到alias ls='ls --color=auto',表示顯示檔案列表的時候順便顯示顏色,alias的好處就是可以把常用的參數變成預設,免得每次都要加上參數,真的是很要命的麻煩。history則會列出你執行過的指令,他前面會帶有一個數字,使用!number,!+數字,表示你要重新執行history中的哪一個指令

接下來看兩個有趣的檔案,分別是/etc/issue跟/etc/motd,前者紀錄目前你使用的OS資訊,比方說Ubuntu 7.04,後者則是使用者遠端登入的時候的顯示訊息;這兩個檔案有人非常詬病,因為/etc/motd跟/etc/issue常常有系統的種類資訊,他們認為這只是讓hack更加容易了解系統的資訊,所以一般建議是把/etc/motd修改(這部份對於多人使用環境,如學校開個機器讓學生熟悉linux環境,非常有用),不要洩漏自己系統的資訊

有很多個人的設定檔案,也就是當你進入shell的時候一定會執行的某些shell script,這些檔案實在太多太雜了,我一般都是使用.bashrc來建立我個人的路徑,例如JAVA_HOME等等

常態表示法(regular expression),這東西可是可以開一門課程的內容,我就不仔細介紹了,直接擷取鳥哥的一小段內容近來,實際上多用、多看、多想~就可以達到相當的程度;如果真的有興趣Oreilly有出版一本mastering regular expression的書本,況且這東西還因應不同的程式語言有不同的風貌哩(有些小差異,比如perl跟postfix的版本很像,但是有點小小的不一樣),以下是節錄的內容

內容
*萬用字元,代表 0 個或多個字元(或數字)
?萬用字元,代表『一定有』一個字母
#註解,這個最常被使用在 script 當中,視為說明!
\跳脫符號,將『特殊字元或萬用字元』還原成一般字元
|分隔兩個管線命令的界定;
;連續性命令的界定(注意!與管線命令並不相同)
~使用者的家目錄
$亦即是變數之前需要加的變數取代值
&將指令變成背景下工作
!邏輯運算意義上的『非』 not 的意思!
/路徑分隔的符號
>, >>輸出導向,分別是『取代』與『累加』
'單引號,不具有變數置換的功能
"具有變數置換的功能!
` `兩個『 ` 』中間為可以先執行的指令!
( )在中間為子 shell 的起始與結束
[ ]在中間為字元的組合
{ }在中間為命令區塊的組合!

如果我們要觀察一個目錄下所有文字檔,假設文字檔統統是以副檔名.txt出現的,我們就可以下達指令ls *.txt

接下來就是看到兩個shell重要的觀念redirect(重導)跟pipeline(管線),很多人使用的很習慣,也重來不細想其中的差別(本人就是一個XD);redirect就是把資料放到別的地方去,而pipeline則是將前者的輸出變成後者的輸入

2007年6月24日

完全用 Linux 來生活

來自blog的資料,寫的很好,備份一下,蠻全方位的,對方會用的樂譜軟體,難道是個音樂家!?Linux上面奇人很多,還有人是黑手~無奇不有


其實我很早以前就想寫一篇這樣的文章,我使用 Linux 來生活已經六年多,用到現在,覺得很多地方很便利好用,適合我這種懶惰的人。奇怪的是有一群幾近瘋子的人,無任何報酬地在開發維護,讓我覺得很不可思議。 在此分享一點心得給想接觸 Linux 的人,算是回饋吧,也許微不足道。別跟我筆戰 Windows 和 Linux 誰比較強的問題,那沒有意義。各有各好用的地方,只是個人習慣問題而已,就像是吃飯或吃麵一樣。不可能有人會筆戰飯跟麵哪個比較好吃吧?
我最一開始用的是 Red Hat 6.2,用了半年換 Mandrake,幾個月後又換 Debian Woody、Sarge,然後用了好幾年。在某一次電腦掛掉要重灌的情況下,選擇 Gentoo 2005.0 作為重新出發的起點,用了一年多。這幾個月換成 Ubuntu,覺得非常好用,很多設計都很方便簡單,所以到處推薦給別人用這版本,它的基本精神就是人道關懷。很多人有迷思認為用 Gentoo 比較屌,用 Ubuntu 比較遜。但我覺得只要能方便地解決問題,用什麼都不是重點。



【網路】


瀏覽器:首推 Firefox。這軟體非常火熱,快要變成 Linux 內建的瀏覽器了,我用的是改版過的 Swiftfox, 依各人CPU不同進行軟體編譯,達到最佳化(事實上 Gentoo 就是以此自誇)。外掛方面我用了:Adblock Plus,用來擋廣告。Fasterfox,加速上網速度。FireFtp,外掛FTP軟體。Gmail Manager,gmail來信通知。GSpace,把gmail變成網路硬碟。HEMiDEMi Button,單鍵加入網路書籤。OpenSearchFox,自製搜尋引擎。新同文堂,簡體字自動轉繁體字。

收信軟體:我用 Gmail,習慣上網收信,沒有用軟體。收信軟體有很多選擇,除了 Mozilla 家族的 ThunderBird 之外,Gnome 內建的 evolution 也很強大,基本上跟 outlook 的操作很像。推薦一個來信通知的小軟體 mail-notification,常駐在系統內,可支援 gmail、或 pop3 的郵箱。(吃RAM吃很兇)

RSS閱讀器:也就是 feed reader,讀取整理 Blog 或 News 的 RSS,請試試功能強大而且直覺的 Liferea!配合 firefox 的訂閱功能,我的生活沒有它不行。如果常常需要奔走兩地,用線上版的RSS閱讀器比較方較,在此推薦 Bloglines.com

續傳軟體:d4x(Download For X),或是 MultiGet,這兩個軟體等於是 Linux 版的 Flashget,內建多點下載及續傳的功能。或是用功能強大 wget(只有文字介面),有各種圖形化前導程式, 如 Gwget、Kwget 。

MSN、即時通:Gaim(後來改名為 Pidgin)、Kopete。通吃各種即時通訊軟體。但不支援 webcam,很遺憾。另一個軟體 aMSN 可支援 webcam,但因為我沒有視訊,所以沒裝來試過。

Skype:Skype 有 Linux 的官方版本。

BT:我用過非常多軟體,azureus 太吃資源,內建的 bittorrent 太簡單,而 bitonado 也很單調。推薦用 Deluge,不吃資源,功能齊全、速度也OK!如果是K牌使用者,請用 KTorrent,算是 Linux 下面最好的 BT 軟體了。(目前看過絕大多數人是用 wine + utorrent)

騾子:一定要用aMule,其餘的不用試了,因為其他的不支援Kad。

FTP:現在還有人在用FTP嗎?裝 FileZilla 就可以包辦全部,不過我比較常用 Firefox 外掛的 FireFTP。(架ftp可裝 proftpd,如不習慣用指令介面,可用前導程式 gproftpd,簡單直覺)

IE:有一些很奇怪的網頁,一定要用 IE 才能開。這時候就用 ies4linux 裝。至於 wine 這個軟體很不錯,可以用它安裝執行大部分 Windows 的程式,它提供了一個假的 Windows 環境。

BBS:用 PCMan-GTK!感謝 PCMan 專案人員及其 LXDE 計畫。



【影音】


音樂播放:分兩種,一種是單純的播放器,只能放音樂,像 Windows 的 Winamp 那樣,在 Linux 下面有老牌的 XMMS、新的 Beep-Media-Player;另一種為音樂播放管理器,像是 Windows 的 iTune,可以方便地整理 MP3、並整合歌曲資訊、網路廣播…等,這方面比較多,有 Banshee、Listen、BMPx、Rhythmbox、AmaroK、Quod Libet、Exaile…。放一首歌時,它會自動搜尋專輯封面、歌詞、歌手樂手傳記、發行專輯、相似藝人、相似歌曲、Last.fm、Podcast、 廣播、…。在此我推薦G牌桌面用 Exaile,K牌桌面用 amaroK。

寫MP3標籤:一定要用 EasyTAG,搭配音樂播放管理器,這才是人生啊。(茶)

錄音編輯:Ardour、Audacity,目前為止可以用的,也支援多軌錄音跟ASIO,跟 Windows 的 Goldwave、CoolEdit 很像。如果要超級專業的錄音軟體,就要回 Windows 或 Mac 用 Cubase Sx。

寫譜軟體:Rosegarden,最簡單的。另外還有超級專業的 Lilypond 跟 MusiXtex,聽說國外樂譜出版社都用 Tex。但實在太難,而且我也不會 LaTex、TeTex(專業排版軟體),所以目前還是習慣用手寫五線譜,再掃瞄成圖檔。Lilypond 有各種前導程式,例如 NoteEdit。P.S. 吉他手可以用 Wine 灌 Guitar Pro、Tabledit、Power Tab Editor 。

CD轉MP3:內建的 Sound Juicer 抓音軌,再用 Gnormalize 互轉各種音樂格式。不過有些非自由的格式要裝解碼,可轉的格式包括MP3、APE、FLAC、AAC、OGG、MPC、WAV、…。或是另一個 SoundConverter 也不錯。

燒錄軟體:k3b,超好用的CD/DVD燒錄軟體。如果不想用K牌的東西,可以選擇G牌的 Brasero,比 GnomeBaker 好用!但還是建議用 k3b,目前出 1.0,功能強大。至於 Nero 的 Linux 版,跟 Windows 比差太多,比 k3b 還不如。

影片播放:SMplayer,為 Mplayer 的前導軟體。Mplayer 是史上最強的影片播放器,得獎無數,好像還跨平台到 windows。遊走在法律邊緣,通吃全部格式的影片,當然,要裝 w32codecs 影片編碼解碼,要不然什麼也不是。

網路廣播:streamtuner,內建多個網站電台,不過很久沒更新了。可裝 Exaile (音樂管理軟體)替代。

iPod相關:iLinux,不過我沒試過,因為我沒有iPod。


另外推薦一個 Ubuntu 的延伸版本,叫做 Ubuntu Studio。不過如果你沒玩 MIDI、影片剪輯、3D繪圖、之類的,就不用換這個版本了。


(很炫的360度可旋轉式立方體桌面,Beryl)

【美工繪圖】


圖片管理:Google 的 Picasa。功能超級強大。但美中不足的是竟然是用wine模擬,不過google很強的一點是做的看不出來是wine模擬。如果不想裝wine,就用 f-spot,有點像是簡化版的 ACDSee。

圖片編輯:簡單修改用輕量型的 Mirage ,要專業一點就用 GIMP。雖然很多人牽拖 GIMP 與 PhotoShop 根本不能比,不過我覺得這是個人功力問題,曾看過超強的人用 GIMP 非常恐怖,不過如果用習慣 PhotoShop 要花很長一段時間轉換適應就是了。

向量繪圖:Inkscape,很難相信這一套巨型的向量繪圖軟體竟然是免費的。

影片剪輯轉檔:avidemux。

其他:請直接裝 ubuntu studio,裡面這類的軟體多到爆炸。  


【辦公文件】


Office:唯一也是最好用的 Open Office,裡面有 Word、Excel、PowerPoint、…等等對應的軟體。開微軟 .doc 完成度已經非常高(Office 2003 以前),萬惡的 Office 2007 目前沒辦法開,請參考「好公民不助長非法拷貝 -- 請停止散佈 .doc 檔」

看PDF:用內建的 evince 就可以,我覺得 Adobe Acrobat Reader 太肥。另外 Open Office 可以存成 PDF 格式文件。

看CHM:GnoCHM 還不錯,K牌請用 KchmViewer。

看MHT:這種網頁封裝格式非常討厭,偏偏很多教學文件喜歡弄成這個格式,我是用 KmhtConverter 解開。(只有K牌)

字典:超強的 StarDict,跟 Dr. Eye 幾乎一樣,也有即時發音,還可以擴充匯入字典,字典大概有一百多種可以選吧,知名的 longman、cambridge、中英、英英、日英、德英、法英、…,完全免費。字典檔及語音檔請到官網下載。
  
寫網頁:Nvu、Bluefish、或是K牌的 Quanta Plus,對網頁編寫者來說就綽綽有餘。如果是超級專業的商業網站美編高手,還是建議灌 VirtualBox 或 WINE 用假XP裝 Dreamwear、Flash。

翻譯記憶:請服用 omegaT,勉強可以撐上場面,慣用 tardos 的筆譯強者可以按離開了…

系統工具】


檔案格式:請儘量用 EXT3,尤其是根目錄!雖然我以前一直是 ReiserFS/Reiser4 的愛用者,不過長久用下來,R牌快那麼一點點對我來說並沒有省多少時間,而且R牌的開發者被抓去關,我不清楚之後的開發維護是誰接手…,以穩定度與市場潛 力來看,EXT3 與日後的 EXT4 會是最好的選擇。(每次不正常關機後,FSCK 下來就發現R牌整個鳥掉…)

輸入法:gcin,無蝦米輸入法在 Linux 不是問題,記得先裝 im-switch。(注意:舊版 gcin 跟 flash 9 衝突,如果你的 firefox 一直無預警當掉,請更新 gcin)

磁碟分割:Gparted,跟 Partition Magic 很像。(後記:Gparted 有出名片型大小的 livecd)

防火牆控制:Firestarter,只是個 Front-end 軟體,還不錯。

密碼管理:不知道有沒有人在用這個?我最近才開始試著習慣它,管理儲存多組密碼,也可以自動產生複雜的密碼,不用想半天,或抄在紙上。我用的是 Revelation。(我之前待的小公司,直接把全部密碼存成「密碼.txt」放在桌面,我整個囧掉。)

財務管理:有人習慣用電腦軟體記帳嗎?記下每月收入及每日支出。如果用 excel 那就太土法練鋼了。試試輕巧的 Grisbi,或是老牌的專業財管軟體 GnuCash。

中文字型:預設的字體就很棒,也可以偷微軟的新細明體、正黑體來用,但我個人是沒這麼做。(本文圖片上的字型為蘋果 Mac OSX 的「儷黑體」)

Windows檔案:在 Linux 存取 NTFS 檔案格式,用 ntfs-3g,支援寫入跟讀取。反向的話,在XP底下讀取 Linux,用 EXT2 IFS,支援 EXT2/3 非常方便,但 ReiserFS 沒辦法(泣~)。

Windows軟體:Wine 一家獨大,絕大部分XP的Game或商業軟體,都可以在 Linux 底下運行,官網的資料庫提供支援軟體列表,請查看。

Windows模擬:模擬平台推薦 virtualbox,不要再用 vmware 那個肥重老怪物了。裝精簡版 XP Lite,簡直天下無敵,另外最近有個很火熱的 KVM 擬模器,搭配最新的核心 2.6.20,我試不出來…囧。(好像是我的CPU不支援)

Windows遊戲:有兩套商業軟體(要用錢買),Cedega 是專業的遊戲模擬器,可以用 Cedega 灌 Windows 的遊戲,支援 95% 的遊戲,因我本身沒有在玩遊戲,所以我只試用魔獸3、暗黑破壞神2…等主流遊戲,擬真度 99%,很不錯;另一套商業軟體叫 CrossOver,也是 Windows 的模擬平台,主要是灌大型商業軟體使用,如 Dreamweaver、Photoshop、Office…等。這兩個模擬器的核心都是 Wine,軟體本身透過安裝不同軟體進行微調最佳化,所以要收費,如果想試用的話,你知道的…,進牧場找一下很容易可以找到。

(以下圖片是我用 virtualbox 裝 windows xp 當子系統,因為我借不到繁體光碟,所以就抓了簡體版XP,題外話,那個 deepin Xp Lite 真的改的不錯,超級小,才兩三百MB,虛擬機跑起來跟實機一樣快。P.S. 我是灌來做 flash …囧)

有遺漏或新發現的我會再補上,不過這樣已經足以讓我用 Linux 用得很快樂了,希望你也可以在其中找到樂趣。以上所有軟體都可以在 APT source 裡面找到,用 Synaptic 輕鬆安裝,如果有找不到的軟體,請到 GetDeb 網站找找 - http://www.getdeb.net/,或是在回應中提出,感謝收看。


以下列出各種 Ubuntu 的延伸版本。

Ubuntu:原始版本。桌面整合為 GNOME。
Kubuntu:以 KDE 為桌面環境的 Ubuntu。
Edubuntu:edu 就是教育版的 ubuntu,給學齡學童用的,裝有教育輔助軟體。
Xubuntu:以 Xfce 為桌面環境的輕量型 ubuntu。
Linux Mint:美化很漂亮的一個版本,在 DistroWatch 排名很高。
Goobuntu:google 內部使用的作業系統,未流出。
Ubuntu CE:全名是 Ubuntu Christian Edition。
Ubuntu SE:這是惡搞的作品,Ubuntu Satanic Edition。
Elbuntu:以著名的 Enlightenment 17 為桌面環境。
Fluxbuntu:也就是用超級輕量的 Fluxbox。
nUbuntu:Network Ubuntu,加強安全性,以 fluxbox 為主,並移除作者認為不必要的軟體(gnome、openoffice…)
Ubuntu Studio:給影音工作者的 Ubuntu。
Ubuntu Ultimate Edition,包山包海的 Ubuntu 終極版,有點像 Super XP。

下面是隨意在 YouTube 找最多人看過的影片,目前最火熱的技術 Beryl for linux。(後記:Beryl跟Compiz已經合併)

P.S.影片的連結請到作者的blog去看

Ubuntu下的C/C++環境搭建

來自對岸的blog,我比較欣賞的是他其中vim的使用方式,備份一份在這裡

我用的是Ubuntu的Server版本,安裝是很容易的,非常之簡單,不過安裝之後的操作系統幾乎是一個空白的操作系統,幾乎什麼都沒有,所以都得安裝好。

因為是Dapper (6.06) 版本,所以我用以下方法更換軟件源:

vim /etc/apt/sources.list

用以下內容替換文件中的所有內容

deb http://archive.ubuntu.com/ubuntu/ dapper main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ dapper-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ dapper-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ dapper-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ dapper main restricted universe multiverse

這裡你也可以直接使用更快速的ubuntu.cn99.com的源(推薦):
deb http://ubuntu.cn99.com/ubuntu/ dapper main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ dapper main restricted universe multiverse

這裡你還可以使用速度也非常快的的mirror.lupaworld.com的源:
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper-updates main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper-backports main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/ubuntu-cn/ dapper main restricted universe multiverse

如果是教育網用戶推薦使用上海交通大學的源:
deb http://ftp.sjtu.edu.cn/ubuntu/ dapper main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-backports main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-proposed main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-security main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-updates main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu-cn/ dapper bleeding main multiverse restricted universe

教育網用戶也推薦使用清華大學計算機系學生科協的源:
deb http://mirror.net9.org/ubuntu/ dapper main multiverse restricted universe
deb http://mirror.net9.org/ubuntu/ dapper-backports main multiverse restricted universe
deb http://mirror.net9.org/ubuntu/ dapper-proposed main multiverse restricted universe
deb http://mirror.net9.org/ubuntu/ dapper-security main multiverse restricted universe
deb http://mirror.net9.org/ubuntu/ dapper-updates main multiverse restricted universe
deb http://mirror.net9.org/ubuntu-cn/ dapper main multiverse restricted universe

保存編輯好的文件
sudo apt-get update


剛裝好的系統的root是進不去的,需要更改密碼:
sudo passwd root

反正是內網用,所以就直接用root了,sudo太麻煩!

接下來安裝SSH用以遠程登陸:
apt-get install ssh

OK,接著裝編譯器:

apt-get install gcc
apt-get install make
apt-get install autoconf
apt-get install automake
apt-get install libtool
apt-get install gdb
apt-get install g++

編輯器,我偏好使用vim,就裝上了它
apt-get install vim
默認下,vim是沒有語法染色的,
修改/etc/vim/vimrc
只要把syntax on的註釋去掉就可以了。

想要讓vim好用,還需要安裝一些必須的插件,這裡我引用兩篇文章:

第 一部分介紹了一些基本的 Vim 使用技巧。掌握這些技巧可以很大地提高編輯效率,但是 Vim 的強大功能並不僅限於此。Vim 還可以通過「插件」來進行功能擴展。精確地說,是通過腳本來進行擴展,腳本類型有插件、語法加亮、配色方案、文件類型檢測等多種。大部分的腳本都是由 Vim 的用戶寫的,解決了用戶身邊的問題,使 Vim 變得更加有用。本章將介紹最常用的一些腳本,其中除了一個屬於「語法加亮」腳本外,其它都屬於「插件」類型。關於如何寫腳本的一些基礎知識將在下一部分進 行一些介紹。

2.1. gzip(壓縮文件支持)

作者:Bram Moolenar

網站腳本編號:無(包含在 Vim 的標準發佈之中)

安裝說明:

功能說明:

該腳本使得 Vim 可以直接打開使用 gzip [1]、bzip2 [2] 和 compress [3] 壓縮的文件(要求存在相應的命令行工具)。後綴為「.gz」、「.bz2」和「.Z」的文件會在打開時被動態解壓縮,並在寫操作時被自動重新壓縮。

打開壓縮文件時,屏幕上出現一個(不正確的)「[noeol]」的提示是正常的,不必進行理睬。

2.2. netrw(網絡文件支持)

作者:Charles E. Campbell, Jr.(綽號 Dr. Chip)

網站腳本編號:1075(Vim 的標準發佈之中可能包含一個較老的版本)

安裝說明:

Vim 6.4 的標準發佈帶的版本是 42,較老、功能不齊全,但無須安裝。建議:

1. 在 Vim 網站上下載版本 62(更新的版本只能用於 Vim 7);
2. 使用「tar xvfj netrw.tar.bz2 -C ~/.vim」解開;
3. 在Vim中運行「:helptags ~/.vim/doc」安裝文檔。

功能說明:

支持直接讀寫網絡上的文件,支持的協議有 ftp、http、rsync、scp 等。比如,使用 FTP 協議以用戶名 adah 打開服務器 server 上 ~/temp 目錄下的 test.cpp 文件,可以直接在命令行上使用:

          
vim ftp://adah@server/temp/test.cpp

Vim會自動提示用戶輸入口令,然後打開文件。

更多的幫助內容請參考「:help netrw」。

2.3. engspchk(英文拼寫檢查)

作者:Charles E. Campbell, Jr.(綽號Dr. Chip)

網站腳本編號:195

安裝說明:
在 Vim 網站上下載最新版本(engspchk.tar.gz);
使用「tar xvfz engspchk.tar.gz -C ~/.vim」解開;
在Vim中運行「:helptags ~/.vim/doc」安裝文檔。
提示替換拼寫功能需要 agrep [4],可能需要另外下載安裝。

功能說明:
一個Vim專用的拼寫檢查器,其最主要的特點是:

  • 可以通過變量 spchkdialect 選擇英語變體(英國、美國、加拿大),對於找不到的詞、不常見的詞、不在當前英語變體中的詞以不同的方式加亮顯示;
  • 支持用戶詞典(保存在 .vim/CVIMSYN 目錄中)和項目詞典(保存在被檢查文件所在的目錄中);
  • 對於源代碼文件,只對註釋進行拼寫檢查,而不會對你的變量名稱胡亂提抗議;
  • 通過詞典文件可支持除英語以外的其它語言。

圖 5 中的窗口裡 engspchk 正在運行中。其中可以看到,紅色部分是插件所不能識別的單詞,黃色部分是當前英文變體(缺省是美國英語)中不正確的拼法,而青色部分是很少見的單詞。圖中 運行的是包含圖形界面支持的 Vim,因而還可以看到一個名為 DrChip 的菜單項(參見圖6),在其中可通過菜單選擇拼寫檢查相關的各項功能;同時還能看到快捷鍵:「\ec」開始拼寫檢查,「\ee」結束拼寫檢查,「\ea」 選擇替換拼寫,等等。在文本模式的 Vim 中,我們一般就只使用這些快捷鍵了。




更多的幫助內容請參考「:help engspchk」。

2.4. calendar(日曆顯示)

作者:Yasuhiro Matsumoto

網站腳本編號:52

安裝說明:

在 Vim 網站上下載文件 calendar.vim,存到 ~/.vim/plugin 目錄中。

功能說明:

圖 6 的下半部分就是 calendar 的運行示例,是直接在正常模式下鍵入「\caL」顯示出來的。光標在該窗口中時,可使用左箭頭或上箭頭顯示前一個月,右箭頭或下箭頭顯示後一個月,「t」 回到「今天」,「q」關閉日曆窗口。在有鼠標支持時,也可以使用鼠標在黃色字樣的「Prev」、「Today」、「Next」上雙擊達到類似的效果。

除 使用「\caL」外,「\cal」也可以打開一個日曆窗口,但顯示位置是在 Vim 的左側而不是下方。另外,命令「:Calendar」效果和「\cal」相同,但其後可以跟參數:一個參數的話表示月份,兩個參數的話則分別表示年份和月 份。「:CalendarH」與「:Calendar」類似,但日曆窗口的打開位置和「\caL」(而不是「\cal」)一樣,是在下方而不是左側。

2.5. project(文件的「項目」管理)

作者:Aric Blumer

網站腳本編號:69

安裝說明:

1. 在 Vim 網站上下載最新版本(project-1.3.tar.gz);
2. 使用「tar xvfz project-1.3.tar.gz -C ~/.vim」解開;
3. 在 Vim 中運行「:helptags ~/.vim/doc」安裝文檔。

功能說明:

該 插件可以把文件組織成一棵樹的形式,以便於查找和管理。使用命令「:Project」即可打開一個用戶的「項目文件」(~/.vimprojects)。 項目文件採用普通的文本文件的形式,非常易於瀏覽和修改。圖 7 是一個示例。其中左邊窗口部分的就是一棵項目樹,完整內容如下:

CvsMenu="~/.vim" CD=. {
plugin/cvsmenu.vim
doc/cvsmenu.txt
}
Nvwa="~/nvwa_local" CD=. {
doc=doc {
ChangeLog
README
webupdate.sh
}
nvwa=nvwa {
bool_array.cpp
debug_new.cpp
mem_pool_base.cpp
static_mem_pool.cpp
bool_array.h
class_level_lock.h
cont_ptr_utils.h
debug_new.h
fast_mutex.h
fixed_mem_pool.h
mem_pool_base.h
object_level_lock.h
pctimer.h
set_assign.h
static_assert.h
static_mem_pool.h
}
}

在 這個項目文件中存在兩個項目:CvsMenu 和 Nvwa。引號中的內容表示路徑,「CD=.」則表示打開該項目中的文件時,當前目錄會更改到項目所在的目錄。項目下面可以再分子項目,如 Nvwa 項目下有 doc 和 nvwa 兩個子項目,沒有「CD=.」表示打開子項目裡的文件時不再更改當前目錄。

圖中並沒有顯示出完整的 內容,因為其中的內容可以摺疊(缺省打開項目文件時是完全摺疊起來的,即在上面的例子中,只能看到兩個項目的名字「CvsMenu」和「Nvwa」)。在 非文件名行上使用鼠標雙擊或回車鍵可以進行展開或摺疊,在文件名行上使用鼠標雙擊或回車鍵則可以打開對應的文件。

更多的幫助內容請參考「:help project」。

2.6. taglist(源代碼結構瀏覽)

作者:Yegappan Lakshmanan

網站腳本編號:273

安裝說明:

1. 確保機器上有一個可用的 Exuberant Ctags 的版本(可以執行命令「ctags」)

2. 在 Vim 網站上下載 taglist(假設為 taglist.zip);

3. 使用「unzip taglist.zip -d ~/.vim」解開;

4. 在 Vim 中運行「:helptags ~/.vim/doc」安裝文檔。

雖然 taglist 使用 ctags,但並不要求 tags 文件的存在。

功能說明:

使用命令「:Tlist」啟用/關閉 taglist,效果請先看一下圖 8。Taglist 的主要特性有:



  • 可以顯示宏(macro)、函數(function)、變量(variable)、類型定義(typedef)、類(class)、結構(struct)等多種內容信息;
  • 打開多個文件時,可以同時看到多個文件的結構信息;
  • 在左邊的 taglist 窗口顯示的名稱上雙擊鼠標或按回車鍵,右邊主窗口中會跳轉到相應的定義位置;
  • 右邊窗口中光標的位置改變,左邊的窗口也會在 4 秒內(缺省值,參見「:help 'updatetime'」)黃色加亮顯示相應的名稱;
  • 在啟用/關閉 taglist 時,插件能夠自動改變當前 Vim 窗口的大小(不管是文本模式的 Vim 還是圖形界面的 Vim),除非使用「:let Tlist_Inc_Winwidth=0」關閉這一功能(當使用這一功能導致兼容性問題時)。

更多的幫助內容請參考「:help taglist」。

2.7. cvsmenu(CVS集成)

作者:Thorsten Maerz/吳詠煒

網站腳本編號:1245

安裝說明:

1. 在 Vim 網站上下載文件 cvsmenu.vim,存到 ~/.vim/plugin 目錄中;
2. 啟動 gvim,在菜單中選擇「CVS-Settings-Install-Install updates」(文本模式的 Vim 可以使用快捷鍵「,cgii」),從網上(SourceForge)的 CVS 中安裝最新版本和幫助文檔(此步驟可選)。

功能說明:

在 Vim 中集成 CVS [24]版本管理功能。該插件最初由 Thorsten Maerz 編寫,在 2002 年以來沒有再得到維護。我在 2005 年初開始使用這個插件後,非常喜歡它,修正了其中存在的錯誤,並一直維護該插件。如果大家發現有 bug,報告給我就可以了。

主要功能可在圖 9 的菜單中看到:

瞭解 CVS 環境的基本信息和 cvsmenu 中的變量設定(參見圖 10);


  • 調整設定,安裝更新版本;
  • 插入 CVS 的可擴展關鍵字,如「$Date$」、「$Id$」;
  • 對目錄進行基本操作(cvs update 等);
  • 接受附加參數的基本操作(文件比較等);
  • 管理功能,如登錄;
  • 刪除類操作;
  • 打標籤;
  • 觀察(跟蹤)和編輯功能;
  • 將本地文件和 CVS 中的文件進行比較(以 Vim 的分左右兩列使用顏色加亮顯示修改、增加、刪除部分的比較方式;效果參見圖 11);
    圖 11
顯示文件每一行的更改人和更改時間(cvs annotate,參見圖 12);
圖 12

  • 顯示庫的訪問歷史(cvs history);
  • 顯示文件修訂日誌(cvs log;參見圖 13);
    圖 13

  • 顯示文件狀態;
  • 顯示較短的文件狀態;
  • 根據本地信息顯示文件狀態(不訪問庫);
  • 簽出模塊(cvs checkout);
  • 查詢更新;
  • 更新,如有衝突會高亮顯示(cvs update);
  • 取消修改;
  • 添加當前文件到 CVS 中(cvs add);
  • 簽入當前文件(cvs commit);
  • 導入文件(cvs import);
  • 添加並簽入當前文件。

根據實際使用的需要,除了修訂錯誤之外,我加入了一些編碼相關 的支持。拿一個最實際的情況,如果使用「set encoding=utf-8」,但源代碼中仍使用了 GBK 編碼的中文字符,那麼,必須在 .vimrc 中加入一行「let g:CVScvsoutputencoding='gbk'」才能保證「cvs annotate」操作的結果是正確的。

Thorsten 把該插件的易用性設計得相當好。舉例來說,在作文件比較時,按 Tab 可跳轉到下一個不同處,左側的比較窗口中按一下「q」即可關閉該窗口。更多的幫助內容請參考「:help cvsmenu」。

2.8. doxygen(文檔註釋語法加亮)

作者:Michael Geddes

網站腳本編號:5

安裝說明:

1. 在 Vim 網站上下載最新版本(doxygen.zip);
2. 使用「unzip doxygen.zip」解開;
3. 執行「cp -p doxygen.vim ~/.vim/syntax」和「cp -p doxygen.txt ~/.vim/doc」複製文件到 Vim 目錄下;
4. 在 Vim 中運行「:helptags ~/.vim/doc」安裝文檔。
5. 如果 ~/.vim/after/syntax 目錄不存在,使用「mkdir -p ~/.vim/after/syntax」創建該目錄;
6. 進入 ~/.vim/after/syntax 目錄,使用下面三行創建語法文件之間的關聯,使得在 C、C++ 和Java 文件中可以識別文檔註釋:


     
ln -s ../../syntax/doxygen.vim c.vim
ln -s ../../syntax/doxygen.vim cpp.vim
ln -s ../../syntax/doxygen.vim java.vim"


6. 可選地,看一下我的個人編程網頁 [6] 下有沒有對 doxygen.vim 的更新(裡面包含有作者尚未併入到標準發佈中去的我的更改——好奇的話,你可以在 doxygen.vim 文件中數一下,看一看 Wu Yongwei 的名字出現了幾次:-))。

功能說明:

如果你用過文檔註釋,相信我不需要多說,看一下圖 14你就知道這個腳本的功能了。如果你沒有用過文檔註釋,強烈建議你到 Doxygen [7] 的網站上看一下,瞭解一下這個非常有用的工具。作為示例,可在 http://nvwa.sourceforge.net/doc/debug__new_8cpp.html#a17 看一下圖中的代碼使用 Doxygen 自動生成的 HTML 網頁。


圖 14

2.9. matrix(!)

作者:Don Yang

網站腳本編號:1189

安裝說明:

在 Vim 網站上下載文件 matrix.vim,存到 ~/.vim/plugin 目錄中即可。

功能說明:

是的,說的就是電影 Matrix!Vim 的腳本並不是都干「正經事」的。想看一下電影裡那些酷酷的字符在 Vim 的窗口裡翻滾嗎?發一個命令「:Matrix」即可(按任意鍵退出)。效果見圖 15。


圖 15

參考資料

[1] The gzip home page: http://www.gzip.org/

[2] bzip2: http://www.bzip.org/

[3] Compress for UNIX: http://www.answers.com/compress#Wikipedia

[4] agrep: http://www.answers.com/agrep

[5] CVS-Concurrent Versions System: http://www.nongnu.org/cvs/

[6] Wu Yongwei's Programming Page: http://wyw.dcweb.cn/

[7] Doxygen: http://www.stack.nl/~dimitri/doxygen/

鳥哥筆記-Lesson 7

shell首部曲,shell在linux中扮演重要的一環的程式,他是透過ls等等的指令集合跟kernel溝通,kernel在透過硬體去擷取必要的資訊,比方說ls,你給shell ls指令之後,他便會去呼叫kernel的一些function call,然後取得有關inode等等的資訊,那麼kernel如何知道硬碟上面inode等等的分佈狀況呢?當然就是透過一些驅動程式來達成囉

所以shell就是人們跟kernel之間的溝通橋樑

因為shell提供了很多的功能,他也就非常複雜,另外就是,很多人喜歡發展自己喜歡的shell,例如c shell就是熟悉c程式語言的人發展出來的,不過目前最風行的叫做bash shell

  • shell的功能有哪些呢?
  • 執行指令
  • 指令的補全(延長全人類生命)
  • alias(重新定義指令)
  • 控制process(程式)
  • shell scripts(一些方便的程式,如批次處理或者定時處理事項)

當我們打開一個terminal的時候,就會執行一個shell,他提供了許多指令,但shell並不是提供所有的有用程式(也就是說,有一部分事由其他程式呼叫來使用的使用),我們可以用type command來得知,例如說,如果打入type cd,他會告訴你這是一個shell內建的指令,但是type telinit,他會顯示出路徑,表示這並非一個內建的指令,如果他是alias(別名)他則會列出alias的指令

Shell的變數,是一串取代某個特殊符號的名稱,比方說,我們用$HOME取代原本的/home/your_name這樣的字串,這也啥好處呢?原本要打入cd /home/your_name才可以回到家目錄,就變成打入cd $HOME就可以了,這可以方便管理跟縮短我們打字的時間

那如何設定自己的變數呢,直接使用=就可以了,例如,myname="crazy_duke";一般如果沒有空白,可以直接打就好myname=crazy_duke,如果有空白,就加上雙引號;接著觀察可以使用echo $myname

`(quoter),一般位於鍵盤上面橫的數字鍵1旁邊,被他包圍的字串,會被視為指令,然後執行後回傳的結果在當作字串,例如cd /lib/modules/`uname -r`/kernel

set指令則可以列出所有的變數,env指令可以列出所有目前的環境變數,有幾個常用的shell環境變數
  • HOME:家目錄
  • SHELL:目前使用的Shell的名稱,如bash
  • PATH:可執行程式的目錄集合
  • LANG:使用的語言,如zh_TW.UTF-8
  • XMODIFIERS:一般是輸入法,如@im=SCIM
環境變數是shell在執行子程序(child process)的時候留下的變數,其他你設定的變數將會消失,這實在意味著某種不方便,比方說,一些你自己設定好的路徑都將消失,你要用到這些變數將是一個十分痛苦的事情;所以有個功能叫做export,可以export variable,就可以繼續在child process裡面使用

晚一點在談談array的宣告跟一些常用的指令,shell真是博大精深阿

2007年6月23日

加速OOo啟動速度

打開OOo,由"工具"=>"選項"來會跳出一個選單,選擇左邊的OpenOffice.org=>記憶體
增加他的記憶體空間(請見圖片)跟啟動"快速啟動"項目


其實他主要的作用就是用空間換取時間,適合在記憶體空間足夠的人,另外就是進入桌面的時候稍微會曼一點

鳥哥筆記-Lesson 6

今天看的是壓縮檔,老實說,我對於壓縮在command line下,只剩下了兩道指令
tar xzvf xxx.tar.gz
tar cvzf xxx.tar.gz directory

剩下的就交給file-roller,真的是頗為偷懶:P

其實不用我多說,很多人都知道壓縮是用來節省空間的,不過話說回來,大多數人也是只有知道,有壓縮過的檔案比較小;其實壓縮可以看成是把整齊的資料變成一些"縮寫",縮寫的資料"混亂"的程度比原始來的"亂",空間來的小;比方說aaaaaa把他寫成6a,本來只有一種字母,現在變成兩種了,所以壓縮過後比較小,但是比較亂

知道了這件事情之後,還要給些感覺,比方說文字算是最整齊的資料,圖片/mp3一般來說算是很亂的資料,怎麼說圖片比文字亂呢?其實這是不大對的說法,主要是因為圖片會使用類似jpg或者gif的格式,他們是另外一種的壓縮方式(針對圖片設計,而tar, gzip, winrar等式針對一般資料),壓縮過後的資料都會比較凌亂,不相信你可以把檔案連續壓縮,你會發現,容量差別會愈來愈小,所以我一般不大會壓縮圖片/mp3的資料,至於文件檔案,我就會壓縮

接下來就是linux的壓縮指令囉,其實Linux下面有一堆壓縮程式,比較常用的有鳥哥介紹到的幾種,其中compress應該是已經沒啥人在用了,重點是如何辨識他們的附檔案名稱跟語法

  • *.Z compress 程式壓縮的檔案;
  • *.bz2 bzip2 程式壓縮的檔案;
  • *.gz gzip 程式壓縮的檔案;
  • *.tar tar 程式打包的資料,並沒有壓縮過;
  • *.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮

其中參數
c 將壓縮過程放置到standard output上,在tar表示create的意思
d 解壓縮
壓縮,其中bizp2跟gzip都可以選擇壓縮比例
compress/gzip your_file
bzip2 -z your_file
gzip/bzip -8 your_file

解壓縮
compress/gzip/bzip -d compressed_file


最後是tar,其實tar是一個打包程式,最主要的兩個指令如上,但是有兩個額外重要的參數,在備份的時候很重要-p(permission)跟-P(path),要加上這兩個參數,不然在解壓縮回來的時候,你會看到ls出來的檔案主要是依據使用者umask,在ubuntu的預設底下會是一片綠油油的(可執行檔的表示),你在檔案管理員下面double-click也會問你要不要執行,真的是很受不了

毅力

其實毅力對決大部分的人來說是需要的,就像是跑馬拉松一樣,尤其很多東西是累積起來的比如說:身材、體力、知識、語言能力;沒有一個是可以一天就弄起來的,我本來想要每天都寫上一篇有關我念鳥哥的心得,結果在算扣除忙碌的日子,還是有偷懶的時候,反省或許是多餘的,加油加油~先來上一篇吧~

2007年6月22日

好用的系統資訊軟體sysinfo

我們過去讀取linux資訊,大多面對的是一堆dmesg等等的指令,資料都是文字模式,怎樣讀起來也是吃力,後來Ubuntu下面有一個預設GUI畫面的應用程式,可以得知硬體之料,不過顯示跟排列的方式,實在是很抱歉阿~囧

昨天看到了一個軟體叫做sysinfo,雖然目前才0.7,不過實在是另我驚艷,因為這才是能看的軟體阿:P

2007年6月21日

Automatix2 on Ubuntu

在linux底下Nvidia在驅動程式支援感覺比ATI好的多orz,一般人在ubuntu安裝3D顯示卡的驅動程式仍然有些吃力,好在Automatix2給了相當的支援,個人推薦使用他來安裝Nvidia的driver,如何安裝automatix2呢?這是針對Ubuntu 7.04跟i386 or AMD64的步驟,有下列幾個步驟
  1. deb http://www.getautomatix.com/apt feisty main(加入到/etc/apt/sources.list)
  2. wget http://www.getautomatix.com/keys/automatix2.key
  3. gpg --import automatix2.key
  4. gpg --export --armor E23C5FC3 | sudo apt-key add -
  5. sudo apt-get update
  6. sudo apt-get install automatix2
如果是其他的distribution請參考http://www.getautomatix.com/wiki/index.php?title=Installation

在安裝完成NV Driver之後,會有一個漂漂亮亮的GUI讓你設定,然後可以匯出xorg.conf(這是X window的設定檔),建議不直接使用存檔功能,請先另存新檔,然後備份就有的/etc/X11/xorg.conf再把新的檔案覆蓋掉舊的檔案就可以了,然後重新開啟Xorg(如果不會就重新開機吧)

LInux使用UUID

在ubuntu中可以發現
#

proc /proc proc defaults 0 0
# Entry for /dev/sda2 :
UUID=0e4aa4fb-46cf-4b5e-9dad-cc9e7eeda693 / reiserfs defaults 0 1
# Entry for /dev/sda1 :
UUID=a56f8c86-92b7-4de8-a9dd-f959bacce64e /boot reiserfs notail 0 2
# Entry for /dev/sda3 :
UUID=abd8bfbe-006c-44f9-aa91-720bc9b4ab5c /home reiserfs defaults 0 2
# Entry for /dev/sda4 :
UUID=c26ad5ec-652d-48aa-a33c-bcafde4451f7 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
本來device被對應成UUID,那麼如何取得UUID呢?
ls -l /dev/disk/by-uuid

接著可能下一個疑問就是,為何要用UUID,請參考
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/zh_tw/admin-guide/s1-storage-rhlspec.html
底下是部份節錄,如果你使用隨身硬碟,裡面裝的是過去window$的分割區,你會發現,你可能會有auto-mount順序的問題,如果改寫fstab,然後用UUID

由於新增或移除儲存裝置,會導致現有裝置的檔案名稱跟著變動,所以當系統重開機之後,可能會面臨儲存裝置無法存取的命運。底下一連串動作,就有可能導致這樣的結果:

  1. 系統管理者加裝一張 SCSI 控制卡,並在上面接了兩顆新的硬碟(現有的 SCSI 卡已經接滿了)。

  2. 舊的 SCSI 硬碟(包括卡上接的第一顆硬碟 /dev/sda)不做任何更動。

  3. 重開機

  4. 因為新 SCSI 介面卡上的第一顆硬碟叫做 /dev/sda,所以先前叫做 /dev/sda 的 SCSI 硬碟得有個新名字

理論上,這聽起來是個大問題;不過事實上不會那麼嚴重。第一,這種硬體變動很少出現。第二,系統管理者多半會停機一陣子,好更動系統;停機時間需要事先仔細規劃,以免超出預計的時間,影響正常運作。這事先規劃的好處,則是讓管理者評估任何裝置名稱改變,可能帶來的問題。

然而,有些企業與系統設定就可能遇到這麻煩。常常更動儲存環境,以符合某些需求的公司,有時候就不容許任何停機時間。像「熱插拔(hotpluggable)」這種硬體就很容易安裝或移除;但在這種環境下,裝置的命名問題,就常常會帶來問題。幸好 Red Hat Enterprise Linux 的功能,可以降低這類問題發生的機會。

5.9.1.2.1. 檔案系統的標籤

有些檔案系統(這部份將在第 5.9.2 節討論)包含一組獨一無二的「標籤(label)」 — 用來分辨檔案系統所儲存的資料。當掛載檔案系統時,就可以利用這標籤,減低使用裝置名稱的需求。

檔案系統標籤用起來不錯;不過這標籤一定要獨一無二。如果同一台電腦裡,有兩個以上的重複標籤,您就沒辦法用這方式存取硬碟。同時要注意的是,有些系統設定並不使用檔案系統(例如某些資料庫),就不能享受標籤的好處。

5.9.1.2.2. 使用 devlabel

devlabel 指令會以另一種方式解決裝置的命名問題。Red Hat Enterprise Linux 開機時(以及使用者新增或移除熱插拔裝置時),會自動執行 devlabel

devlabel 執行時,會從設定檔(/etc/sysconfig/devlabel)讀取裝置清單。每個清單上的裝置,都有個(由系統管理者所選定的)symbolic link,以及該裝置的 UUID(通用唯一識別碼,Universal Unique IDentifier)。

devlabel 指令能確保 symbolic link 永遠指向原始的裝置 — 即使裝置名稱改變也沒關係。這樣一來,系統管理者就能使用像 /dev/projdisk 之類的名稱,而不是 /dev/sda12

因為 UUID 直接來自硬體,所以 devlabel 只要在系統中,尋找相符合的 UUID,並更新 symbolic link 即可。

要了解更多 devlabel 的資訊,請參閱《Red Hat Enterprise Linux 系統管理手冊》。


不過話說回來,人們對於使用UUID的褒貶不一,有人說以前的/dev/sda之類的方式還很清楚,改成UUID這一串長長的字串,反而不容易辨識

鳥哥筆記-Lesson 5

看看Partition跟File system

要說到這個,當然就得由硬體說起,硬碟是我們最常用的儲存裝置之一,他主要由數個圓盤,上面有著磁性物質,可以紀錄0101的二進位資料,然後讀寫臂是一隻長長的類似竿子的東西 ,當他首掃描過圓盤的區域,利用磁性的變化,就可以知道資料囉

每個圓盤會由數個同心圓的軌道(track)構成,每一個圓形分成數個區塊(sector),然後圓盤疊成一個圓柱狀的架構,每個在相同垂直位置上面sector構成了磁柱(cylinder),當然每個sector就是可以存著資料囉

然而第零個sector許於特殊磁區,稱為MBR(master boot record)用以紀錄Partition table跟啟動檔案的相關位置,也就是grub程式的位置囉~Partition table就是用以紀錄虛擬的分區,如/或者/home是由實體/物理上面的哪個cylinder到哪個cylinder

所以現在知道partition table的重要性了嗎?分配完畢空間之後呢,因為因應讀寫的需求,很多的存取的方式就衍生出來了,這部份比較完整的敘述可以參考作業系統(OS)設計的書籍;舉例來說好了,一般的fat32本身並沒有像是linux權限的觀念,他是過去window$跟目前SD卡常用File system

我覺得比較難解釋的是,mount point的觀念,也就是說linux並沒有M$的啥C, D槽的觀念,新加入的設備都是屬於一個新的mount point,也就是一個入口的觀念,不管是你的數位相機或者是SD卡,都會對應到/dev/sda之類的一個點,然後用mount -f vfat /dev/sda /mnt/c_disk這樣子,當掛載(mount)起來的時候,你就是將系統邏輯上的mount point跟實體的/dev/sda(其實這也是一邏輯上得對應)對應起來,事實上現在linux已經很聰明了,不用如過去一般,自己用mount指令,linux會偵測PnP的裝置,自動幫你掛載,除非有某些特殊原因,你才需要自己手動掛載

ls -l /lib/modules/`uname -r`/kernel/fs,這個指令可以看到你目前的kernel支援多少種FS(file system)

磁碟有了分割(partition)跟FS(file system)之後就可以開始使用,但是這時候我們對磁碟的東西有多開始有了興趣,有兩個指令可以幫助我們,分別是df(disk free)跟du(disk used),他們可以列出目前有多少剩餘空間跟已經使用的空間,-h參數可以以比較人性化的方式顯示出來剩餘空間數,比如說多少MB,不然他會給你的是cylinder的個數,你還要自己換算,頗為累人,最後要加上要查詢的mount point,如df -h /mnt/cdrom

另外一個我常用的統計方式是,du -h --max-depth=1 /mnt/cdrom,其中--max-depth=1表示路徑深度為1的使用奘況,如果該file是個目錄的話,他就會加總列出底下子目錄跟檔案總共佔用的空間大小,而不會把所有的檔案跟目錄佔用的大小逐一列出

那麼要使用一個全新的設備(可能連FS都沒有的裝置,或者你想把他規劃成我們想要的FS格式),有幾個步驟
  1. 對磁碟進行分割,以建立可用的 partition (fdisk)
  2. 對該 partition 進行格式化( format ),以建立系統可用的 filesystem(mke2fs...)
  3. 若想要仔細一點,則可對剛剛建立好的 filesystem 進行檢驗(fsck)
  4. 在 Linux 系統上,需要建立掛載點 ( 亦即是目錄 ),並將他掛載上來(mount ...)
接下來先看看幾個好玩的指令,在M$底下有所為的捷徑,在linux底下當然也不能少,他們都是有如實體的檔案存在,不過linux更加的廣泛;ln(link)指令可以製作

先寫到這裡,有點亂,晚一點有空在繼續跟整理

2007年6月19日

鳥哥筆記-Lesson 4

linux檔案的權限大致上分成owner, group, others;也就是擁有人、群組跟其他人,擁有人就是檔案的所有權人,本身權力是最大的,再來就是跟你同一組的人(例如同學之類),再來就是其他人囉~

每個人對檔案都有對應的rwx,分別是r(read)、w(write)、x(eXecute)這三項,一般而言,你個人的權限設置都是owner>=group>=others,比較合乎常理,也就是說你不應該把你自己設定為不可更改檔案,但是卻把你的群組的人設定成可以(不合理並不表示不可以)

要更改檔案權限的指令是chmod(change mode),使用二進位模式r=4,w=2,x=1,然後數字加總起來就是一組權限,分別對應owner, group, others就要有三組號碼,比如說你要把檔案權限變更成自己可以rwx,但是其他人都不可以使用,就使用chmode 700,如果你希望你同組的人可以讀取該檔案,你就是使用chmode 740這樣

這時候你可能會有點疑問是,每次我都要組合一次嗎?當然可以使用另外一種好記憶一點的語法就是chmod u+rwx file,表示擁有者u/g/o/a分別對應owner/group/others/all(包含前三者)+表示給予權限、-是除去權限、=表示設定,rwx就是分別各種權限囉,file表示你要更改權限的檔案,上面的方式是說,幫使用者加上讀、寫、執行的能力

一個人可以自己設定分享檔案的權限,但是誰來管理使用者呢?答案是root,一個linux系統預定的最高權利人,這個帳號幾乎可以對於你系統做出任何事情,延續之前的想法,我們想要反過來設定檔案的所有人chown(change owner),想要改變一個人的群組chgrp(change group)

接著就是講到file,其實linux底下的file包含了很多種種類,有regular file(一般檔案)、目錄(directory)、連結(link)、設備(device)、資料接口(socket)、資料傳輸管線(pipeline);詳細內容就請參考鳥哥的網站囉

最後要寫的是FHS我這方面的資訊不足,如果我要寫,可能會把鳥哥的網站copy很多資料,所以請參考鳥哥的網站,印象中它就是為了稍微整理一下各家linux distribution目錄結構不一致的問題,免得大家在開發程式,還為了尋找library等等的問題傷透腦筋,這是一個很好的提案

還有最近火紅的ntfs-3g,如果是ubuntu的話,請參考我的blog,以我們知道的ntfs是封閉模式(不是open source也不是open standard),有開放的一部分似乎只有讀取,且效能不張,後來有人揣摩出ntfs開發出了ntfs-3g的driver,讓使用者可以直接用有效率的方式讀寫ntfs;另外就是VFS(virtual file system),有點類似分散是檔案管理,也就是在硬體中間插入了一層logic layer,讓使用者可以有彈性的增減硬碟等等的設備

2007年6月18日

合法?合理?

最近往往看到一堆關於這方面的文章,因為是模糊地帶,所以侵犯到規範的人應該不算少

首先是新聞報導有提到
有某甲在網路或者其他通路買到一片動畫光碟,然後這張光碟本身是盜版的(某甲購買的時候不知情);接著在看完的狀況下,某甲再把它賣出,如果是正版,當然沒啥問題,可是這屬於販賣盜版的行為,所以有出版商就提出告訴。即使他在得知這對方真的不是盜版商人,它還是會堅持提告,真是心態可議,某甲可能為了息事寧人的狀況下,目出數十萬的賠償,本身還可能比這張光碟可以賣得的利潤還高。聽說有出版商很喜歡這樣作~


這就牽扯到,到底何者是對的?如果一般消費者辨識不出真假,不小心再把它拿出去交易,這樣也犯法的話,本身似乎太過苛責,舉例來說,如果一般人辨識不出假鈔再把它拿去消費,存款,那麼是否也是要國家單位提告呢?何者合法?何者合理?

再者說到翻譯字幕
很多人喜歡看外國影片,尤其是日文,但是看不懂中文的很多,中文出版商對於這部份又是愛理不理(因為有些作品沒$賺),所以就直接輸入不翻譯等等;網路上有人就發起了中文的翻譯字幕的念頭,可是這部份似乎犯法了,單單就翻譯字幕檔案的部份(本身不涉及散播動畫檔案)

因為這部份的權利似乎是給了出版商,可是在出版商的曖昧態度下,有好些人只能享受到"半部"作品,對於這些人翻譯的權利似乎被"剝奪"?何者合理,何者合法?

最後講到DVD分區的問題
DVD被全球劃分成數個區塊,然後每個區塊有他自己代號,一般來說你只能用對應的區號的解碼器(不論軟體、硬體),解開那一區塊代碼的影片,軟、硬體製作商應該也是被要求對於每個區碼付出相對應的權利金。

以一般的狀況來說,一個地區的解碼器,大部分只有為了該部份設計(軟、硬體廠商,為了賺錢),問題來囉,你在亞洲買了一個DVD,到美洲國家,你可能需要在買一塊,結果幾乎相同的作品,竟然要購買五塊相同的片子?何者合理?何者合法?

在考慮合法、合理等等事情中間的時候,似乎還參雜著商人利益的裝飾,真叫人有點不知所措阿!

2007年6月15日

鳥哥筆記-Lesson 3

由於已經晚上了,腦袋已經不靈光了,所以就進行一些簡單的任務吧,來看看一些常用的指令,本來應該先看一下檔案架構跟FHS的,不過就免了吧,免得腦死

絕對路徑跟相對路徑是很重要的觀念,如果有寫過網頁的人應該蠻清楚的,不再多說~鳥哥列出了一些常用的指令cd(改變目前所在位置), pwd(印出目前位置), mkdir(建立目錄), rmdir(刪除目錄),接著就是一些比較少用的方式囉

mkdir -p dir1/dir2/dir3 (對於不存在的目錄/路徑順便建立)
rmdir -p dir1/dir2/dir3 (刪除一連串的目錄)
mkdir -m 744 dir1 (其中m表示設定權限)

PATH變數說使用的指令/執行檔所在目錄,一般你下指令,會先到這些目錄收尋,如果match到的指令就套用;使用echo $PATH來觀察,增加可以使用
export PATH=$PATH:/home/user1/bin
這樣子不同的路徑之間用分開

檔案目錄操作指令常見的有cp(copy), rm(remove), mv(move),其中比較值得一提的是mv又可以作為重新命名之用,一般使用者如果直接從M$對應過來,可能比較適應,這些指令的常用的格式都是cp/rm/mv source_file destination_file

檢視檔案的內容,或許你會覺得linux/unix之類怎麼那麼無聊,發展出這些簡單的指令,然後好像功能又是重複,或者很無用呢?

其實是有些歷史因素,比如說,你由遠端登入觀看log檔案,有時候可能會有幾百MB那麼那,你不可能一頁一頁看,而且通常重要的事情會發生在尾端,你就需要從後面看(類似tail指令)

有些則是慢慢可以從前面找,只要看過就好,就可以用cat,但是如果說要比較,要上一頁/下一頁的跑就用less,有時候如果你想要從中間抓出特定給行,這時候行號就很重要啦,如nl之類的指令(大部分會配合pipeline使用)

接著你會覺得很無聊的就是,為何還有些只會抓幾行這麼龜毛的功能都出來了?因為過去很久以前阿,記憶體可是很貴的,網路頻寬也是很珍貴,能省則省(MIS多死幾個腦細胞沒關係XD)

功能很類似的指令,其實是消耗記憶體不一樣(歷史發展理由)或者可以使用pipeline來做出非常彈性的變化
  • cat 由第一行開始顯示檔案內容
  • tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
  • nl 顯示的時候,順道輸出行號!
  • more 一頁一頁的顯示檔案內容
  • less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
  • head 只看頭幾行
  • tail 只看尾巴幾行
在來看一個touch指令,看起來非常無用阿,只是更改一些狀態跟時間,真的是好像非常無聊;不過它也有實用的地方喔!

如果你開發過程式,你就大概隱約知道makefile的功能,在編譯C/C++程式的時候,主要根據C file(.c/.C)的更新日期,make程式來自動計算要不要重新編譯,因為數十年前來說,CPU資源是很珍貴的~編譯過的片段程式,沒有更新當然不用在編譯一次,可是有時候你只有改變了header file(.h),這樣make程式不會發覺,會造成錯誤喔,你也不想再用vi xxx.c然後再把它存檔,只要單純的touch xxx.c就可以了,重新make就可以了

下一次再來看看檔案權限的問題跟其他~

鳥哥筆記-Lesson 2

對於開機程序,鳥哥好像一開始比較少著墨?或許是寫在後面吧,anyway,我依照我手邊的資訊來補足開機的部份

開機一開始,當然是開機程序的天下,grub請參考之前的blog,grub有一個重大的任務就是找到kernel,如果有將/boot分割區分割出來,他就是放在boot上面,當然kernel不會太大,所以接下來就是開機的步驟囉
  1. grub首先完成開機的部份載入kernel到記憶體中執行
  2. kernel初始話device(為了掛載/)並且載入drivers
  3. kernel掛載/
  4. kernel啟動init程序(它是特別的程序,主宰眾多的process)
  5. init執行對應的run level
  6. init執行完成step 5之後,啟動登入程序,允許你登入
run level一般而言是一堆script集合,放在/etc/rc[1-6].c的目錄中,主要是啟動各種service主要的地方,比如說apache或者mysql之類的,他們一般都是daemon(有人說是惡魔,也有人說是守護神,性質類似常駐程式);目錄的數字表示run level,不同的run level表示不同的應用,比方說level 5是桌面程式,level 3是命令模式(開機完成並不會起動gdm等的登入畫面);因為不同的應用,所以要啟動的程式也不一樣,可以使用telinit 5或者telinit 3的方式來切換模式。

在各個目錄之中會看到檔名為S11klogdS表示start,後面的數字表示啟動的先後klogd表示它服務的名字,他是紀錄系統log的daemon,你會發現他是一個link

其實大部份的script的位置放在/etc/init.d/裡面,因為不同的run level可能會擁有共用的啟動程式,所以用作為link的方式最方便管理

2007年6月14日

鳥哥筆記-Lesson 1

要安裝Linux首先要知道自己的目的,以我個人來說就是當一些簡單的server,以充作開發環境,順便當作Desktop,我並沒有太多多餘的電腦可以拿來架設server,Distribution挑上Ubuntu,他是Debian base的系統,對於他的套件維護系統,我向來是相當讚賞(以前Linux安裝軟體,可是會被套件的相依性煩死的~呵呵),硬體就不用太計較,一般的桌上型電腦都可以吃阿

要安裝,首先我覺得最難的部份就是硬碟分割囉,在分割之前,要先認識一下各個硬體在Linux底下的代號

裝置代號
IDE硬碟
/dev/hd[a-d](大概是因為IDE一般只有連接四個裝置吧)
SCSI設備/dev/sd[a-p](SATA硬碟也算是這一種)
USB設備
/dev/sd[a-p](同上)
CDROM/dev/cdrom
軟碟機/dev/fd[0-1](應該比較少人在用了吧)
印表機/dev/lp[0-2]
滑鼠
/dev/mouse
磁帶機/dev/ht0(IDE介面)
/dev/st0(SCSI介面)

再來就是建立分割區囉,如何使用一些分割工具,就請見鳥哥的網站說明,如果是使用Ubuntu內建的分割程式也方便,重要是要如何分割囉,一般最少要有/(名稱是root)跟swap兩種分割,swap就是虛擬記憶體的空間,因為一般來說,只要記憶體不足,你就需要使用到它,另外/就表示是OS放置的地方囉~
如果以入門的人,當然只要這樣就可以,可是如果說要當Server之類,就要有別的切割方式,狀況有點類似在安裝M$ OS,這種安裝方式,就是整體只有一個C槽,程式跟資料全部放在一起,哪天OS毀了(中毒或者其他),你要從新安裝,那就辛苦囉,要整個format,在那之前還要備份哩,如果分成C,D兩顆,把資料放在D,程式跟OS放在C那就好一點,重新安裝完畢,對D做掃毒的動作就好,不用重新額外被分,當然Linux本來就有這樣的設計

我們來看一些常用的分割區
/(一定要有,就是放OS主要的地方)
/boot(放置kernel image的地方,在某些原因的時候,你必須要有這個,空間不用太大1G就很多了)
/var(如果安裝server,這個就很重要囉,你每天紀錄的log跟一些mail預設是放在這裡)
/home(使用者的空間,一般你個人的文件啦、網頁、照片都放這裡,所以這會是很大的一塊)
swap(一般要求是記憶體的兩倍,實際上,應該2G就很多了,如果特殊用途就另外)

如果只有/,那就是所有的/home,/var,/boot都是分享/的空間,一方面效能比較不好,另外一方面資料會混雜,效能是因為分割的話,讀寫臂可以快速移動到該分割區,資料也比較集中,資料混雜的問題如前面說的

基本上如鳥哥所說的,要注意一點就是,Linux只有允許四個Primary,也就是四個槽,你要額外在加上去的話,要先劃分extended在分成數個logic,也就是一般只會達到三個Primary一個extended,一個extended可以分成數個logic,如果把Primary都佔用光光,那麼以後要新增硬碟會有些麻煩喔~~另外可以用fdisk來觀看partition table

至於接下來安裝的一些選項就掠過不說(抱歉,這是我個人筆記,所以我只是針對我比較覺得要注意或者值得留意的記下,像是FS的問題我就不探討,請上鳥哥網站去看),最後所有distribution幾乎會安裝多重開機程式,不管是lilo或者grub也好,都是很方便的

下一個課程再來探討開機程序的過程

鳥哥筆記-Lesson 0

接觸Linux已經有一段時間了,Linux相關的知識也還不足夠,稱不上是個MIS,當然得好好的惡補一番囉!,網路上資源不少,高手也多,但是唯獨鳥哥真的稱得上"誨人不倦"阿,當然study-area也不例外

現在已經很多網站轉成討論版模式,這是我比較不喜歡的,因為說一句實話,那種網站的內容填充比較雜亂,也很難維護,不過內容由於大眾提供,擴張相當快速,鳥哥的私房菜算是中流砥柱,屹立不搖,我比較喜歡有主軸的方式

鳥哥另外令人佩服的一點就是,他不只公開的它內容,連帶他的書本也一樣暢銷,這是少數公開內容之後,書本又賣得很好的作者,讓我相當佩服

當然在決定補強Linux知識的時候,我決定以鳥哥網站的內容為基礎,做我自己內容的筆記,這只是我個人的筆記,所以請尊重鳥哥,喜歡他的內容的話,請上他的網站,或者買他的書籍,謝謝

2007年6月13日

Ubuntu 7.04安裝Postfix With SMTP-AUTH And TLS

http://www.howtoforge.com/perfect_setup_ubuntu704_p5
從上面網址看來的,作一下筆記


In order to install Postfix with SMTP-AUTH and TLS do the following steps:

apt-get install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail

You will be asked two questions. Answer as follows:

General type of configuration? <-- Internet Site
Mail name? <-- server1.example.com

Then run

dpkg-reconfigure postfix

Again, you'll be asked some questions:

General type of configuration? <-- Internet Site
Where should mail for root go <-- [blank]
Mail name? <-- server1.example.com
Other destinations to accept mail for? (blank for none) <-- server1.example.com, localhost.example.com, localhost.localdomain, localhost
Force synchronous updates on mail queue? <-- No
Local networks? <-- 127.0.0.0/8
Use procmail for local delivery? <-- Yes
Mailbox size limit <-- 0
Local address extension character? <-- +
Internet protocols to use? <-- all

Next, do this:

postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

Afterwards we create the certificates for TLS:

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

openssl rsa -in smtpd.key -out smtpd.key.unencrypted

mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Next we configure Postfix for TLS:

postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'
postconf -e 'myhostname = server1.example.com'

The file /etc/postfix/main.cf should now look like this:

cat /etc/postfix/main.cf

# TLS parameters
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Restart Postfix:

/etc/init.d/postfix restart

Authentication will be done by saslauthd. We have to change a few things to make it work properly. Because Postfix runs chrooted in /var/spool/postfix we have to do the following:

mkdir -p /var/spool/postfix/var/run/saslauthd

Now we have to edit /etc/default/saslauthd in order to activate saslauthd. Set START to yes and change the line OPTIONS="-c" to OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r":

vi /etc/default/saslauthd

#
# Settings for saslauthd daemon
#

# Should saslauthd run automatically on startup? (default: no)
START=yes

# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam -- use PAM
# rimap -- use a remote IMAP server
# shadow -- use the local shadow password file
# sasldb -- use the local sasldb database file
# ldap -- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"

# Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""

# How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5

# Other options (default: -c)
# See the saslauthd man page for information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Note: See /usr/share/doc/sasl2-bin/README.Debian
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Now start saslauthd:

/etc/init.d/saslauthd start

To see if SMTP-AUTH and TLS work properly now run the following command:

telnet localhost 25

After you have established the connection to your Postfix mail server type

ehlo localhost

If you see the lines

250-STARTTLS

and

250-AUTH PLAIN LOGIN

everything is fine.

The output on my system looks like this:

root@server1:/etc/postfix/ssl# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

Type

quit

to return to the system's shell.

14 Courier-IMAP/Courier-POP3

Run this to install Courier-IMAP/Courier-IMAP-SSL (for IMAPs on port 993) and Courier-POP3/Courier-POP3-SSL (for POP3s on port 995):

apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0

You will be asked two questions:

Create directories for web-based administration ? <-- No
SSL certificate required <-- Ok

If you do not want to use ISPConfig, configure Postfix to deliver emails to a user's Maildir*:

postconf -e 'home_mailbox = Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart

*Please note: You do not have to do this if you intend to use ISPConfig on your system as ISPConfig does the necessary configuration using procmail recipes. But please go sure to enable Maildir under Management -> Server -> Settings -> EMail in the ISPConfig web interface.

Gnome快速鍵

Ctrl+Alt+d 顯示桌面
ctrl+b 書籤
ctrl+c 複製
ctrl+v 貼上
ctrl+f 搜尋
shift+ctrl+f Web搜尋
ctrl+i 顯示屬性頁
ctrl+h 切換到home
ctrl+u 向上一級
ctrl+n 建立新文件
ctrl+o 打開
alt+f4 關閉視窗
shift+ctrl+w 關閉所有視窗
ctrl+= 放大
ctrl+- 縮小
ctrl+t 放到垃圾筒
ctrl+r/F5 更新

其實有不少跟M$相似的,但是最重要的是那個顯示桌面,我實在太習慣這種整理方式了orz,還有其實可以從"控制中心"=>"程式快捷鍵"找到不少

對兩個SATA硬碟套用grub多重開機

用的是grub 0.97,至於新版的grub已經直接跳到2.0,適用與否我就不知道了

SATA硬碟在Linux底下似乎被當成了SCSI裝置,然後我實驗發現,竟然開機會有"記憶效應"=.=,哪一顆硬碟先開機是有差別的

我兩顆硬碟,一顆裝M$ XP,一顆裝Ubuntu,那麼如果說,我先把其中一顆拔掉,然後開機,接下來再把另外一顆裝上,電腦會使用先前開機的那一顆開機orz

當然我是把grub安裝在Ubuntu開機的硬碟上面,然後先用Ubuntu開機,然後關機,再把裝有M$ OS的硬碟插上去,接下來修改grub設定,假設我們/dev/sda是ubuntu,/dev/sdb是M$ OS,我們修改device.map檔案,加入
(hd0) /dev/sda
(hd1) /dev/sdb
接著修改menu.lst,加入
title=Windows XP
rootnoverify (hd1,0)
map (hd0) (hd1)
map (hd1) (hd0)
chainloader +1

其中rootnoverify是表示使用該device作為root但是不會去mout他,map語法因為M$ OS有的需要一定作為排名上第一的硬碟,他才會爽開機

為了M$的設定,我在網路上找了三個多小時的資料,開機十幾次,頗為orz

Grub from ppt.cc

: 如果有多台硬碟,我通常會建議把grub優先灌在IDE硬碟上的MBR。為什麼?
: 先解釋一些東西。『MBR』是什麼?
: MBR就是每台硬碟第一個磁區(Sector,它的大小是512bytes)。
: 當我們一啟動電腦,BIOS作完一些基本的測試、初始化之後,
: 就會查詢你之前所設定的開機順序,
: 從開機順序決定要去哪個裝置讀取程式來載入作業系統。
: 比如說今天設定從一台硬碟機啟動,那麼BIOS就會去讀取這台硬碟上的第一個磁區,
: 也就是所謂的MBR。MBR裡通常存放者一些多重開機程式,例如grub、SPFdisk。
: 這些多重開機程式可以去硬碟上『裝有作業系統』的
: 『不同的分割區』上的第一個磁區(稱作boot sector,不要與MBR搞混)
: 啟動作業系統核心loader(例如:Windows XP的NT kernel loader)。
: 作業系統核心被成功啟動後,就可以使用作業系統了。
: 至於Linux的核心的loader就是grub。grub不能啟動Windows的kernel,
: 所以必須要去分割區上的第一個磁區找到Windows kernel的loader。
: 所以grub中會有一個指令叫作『chainloader +1』
: 就是去讀取一個Partition(分割區)的boot sector,
: 那個『+1』代表該Partiton的第一個Sector,『+2』代表第二個Sector、...依此類推。
: 但grub是一個功能強大的多重開機程式,
: 根本不可能把那麼多功能塞在一個512bytes的MBR上。
: 所以這個程式被切割成幾個部份:Stage 1、Stage 1.5、Stage 2。
: 這三個檔案可以在/boot/grub/底下找到。
: Stage1大小為512bytes,所以剛好可以存在MBR上。
: 當電腦一開機,BIOS啟動MBR上的grub Stage1,Stage 1會去啟動硬碟上的Stage 1.5。
: 可是有一個問題出現了,Stage 1是如何找到Stage 1.5的?
: Stage 1只有區區的512bytes,是沒有多餘的能力可以操縱分割區上的檔案系統,
: 所以沒有辦法用這個方法找到Stage 1.5。
: 而Stage 1其實是用一個方法找到Stage 1.5的檔案,就是當初在安裝grub到MBR時
: Stage 1.5所在硬碟上的那一個磁區的位置會被紀錄到MBR中,
: 所以Stage 1就會去指定的磁區位置找到Stage 1.5執行它。
: 那麼Stage 1.5是作什麼用的呢?Stage 1.5有很多個檔案,
: 分別是用來處理檔案系統(File System)用的。
: 像『fat_stage1_5』就是用來處理FAT Partition上面的檔案用的、
: 『e2fs_stage1_5』是用來處理Ext2、3的檔案系統用的。
: 所以grub到了Stage 1.5就可以由File System處理許多Partition上的檔案。
: 那麼接下來Stage 1.5會去啟動Stage 2。
: Stage 2就是grub的主要核心,幾乎大部分的功能都在裡面。
: 可是又有一個問題出現了,Stage 1.5是如何找到Stage 2的?
: 答案是:因為Stage 1.5已經可以辨識Partition上的File System,
: 所以自然有辦法找到Stage 2的檔案。
: Stage 2啟動後會去讀取menu.lst,然後grub的開機選單就呈獻在我們眼前。
: 還有一件事要注意的,就是我們開機啟動grub後,
: grub會對電腦上的每一台硬碟機命名。
: BIOS一開機時會在主記憶體初使化BIOS中斷服務(BIOS interrupts)。
: grub似乎是從BIOS的中斷服務得知電腦上的硬碟數量。
: 可是BIOS對每台硬碟機給的排序有一個特色(這一句話我不是很肯定),
: 就是可以用來開機的那一個硬碟機比較特殊,都是『第一個』硬碟機。
: 不管是用SATA、IDE、USB或SCSI硬碟開機,那一台硬碟就是『第一個』硬碟機。
: 其餘的硬碟機分別會依
: Primary IDE Master→Primary IDE Slave→Secondary IDE Master→
: Secondary IDE Slave→SCSI、USB或SATA
: 作排序。如果該插槽的硬碟機不存在就跳過排序。(光碟機不算在內)
: 然後grub會依照BIOS所給定的排序,分別給每一台硬碟機一個名稱--BIOS drive。
: 這個名稱的命名是從數字『0』開始
: (據說grub 2會改成從『1』開始。Partition的命名也是從『0』開始。),
: 第一台硬碟機就命名為『hd0』、第二台硬碟機就命名為『hd1』、
: 第三台『hd2』、...依此類推。
: 例如以下組合:
: [1] (『Primary IDE Slave HDD with grub』 + 『SATA HDD』),
: 從『Primary IDE Slave HDD with grub』開機
: → 『Primary IDE Slave HDD with grub=hd0』,『SATA HDD=hd1』
: [2] (『Primary IDE Master HDD』 + 『SATA HDD with grub』),
: 從『SATA HDD with grub』開機
: → 『Primary IDE Slave HDD=hd1』,『SATA HDD with grub=hd0』
: [3] (『Primary IDE Master HDD』 + 『Secondary IDE Master CDROM』 +
: 『Secondary IDE Slave HDD with grub』),
: 從『Secondary IDE Slave HDD with grub』開機 → 『Primary IDE Master HDD=hd1』
: ,『Secondary IDE Slave HDD with grub=hd0』
: 現在大概清楚grub的命名原理了吧。
: 那為什麼我會建議把grub灌到IDE硬碟上呢?
: 舉個例子:假設我們把Linux、grub灌在一台電腦的IDE HDD上的第3個分割區,
: 這台電腦還有一台SATA HDD。如果說今天改變主意,我們從IDE HDD啟動Linux,
: 然後我們在Linux中想把grub灌在SATA HDD上。
: 我們會執行以下指令:
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: # grub
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 這樣grub Stage1是會被灌到SATA HDD上的MBR沒錯,
: 可是我們個Stage 1.5與Stage 2卻是在『(hd0)』的硬碟上,
: 也就是說『Stage 1.5』所在的硬碟hd0上某個磁區的位置會被紀錄到MBR中,
: 這樣才可以給Stage 1找到。被紀錄到MBR的不是只有Stage 1.5所在的磁區位置,
: 還有所在的硬碟代號--hd0。
: 如果現在就重新開機,並調整BIOS為從SATA HDD開機,就會出現失敗。
: 為什麼?因為之前說過,用來啟動grub的那一台硬碟是第一台硬碟,
: 本來我們從IDE HDD開機進Linux,那個時候的hd0指的是IDE HDD。
: 可是灌好grub到SATA HDD後,重新開機、調整BIOS開機順序後,
: hd0變為SATA HDD那一台。在開機的時候,
: SATA HDD上grub會去找hd0上某一處磁區的Stage 1.5。
: 可是我們知道Stage 1.5應該是在IDE HDD上才是,
: 並不存在SATA HDD上,所以會產生錯誤。
: 諸如此類的問題還有不少,所以我是建議把grub灌在IDE硬碟上。
: 如果沒有IDE硬碟,就不用擔心這個問題,就把它灌在SATA、SCSI、USB硬碟上。
: 其實上面的講法不夠好,更一般的說法是:
: 請按照
: Primary IDE Master→Primary IDE Slave→Secondary IDE Master→
: Secondary IDE Slave→SATA 1→SATA 2→....
: 的順序安裝在以上第一個出現的硬碟機上。
: 不過上面那個失敗的範例也是有解決的方法,
: 就是手動指定裝置檔對應到BIOS drive。可以使用grub的『device』指令。
: 指令如下,請自行意會:
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: # grub
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 還有一個grub的問題就是裝置檔的問題。現在許多Linux Distribution使用
: udev來管理裝置檔(也就是/dev底下的那些檔案)。
: 可是udev在Linux核心開機後才會動態製作那些裝置檔,例如/dev/hda、/dev/sda。
: 我們常用Live CD去救援的時候,在chroot到我們要被救援的Linux partition後,
: 會發現grub抓不到任何硬碟。這是為什麼?
: 這是因為似乎grub在作業系統中執行的時候(就是不是在開機的時候執行),
: 是去/dev底下搜尋硬碟機的。
: 可是那個被救援的Linux partition的Linux核心並沒有被啟動,udev也沒有正常執行,
: 所以在chroot後的/dev底下沒有任何有關硬碟的裝置檔,
: 所以此時grub會找不到任何硬碟機。
: 解決的方法是用『mknod』這個指令手動創造裝置檔。
: 例如:
: # mknod /dev/hdc b 22 0
: 是用來創造hdc這個裝置檔到/dev底下。
: 那個『22』不是亂打的,它可以在Linux kernel Document查到
: /usr/src/linux/Documentation/devices.txt
: 而那個『0』指的就是/dev/hdc本身。
: 如果要創造/dev/hdc4這個裝置檔,可以用這個指令。
: # mknod /dev/hdc4 b 22 4
: 以下是一些常用的代號:
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 3 block First MFM, RLL and IDE hard disk/CD-ROM interface
: 0 = /dev/hda Master: whole disk (or CD-ROM)
: 64 = /dev/hdb Slave: whole disk (or CD-ROM)
: 22 block Second IDE hard disk/CD-ROM interface
: 0 = /dev/hdc Master: whole disk (or CD-ROM)
: 64 = /dev/hdd Slave: whole disk (or CD-ROM)
: 8 block SCSI disk devices (0-15)
: 0 = /dev/sda First SCSI disk whole disk
: 16 = /dev/sdb Second SCSI disk whole disk
: 32 = /dev/sdc Third SCSI disk whole disk
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 製作好裝置檔後,再執行grub就可以找到硬碟了。
: 記得裝完grub後要把手動製作的裝置檔rm掉,讓udev來管理裝置檔。
: (不刪掉應該也不會有什麼問題)
: (如有錯誤,歡迎指正)
推 好文一個
看我這篇文章的時候請先把上面的好文看玩
GRUB視一套開機管理程式
在此並不針對GRUB做詳細說明 因為上面講解的比我還要詳細許多

來說說今天發生的一件慘事
就是某位RD把GRUB安裝在/dev/hda1
(經由確認 電腦的XP是安裝在hda1 且為NTFS磁區 )
正常的情況下GRUB 都是裝在/dev/hda 即所謂MBR 或者是LINUX的BOOT磁區的第一軌
又或者是BOOT硬碟的第一個主要分割區

但是今天 他卻把GRUB裝在NTFS分割磁區的第一軌 而且那個磁區已經要資料在

這就發生了慘事 不但XP開不了機 連NFFS分割區上面的資料全毀

這個時候就會有人說 找硬碟救援軟體 如 FINALDATA EASYRECOVERY R-STUDIO
去救資料 這也行 因為它是刞ㄧ個SECTOR一個SECTOR去做掃描 來讀取 有人會問了
既然是把第一軌毀掉 那總可以重建八
是的 MFT可以重建 因為當初在設計NTFS 這個檔案系統的時候
就想過分割區的第一軌有可能會被病毒修改 而開不了機或者是
下面先列出位於 http://www.ntfs.com/ 的 一段話

How can we fix NTFS boot sector using standard Windows NT/2000/XP tools?

On NTFS copy of boot sector is stored at the middle or at the end of the Volume.

You can boot from startup floppy disks or CD-ROM, choose repair option during
setup, and run Recovery Console. When you are logged on, you can run FIXBOOT
command to try to fix boot sector

翻譯就是NTFS磁區的 Boot Sector 也放了一份複本在中間鬼與最後一軌
所以只需要把XP或是2000的安裝光碟放入 然後選擇修復主控台模式 打入FIXBOOT即可修復

哈 都是GRUB惹的禍

Samba3的資源回收統

轉載Moto論壇的Tetralet的文章

在網路管理中,資料的備份是極重要的事,
而最怕的就是聽到使用者說:『我不小心在網路的芳鄰里把檔案刪掉了。怎麼辨?』

您也許知道,
在網路的芳鄰里所刪掉的檔案是不會出現在本機的資源回收筒裡的;
這個檔案將就這樣消失掉,再也找不回來了...

那麼,是否有什麼解決方案呢?

在 Samba 3.0 裡,
已針對這個問題實作了資源回收筒。
啟用的方法是只要在 /etc/samba/smb.conf 中設定了:
代碼:
# 分享之名稱
[Softwares]
# 分享之路徑
path = /Share/Softwares
# 分享之說明
comment = 常用軟體
# 要不要讓該分享出現於網路的芳鄰里
browseable = yes
# 擁有讀取權限的帳號
valid users = tetralet,@users
# 擁有寫入權限的帳號
write list = tetralet
# 所建立的檔案的預設權限
create mask = 0664
# 所建立的目錄的預設權限
directory mask = 0755
# 是否允許使用者覆蓋別的使用者的檔案
lock = true
# 是否可以匿名存取
public = no

# 載入 資源回收筒 模組
vfs object = recycle
# 在將檔案移入 資源回收筒 時,要建立相對應的目錄結構
recycle: keeptree = yes
# 資源回收筒 之相對路徑。後面的 %u 則為使用者帳號。
recycle: repository = ../Recycle/%u
# 不進行 資源回收 的檔案類型
recycle: exclude = .tmp|.temp|.o|.obj
# 若有相同檔案名稱時,則加以編號識別
recycle: versions = yes


如果使用者在 Samba 上刪除任何檔案,
Samba 就會自動把使用者所刪除的檔案移入 recycle: repository 所指定的相對路徑裡了。
而在 MS Windows NT/2000/2003 上可沒有提供類似的功能!

 注意:

  * recycle: repository 只能指定相對路徑。無法指定絕對路徑。

  * 要注意 recycle: repository 目錄之權限,要讓使用者能夠寫入才行。

  * 而在檔案移入 recycle: repository 目錄後,其權限則為 600。在安全性上就比較不用擔心了。

  * 檔案在移入 recycle: repository 目錄的過程中,若發生任何問題,
   如:無法寫入目錄等等,Samba 會寫入一筆錯誤資訊至 Log 中,但還是會把檔案給刪除掉。
   這是必須要注意到的地方。

  * 可想而知的,Samba Server 的硬碟將很快就會塞滿了一些過時無用的檔案。
   要記得常常清理呀!

Samba 還提供了一些如:稽核、即時掃毒等等模組,相關資訊可以參考 Stackable VFS modules


有了這個超實用的功能,
的確有充份的動機把 MS Windows 的 File Server 給丟掉了...

2007年6月12日

Ubuntu Nvidia安裝Beryl

首先建議使用Automatix2安裝Nvidia的Driver,接著安裝beryl套件,我安裝完成之後發現,視窗的"裝飾"(就是那些最大化、最小化的按鈕、Caption)不見了

依照正體中文ubuntu論壇中談到的,加入/修改 以下的部份

Section "Extensions"
Option "Composite" "Enable"
Option "RENDER" "Enable"
EndSection

Section "Screen"
Option "AllowGLXWithComposite" "True"
Option "AddARGBGLXVisuals" "True"
.....
EndSection

Section "Device"
Option "RenderAccel" "True"
Option "DisableGLXRootClipping" "true"
Option "BackStoring" "True"
.....
EndSection


這樣一來就可以解決問題,我的顯示卡式Nv 5200

DMA under Linux

只要提到硬碟加速,大部分的人都會想到DMA,而已現在的發展,其實DMA一般人最大的作用對象只有IDE的硬碟而已,根據我自己的測試SATA的硬碟表現不大會受DMA的影響

選對你要測試的Device,然後執行類似下面的指令,你就可以得到目前HD的速度
hdparm -Tt /dev/hda
會出現兩個數據,一個是有透過cache的,速度會比較快,另外一個是沒有的

另外可以執行指令
hdparam -i /dev/hda
就可以看到device的相關訊息,至於訊息的內容,可以參考我下面網路找到的資料

至於要如何設定DMA,可以參考鳥哥的網站,有比較詳細的介紹,在Ubuntu底下,只要透過修改/etc/hdparm.conf就可以了

使用

Usage: hdparm [options] [device] ..

Options:

-a get/set fs readahead

-A set drive read-lookahead flag (0/1)

-b get/set bus state (0 == off, 1 == on, 2 == tristate)

-B set Advanced Power Management setting (1-255)

-c 設定 IDE 32-bit I/O 模式

-C 檢查 IDE 電源模式狀態

-d 設定 開啟 DMA 模式

-D enable/disable drive defect-mgmt

-E set cd-rom drive speed

-f flush buffer cache for device on exit

-g display drive geometry

-h display terse usage information

-i 顯示磁碟識別資料

-I detailed/current information directly from drive

-Istdin similar to -I, but wants /proc/ide/*/hd?/identify as input

-k get/set keep_settings_over_reset flag (0/1)

-K set drive keep_features_over_reset flag (0/1)

-L set drive doorlock (0/1) (removable harddisks only)

-M get/set acoustic management (0-254, 128: quiet, 254: fast) (EXPERIMENTAL)

-m get/set multiple sector count

-n get/set ignore-write-errors flag (0/1)

-p set PIO mode on IDE interface chipset (0,1,2,3,4,...)

-P set drive prefetch count

-q change next setting quietly

-Q get/set DMA tagged-queuing depth (if supported)

-r get/set readonly flag (DANGEROUS to set)

-R register an IDE interface (DANGEROUS)

-S set standby (spindown) timeout

-t perform device read timings

-T perform cache read timings

-u get/set unmaskirq flag (0/1)

-U un-register an IDE interface (DANGEROUS)

-v defaults; same as -mcudkrag for IDE drives

-V display program version and exit immediately

-w perform device reset (DANGEROUS)

-W set drive write-caching flag (0/1) (DANGEROUS)

-x tristate device for hotswap (0/1) (DANGEROUS)

-X 設定 IDE xfer 工作模式 (DANGEROUS)

-y put IDE drive in standby mode

-Y put IDE drive to sleep

-Z disable Seagate auto-powersaving mode

-z re-read partition table

開啟 32 bit I/O, UDMA100 模式, 例:

[root]# hdparm -d1 -c1 -X69 -m16 /dev/hda

其中的 -X69 代表 UDMA100, UDMA66 請設 -X68

詳細參考 IDE modes for hdparm -X parameters:

  • PIO mode
    • 0 -X08 3.3MB/sec
    • 1 -X09 5.2MB/sec
    • 2 -X10 8.3MB/sec NEC PC-98*1
    • 3 -X11 11.1MB/sec
    • 4 -X12 16.7MB/sec
  • Singleword DMA mode
    • 0 2.1MB/sec
    • 1 4.2MB/sec
    • 2 8.3MB/sec
  • Multiword DMA mode
    • 0 -X32 4.2MB/sec
    • 1 -X33 13.3MB/sec
    • 2 -X34 16.6MB/sec
  • Ultra DMA mode
    • 0 16MB/sec
    • 1 25MB/sec
    • 2 -X66 33MB/sec UDMA33
    • 3 50MB/sec
    • 4 -X68 66MB/sec UDMA66
    • 5 -x69 100MB/sec UDMA100

測試硬碟的速度, 例:

hdparm  -Tt  /dev/hda

上面是測試 /dev/hda 硬碟的傳輸速度

在Linux底下手動安裝java跟他的plug in

在ubuntu底下java已經被import進去,人們可以透過他的套件管理程式加入java,當然包含jre;相信很多distribution應該也已經會者打算推出這樣的方式,不過我個人還是對於手動設定java情有獨衷,因為實在有些方便,尤其是想要混和各種java版本時候,還有就是不會一個套件被打散到很多目錄,管理起來實在有點麻煩呢!

首先當然是到昇陽的官方網站下載java,他下載回來後,要加上可以執行屬性,然後執行他,一開始會跳出一個要你同意的合約,當然就只能同意囉,不然就不用裝了,接下來他會自解壓縮檔,解開之後,你高興放到哪裡就放到哪裡囉,記得要設定JAVA_HOME到對應的位置,為了方便,當然要加入PATH=$PATH:$JAVA_HOME/bin囉!

接下來就是一般人不大使用的部份,就是把java的plug-in放到firefox相對的位置,其實這一部份官方網站的文件有寫,我就簡單的import進

cd /plugins
ln -s /plugin/i386//libjavaplugin_oji.so
cd /plugins
ln -s /plugin/i386//libjavaplugin_oji.so

cd /extensions
unzip /lib/deploy/ffjcext.zip

這樣就搞定囉~

Linux的效能迷思

很多人認為Linux不用太多的硬體就可以跑的動?
是的,可是如果你只想在指令模式下面執行,把他當作Server來說,這樣你可以省下很多的硬體的需求,如果你要當桌面環境,你還是乖乖用好一點的機器,Linux也是愈來愈胖的,這是軟體的趨勢。架設Server來說,需求不一樣,但是M$並沒有提供這樣沒有桌面的環境,比如說當個簡單的ftp server,你只要硬碟夠大,網路夠快,一點都不需要桌面環境, 一般來說就足夠了,除非有一些類似企業要使用,對於存取速度非常要求(多人同時,大量資料),不然只是家庭使用的話,一般可能只要PII等級的CPU就能夠了

Linux圖形介面會比較省記憶體
Xorg由於一開始仿照X11設計,所以他們基本上跟M$的單機設計的核心不一樣,所以整體來說,除非你作為分散是的(就是有Client端負責繪圖,Server端負責計算),不然,我的感覺,他是比M$更加消耗記憶體,也就是說,我們應該拿跟M$同樣等級的機器來跑Xorg的環境,不然會喘噓噓,至於Vi$ta我還沒試驗過,這個就不知道了

使用light weight desktop環境,不要使用如Gnome不就可以有很好的performance?
某種程度來說,這是對的,但是你不執行FireFox之類的瀏覽器嗎?你不執行OpenOffice的辦公室作業軟體嗎?如果你的答案都是yes,那麼其實他們跟light weight desktop來說一點都不相干 ,他們會讓你電腦快不起來,這才事主要原因,單純的換用desktop manager並沒辦法解決太多問題,Gnome/KDE是提供了一些相當的便利性(但是也有一些是你不需要的),所以你省下來的記憶體有限,為了你作業速度的流暢感;除非真的經濟拮据,不然我老實建議,換台電腦或者多買一條記憶體或者好一點的CPU都是比這個實在

Ubuntu/Linux不用怎樣調整就可以跑得很順了,哪像XP還動不動就跑很慢
一般來說XP一開始還蠻快的(除了NB一開始出廠竟然使用Fat32的FS跟預設裝了一堆用不到的常駐程式),Linux也是一樣,可是漸漸會減慢作業系統速度的是你一些常駐程式,比方說XP右下角一堆的tray icon,其實如果沒必要,真的要關閉他不然M$的開機速度會便慢。同理Linux也要關閉一些類似ssh server(如果你只是個人使用,這東西只是吃記憶體的service),這些沒用的service一樣會害你開機速度減慢

最後我想說,請把OS當OS看待,他有一些你想不到的好處,但是別太期待他可以當超人,比如說同樣的硬體換了一種OS就可以變得超快,其實~程式設計師們都沒笨到那種程度

FireFox常用套件與Gnome常用裝飾

FireFox
  • adlock
  • all-in-one gestures
  • downThemAll
  • right encoding
  • show image
  • 同文堂
Gnome,當然首推http://www.gnome-look.org,這個充滿各種theme的網站囉
  • 介面使用ClearLook
  • 圖示使用OS X
  • 滑鼠用neutral
  • GDM畫面用AVIO-GDM

Ubuntu下面的Firefox字型

不知道大家有沒有感覺,就是Firefox在Ubuntu下面,不論是英文字或者中文字都是有點糊糊的感覺,比較一下M$新的啥正黑體,雖然對M$的字體感覺有些奇怪的地方,不過又用不到,就不予討論

使用Open Desktop釋出的字型也是一樣,雖然他在絕大部分的Gnome application看起來還不錯,可是遇上firefox就不行

有人在網路上放著使用Mac的儷黑體的字型,感覺很漂亮,可惜本人沒有買Mac OS所以也拿不到字型


我還試驗過cwTex的粗黑體跟圓體,可惜都會有些小問題,比如說英文字會糊糊的等等,還是不大滿意,有時候看久了會吃力

後來改用之前王漢宗先生釋出的特黑體,感覺就好很多,雖然有些文字就比較"擠"一點,但是整體在清晰度上好一些,還有記得要把最小字型限制到12喔,不然有些部份中文字字體會"破碎"

2007年6月11日

Linux之緣起不滅

我對Linux的接觸,跟發展Linux的開頭很像,Linux開始是因為作者對Unix的喜愛,但是他實在太貴了;我對M$也本也沒有太壞的感覺,但是漸漸的,發現,原來軟體也是很貴的,難道我沒有一個好一點的方案嗎?後來就是接觸了Linux

在一開始接觸Linux,老實說,我覺得真的跟M$有點像(當時M$在win 3.1),但是穩定的多,漸漸的M$出了Win 95, 98,應用程式簡直如與後春筍的冒出來,開始覺得M$比較好,好的不是M$本身,而是他眾多的應用程式(或許這也是M$成功的一環喔!)

但是漸漸的,商業的東西實在太貴了,一台電腦軟體OS、辦公軟體加上一個程式開發環境,可以比硬體還貴上許多阿(以前win3.1跟dos6.22有點搭配硬體出貨,跟NB會配上一些隨機版一樣),可是當時的Linux應用程式跟視窗的友善度簡直落後M$ GUI五年阿

我常常說Linux GUI落後M$五年,M$穩定度落後Linux五年 XD。慢慢的隨著Linux的成長,跟週邊的應用程式,他漸漸的有跟上M$桌上軟體的趨勢,當然M$這幾年也是不讓Linux專美於前在穩定度也是由XP開始提昇,安全性也漸漸著重

M$現在更是在週邊整合佔了上風,漸漸的Linux會在某些方面落後(以整合性來說,Linux落後於商業的主導權跟規格的不開放);所以未來如果規格開放的話,Linux可以再次跟M$一較長短,M$不斷的破壞、隱蔽他們的規格,這是不對的!奈何現實如此

我還是慢慢的愛上Linux,因為我不覺得我需要太多花俏的東西,例如Vi$ta,那種肥的要死的軟體,更是利用商業手段,逼著大家放棄原來的XP;誰能想像一個效能本來就比桌上型電腦差的NB竟然還要配備Vi$ta這樣肥的軟體,要花錢也買不到XP,真是一整個誇張

Linux在中文有個比較奇怪的地方就是書籍不多,以中文電腦書籍來說,大概就是M$ Office最暢銷,對於M$ OS本身的就是以很低的價格,隨便賣(大概寫的人拿不到多少,出版商也不打算再版太多),可是Linux連Gnome跟KDE桌面環境的書籍竟然是屈指可數阿,這對一般的使用者最是重要阿(不是每個人都可以看得懂英文的,四、五十歲的老人家,英文程度到可以看懂的不多);Open Office也是少,每一本都是薄薄的三百頁左右

資訊的累積

不知道從哪裡看到的一句話:「找到你想要的資訊不難,但是要在找到它很難!」
我發現真的這樣,我可以從google上面很容易的透過一些關鍵字就找到我想要的資訊如果沒有記錄下來,往往過沒多久,我就不知道要如何在找到他們了

有可能是他們的網頁已經被拿掉,有可能我已經忘記關鍵字了,這也是我建立這個blogger的動機之一,希望藉由他當作我一個紀錄

其中有不少文章是從網路上抓下來的,有時候過去紀錄在mail上面(我之前是用mail來紀錄)所以我也稿不清楚作者是誰,如果有侵犯到你們的版權,請來信block.blogger{A_T}gmail.com(避免網蟲抓走,請轉換一下),我會儘快的把內容拿掉

在Ubuntu中安裝Acrobat Reader 7.0

1.加入金鑰,開啟終端機複製貼上指令:
wget -q http://medibuntu.sos-sts.com/repo/medibuntu-key.gpg -O- | sudo apt-key add -

2.編輯套件庫來源:
sudo nano /etc/apt/sources.list

3.最下面空白處加入(終端機中用方向鍵將文字游標移到最下方,按右鍵貼上,存檔寫入檔案為crtl+o,離開為crtl+x):
## Medibuntu - Ubuntu 7.04 "feisty fawn"
## Please report any bug on https://launchpad.net/products/medibuntu/+bugs
deb http://medibuntu.sos-sts.com/repo/ feisty free non-free
deb-src http://medibuntu.sos-sts.com/repo/ feisty free non-free

4.更新套件列表,安裝Adobe Reader:
sudo apt-get update && sudo apt-get install acroread

5.下載繁體中文字型包:
http://www.adobe.com/products/acrobat/acrrasianfontpackthanks.html?hasjavascript=0&Version=Adobe+Reader+7.0x&Language=Chinese+Traditional&Platform=Linux+x86

6.下載完後檔案上按右鍵解壓縮,用指令進入資料夾,例如:
cd /home/使用者名稱/Desktop/CHTKIT

7.執行安裝檔:
sudo ./INSTALL
會問你確定安裝?打y,按Enter鍵
會問接受授權?打accept,按Enter鍵
接下來問安裝路徑,複製貼上/usr/lib/Adobe/Acrobat7.0 ,按Enter鍵
安裝完成!!~享受Adobe Reader 7吧~^^

更多亞洲國家字型下載: http://www.adobe.com/products/acrobat/acrrasianfontpack.html

修改Gnome的隨身碟設定

一般使用者都想要PnP,但是隨時跳出一個瀏覽視窗,有時後會讓人討厭
例如插入一個2.5吋的隨身碟,結果跳出數個瀏覽視窗

在Ubuntu下可以由"抽取儲存裝置與媒體"設定

Ubuntu上面裝Canon iP1000 Printer

話說阿~iP1000不知道啥原因,Ubuntu還沒有預設的Driver哩
網路上尋尋密密,終於在某個日本人大大的地方找到
http://mambo.kuhp.kyoto-u.ac.jp/~takushi/japanese.html

簡單的步驟是

在source list加入
deb http://mambo.kuhp.kyoto-u.ac.jp/~takushi/ubuntu ./
然後更新aptitude update
安裝aptitude install libcnbj-2.5 bjfilter-2.5 pstocanonbj
搞定


接著用Control Panel裡面的新增印表機就可以抓到了

這台印表機要推一下,因為噴嘴跟墨水分離,還有五年保固,
二線廠的黑墨水一顆約50,大概可以列印兩百多張左右,當時
又是1500NTD真的很超值

現在Canon好像沒有推出這種的喔?新的好像墨水夾跟噴嘴是一體
走HP路線(主要賺墨水的錢)

2007年6月10日

免費軟體

紀錄一下常用的免費軟體,其實已經有許多好用的軟體,人們可以不用盜版

  • Open Office
  • Dia
  • FastStone
  • FireFox
  • ThunderBird
  • NotePad++, Gvim
  • Gimp
  • avast! Antivirus
  • skype
  • ATNote
  • winamp
  • PCMan
  • Dev-C++
  • Virtual Box
  • 7-zip
  • StarDict
  • SunBird
  • FileZilla
  • UltraVNC
  • Pigdin
  • Httrack
  • K-lite Codec
  • Ecplise
多不勝數阿~雖然有些功能還陽春,但是相信不久的將來,以單純的桌面來說
應該是非常勝任

2007年6月8日

Virtual Box 1.4建立分享資料夾

要先安裝 Guest Additions 才能使用共用資料夾,目前假設 Host OS 是 Linux。



1. 在 virtual machine 還沒啟動之前,輸入指令
VBoxManage sharedfolder add -name -hostpath

其中 是 virtual machine 的名字, 是在 Guest OS 中會看到的資料夾名稱, 是 Host OS 中要共同的資料夾名稱。

例如我有一台 VM 叫 WinXP,想要把 /mnt 當做共用資料夾,希望在 Guest OS 裡看到的名字是 sharexp,那可以下這個指令:

VBoxManage sharedfolder add WinXP -name sharexp -hostpath /mnt

至此在 Host OS 中的設定已作完,接下來要到 Guest OS 裡作設定。


2. 如果 Guest OS 是 Windows,要輸入
net use x: \\vboxsvr\

其中 x: 是 Windows 下還沒用到的磁碟機代號, 以前例而言就是 sharexp。最要注意的是 x: 和 \\ 之間要有空格,不然會出現錯誤訊息,我就是一直卡在這邊,直到後來看到一篇文的提醒才成功的!


3. 如果 Guest OS 是 Linux,要輸入
mount -t vboxsf [-o OPTIONS] sharename mountpoint
4. 如果要移除共用資料夾,只要輸入
VBoxManage sharedfolder remove -name
即可。
參考資料:Virtual Box 的 User manual

最佳化Linux FS (Ext3 & ReiserFS)

FS最佳化

針對EXT3和ReiserFS FS:
打開終端控制台輸入
sudo gedit /etc/fstab


UUID=fbd485b3-57a9-4538-b56c-23695a248067 / ext3 defaults,errors=remount-ro,0 1
增加為
UUID=fbd485b3-57a9-4538-b56c-23695a248067 / ext3 defaults,errors=remount-ro,noatime,data=writeback 0 1
修改menu.lst

輸入
sudo gedit /boot/grub/menu.lst

將最佳化的屬性
rootflags=data=writeback

加到下列行末尾
# defoptions=quiet splash rootflags=data=writeback
# altoptions=(recovery mode) single rootflags=data=writeback

更新Grub:
引用:
sudo update-grub
將文件系統由"on-the-fly" 改為writeback
確定root所在分區名稱。(我的是/dev/hda3)

執行:
sudo tune2fs -o journal_data_writeback /dev/hda3
警告:最佳化ext3分區使用

這樣的作法有風險,對於一些當機時候的資料可能遺失,因為他不是on-the-fly寫回

中文編碼轉換

轉換文件名由Big5為UTF8
sudo apt-get install convmv
convmv -r -f cp950 -t utf8 --notest --nosmart *

批量轉換src目錄下的所有文件內容由GBK到UTF8
find src -type d -exec mkdir -p utf8/{} \;
find src -type f -exec iconv -f Big5 -t UTF-8 {} -o utf8/{} \;
mv utf8/* src
rm -fr utf8

轉換文件內容由Big5到UTF8
iconv -f gbk -t utf8 $i > newfile

轉換 mp3 標籤編碼
sudo apt-get install python-mutagen
find . -iname 「*.mp3」 -execdir mid3iconv -e UTF-8 {} \;

一些常用的查詢Linux指令

查看核心
uname -a

查看Ubuntu版本
cat /etc/issue

查看核心載入的模塊
lsmod

查看PCI設備
lspci

查看USB設備
lsusb

查看網卡狀態
sudo ethtool eth0

查看CPU
cat /proc/cpuinfo

顯示當前硬體資訊
sudo lshw

硬碟
查看硬碟的分割區
sudo fdisk -l

查看IDE硬碟資訊
sudo hdparm -i /dev/hda

查看STAT硬碟資訊
sudo hdparm -I /dev/sda

sudo apt-get install blktool
sudo blktool /dev/sda id

查看硬碟剩餘空間
df -h
df -H

查看目錄佔用空間
du -hs 目錄名

隨身碟沒法卸載
sync
fuser -km /media/usbdisk

查看當前的記憶體使用情況
free -m

查看當前有哪些Process
ps -A

MySQL錯誤處理

在MySQL裡創建外鍵時(Alter table xxx add constraint fk_xxx foreign key),提示錯誤,但只提示很簡單的信息:ERROR 1005 (HY000): Can't create table '.\env_mon\#sql-698_6.frm' (errno: 150)。根本起不到解決問題的作用。

要看錯誤的詳細提示,可以使用命令:(在MySQL Manual裡搜索「errno 150」時找到)

SHOW ENGINE INNODB STATUS; //針對用INNODB存儲方式的數據庫

在信息中有一組【LATEST FOREIGN KEY ERROR】會有最近錯誤的詳細描述和解決辦法。
如:
Cannot find an index in the referenced table where the referenced columns appear as the first columns, or column types in the table and the referenced table do not match for constraint.
(譯:不能在「被reference的表」裡找到包含
「被reference字段」的索引,或者是兩個關聯字段類型不匹配)

出自http://www.blogjava.net/amigoxie/archive/2007/03/22/105485.html

Linux下Java的中文字問題解法整理

Sun JDK/JRE在Windows上安裝很方便,但是在Linux上

安裝給很多人造成了不少麻煩,這幾天我查了不少文章,終於總結出一套較為完整的方案。我是在Ubuntu 6.10上試驗的,當然也適合於其他版本的Linux。

Sun發佈的JDK/JRE有兩種版本,一種是.rpm.bin格式的,另一種則是.bin格式的,前者我沒有試,但是我想應該是適合於rpm的,可能會 安裝到/usr裡面去,而且自動化程度可以高一些。後者則完全是綠色軟件,只是做一個解壓的動作。下面我就來講後者的安裝全攻略。

1、首先我們要到Sun的網站上去下載JDK/JRE(點這裡進入),最新的正式版本已經是6.0(也就是1.6),當然老的版本Sun也仍然提供下載,點上面的「Previous Releases」就可以找到了。下載.bin文件,下面假設這個文件的名字是jdk1.x.bin。

2、把安裝文件解壓出來。假設我們下載的文件保存在/opt下。

打開終端,運行以下命令:

引用:

cd /opt
chmod a+x jdk1.x.bin
./jdk1.x.bin


你會看到版權提示,不管它,按空格鍵翻頁。然後會提示你是否同意版權協議[yes/no],此時輸入yes,[enter],安裝程序就會把文件解壓到當前目錄下的jdk1.x這樣的目錄下面(JRE應該大體相同)。

3、讓JDK/JRE支持中文。由於默認安裝的JDK/JRE不帶中文字體,不支持中文顯示,所以我們要自行修改某些字體相關的配置,讓它們支持中文。

設定字體有兩種方法:

第一種方法是把你的中文字體目錄做個連接到jdk/jre/lib/fonts裡面,這種方法很簡便。看命令:

引用:

cd /opt/jdk1.x/jre/lib/fonts
ln -s /usr/share/fonts/truetype/windows fallback (假設我們的中文字體放在/usr/share/fonts/truetype/windows目錄裡,這個目錄裡我放的是從Windows那邊copy過來的字體)

為什麼要做fallback這個連接,我也是從網上看到的,我想應該是Sun做的設定吧,設定JDK/JRE在運行時會到這個目錄裡去找那些非西方字體。 這種方法對JDK/JRE 1.4/1.5/1.6都適用,但是由於沒有在fontconfig.properties文件裡面詳細設定字體,所以這種方法顯示出來的字體很難看。

第二種方法是把配置好的fontconfig.properties做個連接到jdk1.x/jre/lib裡面。看命令:

引用:

cd /opt/jdk1.x/jre/lib
ln -s /etc/java/fontconfig.properties (假設我們的fontconfig.properties放在/etc/java目錄裡)

這種方法對JDK/JRE 1.4/1.5/1.6都適用,只不過1.4版本的文件名是font.properties而不是fontconfig.properties。當然你也 可以直接把fontconfig.properties文件複製到/opt/jdk1.x/jre/lib裡面,這樣就不用做連接,但是如果你同時安裝幾 個不同版本的JDK,還是做連接比較方便。在下面我會把我配置好的font.properties和fontconfig.properties的內容貼 出來,大家稍作修改就可以用了。

3、讓Web瀏覽器支持Java Plugin(也就是支持Java Applets)。

做一個連接就可以了。看命令:

引用:

cd /usr/lib/firefox/plugins (Ubuntu的firefox插件目錄在這裡,其它版本以此參考)
ln -s /opt/jdk1.x/jre/plugin/i386/ns7/libjavaplugin_oji.so

然後運行firefox,在地址欄裡打入about:plugins,[enter],可以看到firefox的plugin列表裡已經有了Java插件。

如果你用的是其它的瀏覽器,方法大體也差不多,就是進入瀏覽器的plugins目錄,做一個連接。不過要注意的是,如果你用的瀏覽器是mozilla 1.4/netscape 7.0以上的版本,用上面的命令沒問題,但是如果你用的瀏覽器是mozilla 1.2/netscape 7.0以下的版本,Sun有提供另一個插件。這樣的話,命令就要改一下了:

引用:

cd /usr/lib/mozilla/plugins
ln -s /opt/jdk1.x/jre/plugin/i386/ns7-gcc29/libjavaplugin_oji.so


4、讓Web瀏覽器支持Java Web Start程序。(可選安裝)

如果你不知道Java Web Start程序是什麼,看這裡:
http://www.stcore.com/java/2006/06/1...682d28890.html

所謂安裝,其實就是添加一個mimetype(類似於文件關聯),讓瀏覽器知道,遇到Java Web Start程序該用什麼程序來處理。

對應mozilla/netscape瀏覽器的方法:
點擊選單:Edit->Preferences->Navigator->Helper Applications
然後新建一個mimetype:
mimetype是:application/x-java-jnlp-file
extention是:jnlp
關聯程序是:/opt/jdk1.x/jre/bin/javaws

對應firefox瀏覽器的方法:
由於firefox沒有直接添加mimetype的方法,所以要改的話需要安裝一個Mime Type Editor plugin,看這裡:
http://forums.mozine.org/index.php?showtopic=5521

5、為firefox瀏覽器加入Java Console選單項。(可選安裝)

mozilla/netscape裝好java plugin之後就有Java Console選單項,可以方便地呼叫Java控制台,這對程序員呼叫程序有用。但是firefox還沒有這個選單選項,添加的方法就是解壓一個zip文件 到firefox/extension目錄。現在我們就來添加,看命令:

引用:

cd /usr/lib/firefox/extensions
unzip /opt/jdk1.x/jre/lib/deploy/ffjcext.zip


重啟firefox,就可以看到工具選單裡多了一個Java Console選單選項。

JDK/JRE 1.5及以下版本並沒有提供這個firefox plugin,如果要安裝的話到這裡安裝:

https://addons.mozilla.org/firefox/141/

6、把Java工具加入系統選單。(可選安裝)

Ubuntu自帶的JDK/JRE會在系統選單中添加兩個Java工具,就是Java Plugin Control Panel和Java Policy Tool。下面我們也為自己安裝的JDK/JRE添加兩個選單項。

在Ubuntu的主選單上點擊右鍵->編輯選單->首選項->新建項目:

第一項:
圖標是:/opt/jdk1.x/jre/plugin/desktop/sun_java.png
名稱是:Java Plugin Control Panel (這個隨便寫)
命令是:/opt/jdk1.x/jre/bin/ControlPanel

第二項:
圖標是:/opt/jdk1.x/jre/plugin/desktop/sun_java.png
名稱是:Java Policy Tool (這個隨便寫)
命令是:/opt/jdk1.x/jre/bin/policytool

7、添加JAVA_HOME/JRE_HOME環境變數。(Java開發人員必備)

這裡以最常用的bash命令解釋器為例,編輯用戶目錄下的.bashrc或.profile文件。如果你想在所有用戶的shell下都生效,就編輯/etc/profile文件。同樣都是加入以下內容:

引用:

export JAVA_HOME=/opt/jdk1.x
export JRE_HOME=/opt/jdk1.x/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH


至此,Sun JDK/JRE在Linux上的安裝過程結束。

附錄:font.properties和fontconfig.properties文件內容
注意:我用字體的是從Windows 2003上copy過來的,如果你用其他的字體,就要修改配置文件裡面的一些字體名稱和字體目錄,這個要參照你的字體目錄裡面的fonts.dir或者 fonts.scale來改。即使是Windows的不同版本,比如XP/98什麼的,字體版本可能有所不同,字體名稱可能要作相應修改。如果你也在用從 Windows 2003複製過來的字體,那麼只需要修改字體目錄就行了。修改字體名稱,最快的方法就是尋找/替換了。

字體名稱裡面要注意的一點就是字型集,比如:
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1
這是SimSun宋體,字體名稱後面有iso10646-1,這個是GB18030字型 集,是最新的中文字體標準,支持最多的漢字,你要替換這個字體名稱的話,最好用後面同樣是iso10646-1的字體來替換,其他以此類推。

JDK/JRE 1.4的字體配置文件中我只用到了SimSun字體。1.5以上版本的字體配置文件,可以修改中/日/韓字體,英文字體就不用改了,Sun JDK/JRE自帶Lucida系列字體,只要把字體目錄加一條,指向/opt/jdk1.x/jre/lib/fonts就行了。

附1:font.properties文件內容(JDK/JRE 1.4版本/Windows字體適用)

引用:

# @(#)font.properties.zh_CN.Sun.linux 1.1 03/07/14
# Copyright 2003 Sun Microsystems, Inc. All rights reserved.
#

# Component Font Mappings For Linux zh_CN_U_UTF8
#
serif.0=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1
serif.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1
serif.italic.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

serif.bold.0=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1
serif.bold.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

serif.bolditalic.0=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1
serif.bolditalic.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

sansserif.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.italic.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

sansserif.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.bold.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

sansserif.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.bolditalic.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

monospaced.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

monospaced.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.italic.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

monospaced.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.bold.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.bolditalic.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

dialog.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

dialog.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.italic.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

dialog.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.bold.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

dialog.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.bolditalic.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

dialoginput.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

dialoginput.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.italic.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

dialoginput.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.bold.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.bolditalic.1=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

# Missing Glyph Character
#
default.char=274f

# Component Font Character Encodings
# 字型 編碼 - 開始
# 這個文件是用/opt/jdk1.4/jre/lib/font.properties.zh_CN_UTF8.Sun這個文件修改的
# 如果你的Linux默認字型 集是UTF-8,那麼下面這段不用改
# 如果是GBK/GB2312,就從font.properties.zh_CN.Sun複製類似的一段來覆蓋

fontcharset.serif.0=sun.io.CharToByteISO8859_1
fontcharset.serif.1=sun.io.CharToByteUnicodeBigUnmarked

fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
fontcharset.sansserif.1=sun.io.CharToByteUnicodeBigUnmarked

fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
fontcharset.monospaced.1=sun.io.CharToByteUnicodeBigUnmarked

fontcharset.dialog.0=sun.io.CharToByteISO8859_1
fontcharset.dialog.1=sun.io.CharToByteUnicodeBigUnmarked

fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
fontcharset.dialoginput.1=sun.io.CharToByteUnicodeBigUnmarked

# 字型 編碼 - 結束

# Exclusion Ranges
#

# XFontSet Information
#
fontset.serif.plain=\
-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.serif.italic=\
-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.serif.bold=\
-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.serif.bolditalic=\
-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.sansserif.plain=\
-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.sansserif.italic=\
-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.sansserif.bold=\
-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.sansserif.bolditalic=\
-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.monospaced.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.monospaced.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.monospaced.bold=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.monospaced.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.dialog.italic=\
-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.dialog.bold=\
-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.dialog.bolditalic=\
-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.dialog.plain=\
-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.dialoginput.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.dialoginput.bold=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.dialoginput.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.dialoginput.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

fontset.default=\
-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1

# 如果你要用的字體不在下面這個目錄裡,也不是這個名稱和文件名,就修改下面這兩段
# 注意filename.-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1
# 這句中間不能有空格,如果有空格,用下劃線_替換
filename.-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1=/usr/share/fonts/truetype/windows/simsun.ttc
# 這個是英文字體目錄,如果你的字體目錄不在這裡,請修改
appendedfontpath=/usr/share/fonts/truetype/ttf-lucida
# 這個是中文字體目錄,如果你的字體目錄不在這裡,請修改
appendedfontpath=/usr/share/fonts/truetype/windows


附2:fontconfig.properties文件內容(JDK/JRE 1.5及以上版本/Windows字體適用)

引用:

#
# fontconfig.properties for Debian/Ubuntu, derived from linux.fontconfig.RedHat.9.0.properties
#

# @(#)linux.fontconfig.RedHat.9.0.properties 1.6
03/11/14
#
# Copyright 2003 Sun Microsystems, Inc. All rights reserved.
#

# Version

version=1

# Component Font Mappings

allfonts.chinese-gb18030=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1
allfonts.chinese-gb18030.motif=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1
allfonts.chinese-big5=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1
allfonts.chinese-big5.motif=-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1
allfonts.lucida=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1

serif.plain.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
serif.plain.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
serif.plain.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
serif.plain.latin-1=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1
serif.plain.latin-1.motif=-b&h-luxi serif-medium-r-normal--*-%d-*-*-p-*-iso8859-1

serif.bold.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
serif.bold.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
serif.bold.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
serif.bold.latin-1=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1
serif.bold.latin-1.motif=-b&h-luxi serif-bold-r-normal--*-%d-*-*-p-*-iso8859-1

serif.italic.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
serif.italic.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
serif.italic.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
serif.italic.latin-1=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1
serif.italic.latin-1.motif=-b&h-luxi serif-medium-i-normal--*-%d-*-*-p-*-iso8859-1

serif.bolditalic.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
serif.bolditalic.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
serif.bolditalic.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
serif.bolditalic.latin-1=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1
serif.bolditalic.latin-1.motif=-b&h-luxi serif-bold-i-normal--*-%d-*-*-p-*-iso8859-1

sansserif.plain.japanese-x0208=-ricoh-ms gothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
sansserif.plain.korean=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-iso10646-1
sansserif.plain.korean.motif=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
sansserif.plain.latin-1=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.plain.latin-1.motif=-b&h-luxi sans-medium-r-normal--*-%d-*-*-p-*-iso8859-1

sansserif.bold.japanese-x0208=-ricoh-ms gothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
sansserif.bold.korean=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-iso10646-1
sansserif.bold.korean.motif=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
sansserif.bold.latin-1=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.bold.latin-1.motif=-b&h-luxi sans-bold-r-normal--*-%d-*-*-p-*-iso8859-1

sansserif.italic.japanese-x0208=-ricoh-ms gothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
sansserif.italic.korean=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-iso10646-1
sansserif.italic.korean.motif=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
sansserif.italic.latin-1=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.italic.latin-1.motif=-b&h-luxi sans-medium-i-normal--*-%d-*-*-p-*-iso8859-1

sansserif.bolditalic.japanese-x0208=-ricoh-ms gothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
sansserif.bolditalic.korean=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-iso10646-1
sansserif.bolditalic.korean.motif=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
sansserif.bolditalic.latin-1=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.bolditalic.latin-1.motif=-b&h-luxi sans-bold-i-normal--*-%d-*-*-p-*-iso8859-1

monospaced.plain.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
monospaced.plain.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
monospaced.plain.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
monospaced.plain.latin-1=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.plain.latin-1.motif=-b&h-luxi mono-medium-r-normal--*-%d-*-*-m-*-iso8859-1

monospaced.bold.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
monospaced.bold.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
monospaced.bold.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
monospaced.bold.latin-1=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.bold.latin-1.motif=-b&h-luxi mono-bold-r-normal--*-%d-*-*-m-*-iso8859-1

monospaced.italic.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
monospaced.italic.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
monospaced.italic.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
monospaced.italic.latin-1=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.italic.latin-1.motif=-b&h-luxi mono-medium-i-normal--*-%d-*-*-m-*-iso8859-1

monospaced.bolditalic.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
monospaced.bolditalic.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
monospaced.bolditalic.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
monospaced.bolditalic.latin-1=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.bolditalic.latin-1.motif=-b&h-luxi mono-bold-i-normal--*-%d-*-*-m-*-iso8859-1

dialog.plain.japanese-x0208=-ricoh-ms gothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
dialog.plain.korean=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-iso10646-1
dialog.plain.korean.motif=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
dialog.plain.latin-1=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.plain.latin-1.motif=-b&h-luxi sans-medium-r-normal--*-%d-*-*-p-*-iso8859-1

dialog.bold.japanese-x0208=-ricoh-ms gothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
dialog.bold.korean=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-iso10646-1
dialog.bold.korean.motif=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
dialog.bold.latin-1=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.bold.latin-1.motif=-b&h-luxi sans-bold-r-normal--*-%d-*-*-p-*-iso8859-1

dialog.italic.japanese-x0208=-ricoh-ms gothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
dialog.italic.korean=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-iso10646-1
dialog.italic.korean.motif=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
dialog.italic.latin-1=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.italic.latin-1.motif=-b&h-luxi sans-medium-i-normal--*-%d-*-*-p-*-iso8859-1

dialog.bolditalic.japanese-x0208=-ricoh-ms gothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
dialog.bolditalic.korean=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-iso10646-1
dialog.bolditalic.korean.motif=-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
dialog.bolditalic.latin-1=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.bolditalic.latin-1.motif=-b&h-luxi sans-bold-i-normal--*-%d-*-*-p-*-iso8859-1

dialoginput.plain.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
dialoginput.plain.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
dialoginput.plain.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
dialoginput.plain.latin-1=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.plain.latin-1.motif=-b&h-luxi mono-medium-r-normal--*-%d-*-*-m-*-iso8859-1

dialoginput.bold.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
dialoginput.bold.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
dialoginput.bold.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
dialoginput.bold.latin-1=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.bold.latin-1.motif=-b&h-luxi mono-bold-r-normal--*-%d-*-*-m-*-iso8859-1

dialoginput.italic.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
dialoginput.italic.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
dialoginput.italic.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
dialoginput.italic.latin-1=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.italic.latin-1.motif=-b&h-luxi mono-medium-i-normal--*-%d-*-*-m-*-iso8859-1

dialoginput.bolditalic.japanese-x0208=-ricoh-ms mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
dialoginput.bolditalic.korean=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1
dialoginput.bolditalic.korean.motif=-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0
dialoginput.bolditalic.latin-1=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.bolditalic.latin-1.motif=-b&h-luxi mono-bold-i-normal--*-%d-*-*-m-*-iso8859-1

# Search Sequences

sequence.allfonts=latin-1
sequence.allfonts.UTF-8=latin-1,chinese-gb18030
sequence.allfonts.Big5=latin-1,chinese-big5
sequence.allfonts.GB2312=latin-1,chinese-gb18030
sequence.allfonts.x-euc-jp-linux=latin-1,japanese-x0208
sequence.allfonts.EUC-KR=latin-1,korean
sequence.allfonts.GB18030=latin-1,chinese-gb18030
sequence.fallback=lucida,chinese-big5,chinese-gb18030,japanese-x0208,korean

# Exclusion Ranges

exclusion.japanese-x0208=0390-03d6,2200-22ef,2701-27be

# 如果你要用的字體不在下面這個目錄裡,也不是這個名稱和文件名,就修改下面這兩段
# 注意filename.-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1
# 這句中間不能有空格,如果有空格,用下劃線_替換
# Font File Names
# 這裡用到了Windows 2003複製過來的中/日/韓文字體
filename.-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1=/usr/share/fonts/truetype/windows/simsun.ttc
filename.-microsoft-batang-medium-r-normal--0-0-0-0-p-0-iso10646-1=/usr/share/fonts/truetype/windows/batang.ttc
filename.-microsoft-batang-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0=/usr/share/fonts/truetype/windows/batang.ttc
filename.-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-iso10646-1=/usr/share/fonts/truetype/windows/gulim.ttc
filename.-microsoft-gulim-medium-r-normal--0-0-0-0-p-0-ksc5601.1987-0=/usr/share/fonts/truetype/windows/gulim.ttc
filename.-ricoh-ms_gothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0=/usr/share/fonts/truetype/windows/msgothic.ttc
filename.-ricoh-ms_mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0=/usr/share/fonts/truetype/windows/msmincho.ttc
# AWT X11 font paths
# 這個是英文字體目錄,如果你的字體目錄不在這裡,請修改
awtfontpath.latin-1=/usr/share/fonts/truetype/ttf-lucida
# 這些是中/日/韓文字體目錄,如果你的字體目錄不在這裡,請修改
awtfontpath.chinese-gb18030=/usr/share/fonts/truetype/windows
awtfontpath.japanese-x0208=/usr/share/fonts/truetype/windows
awtfontpath.korean=/usr/share/fonts/truetype/windows