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,就可以看到中文囉 !

















相當簡潔的日記行事曆~










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


WiKiLeaks

近期內最值得關注的事想必就是WiKiLeaks(維基解密)的報導了 !

每天早上上班時,第一件事去追的就是他了 XD

對我這樣的無為平民百姓,真的是感覺到一天比一天精彩呀~~~

今天又在網路上看到一家TED的電視台專訪WiKiLeaks的創辦人 : Julian Assange

視頻上除了述說一些解密的內容之外,還表達WiKiLeaks存在的核心價值 : 監督罪犯

朱利安.亞桑傑專訪

大家也知道,Julian的PayPal轉帳被取消....被Amazon擺了一道....被EveryDNS封鎖.....

現在又被瑞典以強姦罪理由對Julian發出通緝 XD (記得好像沒被抓吧....在我打這篇文章的時候)

所以 !! 就有很多人以實際的行動來表達對Julian的支持 !!

就算殺了我,還有千千萬萬個我

而想知道WiKiLeasks大致如何運作,或者一些事績,可以到維基百科去看,裡面介紹很詳細

WiKiLeaks(維基解密)-維基百科

又或計是因為公怖大多不能公開的事,似乎己經遭到死亡的威脅 !!

亞桑傑嗆- 握有保命文件 要死一起死


VIM Setting for myself

最近使用Vim一段時間了....終於漸漸習慣操作方式和界面

現在換成去用Source Insigh整個不習慣= =

上傳我自己的Vim設置備份一下


" Maintain : Dicky
"
" Mail : dickychiang73@gamil.com
"
" Date : 2010/5/14 14:43
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Sets how many lines of history VIM has to remember
set history=300

" Enable filetype plugin
filetype plugin on
filetype indent on

" Set to auto read when a file is changed from the outside
set autoread

" When vimrc is edited, reload it
autocmd! bufwritepost vimrc source ~/.vim_runtime/vimrc

" always show the mouse
"set mouse=a
set mouse=v

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => VIM user interface
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Turn on WiLd menu
set wildmenu

"Always show current position
set ruler

"Ignore case when searching
set ignorecase

"Highlight search things
set hlsearch

"Make search act like search in modern browsers
set incsearch

"Set magic on, for regular expressions
set magic

"Show matching bracets when text indicator is over them
set showmatch

"Show the number line
"set nu

"cursorline : hightlight currentline
set cul

"Auto save current status
if has("autocmd")
      au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
  endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Colors and Fonts
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set background=dark
"colorscheme desert
syntax on
syntax enable
"Default file types
set ffs=unix,dos,mac

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Files and backups
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Turn backup off, since most stuff is in SVN, git anyway...
set nobackup
set nowb
set noswapfile

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Text, tab and indent related
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set expandtab
set shiftwidth=4
set tabstop=4
set smarttab
set lbr
set tw=500
"Auto indent
set ai
"Smart indet
set si
"Wrap lines
set wrap
"C indent
set cin

""""""""""""""""""""""""""""""
" => Statusline
""""""""""""""""""""""""""""""
" Always hide the statusline
set laststatus=2

" Format the statusline
"set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%h\ \ \ Line:\ %l/%L:%c

""""""""""""""""""""""""""""""
" => Chinese solution
""""""""""""""""""""""""""""""
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
"set fileformats=unix
set encoding=prc
set helplang=cn

""""""""""""""""""""""""""""""
" => tools setting
""""""""""""""""""""""""""""""
"ctags
set tags=tags
"taglist
let Tlist_Show_One_File=1
let Tlist_Use_Right_Window=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Auto_Open=0
nmap :Tlist
"Grep command
nnoremap :Grep
"MiniBufExplorer
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplMapWindowNavVim = 1
"fast Change c/h between
nnoremap :A
"Cscope
set cscopequickfix=s-,c-,d-,i-,t-,e-
nmap s :cs find s =expand("")
nmap g :cs find g =expand("")
nmap c :cs find c =expand("")
nmap t :cs find t =expand("")
nmap e :cs find e =expand("")
nmap f :cs find f =expand("")
nmap i :cs find i =expand("")$
nmap d :cs find d =expand("")

12/01/2010

[轉] 在233行Kernel修正版還未發行之前, 五行的設定加速Linux!!!

有人為Ubuntu寫了一個Script:

http://ubuntulife.wordpress.com/2010/11/22/el-parche-milagro-de-linux-ahora-con-script-de-instalacion/

原文是西班牙文, 大字不識幾個, 但是script是不會有語言問題的, 本想複製下來試試, 卻又找到了英文版, 作者還做了一些修正, 分享安裝方法如下:

$ wget http://launchpadlibrarian.net/59511828/cgroup_patch
$ chmod +x cgroup_patch
$ sudo ./cgroup_patch
$ sudo reboot

就這樣, 重開機後, 果然效果顯著, 我用Wireshark分析封包, 之前總要等上一會, 現在載入大檔快速, 而用firefox開個四五十頁也比之前快"很多", 但是, 我的電腦有4G, 不準, 就把512M, 1G CPU的舊筆電拿出, 原本裝的Ubuntu 10.04開Firefox瀏覽很慢的, 用滑鼠捲軸都卡卡的, 執行了以上的動作後, 不可思議的改進了整個效能, 瀏覽網頁非常流暢, 開啟Openoffice也快速,..., 真的是很神奇.

只是, 這個設定已經存在很久了, 為什麼要等233行的補丁新聞出現之後, RedHat的工程師才酸酸的"推廣"? 不過這也不重要, Ubuntu 10.04和10.10都已經可以順利使用這個設定, 效能真的非常好, 可以很流暢的執行Ubuntu的視覺效果.