12/29/2010

建立Bochs環境

最近心血來潮,加上公司沒什麼案子可以作....就想來好好瞭解一下如何實現作業系統

到誠品買了一本"Orang's 一個作業系統的實現"的書,好好的跟著書本上做了一些練習

首先先要來搭建Bochs的環境,它也是一個虛擬機,但跟一般的VMware和VirtualBox有所不同

詳細Bochs的介紹,可以到它的官網上看,而且裡面還有安裝說明 :

Bochs官網

下載最新版的bochs 2.4.5

解壓縮完之後,在configure之前,請先安裝如下的元件,以保證configure和make能順利通過.

#sudo apt-get install libc6-dev  build-essential xorg-dev libgtk2.0-dev

安裝之後,就可以來configure了,這樣才能產生Makefile

#./configure --enable-debugger --enable-disasm

後面的參數是為了能使用測試功能,不然bochs通常一出現視窗運行會沒辦法輸入指令

#make

為了確保和書上的路徑一致,所以我到Mafile裡面更改安裝路徑 :

#prefix          = /usr/local
prefix          = /usr

更改完之後,就可以安裝bochs的binary

#sudo make install

其中可能會出現 install: 無法 stat 「./bochsdbg」: 沒有此一檔案或目錄 的訊息,把bochs複製更名即可

