顯示具有 linux使用筆記 標籤的文章。 顯示所有文章
顯示具有 linux使用筆記 標籤的文章。 顯示所有文章

2010年11月17日 星期三

VituralBox安裝guest addition的方法

.

這篇文章其實是篇備忘
我個人以往安裝VirtualBox的guest addition都是將geust addition的安裝光碟mount起來後,再將其copy到某個資料夾,再在該資料夾下安裝(執行./VBoxLinuxAdditionals-x86.run)

因為若不這樣做,而是直將在guest addition的光碟中執行安裝程式,那麼若將該光碟移除,你的VirtualBox guest os將會失去guest addition的功能

但有一天我在某處找到另外的安裝方法,特擷取出來給大家,我其實忘了在哪找到的,因此,若你是原作者,請通知我,謝謝
(我剛用google搜尋到一篇,應該是出自這裡

指令如下,其實和copy guest addition的內容後再安裝沒什麼差別
但個人覺得這種方法比較好,因此就擷錄出來了

下列的指令執行後,會將guest addition安裝到"~/vbox"下
另外,我忘了,需不需要在安裝前,先將"~/vbox",如果有機會重灌vm,我會注意的


1. [裝置] -> [安裝客端額外功能] ,把VboxAdditions這片光碟掛載起來,並到終端機內

2. 進入光碟機的目錄下:cd /media/cdrom0

3. 執行VBoxLinuxAdditionals-x86.run,並把目標指定到/vbox的目錄下:

./VBoxLinuxAdditionals-x86.run --target ~/vbox



.

2010年10月14日 星期四

在Linux mint 8 (Ubuntu 9.10)下安裝ns 2.29

.

之前雖然成功的在Fedora Core 5下成功的安裝了ns 2.29和BittorrentSim
但是我常用的VM還是LinuxMint 8

若要同時開兩個VM,這不是個辦法
真要解決問題,還是得在Linux mint 8 (Ubuntu 9.10)下將ns 2.29裝起來才行

你會看到這篇文章的出現,就代表我已經成功的裝了起來

1.下載ns-allinone-2.29.3.tar.gz並解開

tar zxvf ns-allinone-2.29.3.tar.gz


2.在.bashrc下設定一些變數,設定完後logout,再login一次,讓變數發生作用
我自己的變數設定如下:


NSPATH229=$HOME/ns-allinone-2.29

PATH=$NSPATH229/bin:$NSPATH229/tcl8.4.11/unix:$NSPATH229/tk8.4.11/unix:$PATH
LD_LIBRARY_PATH=$NSPATH229/otcl-1.11:$NSPATH229/lib
TCL_LIBRARY=$NSPATH229/tcl8.4.11/library
export NSPATH229 PATH LD_LIBRARY_PATH TCL_LIBRARY


PS:
這裡的變數設定有參考 linux下安裝ns
但為什麼我的變數為NSPATH229而非NSPATH?
因為我之前有安裝過ns2.34,NSPATH已經被用掉了,因此我將原來的NSPATH comment掉,而NSPATH229就留給ns2.29

3.
在ns-allinone-2.29下,執行

grep 'system=MP-RAS-' ***/*/* -n

結果應如下:


將system=MP-RAS-`awk '{print $3}' /etc/.relid'`
'刪除
變成system=MP-RAS-`awk '{print $3}' /etc/.relid`
將所有有多出'的Makefile.in的行改掉,如下圖


4.我在這裡會遇到下面的問題:

undefined reference to `__stack_chk_fail_local'
ld: libotcl.so: hidden symbol `__stack_chk_fail_local' isn't defined
ld: final link failed: Nonrepresentable section on output
make: *** [libotcl.so] Error 1
otcl-1.11 make failed! Exiting ...

解法是參考這裡:NS-2 problem llType


簡單說,先安裝一些套件:

sudo apt-get install libx11-dev libxmu-dev libxmu-headers libxt-dev libtool g++-4.1

再下載tk-8.4-lastevent.patch (點我下載)
然後進入ns-allinone-2.29/tk-8.4.11/下

cd ns-allinone-2.29.3/tk-8.4.11/

執行:

patch -p0 < tk-8.4-lastevent.patch


再修改下列目錄中的"Makefile.in",將@CC@改成gcc-4.1,@CPP@改成g++-4.1

otcl-1.11/, line 7 : CC = gcc-4.1
tclcl-1.17/, line 40 : CC = gcc-4.1
tclcl-1.17/, line 41 : CPP = g++-4.1
ns-2.29/ , line 36 : CC = gcc-4.1
ns-2.29/ , line 37 : CPP = g++-4.1
nam-1.11/, line 44 : CC = gcc-4.1
nam-1.11/, line 45 : CPP = g++-4.1


若你在這之前有執行ns-allinone-2.29下的./install過,記得到ns-allinone-2.29/otcl-1.11/中執行make clean
(原文有說還要砍掉"Makefile",但我實驗的結果是,make clean即會砍掉"Makefile")

到這裡,我執行完ns-allinone-2.29下的./install
ns2.29就裝起來了

可喜可賀

.

2010年9月9日 星期四

在ns-2.29下安裝並執行bittorrentsim

.

ns-2.29安裝後,開始安裝bittorrentsim

bittorrentsim的作者為Kolja Eger(點我連結網站

作者網頁寫得很簡單,其實沒有那麼清楚
我還是紀錄一下安裝和測試過程吧

作者網站上有三個檔案
bittorrent.patch
bt_flashcrowd_flow.tcl
bt_flashcrowd_star.tcl

bittorrent.patch是作者的bt的實作
而後兩個檔案(bt_flashcrowd_flow.tcl和bt_flashcrowd_star.tcl)則是simulation的script file

請自行mapping到相對應的目錄
我的目錄是這樣
/root/ns-allinone-2.29/ns-2.29

安裝bittorentsim

將bittorrent.patch copy到ns-2.29後,在ns-allinone-2.29/ns-2.29下,依序執行:

patch p1 < bittorrent.patch
./confugrue
make clean
make


第一步驟執行後(上patch),會在ns-2.29下多出一個目錄:bittorrent
ns-2.29/bittorrent中的檔案就是作者bt的實作了
但要重新make ns才能將作者的實作的node加入ns中,讓simulation script file可以用

到這,bittorrensim就安裝進ns了,你可以寫simulation了
但是裝好我測試了一下……
本來不會有warning message的simulation script file在裝完bittorrentsim後,再執行同樣的simulation會跑出一堆warning……

warning: no class variable Node::AppRunning_

see tcl-object.tcl in tclcl for info about this warning.


anyway,只是warning而已,至少還是可以動的

20110104更新:
在將BTSim裝入NS229之後,之後跑任何script都會跳出"warning: no class variable Node::AppRunning_"這個warning,很煩
解法是在ns-default.tcl中加這一行:

Node set AppRunning -1

重編NS(這步我不確定要不要,我是習慣重編)
然後這warning就會消失囉


測試作者提供的兩個script file
測試過程中我遇到一些困難,在這我直接提解法,而為什麼會產生這些問題要等我trace code後才能回答了
在ns-2.29/bittorrent下再開一個folder:scripts
將兩個script file(bt_flashcrowd_flow.tcl和bt_flashcrowd_star.tcl)copy到該目錄(ns-2.29/bittorrent/ns-2.29/bittorrent/scripts)下

回到ns-2.29,也要copy兩個script file(bt_flashcrowd_flow.tcl和bt_flashcrowd_star.tcl)到這裡,執行

ns bt_flashcrowd_star.tcl 10 1 1000


第一個參數為peer數
第二個參數為random number generator
第三個參數為上傳頻寬(單位為kpbs)
所以上述的命令為:跑一個packet-level的simulation,10個peers,上傳頻寬為1000kbps

執行後,就會開始跑simulation,simulation的結果會在ns-2.29/bittorrent下再開新目錄,將結果寫入

以我的case,執行時會跑出下列這一行

bittorrent/results_flash_packet_star_100MB_N_P_10_C_125000.0Bps_seed_1_1284040923


這表示simulation完後,結果會被寫入
bittorrent/results_flash_packet_star_100MB_N_P_10_C_125000.0Bps_seed_1_1284040923這個資料夾

.

在linux fc5下裝ns 2.29

.

Efficient Simulation of Large-Scale P2P Networks Packet-level vs. Flow-level Simulations
這篇paper的作者Kolja Eger用ns2寫了bittorrent的simulation,並open source

所以想要用ns2寫p2p simulation的人,這個東西會是個不錯的參考

原本bittorrentsim是放在作者學校的網站上:
http://www.tuhh.de/et6/research/bittorrentsim/

然而,Kolja Eger畢業了,網站被移除了
經詢問,Eger把code改放到他的google site
https://sites.google.com/site/koljaeger/bittorrent-simulation-in-ns-2

然而,他的bittorent code是以patch file release的,並且是給ns-2.29用的

為此,我必需裝一個ns-2.29來安裝他的bittorrentsim

然而,安裝ns-2.29的過程不那麼順利
make時會有一堆error,據悉是gcc改版,規則變嚴格的原因
(這個我有印象,有次gcc更新後,本來可以make的code會make過不了)

我特地找個比較久的linux virtualbox image:Fedora Core 5
沒想這個distribution的gcc還蠻新的:gcc version 4.1.0 20060304 (Red Hat 4.1.0-3)
(其實我不確定是distribution本來的版本就這麼新,還是我以前有做過更新……)
所以make ns-2.29還是會有一堆error

要安裝ns-2.29時會出現一堆error,按照下列這個連結的方法就可以裝起ns-2.29
ns-2.29在Ubuntu8.04中的安装
基本上面文章的解法可行,按照他的方法,我把ns-2.29裝起來了

但是過程中會遇到另一個問題是文章中沒提到的,據說是bash 3.1.I的關係
error code如下:

checking system version (for dynamic loading)... ./configure: line 6017: syntax error near unexpected token `('


在ns-allinone-2.29的目錄下,複製下面這行:
for f in $(find -name configure); do sed "s/relid'/relid/" -i $f; done
貼上,執行,問題就解了
這個解法的原文出處:Compiling Network Simulator 2.29

到這裡,就裝好ns-2.29了
可以開始動手安裝bittorrentsim了


.

在linux fc5下裝VirtualBox guest addition

.

為什麼現在還要回頭使用linux fedora core 5呢?
……

因為,我要裝ns2 2.29
因為,BittorentSim的patch file是for ns2 2.29
而ns2 2.29在太新的gcc下……會裝不起來……

我有兩個選擇:
1.要嘛在新的gcc裝起ns2 2.29
2.要嘛就是在較舊的linux下裝ns2 2.29

solution 1我試過,但失敗了

所以我現在要試solution 2

但solution 2面臨到的第一個難題是:我要裝guest addtion
但fedora core系列都沒有linux kernal src header
而要安裝guest addition,就需要有linux kernal src header
否則就會遇到如下的錯誤:

Building the VirtualBox Guest Additions kernel modules [FAILED]
Your system does not seem to be set up to build kernel modules.


這個難題我很久以前就遇過了,因為即使是vmware的guest os,也是要裝vmware guest tool
不是只有vitualbox才有這問題


為什麼要裝guest addtion這個原因我就不解釋了,簡單的說,不裝guest addtion我用不下去

好,我們現在就來解問題:
怎裝linux kernal src header?

有人說:

yum install kernel-devel-$(uname -r)


以前這個指令是對的,但現在不work,因為fc5太舊了,官方不maintain了


好,那找其他的repository如何?
如新竹縣網的

http://apt.nc.hcc.edu.tw/web/yum_setup.htm


裝好了之後,yum update可以使用
但還是找不到linux kernal source hdr
錯誤如下:

Error: failure: Fedora/RPMS/kernel-devel-2.6.15-1.2054_FC5.i686.rpm from core: [Errno 256] No more mirrors to try.



好,到這裡線索已經出來了,我們至少知道fc5的kernel src hdr的rpm name為:kernel-devel-2.6.15-1.2054_FC5.i686.rpm

上網google一下kernel-devel-2.6.15-1.2054_FC5.i686.rpm,隨便捉一個下來
安裝:

rpm -ivh kernel-devel-2.6.15-1.2054_FC5.i686.rpm


然後再裝一次guest addition

./VBoxLinuxAdditionals-x86.run --target ~/vbox


恭喜,終於裝成功了,我有guest addtion 可以用了
有圖有真相



.

2010年8月3日 星期二

ubuntu 9.10下安裝oversim

.

首先要安裝oversim
在./configure時,會出現下列error
configure: error: zlib or zlib header file not found, please install it

此時要安裝zlib
我是裝zlib1g-dev
sudo apt-get install zlib1g-dev

裝完後,就可以bypass該error

但還是會出現新的error:
configure: error: Cannot run wish (wish command "puts OK; exit" failed): maybe you are not running X or DISPLAY environment variable not set?

原來要在xwin下的console去執行./configure(我習慣用遠端)
在xwin下再執行一次./configure,就過了,只是會出現一些warning

configure: error: Cannot run wish (wish command "puts OK; exit" failed): maybe you are not running X or DISPLAY environment variable not set?

WARNING: The configuration script could not detect the following packages:

MPI (optional) LibXML/Expat Akaroa (optional)

Scroll up to see the warning messages (use shift+PgUp), and search config.log
for more details. While you can use OMNeT++ in the current configuration,
be aware that some functionality may be unavailable or incomplete.


WARNING: your PATH doesn't contain /home/gdemon/oversim/omnetpp-4.1/bin!
Add the following line to your .profile or .bash_profile (provided you use bash):
export PATH=$PATH:/home/gdemon/oversim/omnetpp-4.1/bin


WARNING: The TCL_LIBRARY environment variable is not set, and without it
Tkenv (the GUI runtime environment) may be unable to find the BLT library.

Add the following line to your .profile or .bash_profile (provided you use bash):
export TCL_LIBRARY=/usr/share/tcltk/tcl8.4

For additional information, please visit the "Common installation problems"
page on www.omnetpp.org.

.

2010年7月8日 星期四

ubuntu下找不到pthread_create的man page

.

最近linux都改用ubuntu了
在ubuntu下預設是沒有pthread_create的man page,要再自己加裝才行

sudo apt-get install manpages-posix-dev

裝完就man得到了

.

2010年3月8日 星期一

pietty(putty) ssh login 亂碼的解決方法

.

問題雖然簡單,但以後還是有可能會遇到,紀錄一下解決問題的過程

遇到的問題是,使用pietty/putty ssh login進linux後,build code的error message會變成亂碼
雖然大部份網頁的解答是使用pietty,然後去修改編碼方式
而pietty雖然可以動態的的改變編碼,但有些問題不是改pietty的編碼方式就解得了的

簡單的說,問題在於中文的編碼方式有big5和unicode兩種
而不是只有gcc的message才有中文亂碼的問題,只有folder中有中文檔名或中文資料夾名稱,那麼ls的結果中一樣也會出現亂碼
因此要判斷亂碼是否解決的依據不一定要再編譯程式碼,只要ls即可

解法就是login後
若系統中文編碼是big5,在提示符號打LANG=zh_TW.Big5
若系統中文編碼是unicode,在提示符號打LANG=zh_TW.UTF-8
然後在pietty中選對應的編碼呈現方式後,就不會出現亂碼了
若不知道系統是哪種,兩種都試一次就知道結果了

若不想每次ssh login後都執行一次LANG=zh_TW.XXX,可以透過修改.bashrc來達到每次ssh login後自動執行LANG=zh_TW.XXX

.

2010年1月27日 星期三

Ubuntu 9.10的man page找不到一些東西

.

在Ubuntu上用man時,發現一些寫code時的function找不到,這不合理

在網路上找了一下資料,原來再安裝manpages-dev就好了
在提示符號下輸入:
sudo apt-get install manpages-dev

安裝完後,再用man就可以查到function了

那麼到底manpages-dev是什麼?
繼續追查下去,首先找到APT的來源,以下文字擷取自WIKI:高級包裝工具
高級包裝工具(英語:Advanced Packaging Tools,簡稱:APT)是Debian及其衍生發行版的軟件包管理器。APT可以自動下載,配置,安裝二進制或者源代碼格式的軟件包,因此簡化了Unix系統上管理軟件的過程。APT最早被設計成dpkg的前端,用來處理deb格式的軟件包。現在經過APT-RPM組織修改,APT已經可以安裝在支援RPM的系統管理RPM套件。
原來如此,APT現在可用在RPM上了
在用RPM時,dependency為我帶來很大的痛苦,而現在,APT的出現將一切變簡單了,安裝程式只要one step(從wiki推斷,rpm的dependency其實是由apt自動解決)
用了apt,讓我對linux改觀

接著再找,找到中文的APT的How To:APT HOWTO中文版

apt可以search(是apt-cahche,不是apt-get)
apt-cache search atari

於是我search了 manpages:
sudo apt-cache search manpages

結果很多,節錄一些重要的

manpages - GNU/Linux 系統使用手冊
manpages-dev - 給開發者參考使用的 GNU/Linux 說明手冊
vim-common - Vi 增強版 - 共用檔案
funny-manpages - 許多有趣的說明手冊(manpage)
manpages-zh - 中文 manual page

原來manpage有超多的,而Ubuntu 9.10預設少裝了manpages-dev(給開發者參考使用的 GNU/Linux 說明手冊)
對有需要寫程式的人,就要自己安裝manpages-dev了
祝大家寫程式順利

.

2010年1月21日 星期四

Ubuuntu ssh login 速度慢

.
在裝了Ubuntu後,用ssh login ubuntu後,發現輸入username後,要等一陣子才能輸入password,而server明明是沒有loading的,不該這麼慢才對

google了一下,大家都說是因為ssh預設dns反查所造成的,但解法卻莫衷一是……
解法有很多,有些我試了是沒用的

在Linux Mint 8 和 Ubuntu 9.10下,兩個我都試過了,真正用的:
修改/etc/nsswitch.conf,找到 hosts那行
原先應該長這樣:hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
改成這樣:hosts: files dns [NOTFOUND=return]
存檔,不用重開Ubuntu,馬上有用

.

2010年1月20日 星期三

VirtualBox在Ubuntu下自動掛載sharefolder

.

在VirtualBox下,在host os和guest os間分享資料夾的文章已經有人介紹很多
當guest os為linux (ubuntu)時,每次重開vm都要執行mount的指令來share folder時會不會讓你很煩?

看到有人使用script的方式來autorun mount的指令,不是不可行,只是很麻煩,因為還要將執行指令的account設為sudoer....
若只是希望開機自動mount virtualbox的sharefolder的話,下面介紹一個更簡單的方法,只要修改/etc/fstab就好了

1.在shell下執行:sudo vi /etc/fstab
2.在最下面加入如下面的一行,存檔,重開機後,你就會發現vbox的分享資料夾被自動掛載了
sharefolder_name mount_point就好了
比如說,以我的設定來講,如入如下的一行,vb_ShareFolder為vbox的分享資料夾名稱,/home/gdemon/vbsf為我的mount point(掛載點)
vb_ShareFolder /home/gdemon/vbsf vboxsf


我的guest OS為Ubuntu 9.10,保證可以,另外原文作者也試過在9.04下這樣就行
根據原文的說法,若為8.10,則要這樣改:
sharefolder_name mount_point vboxsf defaults 0 0
此方法的原文出處

.

2009年9月4日 星期五

scp用法

.

因為有需要在兩台Linux傳檔案,後來發現使用scp傳檔是蠻不錯的方法
在此將scp用法紀錄下來

scp的指令有許多種格式,我自己最常用的格式如下:
大略格式如下:
scp 來源 目的地
細節為
scp [本機檔案] [帳號]@[主機位址]:[遠端主機資料夾位址]

如scp bin/*.* root@10.168.1.173:/root/hs_p2p_0904_2
就會將現在本機的woking directory下的bin下的全部檔案傳到10.168.1.173主機下的/root/hs_p2p_0904_2目錄下,並使用帳號root登入
成功連接遠端主機(10.168.1.173)後,會被要求輸入該帳號的密碼,敲完密碼後,檔案就會被傳過去了,過程如下:
root@10.168.1.173's password:
xxxx.exe 100% 167KB 166.6KB/s 00:00

.

vi秀行號

.

不常用的東西,就不會記得.......
還是在blog記錄一下好了

在vi中輸入如下指令就可以秀出行號
set nu
要取消顯示行號只要輸入如下指令即可:
set nonu

.

2009年1月13日 星期二

移除routing table entry

Linux有個神奇的特性,那就是即使link沒有up,interface一樣可以up,這一點和windows不一樣,於是也就照成了我的困擾……

network device上通常會有不只一張網卡,而為了開發方便,我會給其中的一些網卡ip,由於都在同一個lan,因此這些網卡up之後的routing destination ip都一樣,若dst ip重覆,則priority最高的優先,若你要連的ip不是eth0(通常priority最高)的話,那麼就會連不上

因為雖然每張網卡的ip不一樣,但他們送回的封包都會從eth0送回,這就導致,你往eth1連線,而return pkt卻是從eth0返回,由於return pkt的source ip為eth0的ip,因此連線永遠建不起來,你也就沒回連向該張網卡

解決的辦法是將其他網卡從routing table裡拿掉,只留下你要連的網卡,這樣就可以保證封包會從該網卡return
又或者建立正確的routing table

移除routing entry的方法是:
route del -net 192.168.0.0 netmask 255.255.0.0 dev eth0

這樣就會將dst ip為192.168.0.0從eth0出去的routing rule從routing table拿掉了

.

看網卡driver info的指令

今天學弟又教我一招

ethtool -i eth0

這樣就可以看到該網卡是用什麼driver,以及driver的版本
很好用

.

移除module

不常用的指令,就會忘!!!

像我今天就忘了...

因此我還是紀綠一下好了
insert module有兩種方式:
insmod module_name
modprobe module_name

但remove module只有一種方式:
rmmod module_name

.

2008年12月24日 星期三

linux 2.6 的 ACL

其實我不確定這是否是2.6才有的功能,不過2.4時沒有用過
由於開發環境不是我架設的,我又不知道學弟有設ACL,搞半天一直沒法ssh進去開發機………

ACL的設法:
vim etc/hosts.allow
sshd: 192.168.10.55, 192.168.10.41, 192.168.10.118: allow
在sshd:後面加入你要allow的ip即可

另外好像要合hosts.deny使用
vim etc/hosts.deny
sshd: all: deny

學弟把所有都deny,這樣就造成了除了allow的ip之外,其他的ip都沒法ssh進去

存檔後,service network restart即可

.

2008年11月19日 星期三

man的用法

我是個linux使用的苦手,但還好我有個linux很行的學弟……為免我忘記,就順手記下吧

man是個好東西,可以用來查bash的指令,也可以查function的prototype和用法

但是問題是,若你要查的指令同時存在bash和stdio.h中,會發生什麼事?
答案是,會找到bash

比如說,rename同時在bash和stdio中都有,若你想找的是stdio.h中的用法,可是輸入man rename,卻只會出現bash的用法,怎辦?

答案是:man 2 renmae

學弟跟我說,man有九個section,man後面加個數字就是指定section,而不加的話,就會以第一個找到的為主

那麼,若第一個找到的不是你想要的,怎辦?

學弟跟我說,猜

man 2 rename 到 man 9 rename,總會有一個是你想要的……

另外,man應該是manual的縮寫,絕對不是學長所說因為linux是男生寫的關係

2008年10月31日 星期五

修改linux網卡的設定

.

對linux使用實在是不熟,請容許我做個小筆記

ifconfig的script的位置在/etc/sysconfig/network-scripts下
想要對其設定做永久的變更,直接去改script即可

ifcfg-eth0為eth的cfg file,內容大致如下
DEVICE=eth0
HWADDR=00:1a:64:21:d3:11
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.1.2
GATEWAY=192.168.1.1
TYPE=Ethernet
若安裝時沒有設IP,預設則為IPPROTO=DHCP,並且會少一些設定,將該行設定拿掉後,補上相關設定,存檔後,執行service network restart,網卡就會有IP了

順帶一提,linux的開機script是rc.d
我一直不知道這是什麼的縮寫,也就一直記不住script的名字.....
學弟說,那是run command的縮寫,從此我就記住了…

.

Make linux kernel

make kernel網路上很多文章在講
這一篇,是做為我的筆記,方便我找尋

一直寫linux kernel的code,但是很少make kernel
最近拿到一份修改過的skbuff.c,除了看作者是怎麼改code之外,免不了要評估效能,於是,就要將改過的skbuff.c替換原本skbuff.c,make出一份新的kernel

將code替換後
在kernel source tree下

1.make menuconif
選擇要編進kernel的module,看是直接編入,或是以module型式存在
由於我們是做transparent network device,因此,我們的kernel很乾淨,除了必要的driver不必要的東西都被拔掉
2.make clean
3.make
4.make bzImage
5.make install

在make install後,/etc/grub.conf會被修改
由於我們的device沒用到ramdisk
因此,還要修改/etc/grub.conf
1.開機的partition指向hda3
root = /dev/hda3
2.將ramdisk mark掉(前面加#)
#initrd /initrdXXXXX.img

如此,kernel已被替換
重開機即可