2008年11月28日 星期五

Linux 無法正常開機

acpi=off 和 noapic 能幫我做到什麼?
很多人混淆了 apic 和 acpi 的差別,也難怪,他們兩個長得也太像了。每當遇到很多奇怪的問題,基本上你覺得事有蹊蹺的時候,一用這兩個參數,准行。譬如,我使用的隨身碟 【Knoppix B2DpureKGB】在 PC computer 使用正常,在 Acer Aspire 5610 則無法正常開機,會出現無畫面的情況!但加入這兩個參數後,一切OK。
方法:
menu.lst 文件,在啟動的核心kernel那行最後加上
acpi=off noapic

ACPI 和 APIC 有什麼關係?

很多人問道了什麼ACPI,什麼是APIC,他們有沒有關係?名字這麼相近。下面給出我對其的一些理解,具體的解釋可以查看內核文檔庫的內核參數文件:
/usr/src/`uname -r`/Documents/kernel-parameters.txt

ACPI-Advanced Configuration and Power Interface,意思是「高級配置與電源接口」。這是英特爾、微軟和東芝共同開發的一種電源管理標準。
ACPI可實現以下功能:   
1、用戶可以使外設在指定時間開關;   
2、使用筆記本電腦的用戶可以指定計算機在低電壓的情況下進入低功耗狀態,以保證重要的應用程序運行;   
3、操作系統可以在應用程序對時間要求不高的情況下降低時鍾頻率;
4、操作系統可以根據外設和主板的具體需求為它分配能源;
5、在無人使用計算機時可以使計算機進入休眠狀態,但保證一些通信設備打開;
6、即插即用設備在插入時能夠由ACPI來控制。
不過,ACPI和其他的電源管理方式一樣,要想享受到上面這些功能,必須要有軟件和硬件的支持。在軟件方面,Windows 98及其後續產品和Windows 2000都對ACPI給予了全面的支持;而Linux的內核目前對此支持得並不是太理想。硬件方面比較麻煩,除了要求主板、顯卡和網卡等外設要支持ACPI外,還需要機箱電源的配合。電源在提供5伏電壓給主板的同時,還必須使電流穩定在720毫安以上才可以,這樣它才能夠實現電腦的「睡眠」和「喚醒」。
ACPI共有六種狀態,分別是S0到S5,它們代表的含義分別是:
S0–實際上這就是我們平常的工作狀態,所有設備全開,功耗一般會超過80W;
S1–也稱為POS(Power on Suspend),這時除了通過CPU時鍾控制器將CPU關閉之外,其他的部件仍然正常工作,這時的功耗一般在30W以下;(其實有些CPU降溫軟件就是利用這種工作原理)
S2–這時CPU處於停止運作狀態,總線時鍾也被關閉,但其餘的設備仍然運轉;
S3–這就是我們熟悉的STR(Suspend to RAM),這時的功耗不超過10W;
S4–也稱為STD(Suspend to Disk),這時系統主電源關閉,但是硬盤仍然帶電並可以被喚醒;
S5–這種狀態是最乾脆的,就是連電源在內的所有設備全部關閉,功耗為0。
我們最常用到的是S3狀態,即Suspend to RAM(掛起到內存)狀態,簡稱STR。顧名思義,STR就是把系統進入STR前的工作狀態數據都存放到內存中去。在STR狀態下,電源仍然繼續為內存等最必要的設備供電,以確保數據不丟失,而其他設備均處於關閉狀態,系統的耗電量極低。一旦我們按下Power按鈕(主機電源開關),系統就被喚醒,馬上從內存中讀取數據並恢復到STR之前的工作狀態。內存的讀寫速度極快,因此我們感到進入和離開STR狀態所花費的時間不過是幾秒鍾而已;而S4狀態,即 STD(掛起到硬盤)與STR的原理是完全一樣的,只不過數據是保存在硬盤中。由於硬盤的讀寫速度比內存要慢得多,因此用起來也就沒有STR那麼快了。 STD的優點是只通過軟件就能實現,比如Windows 2000就能在不支持STR的硬件上實現STD。
之前的電源管理是APM(Advanced Power Management),那麼ACPI和APM相比有什麼區別呢?

2、ACPI與APM比較
APM 1.0&1.1:由BIOS執行電源管理;
APM 1.2:操作系統定義電源管理時間,由BIOS負責執行;
ACPI:BIOS收集硬件信息,定義電源管理方案;由操作系統負責執行。
APM是一種軟件解決方案,因此是與操作系統有關的, 而ACPI是工業標準,包括了軟件和硬件方面的規範。

APIC-Advanced Programmable Interrupt Controller (高級可編程中斷控制器)對計算機來講有兩個作用,一是管理IRQ的分配,可以把傳統的16個IRQ擴展到24個(傳統的管理方式叫PIC),以適應更多的設備。二是管理多CPU。由於Nf2主板並不支持多CPU,所以,APIC關閉直接的影響是減少了可用的IRQ。
不過,如果板卡不是非常多的話,關閉 APIC對系統是沒有什麼影響的。
要實現SMP功能,我們使用的CPU必須具備以下要求:
CPU內部必須內置APIC單元。Intel 多處理規範的核心就是高級可編程中斷控制器(Advanced Programmable Interrupt Controllers–APICs)的使用。CPU通過彼此發送中斷來完成它們之間的通信。通過給中斷附加動作(actions),不同的CPU可以在某種程度上彼此進行控制。每個CPU有自己的APIC(成為那個CPU的本地APIC),並且還有一個I/O APIC來處理由I/O設備引起的中斷,這個I/O APIC是安裝在主板上的,但每個CPU上的APIC則不可或缺,否則將無法處理多CPU之間的中斷協調。
APIC可能遇到的問題,很多這類問題可以通過BIOS更新來解決。
下面的是通過更改HAL類型來解決
  CPU實際運行頻率與BIOS設定頻率不符
  NF2的用戶大約有10%的會出現CPU實際運行頻率與BIOS設定頻率不符的問題。我們稱之為「頻率不對」。
  這種現象帶來的直接後果就是在測試3dmark或跑3D遊戲的時候,會感覺不流暢,也稱之為「頓」。
  一般在更改BIOS設置後、更新驅動後重啟時,用測試軟件如Aida32、MBM5等可以看到CPU的運行頻率和你在BIOS裡設置得不一樣,而且差距很大。這個時候,用super pi測試CPU速度,會比平常花費時間長好幾秒,用3dmark跑測試,會比平常低幾百分甚至上千分。在3dmark中看到的CPU頻率,也與BIOS設定不符合。
  如果出現這種情況,則屬於我們所討論的「頻率不對」的問題。
  不過,不是所有的3D遊戲「頓」都是這個原因。判斷的方法是:如果你只有個別遊戲「頓」,或者用上述軟件測試頻率正確,就不是此問題。
  如果判斷確實屬此問題,解決的方法也很簡單,經過網友討論,只要關閉APIC功能即可。(注意,是APIC,不是ACPI)。

有一些服務器(比如IBM的,HP的),安裝LINUX時,會給出內核的錯誤,導致無法安裝,這個時候可以在安裝的時候輸入
linux acpi=off noapic
應該是安裝上的。