編譯Ubuntu官方核心!!Ubuntu 10.10升級 2.6.38-8.41(附上效能比較) [論壇 - Ubuntu安裝問題]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

(1) 2 »


編譯Ubuntu官方核心!!Ubuntu 10.10升級 2.6.38-8.41(附上效能比較)
會員五級
註冊日期:
2011/3/5 19:32
所屬群組:
已註冊使用者
等級: 21
HP : 0 / 500
MP : 173 / 14256
EXP: 3
離線
直接編譯Ubuntu官方核心!! 成功!!

<img src="" alt="" title="Hosted by imgur.com" />
















更上一層樓!Ubuntu10.10核心升級為 2.6.38-8.41 (Linux2.6.38.2核心)!!

這次不是像上回編譯最原始的Linux核心,編譯最原始核心後拿來在Ubuntu使用會有一些錯誤,比如:
有firmware的錯誤...ureadahead錯誤...還有AppArmor的問題...

因為Ubuntu官方為原始核心做了一些調整,所以直接拿Ubuntu官方核心開刀!

這次將Ubuntu10.10 i386版核心升級為 2.6.38-i386-pae(支援4G以上的記憶體)
同時開啟兩個被大加報導,能增進系統效能的核心新功能:
程序自動分組(automatic process grouping)、透明大型分頁(Transparent Huge Pages)...

底下的內容是參考這三篇文章:(感謝這三位前輩的分享!)
==========================================================
http://blog.avirtualhome.com/2010/11/06/how-to-compile-a-ubuntu-10-10-maverick-kernel/
http://bucunzai.net/2011/03/linux-kernel-2-6-38/
http://it.tomcat-lily.com/index.php/2011/01/%E8%87%AA%E5%B7%B1%E7%BC%96%E8%AF%91ubuntu%E5%86%85%E6%A0%B8/
==========================================================
操作前請先比較這三篇內容再動手...

第1篇是給 i386用戶,第2篇是給 i386pae(記憶體4G以上),第3篇是寫給使用64位元作業系統看的喔!
(操作指令幾乎一樣,只是參數不同...)

我的電腦是AMD的CPU,記憶體4G,i386版 Ubuntu 10.10,因此我朝此方向去訂製專屬優化的核心...

底下所有內容中出現的「bear」都可以修改成自己喜歡的命名,但全都要保持一致,包括大小寫!

*****************************************************************************

2011-04-06 操作全紀錄:

首先建立工作目錄(home/bear/data/kernel-bear)

要安裝好一大堆Ubuntu的工具:
開啟終端機

sudo su -
apt-get install fakeroot build-essential
apt-get install crash kexec-tools makedumpfile kernel-wedge
apt-get build-dep linux
apt-get install git-core libncurses5 libncurses5-dev
apt-get install libelf-dev libdw-dev asciidoc binutils-dev
exit

透過git連線到Ubuntu官方,將最新的官方核心原始文件抓下來:
cd data
cd kernel-bear
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-natty.git source

也可以在 http://kernel.ubuntu.com/git 上選擇喜歡的版本來編譯,抓下來的這些代碼放在指定的source目錄中。
(看得到的有415.3MB+隱藏的548.9MB=964.2MB)

進去目錄
cd source

檢查一下當前抓下的版本(通常是最新的)
less debian.master/changelog

在第一行,你會看到版本序號(過一陣子這個編號應該會變,於是底下所有指令的序號部份也要跟著改變):
linux (2.6.38-8.41) natty; urgency=low

退出(按下q鍵)

先在本地建立一個新的叫做bear的git分支
git checkout Ubuntu-2.6.38-8.41 -b bear

接下來建立自己的kernel make config文件
cp debian.master/config/i386/config.flavour.generic-pae debian.master/config/i386/config.flavour.bear
fakeroot debian/rules clean
debian/rules updateconfigs

文件就準備好了,可以開始修改它:
debian/rules editconfigs

出現的選項都選N(即不要修改原本的內容),直到出現這個問題:
Do you want to edit config: i386/config.flavour.bear? [Y/n]

若想要修改原始文件,使其符合自己這台電腦的特性,就選 「Y」