#cp bochs bochsdbg
參照書上的做法,寫一段程式碼來引導作業系統啟動並加上"Hello World"字樣(後面我再來細細的看這段程式...沒學過彙編語言呀>"<)











緊接著用NASM來編譯它,如果沒有NASM,可以利用apt-get來安裝(我是用source code來安裝...但基本上沒差別...)

#sudo apt-get install nasm
#nasm boot.asm -o boot.bin

編譯好了之後,接下來就要利用bximage來製作虛擬軟碟(也叫磁片映射)

#bximage

========================================================================
                                bximage
                  Disk Image Creation Tool for Bochs
        $Id: bximage.c,v 1.34 2009/04/14 09:45:22 sshwarts Exp $
========================================================================

Do you want to create a floppy disk image or a hard disk image?
Please type hd or fd. [hd] fd

Choose the size of floppy disk image to create, in megabytes.
Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88.
 [1.44]    <---直接按Enter
I will create a floppy image with
  cyl=80
  heads=2
  sectors per track=18
  total sectors=2880
  total bytes=1474560

What should I name the image?
[a.img]   <-----同上

Writing: [] Done.

I wrote 1474560 bytes to a.img.

The following line should appear in your bochsrc:
  floppya: image="a.img", status=inserted

現在可以在bochs目錄下看到a.img了 ! 不過先把boot.bin拷貝進來,要把開機磁區寫進軟碟裡 

#cp boot.bin bochs-2.4.5/
#dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

conv=notrunc代表磁區不要被系統給truncated,因為boot.bin比a.img還小,其實真正的軟碟是不會被truncated,現在是因為運行在bochs這台virtual machine所以才需要加入這個參數.

在真正開始Run bochs之前,要先對bochs配置一下,官方有非常詳細的說明,而bochs預設是會吃目錄下的.bochsrc , 不過先按照書上對它做個簡短的配置














Note : 在自行寫配置時, 一定要先參考.bochs預設的文件, 因為每個Bochs版本的配置寫法會有所修改.

OK,萬事俱備,馬上運行bochs來看看結果 !

#sudo bochs -f bochsrc

-f的參數後面是要接你自身配置的bochs,打-help可以看到其它命令,運行結果如下 :











會看到很多log...如果不想被這些log干擾,可以去配置bochsrc讓它輸出到一個文件就好.

剛開始我非常納悶,為何他媽的bochsrc就給我停在這,跟書本顯示不一樣,我一直以為是我的display沒有配好,所以我不斷的看官方文件,重配,重起,然後再看.......就這樣我卡了4個小時= =

最後受不了了,把最後顯示的指令往google上一貼 ! 還真他媽的讓我找到答案了 ....

原來...因為是測試模式,所以bochs一運行,會停在第一個指令等待用戶輸入命令...Fuck !!

(0) [0xfffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b         ; ea5be000f0 <------ bochs 停在第 1 條指令處

也就是說,當使用調試運行時,bochs 會停在第 1 條指令, jmp far f000:e05b 是 bios 的第 1 條指令,然後等待用戶輸入命令.....

可能作者沒想到有更白痴的人會不瞭解...所以書上也沒解釋...T_T

然後我查了一下bochs底下的指令...結果順利完成第一個任務~~~感動的Hello World !!


12/18/2010

解決PDF文件無法看中文

在使用Ubuntu的Doncmunet View看pdf時....中文會看不到或者是亂碼...

把解決辦法順便記錄一下!

使用xpdf來解決,先輸入下列命令

#sudo apt-get install xpdf-chinese-simplified xpdf-chinese traditional
#sudo apt-get install poppler-data

通常這樣子應該就可以看到中文了...但在我這還是不行= =

google找了一下,修改配置文就ok了 !

#sudo vim /etc/fonts/conf.d/49-sansserif.conf

edit name="family" mode="append_last">
sane-serif
/edit>

把紅色的字體換成"文泉驛正黑"就好了 ;)

不需要重開機喔

HTC-Legend手動升級到2.2 !!!!

這幾天陸陸續續看到身邊的朋友一個個都更新完就超級羡慕的 ...

玩起來感覺順好多而且有些APP也修正不少....同時也支援動態桌布...還有超屌的手電筒 !!

可惜我的Legned無奈還是不爭氣,按一百年的更新還是一直說"目前最新版本"

Fuxk !!!

今天不甘心的再次到google search一下,這時只能拜託google大神了 ..

沒想到 !! 竟然讓我在Mobile 01看到有人教如何手動更新至2.2 !!

hkwaycc大神教導如何手動更新至2.2

再次感謝hkwaycc大大,真是太強了 !!

更新辦法超簡單 ~

1.首先請到這裡下載更新檔

2.更改檔名 : update.zip

3.接上USB,把update.zip放到SD卡的目錄下(不要放到其它目錄)

4.關機

5.同時按"返回鍵" + "電源鍵" , 這樣就能進入Boot Menu

6.這時會看到第一個選項"BOOTLOADER",請按下"電源鍵"

   然後會再看到"Fastboot",再次按下"電源鍵"

   可能會看到什麼Not Found Legned.img的字出現等等,別理它,到第二個選項"Recovry"(別忘了要按"電源鍵"

7.這時會看到一個紅色驚嘆號,按下"音量鍵(上) " + "電源鍵",就可以進入"Recovry"

8.會看到選項,請選"Apply sdcard:update.zip"


安裝完之後,就可以享受Android 2.2囉 !!


PS : 如空間掛了請mail給我...到時我在上傳至自己的空間 XD

12/15/2010

一個視窗可切割多個畫面的終端機 - Terminator

發現來自這裡 :

http://plog.longwin.com.tw/my_note-unix/2010/12/15/linux-terminal-terminator-2010

http://go-linux.blogspot.com/2010/09/terminator_01.html

一般Ubuntu預設是使用gnome-terminal,但它是沒辦法切窗視窗.

有時要寫code和查code會有滿大的困擾,要開好幾個TAB,而且有時一忙起來都忘了這個TAB具體是要幹嘛的...

試用了一會,發現Terminator可以做到我想要到 ! 而且左上有個group可以設定想要的名稱...這樣我就可以知道這個畫面的terminal是要做什麼事了 !

切割多重畫面的Terminator



安裝非常簡單,只需敲一行命令即可 :

#sudo apt-get install terminator

Terminator的快鍵(個人覺得只需要記這3個就好>_<) :

  • Ctrl + Shift + o 水平開 Tab
  • Ctrl + Shift + e 垂直開 Tab
  • Alt + 上下左右切換同一個視窗(Ctrl + Shift + e 或 o 的視窗)




12/12/2010

好用的桌面日曆行事 - Rainlendar

在朋友的網誌上發現一款相當好用的行事曆軟體 - Rainlendar 

本來一直以為它只支援微軟系統....

沒想到竟然有For ubuntu ! 而且有多國語言喔 !

到官網上找"Download"字樣或者直接到這裡 :

別點錯了要安裝的系統喔~

它有分Free(Lite)的版本和需付費的Pro版本


個人認為其實也不用破解.....Lite版本就相當夠用了

下載完之後,就直接點擊安裝

安裝之後先不要執行它,因為還要安裝中文語言

繁體中文

接著到終端機輸入下列命令來安裝語言 :

#rainlendar2 -i Traditional_Chinese.r2lang

之後執行Rainlendar,按右鍵進選項,其中有個語言選擇選Chinese,就可以看到中文囉 !

















相當簡潔的日記行事曆~










還有鬧鈴直接顯示在桌面提醒喔 ! 想忘都忘不掉