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的視覺效果.

11/18/2010

Ubuntu 10.4 by Mac style

嘿嘿...把Ubuntu改成Mac style超爽 :DD
用起來感覺就是不一樣 XD




步驟很簡單,而且google一下就一大堆了 ...

1. http://sourceforge.net/projects/macbuntu/
2. #./install
3. complete !!

中間會利用apt-get裝一些元件,所以要有網路喔 !!

過了之後感覺還不錯...整體感覺還ok..

就是":"冒號 一直都是亂碼,網路上的解決方式好像是For簡體的..

照方法打上patch...結果全部的繁中變成亂碼,更恐怖=_=""

期待大神找出解決方法 :DDDD

----

原來Google上面早有關於亂碼的答案 :

http://forum.moztw.org/viewtopic.php?p=12444

更換新版的Lucida Grande字型就可以了 !!

註:更換時,把原本的Lucida字型先mv到其它地方或砍掉..這樣更換後重開機才有效果喔 !!

不然只改後綴名加個.bak是沒用的 :)

----

自己意外間發現一個更好解決字型問題 ! 而且還不用下載字型喔~更方便 :)

在桌面點右鍵->更改桌面背景->字型

然後全都選文泉驛微米黑就可以囉 !

11/17/2010

[轉]解決Ubuntu在VirtualBox無法使用USB問題

轉載自 : http://pcnoproblem.twbbs.org/ubuntu-virtualbox-usb/

[轉]Ubuntu如何架伺服器初級教學(安裝Apache、MySQL、PHP 和 phpmyadmin )

這只是最簡單,要給初學者有信心的東西
如果你是初學者,想要進入架網站的領域但是不知道從何下手
這篇文章你可以參考參考

以下的方法適用於ubuntu 10.04以及linux mint9

當你早上睡覺被一個人的電話吵醒,告訴你你的老闆要你學Joomla,然後你又是在ubuntu之下而沒有appserv這種好用的windows only軟體可以用,這時候你就會需要這篇教學了

本來我還想要自己寫一篇,可是我發現網路上已經有大神寫出來了,而且是用圖形介面的安裝方式,簡單明瞭啊!所以我就不多做重工了,請到他的網站看吧!


接著,等你按照上面指示都安裝的差不多之後,你就可以開始測試一下你的伺服器了
首先,在ubuntu之下,伺服器的根目錄(也就是你要上傳網頁給別人看得地方)在/var/www內
由於那裡是屬於檔案系統的位置,所以你得要有root權限

雖然一般來說都會要你背指令,可是如果你沒有要用到很難,只是想要丟網頁給人別看
那你也可以用圖形介面的方式把網頁丟到/var/www資料夾

如果你是用Mint,直接對著/var/www資料夾按右鍵->以管理者權限開啟,這樣就可以用滑鼠拖曳的方式把你的網頁丟上去了

如果你是用ubuntu,那請參考我這篇:http://way3sec.blogspot.com/2010/06/blog-post_30.html

現在,你可以開始測試你的網頁了。先用網頁編輯器(Kompozer或者是openoffice之類的)隨便製作一個HTML網頁,裡面最好包含圖檔文字檔,然後把你製作好的圖檔和html檔一起丟在一個資料夾。

讓我們將製作好的html檔案名為123
而包含著123.html以及圖檔的資料夾為test資料夾好了

當你把test資料夾丟進/var/www底下之後,並且打開瀏覽器,輸入http://localhost/test/123.html
你應該就可以你自己剛剛製作的東西了

那要怎麼樣開放給外人看呢?
首先你先打開終端機,輸入ifconfig
接著你會發現跑出一大段文字,請將第二行的數字給記起來

















以我自己為例,數字是123.240.192.194
這就是我可以對外連結的ip位置
這時候,你只要在瀏覽器打上http://123.240.192.194/test/123.html
就可以看到對外連結的網頁的樣子了

[轉] ubuntu 10上網速度慢的問題


打開附屬應用程式->終端機

1.sudo apt-get install dnsmasq

2.sudo gedit /etc/dnsmasq.conf

3.跳出一份文字檔後,找出#resolv-file=
並且換成resolv-file=/etc/resolv.dnsmasq.conf
最後存檔離開

4. sudo cp /etc/resolv.conf /etc/resolv.dnsmasq.conf

5. sudo gedit /etc/resolv.conf

6.跳出一份文字檔後,將所有nameserver xx.xx.xx.xx統統刪掉
並且貼上nameserver 127.0.0.1
存檔離開。

7.sudo gedit /etc/ppp/peers/provider

8.找出usepeerdns這行字,並且在前面加上#

9.sudo gedit /etc/dhcp3/dhclient.conf

10.跳出一份文字檔後,將#prepend domain-name-servers 127.0.0.1
這行文字前面的#給刪除掉。