然後,進入標準的Linux Kernel make menuconfig的菜單。
(在每個設定項目按下H,會出現說明文字,大概可了解其功能...按S可選定此項目,按E退出此項目...
連按兩次ESC,可退出...)

在General setup ,要確認Automatic process group scheduling開啟了!
(這就是第一個被大書特書2.6.38核心「所謂打上神奇補丁」的選項!Ubuntu官方預設是開啟...)

在Processor type and features ---> 這個項目的
Processor family --->

由於我的CPU是AMD系列,於是我選這一項: Opteron/Athlon64/Hammer/K8
還有許多CPU類型的選項,包括Pentium4、Core2和Atom,可根據你的CPU進行選擇。
==================================================================================
可參考這一篇~~~
linux內核編譯選項詳解(三):Processor type and features
http://www.path8.net/tn/archives/3501
==================================================================================

另外,沒想到這個新核心居然預設沒有開啟Transparent Huge Pages...

Timer frequency 可選 1000HZ,這是針對桌面系統和需要快速互動回應的
(1000 Hz is the preferred choice for desktop systems and other systems
requiring fast interactive responses to events. )

......

設定項目太多了,請參考後面「回覆文所推荐的文章」~~~

最後連按兩次ESC,退出這個核心設定,並選 Yes 來保存設定,
我們的修改就被保存在config.flavour.bear文件中了。

之後的各個問題都選N,也就是不要改變原本設定。

將config文件備份
cp debian.master/config/i386/config.flavour.bear ../

清理git tree:
git reset --hard
git clean -xdf


先檢查一下source資料夾內debian.master/abi內資料夾的名稱...
這次該資料夾是2.6.38-8.40,所以指令為:
cp debian.master/abi/2.6.38-8.40/i386/generic-pae debian.master/abi/2.6.38-8.40/i386/bear
cp debian.master/abi/2.6.38-8.40/i386/generic-pae.modules debian.master/abi/2.6.38-8.40/i386/bear.modules
cp debian.master/control.d/vars.generic-pae debian.master/control.d/vars.bear

把剛才備份的config文件放回來
cp ../config.flavour.bear debian.master/config/i386/

自己到該目錄下修改getabis與i386.mk文件:

01文件 debian.master/etc/getabis

修改內容:
getall i386 generic generic-pae virtual 修改為
getall i386 generic generic-pae virtual bear

02文件 debian.master/rules.d/i386.mk

修改內容:
flavours = generic generic-pae virtual 修改為
flavours = generic generic-pae virtual bear

然後在本地commit git:
git add .
git commit -a -m "Bear modifications"


*****************************************************************
*****************************************************************
編譯之前先做一次make clean。
fakeroot debian/rules clean

執行底下指令將使得上層目錄出現4個deb檔:
skipabi=true skipmodule=true fakeroot debian/rules binary-indep

沒多久就出現這4個:

linux-doc_2.6.38-8.41_all.deb
linux-headers-2.6.38-8_2.6.38-8.41_all.deb (這個之後安裝自製核心需要用到!)
linux-source-2.6.38_2.6.38-8.41_all.deb
linux-tools-common_2.6.38-8.41_all.deb

接著要生成內核文件:
skipabi=true skipmodule=true fakeroot debian/rules binary-bear

然後又出現設定核心功能的選項
Transparent Hugepage Support sysfs defaults
> 1. always (TRANSPARENT_HUGEPAGE_ALWAYS) (NEW)
2. madvise (TRANSPARENT_HUGEPAGE_MADVISE) (NEW)
choice[1-2?]:

我選擇1...這就是2.6.38新核心的被大幅報導第二個增進系統效能的選項!

......

......

......

經過漫長的編譯(肚子好餓!先忍著觀看結果...期待...),最後生成下面兩個文件:

linux-headers-2.6.38-8-bear_2.6.38-8.41_i386.deb
linux-image-2.6.38-8-bear_2.6.38-8.41_i386.deb

完成!!! 呵呵~跟從官方抓的一樣,核心安奘檔總共有3個deb包喔!


====================================!!!提醒!!!=====================================
安裝新核心前先要安裝支持2.6.38核心的顯示卡驅動程式,目前只有ATI的,且只給Ubuntu 10.10 i386版本...

