顯示具有 kernel 標籤的文章。 顯示所有文章
顯示具有 kernel 標籤的文章。 顯示所有文章

2012年1月29日

linux的PAE

幾年前比較知名的問題應該就是4G記憶體的使用,不管是win 7或者linux都有遇到這個問題,事實上在硬體廠商早就想到,但是因為實際產品一直沒有價格便宜到4G記憶體是隨手可得,這問題就被"擱置"下來(使用者當它不存在XD)
http://zh.wikipedia.org/wiki/PAE,這連結是一個很好的解釋

一般有些資訊背景的人大概直覺的反應是32bit的cpu對於定址有4G大小,所以超過4G的記憶體應該是無法定址成功,所以32bit應該是無法突破4G的限制。這個應該是存在於process上的限制,即使開啟的PAE,暫時也無法突破一個process的只能使用4G記憶體的事情,因為只使用了32bit的位址線,最多只能用到4G。但是系統來說就不是這樣了,intel另外利用了一個register來開啟PAE,並且把階層加大,就可以把極限推超過4G,甚至於到好幾T都不是問題啊。

前兩種未開啟PAE的模式應該比較簡單,只是把address line劃分成幾個部分(因效率考量),接著開啟PAE後,先決定是四個page directory的哪一個,然後再跳到那一個page directory,可以簡單的看成每個page directory後面是一個4G的空間,所以2^4*4G就支援到64G了,但是要注意的是page directory table還是得放在實際記憶體最前面4G的部分

2011年1月31日

ubuntu刪除舊的kernel

很多人都把ubuntu裝在一個硬碟空間有限的partition,或者說跟我一樣,看不慣開機的時候grub那長長的一串kernel列表,所以這時候就要把舊的kernel刪除,底下是一個簡單的指令就可以讓root刪除舊的kernel
aptitude purge ~ilinux-image-.*\(\!`uname -r`\)

2009年11月5日

系統資訊(2)

其實大多的系統資訊可以透過/proc這個目錄拿到,有趣的是,如果你仔細看檔案大小,大多是0 bytes而且是read only。其實這個目錄的檔案大多是核心的介面,大多可以用cat指令讀取上圖示一個ls的結果,可以看到一堆帶有號碼的目錄,其實他們都是process id,代表每個process的資訊,其他則是望文生義(不過要有些電腦底子)
之前已經看過了cpuinfo跟meminfo了,這次來看一些IO devices
cat /proc/devices
可以列出兩大類的IO File,就是character跟block

cat /proc/interrupts
他會列出相關的IRQ

cat /proc/ioports
列出相關io port的adress跟name

2007年11月23日

降低CPU速度for NB

來自~http://slowlymouse.blogspot.com/2007/11/ubuntu-cpu.html
實在了不起,Linux愈作愈好,慢慢貼近使用者,不過我沒膽子試驗Orz
為了保險起見,我把文章複製過來~自己備份一下
==================================================================
目前以中高階notebook而言,搭載雙核心處理器早已不足為奇,但是『雙』核心也意味謂著運作時將產生更多的廢熱,尤其當兩個核心工作滿載,更可以達到 80幾,將近90度的高溫(左圖有真相),其散熱鰭片孔所排出來的熱風,足以媲美寒冬裡溫暖妳手心的7-11關東煮,如果你願意拿它來烘手的話!

  如果再加上 ThinkPad X61右手掌底下動輒50幾度的無線網卡,這下雙手真的可以不用畏懼冬夜裡的寒風了,但是,這麼貼心的設計可只有『冬日限定』,問題是臺灣的冬天,只有短短三個月阿!

  高溫是所有電子元件壽命的殺手,特別是小巧的Notebook,不過當電話那頭的老闆十萬火急的要著上次meeting的結果,而實驗室裡卻 只有一臺老古桌機可以用,這時候逼不得已讓筆電也站上火線!而為了筆電的壽命著想,需降低CPU全速運作時所產生的高熱,只好修改過於保守的CPU電壓 (voltage )預設值,不過網路上有關Linux系統上調整CPU電壓的資訊並不多( for XP 多到不行),辛好Linux-PHC 提供了非常完整的修改方法,過程也不難,只要到Linux-PHC Files下載適用的Patch,並且按照Howto的步驟就能輕鬆的降低CPU溫度。

  以下節錄自Linux-PHC官方文件『Howto undervolt a Core 2 Duo (and maybe Core Duo and Core processors)』,並加入簡單的註解。

主要步驟如下:
  • 下載 kernel-sources
  • Patching kernel-sources
  • 重新編譯部份modules
  • 覆寫舊modules
  • 更改cpu預設電壓
