最近要寫一些C程式處理大筆資料,有點擔心會整數溢位。
寫了個C程式試了下,發現很有意思的事
在AMD CPU 32bit Athlon gcc 4.1.2 傳回
bytes: char:1, int:4, long:4, unsign:4, unsign long:4, long long: 8
AMD 64bit Athlon gcc 4.1.2 傳回
bytes: char:1, int:4, long:8, unsign:4, unsign long:8, long long: 8
Sun Ultra sprac III (64 bit CPU) gcc 3.4.4 傳回
bytes: char:1, int:4, long:4, unsign:4, unsign long:4, long long: 8
看起來Sun 這版gcc 還停在 32 bit
其實一般應用 32 bit signed 整數(-2,147,483,648 到 2,147,483,647)已經蠻夠了。要省空間就用 short int 或 char
short int (2)
-32,768 to 32,767
(K& R 說是 -32,767)
unsigned int (4)
0 to 4,294,967,295
int (4)
-2,147,483,648 to 2,147,483,647
(K& R 說是 -2,147,483,647)
char (1)
256 character values
float (4)
1.2e-38 to 3.4e38
double (8)
2.2e-308 to 1.8e308
開放世代("Generation Open"),特指以 "Open Content" (開放內容,包括知識,軟體與創作,...)為出發點的一種新的生活型態 但這裡強調的是群體長期的自由,而非個人一時的自由,因為個人一時的任意自由,是可以被有心人不公不義的用來去擷取個人利益而妨礙群體長期的自由,那不是大家所樂見的。
google code-beautifer
星期五, 10月 19, 2007
星期日, 7月 01, 2007
歷史文件: (翻譯)標準與社群的未來
以下是我2003 在軟體自由協會的論壇上發表的舊文,由於該協會經營不善,造成重要歷史資料遺失。只好在個人部落格重建部分內容,作為臺灣自由軟體發展歷史的見證。
---------- Forwarded message ----------
Date: Fri, 6 Jun 2003 06:33:28 -0500 (CDT)
From: 我的舊信箱
To: slat-talk@softwareliberty.org
Subject: (翻譯)標準與社群的未來
看到 幽靈 在 LinuxFab 談到Oopenoffice.org 1.3beta English version
Taiwan 被改成 China(Taiwan)而China 沒變成China(Mainland)
忍不住要回一下
http://www.linuxfab.com/indexForumData.php?FID=69 *註1
想要和大家討論一下該怎麼走
每次碰到這種事 有人就會反應 台灣沒參與開發自由軟體 所以使不上力
這也許是事實 但我們要如何做 以後才使得上力 是我更關心的問題
這不是嘴巴叫叫 熱心的hackers 就自動會冒出來
在阿貓阿狗也能變成熱心的hackers前 有好一段路 需要熱心的大家來打底
我想到現有的一件事是 建立標準草稿目錄 各式各樣的標準目錄
為何要標準: 可以交換回收用於其他類似的地方
如kde 的中文化選單 .po file? 可以給 gnome參考用
假如其他團體需要寄排版格式文書 Slat推薦哪幾種 pdf?, sxw?
為何要目錄: 事情太多了 必須分工 目錄是合作的依據: (權威管理's idea in library science)
如CCCII <-> unicode 3.1 mapping table list
.po 中文化項目也有上萬個 誰在進行linux哪部分文件翻譯?
沒有目錄 要合作在短期完成 如同靠天吃飯
為何要草稿: 事情不可能一次作到好 有個草稿可以逐次修正 (Prototype's idea in Software Engnering
我在藝術家與科學家間遊蕩 發現社群還有好大一段路要走 (不管台灣美國都一樣) 事情很多 其實閒置人力也不太少 麻煩是如何糾集大家(而且背景都不同)
hackers 通常只是會寫程式 不表示他們也擅長作其他苦工 其他人就該盡量和hackers 溝通需要幫忙的地方 讓hackers 就不用分太多精神在其他地方 但hackers 也最好花多點耐性解釋 技術上需要一般人幫忙的地方
UH linux 使用者協會 和Slat一樣 在網路上談純技術的時間遠少於談其他的時間 但我想在初期是正常的 因為有太多的事是有關於從技術上出發改造社會
我自己也在參與社群工作 目前在帶領 中國文學電子圖書館計畫(cell.cs.uh.edu) 有很多事也是在惶恐中作中學 網站該怎麼管? 設立論壇該用什麼軟體?
如何建立機制呈現管理標準草稿目錄讓義工分工?有太多的未知 (休士頓大學 linux 使用者協會BSD+php nuke春天被hack, slat 論壇之前被spam,... )
每一弱勢團體除各自專業的問題外 都有電腦技術上的疑慮 我衷心希望有一天 Slat 不但可以走出自己的一條路 也能有個網頁告訴其他團體在電腦技術上該怎麼作 網際網路的時代 弱勢團體在爭取特定的自由平等前 有賴軟體自由來構建凝聚族群
除了AI programming外 我也不太會寫程式 技術層面上的考量 還請開發程式的前輩指教
在公布標準草稿目錄後 就可以推動政策執行 一是法案面上 一是提供工具來促進 比如說邀集媒體定期來監督政府對的軟體自由努力 甚至白皮書支持願意替軟體自由背書的候選人
之前洪朝貴教授提的資訊分享障礙網站主意很好(只是名稱有再討論的必要)
有很多人必定樂於回報 ( 老問題 技術上如何作個bugzilla回報機制讓大眾參與?)
可以從政府機關網站開始監督 (記得順便向媒體公布該首長的大名)
在學校裡要是要求博碩士論文提供開放軟體的Style sheet,如 Tex 或 Openoffice.org
有一些人應該會投奔自由吧 慢慢就會像滾雪球般
有些人也許有疑慮Salt 與政治的參與 我想軟體自由不可能自外於政治經濟
重點在 為軟體自由參與政治經濟 而非為政治經濟參與軟體自由 許多人在 COSA
的OSS與Microsoft的立場表明的很清楚 不用我多說
大家辛苦了 一點拙見希望能拋磚引玉
-----------------------------------------------------
*註1
我在美國待了一陣子可以瞭解(但不諒解)為何會有這種錯
我建議大家(Slat)寫一個網頁供外國開發者參考比較有權威
如以地理國家分
Taiwan (big5,euc-tw,CCCII...)
China (gb2312,...)
Hongkong (big5-hkcs,...)
以主權國家分
ROC (big5,...)
PRC (GB,...)
PRC (Hongkong) (,..)
以地域分
China (Mainland) (big5,..)
China (Taiwan) (GB,..)
China (Hongkong) (,...)
細節可以再討論(獨派人士可能對第三項有意見)
但我的基本原則是兩岸的命名要對等 不能單向包括
---------- Forwarded message ----------
Date: Fri, 6 Jun 2003 06:33:28 -0500 (CDT)
From: 我的舊信箱
To: slat-talk@softwareliberty.org
Subject: (翻譯)標準與社群的未來
看到 幽靈 在 LinuxFab 談到Oopenoffice.org 1.3beta English version
Taiwan 被改成 China(Taiwan)而China 沒變成China(Mainland)
忍不住要回一下
http://www.linuxfab.com/indexForumData.php?FID=69 *註1
想要和大家討論一下該怎麼走
每次碰到這種事 有人就會反應 台灣沒參與開發自由軟體 所以使不上力
這也許是事實 但我們要如何做 以後才使得上力 是我更關心的問題
這不是嘴巴叫叫 熱心的hackers 就自動會冒出來
在阿貓阿狗也能變成熱心的hackers前 有好一段路 需要熱心的大家來打底
我想到現有的一件事是 建立標準草稿目錄 各式各樣的標準目錄
為何要標準: 可以交換回收用於其他類似的地方
如kde 的中文化選單 .po file? 可以給 gnome參考用
假如其他團體需要寄排版格式文書 Slat推薦哪幾種 pdf?, sxw?
為何要目錄: 事情太多了 必須分工 目錄是合作的依據: (權威管理's idea in library science)
如CCCII <-> unicode 3.1 mapping table list
.po 中文化項目也有上萬個 誰在進行linux哪部分文件翻譯?
沒有目錄 要合作在短期完成 如同靠天吃飯
為何要草稿: 事情不可能一次作到好 有個草稿可以逐次修正 (Prototype's idea in Software Engnering
我在藝術家與科學家間遊蕩 發現社群還有好大一段路要走 (不管台灣美國都一樣) 事情很多 其實閒置人力也不太少 麻煩是如何糾集大家(而且背景都不同)
hackers 通常只是會寫程式 不表示他們也擅長作其他苦工 其他人就該盡量和hackers 溝通需要幫忙的地方 讓hackers 就不用分太多精神在其他地方 但hackers 也最好花多點耐性解釋 技術上需要一般人幫忙的地方
UH linux 使用者協會 和Slat一樣 在網路上談純技術的時間遠少於談其他的時間 但我想在初期是正常的 因為有太多的事是有關於從技術上出發改造社會
我自己也在參與社群工作 目前在帶領 中國文學電子圖書館計畫(cell.cs.uh.edu) 有很多事也是在惶恐中作中學 網站該怎麼管? 設立論壇該用什麼軟體?
如何建立機制呈現管理標準草稿目錄讓義工分工?有太多的未知 (休士頓大學 linux 使用者協會BSD+php nuke春天被hack, slat 論壇之前被spam,... )
每一弱勢團體除各自專業的問題外 都有電腦技術上的疑慮 我衷心希望有一天 Slat 不但可以走出自己的一條路 也能有個網頁告訴其他團體在電腦技術上該怎麼作 網際網路的時代 弱勢團體在爭取特定的自由平等前 有賴軟體自由來構建凝聚族群
除了AI programming外 我也不太會寫程式 技術層面上的考量 還請開發程式的前輩指教
在公布標準草稿目錄後 就可以推動政策執行 一是法案面上 一是提供工具來促進 比如說邀集媒體定期來監督政府對的軟體自由努力 甚至白皮書支持願意替軟體自由背書的候選人
之前洪朝貴教授提的資訊分享障礙網站主意很好(只是名稱有再討論的必要)
有很多人必定樂於回報 ( 老問題 技術上如何作個bugzilla回報機制讓大眾參與?)
可以從政府機關網站開始監督 (記得順便向媒體公布該首長的大名)
在學校裡要是要求博碩士論文提供開放軟體的Style sheet,如 Tex 或 Openoffice.org
有一些人應該會投奔自由吧 慢慢就會像滾雪球般
有些人也許有疑慮Salt 與政治的參與 我想軟體自由不可能自外於政治經濟
重點在 為軟體自由參與政治經濟 而非為政治經濟參與軟體自由 許多人在 COSA
的OSS與Microsoft的立場表明的很清楚 不用我多說
大家辛苦了 一點拙見希望能拋磚引玉
-----------------------------------------------------
*註1
我在美國待了一陣子可以瞭解(但不諒解)為何會有這種錯
我建議大家(Slat)寫一個網頁供外國開發者參考比較有權威
如以地理國家分
Taiwan (big5,euc-tw,CCCII...)
China (gb2312,...)
Hongkong (big5-hkcs,...)
以主權國家分
ROC (big5,...)
PRC (GB,...)
PRC (Hongkong) (,..)
以地域分
China (Mainland) (big5,..)
China (Taiwan) (GB,..)
China (Hongkong) (,...)
細節可以再討論(獨派人士可能對第三項有意見)
但我的基本原則是兩岸的命名要對等 不能單向包括
星期四, 6月 28, 2007
Krusader
基本上 Krusader 就是跟以前DOS下的 Norton Commander ,後來Windows 上的
Total Commander, Linux 文字模式下的Midnight Commander 是一樣的雙排瀏覽檔案管理器。功能極為強大。Krusader 是qt 寫的圖形介面,我一般是在gnome桌面環境下搭配Nautius 跟emacs-gtk 來處理日常絕大部分的工作。檔案可以直接在彼此之間拉來拉去。其實這三者單獨都夠強大到單獨取代其他兩者去執行一些事,不過搭配使用更能讓我優游於從各種不同的工作方式角度來完成日常工作。
Krusader 支援多重分頁,管理多重目錄很方便,也支持網路上的目錄,舉凡sftp,ftp,samba...都可以用,管理網路檔案一如當地檔案。此外有兩個幾乎是殺手級的功能:一是把某個檔從RPM 一堆檔裡抓出來,一是把一個大檔自動切成小檔。
不要在剛插入usb 儲存裝置就立即起動Krusader,那可能會把Krusader弄掛掉。等Gnome 桌面的Nautius正確辨認(跳出該儲存裝置的視窗)完後再啟動Krusader。
Krusader支援多重分頁,而且關掉後下次起動時還會記得上次分頁裡開啟處理的目錄路徑,不過要是分頁裡開啟處理的目錄路徑是usb 儲存裝置,最好先插入再啟動Krusader。不然他會抱怨找不到該路徑。
因為krusader 是為KDE 量身打造,有些設定用KDE公用程式對gnome 的使用者不便,要自己指定替代的公用程式,我有找到一些替代程式
Krusader跟Nautius 也是可以直接拉檔案到gnome-terminal 或Emacs-gtk 下去處理。操作非常直覺。gnome-commander 跟Krusader互拉檔案也可以。不過我從 nautius 的檔案視窗裡拉照片到jUploadr不成問題,但不知為何就是無法從krusader 裡把照片拉過去。看來jUploader 對Krusader(或者是所有的qt程式)相容性不好。我發了bug 報告在
http://sourceforge.net/tracker/index.php?func=detail&aid=1626334&group_id=127771&atid=709422
Gnome-commander 已經相當接近Krusader 的成熟度,而且在使用介面上更直覺清爽,唯一沒有辦法說服我的地方是還沒支援多重分頁,目錄同步跟sftp 這三個重要的功能。不過我相信應該不久就會出現。
在Linux跟flickr間傳輸(照片)檔案
Total Commander, Linux 文字模式下的Midnight Commander 是一樣的雙排瀏覽檔案管理器。功能極為強大。Krusader 是qt 寫的圖形介面,我一般是在gnome桌面環境下搭配Nautius 跟emacs-gtk 來處理日常絕大部分的工作。檔案可以直接在彼此之間拉來拉去。其實這三者單獨都夠強大到單獨取代其他兩者去執行一些事,不過搭配使用更能讓我優游於從各種不同的工作方式角度來完成日常工作。
Krusader 支援多重分頁,管理多重目錄很方便,也支持網路上的目錄,舉凡sftp,ftp,samba...都可以用,管理網路檔案一如當地檔案。此外有兩個幾乎是殺手級的功能:一是把某個檔從RPM 一堆檔裡抓出來,一是把一個大檔自動切成小檔。
抽取式儲存裝置的考量:
不要在剛插入usb 儲存裝置就立即起動Krusader,那可能會把Krusader弄掛掉。等Gnome 桌面的Nautius正確辨認(跳出該儲存裝置的視窗)完後再啟動Krusader。
Krusader支援多重分頁,而且關掉後下次起動時還會記得上次分頁裡開啟處理的目錄路徑,不過要是分頁裡開啟處理的目錄路徑是usb 儲存裝置,最好先插入再啟動Krusader。不然他會抱怨找不到該路徑。
外掛程式
因為krusader 是為KDE 量身打造,有些設定用KDE公用程式對gnome 的使用者不便,要自己指定替代的公用程式,我有找到一些替代程式
- General
- kdesu gksu
- kget gwget
- kmail 這個在下面選項會再出現,我還不知道如何用firefox 或evolution 去取代文字列的用法
- krename gwenrename,或是renameutils
- locate
- updatedb
- Packers
- dpkg
- rar 在http://www.rarlab.com/download.htm上有40天試用版
- kmail
- unace 有免費版在http://www.winace.com/files/linunace25.tgz下載
桌面拖拉檔案的相容性
Krusader跟Nautius 也是可以直接拉檔案到gnome-terminal 或Emacs-gtk 下去處理。操作非常直覺。gnome-commander 跟Krusader互拉檔案也可以。不過我從 nautius 的檔案視窗裡拉照片到jUploadr不成問題,但不知為何就是無法從krusader 裡把照片拉過去。看來jUploader 對Krusader(或者是所有的qt程式)相容性不好。我發了bug 報告在
http://sourceforge.net/tracker/index.php?func=detail&aid=1626334&group_id=127771&atid=709422
其他的競爭者
Gnome-commander 已經相當接近Krusader 的成熟度,而且在使用介面上更直覺清爽,唯一沒有辦法說服我的地方是還沒支援多重分頁,目錄同步跟sftp 這三個重要的功能。不過我相信應該不久就會出現。
延伸閱讀
在Linux跟flickr間傳輸(照片)檔案
星期三, 6月 27, 2007
安裝使用VirtualBox: 執行虛擬作業系統的新選擇
V 1.0
對我們這種常在某一種Linux 上工作,但偶而要跑其他作業系統去測試一些事情的人,單一機器多重開機雖然效能最高,還是有他不便之處(切換當時就沒辦法同時在習慣的系統下工作)。在一個作業系統下跑虛擬機器去跑另一個作業系統有時會很重要。
之前有跑過 VMware player ,但VMplayer 2.0 在我的64bit機器上有問題。替wine作好設定的 wine-doors 又跑不起來。 最近發現了Virtual Box:
http://www.virtualbox.org/
覺得還不錯。以下是VirtualBox 詳細安裝使用說明。不像有些禿鷹公司把別人完全開放的英文文件作個勞什子的簡單翻譯文件,就要去跟政府要大筆錢,還用PDF...等種種小手段去限制干擾大家使用;也不像一些喜歡偷看我文章卻又喜歡批評我的基本教義派,除了嘴巴叫叫些歪理,往往對他批評的領域卻一點實際技術的東西都端不出來。下面是細節毫無保留全都錄,希望對關心開放軟體的朋友有所助益,也希望受益的朋友也能飲水思源,秉持copy left 的精神去回饋自由跟開放軟體社群。
各種虛擬機器軟體的基本比較,可以參考
http://en.wikipedia.org/wiki/Comparison_of_virtual_machines
之後我會另文發表VMware, VirtualBox 跟Qemu 三者的細節比較 。
VirtualBox目前最新的是1.4版 有支援32 bit
VirtualBox-1.4.0_21864_mdv2007.1-1.i586.rpm.run
跟64 bit 版
VirtualBox_1.4.0_Linux_amd64.run
Mandriva 2007.1 上的RPM是1.3.8版,我發現1.3.8 設定沒有 USB,VRDP(遠端顯示) 跟Share Folder(分享資料夾),此外裝完後1.4 版後,1.3 版介面文字也會變成中文,建議直接去官方下載PUEL (Personal Use and Evaluation License) 版1.4.0。下面是以 1.4.0為示範。
1.4.0 預設目錄在 /opt/VirtualBox-1.4.0
也可以自行選擇,然後執行以下指令,如:
mkdir /usr/local/VirtualBox1.4.0
chmod +x VirtualBox_1.3.2_Linux_x86.run
./VirtualBox_1.4.0_Linux_amd64.run install /usr/local/VirtualBox1.4.0
他會要你看同意書後,鍵入yes才能繼續安裝。
裝完後在Mandriva 的gnome選單中,他會在應用程式->更多應用程式>模擬器下出現 Inno Tek VirtualBox的選項
在起動Virtua Box後
在Gobal setting 裡,你可能會在General 選項裡想改掉下面的路徑設定
VDI ~/.VirtualBox/VDI
Machine ~/.VirtualBox/Machines
之後就可以在Vitural Machine Manager 下,按下左上方的"New"圖示,建立虛擬機器影像
在虛擬機器環境上, host表示實體機器上執行的主端作業系統,guest表示虛擬的客端作業系統。一臺虛擬機器少要有一個虛擬磁碟影像。客系統的虛擬機器磁碟影像檔,是放在主作業系統的檔案系統上。如果是放在Linux 的原生ext3檔案系統分割區效能應該會好一點。萬一虛擬硬碟檔要放在 FAT/FAT32 分割區下,則會受限於單一檔案不能超過 4GB的限制。以下是以英文版介面說明:
這時候可以針對不同虛擬機器影像做個別內部設定
在 VirtualBox 主畫面中針對某虛擬機器影像按下"設定值"(Settings)圖示
以下設定是1.4 版才有,後詳
最後按 "OK" 圖示完成設定,這時就可以在主畫面中選擇一個虛擬機器,按下"Start"鍵圖示就會開始啟動虛擬機器系統
萬一遇到 vboxdrv 無法正確載入,
VirtualBox kernel driver not installed. VBox status code: -1908 (VERR_VM_DRIVER_NOT_INSTALLED).
查查 nmi是不是有問題,是的話要在 kernel參數加上nmi_watchdog=0
因為是虛擬機器, 客端顯示硬體驅動程式不是顯示真正的硬體,也無法裝自己的驅動程式。以我見過的例子:測試XP 客端上的裝置管理員上面列有二個不明裝置: 一個是顯示卡一個是不明顯卡 (實體主機上是nvidia)另一個是不明基本系統裝置。不過顯示正常,至少切到1024x748解析度沒有問題。
但要是安裝 Guest Additions 會使虛擬機器的驅動解析度與滑鼠整合操控性更好,如此一來,就不需要多按一下快速鍵就能把滑鼠移出VirtualBox視窗外。而且至少可以解決 nvidia Gforce 的問題(又多了個理由不要用ATI顯示卡),讓虛擬機器支援了更高的解析度 。從比較虛擬機器開機聲音的延遲程度,我相信這跟其他模擬作業系統軟體的外掛如WMware-tools 一般,會使得客端虛擬機器的效能更接近主端系統的效能。在1G Ram的AMD64 4000+上測試,安裝前Guest Additions竟然 Virtual Box CPU承載一直逼近百分之百!雖然同時跑其他程式如emacs還是很順,但看得還是有點心驚膽顫。安裝後,虛擬機器螢幕解析度提高到1152x864,但CPU承載掉到合理的60%
這是只有包含於 PUEL edition (Personal Use and Evaluation License) 而開放原碼版沒有的。安裝完PUEL版之後會在對應目錄下找到 additions/VBoxGuestAdditions.iso 預設路徑在
/opt/VirtualBox/additions/VBoxGuestAdditions.iso
或
C:\Program Files\InnoTek VirtualBox\VBoxGuestAdditions.iso
安裝時如果有掛載其他實體光碟或虛擬光碟映像檔,可能會失敗,最好先卸載其他光碟。啟動虛擬機器後,把VBoxGuestAdditions.iso當成實體光碟掛載到虛擬機器上,可以從Virtual Box下拉選單的 Devices-> Install Guest-Additions 去安裝。
USB裝置要啟用時,到視窗主選單裝置->USB裝置把要啟用的裝置按左鼠鍵選取使用。跟VMware 一樣,同時間主客端間只能有一個存取 USB裝置,從VirtualBox客端卸載USB 裝置後,主端系統就可以抓到該 USB 裝置,這樣可以讓主客端之間作資料的傳遞分享。
除了USB 儲存裝置,可以使用分享檔案夾(share Folder ) 在透過內部網路分享儲存媒體(類似NFS或網路芳鄰)的方式讓主客端之間分享檔案。
分享檔案夾的功能可以在關掉連接外部網路的狀態上使用,就算關掉客端系統的虛擬網路卡對外連線,主客端仍然可以由分享檔案夾分享檔案。這麼一來,當有人想灌個windows 客端系統只用來執行少數Linux下沒有的應用軟體,但又怕windows系統客端曝露在連外網路的危險之中,就可以不用顧慮分享檔案夾上的windows系統客端一旦接上網路,就會有被來自外部網路上病毒、木馬等等惡意程式攻擊的安全性風險。
之後在虛擬機器上用Krusader或Total commander 之類的檔案總管打開網路儲存媒體,就可以看到分享檔案夾了。
前言
對我們這種常在某一種Linux 上工作,但偶而要跑其他作業系統去測試一些事情的人,單一機器多重開機雖然效能最高,還是有他不便之處(切換當時就沒辦法同時在習慣的系統下工作)。在一個作業系統下跑虛擬機器去跑另一個作業系統有時會很重要。
之前有跑過 VMware player ,但VMplayer 2.0 在我的64bit機器上有問題。替wine作好設定的 wine-doors 又跑不起來。 最近發現了Virtual Box:
http://www.virtualbox.org/
覺得還不錯。以下是VirtualBox 詳細安裝使用說明。不像有些禿鷹公司把別人完全開放的英文文件作個勞什子的簡單翻譯文件,就要去跟政府要大筆錢,還用PDF...等種種小手段去限制干擾大家使用;也不像一些喜歡偷看我文章卻又喜歡批評我的基本教義派,除了嘴巴叫叫些歪理,往往對他批評的領域卻一點實際技術的東西都端不出來。下面是細節毫無保留全都錄,希望對關心開放軟體的朋友有所助益,也希望受益的朋友也能飲水思源,秉持copy left 的精神去回饋自由跟開放軟體社群。
各種虛擬機器軟體的基本比較,可以參考
http://en.wikipedia.org/wiki/Comparison_of_virtual_machines
之後我會另文發表VMware, VirtualBox 跟Qemu 三者的細節比較 。
下載安裝程式
VirtualBox目前最新的是1.4版 有支援32 bit
VirtualBox-1.4.0_21864_mdv2007.1-1.i586.rpm.run
跟64 bit 版
VirtualBox_1.4.0_Linux_amd64.run
Mandriva 2007.1 上的RPM是1.3.8版,我發現1.3.8 設定沒有 USB,VRDP(遠端顯示) 跟Share Folder(分享資料夾),此外裝完後1.4 版後,1.3 版介面文字也會變成中文,建議直接去官方下載PUEL (Personal Use and Evaluation License) 版1.4.0。下面是以 1.4.0為示範。
1.4.0 預設目錄在 /opt/VirtualBox-1.4.0
也可以自行選擇,然後執行以下指令,如:
mkdir /usr/local/VirtualBox1.4.0
chmod +x VirtualBox_1.3.2_Linux_x86.run
./VirtualBox_1.4.0_Linux_amd64.run install /usr/local/VirtualBox1.4.0
他會要你看同意書後,鍵入yes才能繼續安裝。
裝完後在Mandriva 的gnome選單中,他會在應用程式->更多應用程式>模擬器下出現 Inno Tek VirtualBox的選項
在起動Virtua Box後
在Gobal setting 裡,你可能會在General 選項裡想改掉下面的路徑設定
VDI ~/.VirtualBox/VDI
Machine ~/.VirtualBox/Machines
之後就可以在Vitural Machine Manager 下,按下左上方的"New"圖示,建立虛擬機器影像
建立虛擬機器影像
在虛擬機器環境上, host表示實體機器上執行的主端作業系統,guest表示虛擬的客端作業系統。一臺虛擬機器少要有一個虛擬磁碟影像。客系統的虛擬機器磁碟影像檔,是放在主作業系統的檔案系統上。如果是放在Linux 的原生ext3檔案系統分割區效能應該會好一點。萬一虛擬硬碟檔要放在 FAT/FAT32 分割區下,則會受限於單一檔案不能超過 4GB的限制。以下是以英文版介面說明:
- 出現
圖M2的"建立虛擬機器法師"畫面,再按"Next"圖示到下一步。
- 出現
圖M3的畫面,提供選擇虛擬機器名稱(在設定網路時很重要)跟作業系統型態,再按"Next"圖示到下一步。
- 出現
圖M4的畫面,提供選擇虛擬機器分配記憶體大小,(預設是168M,大一點的系統建議384M以上),再按"Next"圖示到下一步。
- 出現
圖M5的畫面,提供選擇虛擬磁碟(預設是沒有磁碟),可以選"Existing"圖示去選用之前建好的。選"New" 圖示去叫出建立虛擬機器影像法師
- 再按"Next"圖示結束設定,出現
圖M6的新畫面,這時候可以看到會多出 Setting,Delete,跟Start的選項。
這時候可以針對不同虛擬機器影像做個別內部設定
建立虛擬磁碟法師
- 在Vitural Disk Manager 下,按下
圖D1左上方的"New"圖示,
- 出現
圖D2 的"建立虛擬磁碟法師"畫面。再按"Next"圖示到下一步。
- 出現
圖D3的畫面,提供選擇虛擬磁碟檔案大小是動態配置還是固定,(預設是動態配置Dynamically),再按"Next"圖示到下一步。
- 出現
圖D4 的畫面,提供選擇虛擬磁碟檔案路徑名,(預設是NewHardDisk1.vdi)跟大小,再按"Next"圖示到下一步。
- 出現
圖D5要求確認畫面,再按"Next"圖示結束設定
虛擬機器影像做個別內部設定
在 VirtualBox 主畫面中針對某虛擬機器影像按下"設定值"(Settings)圖示
- 一般(General) 客端若是Windows ,要在(advanced) 進階分頁底下,把ACPI 跟IO APIC這兩個選項都啟用,會省掉一些問題。
- 硬碟 最多可以掛載3個硬碟
- 軟碟 可以使用實體軟碟或是影像檔,包括進行系統開機
- 光碟機 只能模擬一台光碟機,但可以切換,可以設定使用實體光碟機或是 ISO 檔模擬實體光碟機,包括進行系統開機
- 音效 選用Alsa音效驅動程式
- 網路 VirtualBox 網路能模擬 4 張卡。可在網路卡0的分頁中勾選
啟用網路卡,一但主端對外能上網,客端不需作任何調整就能以NAT+HDCP方式上網
以下設定是1.4 版才有,後詳
- USB
- 遠端顯示(VRDP)
- 分享資料夾(Share Folder)
最後按 "OK" 圖示完成設定,這時就可以在主畫面中選擇一個虛擬機器,按下"Start"鍵圖示就會開始啟動虛擬機器系統
萬一遇到 vboxdrv 無法正確載入,
VirtualBox kernel driver not installed. VBox status code: -1908 (VERR_VM_DRIVER_NOT_INSTALLED).
查查 nmi是不是有問題,是的話要在 kernel參數加上nmi_watchdog=0
安裝 Guest Additions
因為是虛擬機器, 客端顯示硬體驅動程式不是顯示真正的硬體,也無法裝自己的驅動程式。以我見過的例子:測試XP 客端上的裝置管理員上面列有二個不明裝置: 一個是顯示卡一個是不明顯卡 (實體主機上是nvidia)另一個是不明基本系統裝置。不過顯示正常,至少切到1024x748解析度沒有問題。
但要是安裝 Guest Additions 會使虛擬機器的驅動解析度與滑鼠整合操控性更好,如此一來,就不需要多按一下快速鍵就能把滑鼠移出VirtualBox視窗外。而且至少可以解決 nvidia Gforce 的問題(又多了個理由不要用ATI顯示卡),讓虛擬機器支援了更高的解析度 。從比較虛擬機器開機聲音的延遲程度,我相信這跟其他模擬作業系統軟體的外掛如WMware-tools 一般,會使得客端虛擬機器的效能更接近主端系統的效能。在1G Ram的AMD64 4000+上測試,安裝前Guest Additions竟然 Virtual Box CPU承載一直逼近百分之百!雖然同時跑其他程式如emacs還是很順,但看得還是有點心驚膽顫。安裝後,虛擬機器螢幕解析度提高到1152x864,但CPU承載掉到合理的60%
這是只有包含於 PUEL edition (Personal Use and Evaluation License) 而開放原碼版沒有的。安裝完PUEL版之後會在對應目錄下找到 additions/VBoxGuestAdditions.iso 預設路徑在
/opt/VirtualBox/additions/VBoxGuestAdditions.iso
或
C:\Program Files\InnoTek VirtualBox\VBoxGuestAdditions.iso
安裝時如果有掛載其他實體光碟或虛擬光碟映像檔,可能會失敗,最好先卸載其他光碟。啟動虛擬機器後,把VBoxGuestAdditions.iso當成實體光碟掛載到虛擬機器上,可以從Virtual Box下拉選單的 Devices-> Install Guest-Additions 去安裝。
常用快速鍵
- F12 在開機時選擇boot的媒體
- 滑鼠點 2 下 啟動視窗:將畫面主控權切換成虛擬系統。
- 以下需要配合主端控制鍵,預設是右 Ctrl 鍵,也可換成如左Ctrl 鍵給右撇子方便使用
- 主端控制鍵按 1 下 跳出客端系統視窗。
- 主端控制鍵 + f 鍵 全螢幕/視窗模式切換。
- 主端控制鍵 + Backspace 鍵 在客端系統中模擬Ctrl+Alt+Backspace (Unix系統重新起動X 視窗)。
- 主端控制鍵 + Fn 鍵 在客端系統中模擬Ctrl+Alt+Fn,... (Unix系統切換到第號文字console , 1 <= n <= 12)。
- 主端控制鍵 + Delete 鍵 在客端系統中模擬Ctrl+Alt+Del(Windows 系統叫出程式管理員或重開機)。
- 主端控制鍵 + q 鍵 關機
- 主端控制鍵 + r 鍵 立即重開機(如同硬體reset )。
進階使用
USB裝置要啟用時,到視窗主選單裝置->USB裝置把要啟用的裝置按左鼠鍵選取使用。跟VMware 一樣,同時間主客端間只能有一個存取 USB裝置,從VirtualBox客端卸載USB 裝置後,主端系統就可以抓到該 USB 裝置,這樣可以讓主客端之間作資料的傳遞分享。
分享檔案夾的設定
除了USB 儲存裝置,可以使用分享檔案夾(share Folder ) 在透過內部網路分享儲存媒體(類似NFS或網路芳鄰)的方式讓主客端之間分享檔案。
分享檔案夾的功能可以在關掉連接外部網路的狀態上使用,就算關掉客端系統的虛擬網路卡對外連線,主客端仍然可以由分享檔案夾分享檔案。這麼一來,當有人想灌個windows 客端系統只用來執行少數Linux下沒有的應用軟體,但又怕windows系統客端曝露在連外網路的危險之中,就可以不用顧慮分享檔案夾上的windows系統客端一旦接上網路,就會有被來自外部網路上病毒、木馬等等惡意程式攻擊的安全性風險。
- 主端上的設定
- GUI :在設定裡指定"檔案夾路徑"與"名稱",詳見下面說明:
- 命令列:
- 先關閉虛擬機器。
- (只有windows host 需要)假設虛擬機器叫xp,命令列開一個 command prompt 終端機視窗(Windows 系統下用cmd 叫出),切換目錄到 VirtualBox 虛擬硬碟存放的目錄。路徑可以參看一下當初VirtualBox 的 File 選單中的 Global Settings 裡面指定的虛擬機器集目錄,比如說
/home/run/VB/Machines/,在該目錄底下可以找到個別虛擬機器相對應的目錄。如虛擬機器xp就會建立對應的子目錄 /home/run/VB/Machines/xp
- 用下列形式執行命令
VBoxManage sharedfolder add "VM Name" -name "Share Name" -hostpath "路徑"
如
VBoxManage sharedfolder add "xp" -name "again" -hostpath /home/run/again
- 其中
- VM Name 指的是虛擬機器的名稱,如xp。要注意虛擬機器名xp,跟使用的虛擬硬碟名稱XXXYYZZZ.dvi 可以不一致。這裡要用虛擬機器名。
- Share Name 指的是自己在虛擬機器中定義的分享檔案夾名稱,如again
- 路徑 指的是要分享給客端的主端實體路徑名稱,如/home/run/again
- 其實可以直接修改系統設定檔,在該 VM Name 的目錄下,有個 VM Name.xml 檔案,如/home/run/VB/Machines/xp/xp.xml 可以用文字編輯器直接打開來編輯
- (只有windows host 需要)假設虛擬機器叫xp,命令列開一個 command prompt 終端機視窗(Windows 系統下用cmd 叫出),切換目錄到 VirtualBox 虛擬硬碟存放的目錄。路徑可以參看一下當初VirtualBox 的 File 選單中的 Global Settings 裡面指定的虛擬機器集目錄,比如說
- 要確認設定的話,可以在終端機裡執行
VBoxManage list vms
看看會不會出現類似下面的字眼:
Shared folders:
Name: 'again', Host path: '/home/run/again' (machine mapping)
- 客端上的設定
- Linux
- Windows
可以透過GUI 或命令列來達成:先把一個虛擬機器架起來,把作業系統裝完後
啟動虛擬機器,開機完後在虛擬機器中
mount -t vboxsf again /media/VM
其中again要和主端指定的分享名"again"一致,/media/VM是你想掛載的目錄。這也可以用/etc/fstab 之類的方式來變通掛載。
把 \\vboxsvr\again 當成網路分享來用。(注意:不見得能用檔案總管直接上samba 網路瀏覽),這也有好幾種方式。用檔案總管下的tool -> map network drives 是一個方式,或打開一個 command prompt 終端機視窗,執行:
net use x: \\vboxsvr\ShareName
其中x:是你想在windows下看到的磁碟代號,而ShareName要和主端的分享名稱要一致,如
net use z: \\vboxsvr\again
注意在x:和\\vboxsvr之間需要加空白。
之後在虛擬機器上用Krusader或Total commander 之類的檔案總管打開網路儲存媒體,就可以看到分享檔案夾了。
星期一, 6月 25, 2007
在Linux跟flickr間傳輸(照片)檔案
有下面幾個選擇
FlickrUploadr
需要Python, Gtk 跟 /usr/lib64/python2.5/config/Makefile(MDK2007.1 在lib64python2.5-devel-2.5-4.1mdv2007.1.x86_64)
安裝:
下載軟體後解開,在目錄裡下達
python setup.py install
執行程式:
Uploadr
不過這些第三方的上傳軟體都得先讓Flickr知道。首先他們會讓你用閱覽器登入Flickr網站確認同意他們有寫的權限,
(日後取消可到http://flickr.com/services/auth/更改)完成後再回到程式裡就可以開始用了。
FlickrUploadr使用很方便,把想上傳的照片拖拉到它的視窗中就行。FlickrUploadr設計是一次傳一張。而下面的Juploadr是設計成多張一次傳。
Juploadr
JUploadr是用Java寫的,有分amd64跟i386兩個版(也有Mac跟windows ),裝上java就可以運作了,支援Flickr 跟Zooomr。
我把他在 /usr/local/下解開,執行檔是
/usr/local/jUploadr-1.1.2-linuxGTK-i386/jUploadr
或
/usr/local/jUploadr-1.1.2-linuxGTK-amd64/jUploadr
萬一原始設定上被系統路徑搞混,簡單的方式是去改這一行
JAVA_PROGRAM_DIR=""
把要上傳的照片拖拉到它的視窗中,等照片被拉進視窗後會顯示出每張照片的縮圖時就準備好上傳了。這時可在個別照片上按右鼠鍵,就會跳出新視窗供修改屬性,設定完成後按upload 就可上傳,全部完成後會跳出視窗通知。在照片只是十幾二十張時,反應延遲還算可接受。不過一次傳極大量張數時,顯示所有照片的縮圖就會很慢。我從 nautius 的檔案視窗裡拉照片不成問題,但不知為何就是無法從krusader 裡把照片拉過去。
Firefox Universal Uploader
這是依賴Firefox 的一個擴充套件,可以很容易的上下傳檔案到一些Web 2.0 網站。要上傳及備份flickr相片都十分容易。目前支援Flickr, Picasa, Youtube, Box.net(1GB of free space) Facebook。以後準備支援Google Videos, Webshots 。以下以Flickr為例說明。
它的外觀類似Krusader的設計,分為三大塊視窗:
本地端檔案及目錄會顯示在左邊視窗遠端的檔案會顯示在右邊視窗,在Flickr所建立的集合(set)會以目錄的形式呈現,進去就可以看到在該集合的相片。
下方分成兩個分頁用來顯示傳輸進度及資訊看板。以Flickr而言,在右邊視窗選擇檔案或集後,下方資訊看板就會顯示相片預覽,這時可以編輯相片的標題, 描述及設定權限。
如果想上傳一堆檔案,可以把檔案先選好(可以用ctrl ..等配合滑鼠),按右鼠鍵選擇upload一次上傳。只是目前不支援在遠端建立set的功能。要另外動手建立。
要備份相片只要反向傳輸即可。下載遠端檔案集合時,若本地端沒有對應的子目錄,系統則會自動建立。重覆的檔案名稱會自動附加上流水號。
FlickrUploadr
需要Python, Gtk 跟 /usr/lib64/python2.5/config/Makefile(MDK2007.1 在lib64python2.5-devel-2.5-4.1mdv2007.1.x86_64)
安裝:
下載軟體後解開,在目錄裡下達
python setup.py install
執行程式:
Uploadr
不過這些第三方的上傳軟體都得先讓Flickr知道。首先他們會讓你用閱覽器登入Flickr網站確認同意他們有寫的權限,
(日後取消可到http://flickr.com/services/auth/更改)完成後再回到程式裡就可以開始用了。
FlickrUploadr使用很方便,把想上傳的照片拖拉到它的視窗中就行。FlickrUploadr設計是一次傳一張。而下面的Juploadr是設計成多張一次傳。
Juploadr
JUploadr是用Java寫的,有分amd64跟i386兩個版(也有Mac跟windows ),裝上java就可以運作了,支援Flickr 跟Zooomr。
我把他在 /usr/local/下解開,執行檔是
/usr/local/jUploadr-1.1.2-linuxGTK-i386/jUploadr
或
/usr/local/jUploadr-1.1.2-linuxGTK-amd64/jUploadr
萬一原始設定上被系統路徑搞混,簡單的方式是去改這一行
JAVA_PROGRAM_DIR=""
把要上傳的照片拖拉到它的視窗中,等照片被拉進視窗後會顯示出每張照片的縮圖時就準備好上傳了。這時可在個別照片上按右鼠鍵,就會跳出新視窗供修改屬性,設定完成後按upload 就可上傳,全部完成後會跳出視窗通知。在照片只是十幾二十張時,反應延遲還算可接受。不過一次傳極大量張數時,顯示所有照片的縮圖就會很慢。我從 nautius 的檔案視窗裡拉照片不成問題,但不知為何就是無法從krusader 裡把照片拉過去。
Firefox Universal Uploader
這是依賴Firefox 的一個擴充套件,可以很容易的上下傳檔案到一些Web 2.0 網站。要上傳及備份flickr相片都十分容易。目前支援Flickr, Picasa, Youtube, Box.net(1GB of free space) Facebook。以後準備支援Google Videos, Webshots 。以下以Flickr為例說明。
它的外觀類似Krusader的設計,分為三大塊視窗:
本地端檔案及目錄會顯示在左邊視窗遠端的檔案會顯示在右邊視窗,在Flickr所建立的集合(set)會以目錄的形式呈現,進去就可以看到在該集合的相片。
下方分成兩個分頁用來顯示傳輸進度及資訊看板。以Flickr而言,在右邊視窗選擇檔案或集後,下方資訊看板就會顯示相片預覽,這時可以編輯相片的標題, 描述及設定權限。
如果想上傳一堆檔案,可以把檔案先選好(可以用ctrl ..等配合滑鼠),按右鼠鍵選擇upload一次上傳。只是目前不支援在遠端建立set的功能。要另外動手建立。
要備份相片只要反向傳輸即可。下載遠端檔案集合時,若本地端沒有對應的子目錄,系統則會自動建立。重覆的檔案名稱會自動附加上流水號。
訂閱:
文章 (Atom)
圖M2
圖M3
圖M4
圖M5
圖M6
圖D1
圖D2
圖D3
圖D4
圖D5