檔案大小: 24.5 MB
http://www.megaupload.com/?d=QY29VKY4

其他版本可參照這篇文章的第3部份,自行編譯:
http://bucunzai.net/2011/03/linux-kernel-2-6-38/
======================================================================================


安裝檔案:

sudo dpkg -i linux-headers-2.6.38-8_2.6.38-8.41_all.deb
sudo dpkg -i linux-headers-2.6.38-8-bear_2.6.38-8.41_i386.deb
sudo dpkg -i linux-image-2.6.38-8-bear_2.6.38-8.41_i386.deb

sudo update-initramfs -c -k 2.6.38-8-bear
sudo update-grub2

重開機

開機選單上應該就有 2.6.38的選項...接著看看能否順利進入桌面...


*********************************************************************************************
測試中~~~~

用指令uname -a檢查目前核心版本:

bear@bear-desktop:~$ uname -a
Linux bear-desktop 2.6.38-8-bear #41 SMP Wed Apr 6 18:49:29 CST 2011 i686 GNU/Linux

成功囉!

哇!記憶體能支援4G了... VirtualBox 4.0.4 也能正常運作囉!太棒啦!
其他軟體也OK!影片照看! 畫面重繪速度好像又更快...

改編Ubuntu官方核心太美妙啦!(汗水沒有白流...肚子沒有白餓!)

2011/4/6 20:18
應用擴展 工具箱
回覆: 直接編譯Ubuntu官方核心!!Ubuntu10.10核心升級為 2.6.38-8.41
管理員
註冊日期:
2006/10/31 19:52
來自 Baker Street 221B
所屬群組:
網站管理員
已註冊使用者
討論區管理群
等級: 30
HP : 0 / 733
MP : 405 / 30193
EXP: 34
離線
Automatic process group scheduling不管是哪個發行版預設它都是開啟的

2011/4/6 22:01
應用擴展 工具箱
回覆: 直接編譯Ubuntu官方核心!!Ubuntu10.10核心升級為 2.6.38-8.41
會員五級
註冊日期:
2008/6/15 2:56
所屬群組:
已註冊使用者
等級: 38
HP : 0 / 945
MP : 757 / 34416
EXP: 81
離線
謝了~昨天那篇我有成功!這篇晚點在試

2011/4/6 22:42
應用擴展 工具箱
回覆: 直接編譯Ubuntu官方核心!!Ubuntu10.10核心升級為 2.6.38-8.41
會員五級
註冊日期:
2011/3/5 19:32
所屬群組:
已註冊使用者
等級: 21
HP : 0 / 500
MP : 173 / 14256
EXP: 3
離線
對於如何選擇核心設定選項,可參考這些文章:

Linux 2.6.36內核優化指南
http://kenwublog.com/docs/linux-kernel-2-6-36-optimization.htm

詳細介紹 Linux中內核配置選項
http://www.path8.net/tn/archives/3504

linux內核編譯選項詳解(一):General setup
http://www.path8.net/tn/archives/3497

linux內核編譯選項詳解(二):Loadable Module and Block Layer Support
http://www.path8.net/tn/archives/3499

linux內核編譯選項詳解(三):Processor type and features
http://www.path8.net/tn/archives/3501

2011/4/7 15:08
應用擴展 工具箱
回覆: 直接編譯Ubuntu官方核心!!Ubuntu10.10核心升級為 2.6.38-8.41
會員五級
註冊日期:
2011/3/5 19:32
所屬群組:
已註冊使用者
等級: 21
HP : 0 / 500
MP : 173 / 14256
EXP: 3
離線
在此放上我簡單的新舊核心效能比較結果~~~ Why?...








耗時愈少者勝...

結果反而是舊核心2.6.35執行效能比較好...唉!

整個比較是在我這台電腦上進行的,由於Ubuntu 10.10(i386版)在開機時可以選不同核心進入系統,
於是我把之前自己編譯Ubuntu官方核心原始檔所製作的新核心,拿來與原本預設核心相比較...

專心掃毒 與 專心壓縮 是指桌面就只開這一個程式,計算其花費時間
多干擾掃毒 與 多干擾壓縮 是指桌面上除了該程式外,還同時運行另外3個程式