【下載kernel-sources】
  1. 使用Ubuntu 7.10版本,可以從apt下載 2.6.22-kernel source
  2. 在apt執行安裝完畢後,以下動作皆需要登錄為root身份。
  3. 進入目錄 /usr/src/ 下,解壓縮檔案 "linux-source-2.6.22.tar.bz2"。
  4. 進入新的子目錄"linux-source-2.6.22"下。
 command:

$ sudo apt-get install linux-source-2.6.22
$ sudo bash
# cd /usr/src
/usr/src# tar -xjf linux-source-2.6.22.tar.bz2
/usr/src# cd linux-source-2.6.22
【Patching the kernel】
  1. 執行patch前,需先安裝名為patch的程式。
  2. 將下載到桌面的phc-patch複製到kernel的子目錄底下( 記得將fallen改為你的使用者名稱 )。
  3. Patch 所下載的kernel-source。
  4. 複製ubuntu下的設定檔(kernel configuration)到目前的目錄底下。
  5. prepare kernel(準備kernel?)。
 command:

/usr/src# sudo apt-get install patch
/usr/src/linux-source-2.6.22# cp /home/fallen/Desktop/linux-phc-0.3.0-pre1/kernel-patch/linux-phc-0.3.0-pre1-kernel-vanilla-2.6.22.patch .
/usr/src/linux-source-2.6.22# patch -p1 <>
官方wiki提到,接下來系統『應該』會詢問有關cpu頻率和電壓的問題,如果有的話也只能答yes囉!不過,在我安裝的過程中並沒有看到任何對話框!

【重新編譯cpufreq modules】
  1. 輸入make prepare
  2. 輸入make scripts
  3. 重新建利modules(wiki說,要我們不用怕!)
 command:

/usr/src/linux-source-2.6.22# make prepare
/usr/src/linux-source-2.6.22# make scripts
/usr/src/linux-source-2.6.22# make M=./arch/i386/kernel/cpu/cpufreq
接下來會有一個 module.symvers 遺失的警告,不過 Linux-PHC Wiki 告訴我們"nothing in this world is perfect",這應該是無關緊要的意思吧,囧rz。

【安裝 patched module】
  1. 置換新module
  2. 移除程序裡的舊cpufreq module
  3. 下次啟動時系載入新的cpufreq module
 command
/usr/src/linux-source-2.6.22# cp arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.ko /lib/modules/$(uname -r)/kernel/arch/i386/kernel/cpu/cpufreq
/usr/src/linux-source-2.6.22# rmmod acpi-cpufreq
/usr/src/linux-source-2.6.22# modprobe acpi-cpufreq
Linux-PHC Wiki 並未提到接下來需不需要重新啟動,但是安裝時發現如果這個步驟沒有重新開機,會找不到部份的設定。

【變更電壓設定】
  如果過程中沒出錯的話,到這邊應當可以修改對應頻率(FIDs)的電壓值(VIDs)。不過kenel所提供的頻率與電壓單位,並非常用的GHz與Vlot. (伏特)而是採用相對應的整數。
先進入cpufreq目錄底下,列出相關設定檔案;
 command:

/usr/src/linux-source-2.6.22# cd /sys/devices/system/cpu/cpu0/cpufreq/
/sys/devices/system/cpu/cpu0/cpufreq# ls
可以發現phc-patch新增了下列六個檔案:
  • phc_controls
  • phc_default_controls
  • phc_default_vids
  • phc_vids
  • phc_fids
其中 phc_controls & phc_vids 是可以任意更動設定值的設定檔,檢視一下預設值,
 command:

/sys/devices/system/cpu/cpu0/cpufreq# cat phc_vids
以Core 2 Duo T7100為例,顯示"45 37 18 11",這4 個數字代表cpu有4個step可以變換,每一個step會對應一個電壓值,其中數字愈小表示電壓電壓愈低,Linux-PHC Wiki 也給了一個intel的網址 (http://developer.intel.com/design/mobile/datashts/314078.htm),可以查詢這些數字代表的意義,不過,有看沒有懂。

  更改電壓只需要下echo,例如將4個 step 的電壓更改為"18 18 11 11":
 command:

/sys/devices/system/cpu/cpu0/cpufreq# echo "18 18 11 11" > phc_vids
若要檢視是否更改成功,用cat再去讀一次phc_vids 就行了,如何找出適用於CPU的電壓設定,請參考下一篇(還沒寫完 XD)

『注意』:調整cpu工作電壓具有硬體損壞之風險,且需由個人所承擔,即使同為 Core 2 Duo T7100 也不一定適用同一組cpu電壓。