掃毒:用Avast!Linux掃毒全系統...
壓縮:用Ubuntu內建壓縮程式壓縮一個1.4G有諸多項目(大小不一)的檔案
多干擾:還同時運行3個程式...SMPlayer播放RMVB,VLC播放720P的youtube影片,PCSX模擬器運行遊戲...

「核心2.6.38」 為2.6.38-8.41版pae 自製版
CPU設定改為Opteron/Athlon64/Hammer/K8這項(我的CPU型號)
Timer frequency改為1000

「核心2.6.35」 為2.6.35-28版pae 官方近日更新版
其預設CPU為Pentium-Pro
預設Timer frequency為250

......

不過在操作上,2.6.38核心用起來感覺反應較快!!...
啟動、移動、開關項目...移動程式視窗,畫面也無明顯殘影破格...

2011/4/8 14:39
應用擴展 工具箱
回覆: 直接編譯Ubuntu官方核心!!Ubuntu10.10核心升級為 2.6.38-8.41
管理員
註冊日期:
2006/10/31 19:52
來自 Baker Street 221B
所屬群組:
網站管理員
已註冊使用者
討論區管理群
等級: 30
HP : 0 / 733
MP : 405 / 30193
EXP: 34
離線
Lancel 寫到:
在此放上我簡單的新舊核心效能比較結果~~~ Why?...

耗時愈少者勝...

結果反而是舊核心2.6.35執行效能比較好...唉!

整個比較是在我這台電腦上進行的,由於Ubuntu 10.10(i386版)在開機時可以選不同核心進入系統,
於是我把之前自己編譯Ubuntu官方核心原始檔所製作的新核心,拿來與原本預設核心相比較...

專心掃毒 與 專心壓縮 是指桌面就只開這一個程式,計算其花費時間
多干擾掃毒 與 多干擾壓縮 是指桌面上除了該程式外,還同時運行另外3個程式

掃毒:用Avast!Linux掃毒全系統...
壓縮:用Ubuntu內建壓縮程式壓縮一個1.4G有諸多項目(大小不一)的檔案
多干擾:還同時運行3個程式...SMPlayer播放RMVB,VLC播放720P的youtube影片,PCSX模擬器運行遊戲...

「核心2.6.38」 為2.6.38-8.41版pae 自製版
CPU設定改為Opteron/Athlon64/Hammer/K8這項(我的CPU型號)
Timer frequency改為1000

「核心2.6.35」 為2.6.35-28版pae 官方近日更新版
其預設CPU為Pentium-Pro
預設Timer frequency為250

......

不過在操作上,2.6.38核心用起來感覺反應較快!!...
啟動、移動、開關項目...移動程式視窗,畫面也無明顯殘影破格...

我昨天就告訴你這個測試有問題
測試基準嚴重不公...為何還到處宣傳錯誤的測試結果...

2011/4/8 16:30
應用擴展 工具箱
回覆: 直接編譯Ubuntu官方核心!!Ubuntu10.10核心升級為 2.6.38-8.41
會員五級
註冊日期:
2011/3/5 19:32
所屬群組:
已註冊使用者
等級: 21
HP : 0 / 500
MP : 173 / 14256
EXP: 3
離線
我並不是要到處宣傳2.6.38核心比較差喔!

不過這樣看來好像大家都傾向預期2.6.38核心比較好...也只能比較好...

「到處宣傳錯誤的測試結果...」
在我的電腦上得到的數據就是這樣...怎麼錯誤了?...

......

我只是單純地想要比較將核心從官方的2.6.35-28換成自製的2.6.38-8.41後,
我的系統效能是否能提升...(Ubuntu 10.10 i386版)

這樣的比較哪裡不公平了?...當狀況改變後,比較前後變化,有什麼不對的地方嗎?


***********************************************************
我之後又用 UnixBench 5.1.2 做性能測試,分成「單核心運作」與「雙核心運作」兩組,結果如下:



















結果大部份是紅字,也就是效能變差的項目比較多...

最後總評System Benchmarks Index Score下降了...
所以說,換上我的2.6.38自製核心,整體來說,我的系統效能會降低...

這是為什麼呢?
問題出在哪兒?
要怎麼編譯,我的新核心才能提升系統效能?
還是與核心無主要關係?...

如同樓上大大說的:
「絕大部分的測試,別人都是2.6.38勝過2.6.35,
你的基準應該是放在自編譯2.6.38對官方2.6.38」

照大大的說法,2.6.38勝過2.6.35,
照發文核心編譯設定那幾個大大的說法,優化核心對應的自編2.6.38應勝過官方2.6.38...

但用在我的系統卻相反...

我只把官方核心改了幾個地方:
Processor family 選Opteron/Athlon64/Hammer/K8 (我的CPU類型)
Timer frequency 選 1000HZ
開啟automatic process grouping、Transparent Huge Pages
其他設定都保持原樣呀!


我也希望效能能提升,但整體結果卻不如預期...

2011/4/8 18:30
應用擴展 工具箱
訪客
回覆: 直接編譯Ubuntu官方核心!!Ubuntu10.10核心升級為 2.6.38-8.41
Anon:訪客
別生氣 我只是打個比方

在Lance的電腦

2.6.38是兔子 2.6.35是烏龜

龜兔賽跑

烏龜贏了


2011/4/8 19:13 | 7fef5 278fd 1fc1d 39ea4
應用擴展 工具箱
回覆: 直接編譯Ubuntu官方核心!!Ubuntu10.10核心升級為 2.6.38-8.41
管理員
註冊日期:
2006/10/31 19:52
來自 Baker Street 221B
所屬群組:
網站管理員
已註冊使用者
討論區管理群
等級: 30
HP : 0 / 733
MP : 405 / 30193
EXP: 34
離線
kernel是有一段時間效能越來越低落
但最近幾個版本都是性能提昇的
2.6.35到2.6.38提昇是很顯著的

你的測試有什麼問題我昨天就告訴過你了
在測試組跟對照組環境根本就不一樣
一個是官方2.6.35另一個是你編的2.6.38
你前兩天po說官方是用pentium-pro編譯
改成符合自己處理器的參數會提高效能
結果測試結果卻完全推翻你自己的說法
自己編的kernel完敗給官方更低參數編譯的kernel?!
你不覺得這結果很奇怪嗎?自己用更高參數編譯的效能更差
那還不如直接用官方的就好

如果今天你的對照組除了官方2.6.35外
還有官方2.6.38,得出結論說2.6.38性能下降
那到也說得過去,但你這樣跨版本還一次跨那麼多版本
測出來的結果卻與他人不同,很明顯這裡一定有地方出問題

要比較編譯參數的差異,都是比較同樣版本也就是同樣的source
例如2.6.38-pentium4比對2.6.38-corei7,其餘不變
這樣才能看出差別,用兩個差異頗大的版本
得到的結果做結論,一般是不客觀也沒無法反應正確的差異性

2011/4/8 19:25
應用擴展 工具箱
回覆: 直接編譯Ubuntu官方核心!!Ubuntu10.10核心升級為 2.6.38-8.41
會員五級
註冊日期:
2011/3/5 19:32
所屬群組:
已註冊使用者
等級: 21
HP : 0 / 500
MP : 173 / 14256
EXP: 3
離線
linux內核編譯選項詳解(三):Processor type and features
http://www.path8.net/tn/archives/3501

在這篇文章中提到(不是我說的喔!)
----------------------------------------------------------------------
Processor family (Pentium-Pro) —>
處理器系列,請按照你實際使用的CPU選擇這裡是處理器的類型。這裡的信息主要目的是用來優化。
為了讓內核能夠在所有X86構架的CPU上運行(雖然不是最佳速度),在這你可以選386...
----------------------------------------------------------------------

「雖然不是最佳速度」...所以依其邏輯,若把此選項改為對應自己CPU的類型,效能應該會提升...
但我的測試數據並非全是如此...


*** yanzilme說:「在測試組跟對照組環境根本就不一樣...」

環境怎麼會不一樣?...除了載入的核心不同,全都是在我這台電腦(硬體),這個Ubuntu10.10作業系統(軟體)中
進行的測試...比較前後兩個不同的核心所帶來的影響,有什麼不對呢?


*** yanzilme說:「自己編的kernel完敗給官方更低參數編譯的kernel?!」

高參數編成的就一定會較優?那是理論上吧!實際運作後呢?

當年美國打越戰,戰前美軍和越共誰強?...最後美軍灰頭土臉的退出戰場...
當年赤壁之戰,曹操大軍和孫劉聯軍看起來誰強?...真正一戰,曹操敗走華容道,狼狽不堪...


*** yanzilme說:「敗給官方更低參數編譯的kernel?!你不覺得這結果很奇怪嗎?」

呵呵~我也覺得很奇怪...按照預期,應該是2.6.38勝2.6.35,而按上述那篇文章,應該自編2.6.38勝官方2.6.38...
所以自編2.6.38更勝2.6.35...但得到的測試數據並不支持這個「預期」!

「我有個理想,動手去實踐,結果就一定非得照我預期不可...」強迫要這樣嗎?

如同那個訪客說的,龜兔賽跑,通常大家覺得兔子會贏...但真正的結果要比賽過才知曉...
(難道就為了「一定要符合常理,一定要符合大家期望」,所以哪怕烏龜贏了,也要當眾予以否認?!)


*** yanzilme說:「那還不如直接用官方的就好...」

呵呵~您說到我心坎裏了...我也是這樣覺得...


*** yanzilme說:「如果今天你的對照組除了官方2.6.35外,還有官方2.6.38,得出結論說2.6.38性能下降,
那到也說得過去,...」

我並沒有說官方2.6.38的性能下降呀!我是拿***我自編的2.6.38*** (抓Ubuntu官方的source來編譯)
與Ubuntu10.10內裝的官方核心相比較...換了核心,看看效能會怎樣...

結果我的電腦性能下降!


*** yanzilme說:「很明顯這裡一定有地方出問題...」

期望有人能指點我,到底或可能問題出在什麼地方?...是編譯指令?是編譯次序?是設錯參數?是缺少補丁?...
這樣可以給想自編核心的同好們做個參考...同時這次也給大家一個經驗:不見得自編核心會如預期的提升系統效能...


*** yanzilme說:「都是比較同樣版本也就是同樣的source,例如2.6.38-pentium4比對2.6.38-corei7,其餘不變,
這樣才能看出差別,...」

那是一種「選不同對應CPU來看同一核心」的效能差異...

我是「對於我現正使用Ubuntu 10.10 i386系統,換個核心」的差異...問題不一樣呀!

大家都說2.6.38好!又說優化 核心對應 好!...所以我來用用看,看看是不是換了它,眼前這部機器
真的會變得比較好...(人家說吃辣椒會噴火,好!我來吃吃看...)
於是要進行實驗、測試,看看數據有沒有差異?有多大的差異?...不是應該這樣子嗎?!


*** yanzilme說:「...一般是不客觀也沒無法反應正確的差異性...」

呵呵~什麼叫做客觀...實驗數據是程式自己跑出來的,我保持一致的測試環境,只調整核心這一項...這算客觀吧!...
我只是報導我自己這台機器的狀況而已...

我並沒有向全世界「斬釘截鐵地」宣布:「大家被騙了!2.6.38沒有比較好!」

而且我的測試方法(好像回到研究所的「研究方法」課啦!)哪裡有問題啦?

「在 同一部的機器 比較 不同核心 造成的效能差異」這樣有問題?


*** yanzilme說:「2.6.35到2.6.38提昇是很顯著的...」
當年毛老也是說:「三三主義到共共主義提升也是很顯著的...」

但具體作為後,是有地方比較好,但也有不如預期的部份...現在我這邊就是出現「不如預期」的情形...


*** yanzilme的邏輯好像是「2.6.35到2.6.38提昇是很顯著的」,所以「整體效能一定提升」,所以Lancel的情形
也一定是這樣(也只能是這樣)...如果不一樣,肯定是Lancel錯了...Lancel把兔子和烏龜擺在一起比賽就是不對!

比賽結果...啥比賽結果!...根本一開始連比都不能(不准)比!...

yanzilme的「馬拉松比賽」只能是「紅兔對藍兔」或者「忍者龜對傑尼龜」...不是同類,絕對不能放在一起跑!

...

2011/4/8 21:21
應用擴展 工具箱

(1) 2 »

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.