acpi_osi=linux、 nomodeset是什麼意思? 功能?

linux ubuntu 18.04安裝心得之2

--

最近安裝ubuntu18.04 遭遇不少困難,而且幾乎是顯卡引發的,查詢網路教學,在linux kernel 被grub 引入之前,可以給予參數,讓kernel作動時,不要從事預設的行為

看到建議的參數有:acpi_osi=linuxnomodesetnouveau.modeset=0i915.modeset=0acpi=offxforcevesa,建議得很好,有改善情況,但是我無法忍受自己使用這些參數,卻不知道他們的意義,所以還是強迫症,花了時間查詢

除了acpi_osi=linux,這參數我查很久才懂他的意思,其他參數都很容易查到資料,想發文也只是因為acpi_osi=linux的中文資料有點少,所以想提供一份心力

acpi_osi=linux,提到這參數之前要先懂什麼是ACPIAdvanced Configuration and Power Interface,以前的年代,風扇,電源管理等等都是給底層bios控制,作業系統不能控管,所以電源消耗的問題無法靠作業系統OS優化。發展了ACPI規範後,就可以從作業系統命令ACPI,藉此控制電源消耗,像是要高效能,低效能,螢幕亮度調整...等等功能

藉由ACPI,我們才得以在相同主機板,安裝不同的作業系統,卻不會發生異常,主機板開機時,ACPI詢問OS支援哪些擴充介面,然後啟用相對應的bios軟體

PS.在Ref還有提到其他專有名詞,例如:OSPM、DSDT,我不太懂這些名詞的用途,所以細節的東西我不是很清楚是否有正確敘述,畢竟我只是想大概知道來由,沒打算從事bios相關工作

比如主機板X,在WIN10有bug1,WIN7有bug2,有各自修復BUG的方式,當詢問時,若作業系統回答:「我支援」,那ACPI就會把修復bug1的方式套用該作業系統來進行開機動作,若作業系統回答我支援散熱功能,那ACPI就會將風扇之類的控制權交給作業系統

但奇怪的事情發生了,現在的Linux Kernel,被詢問你支援WIN10嗎?居然是回答:「我支援Win系統」,並且詢問你支援Linux嗎?會回答:「我不支援

原先是用_OS函數來詢問,後來發現這函數有缺失[4],於是改成用_OSI函數來詢問作業系統是否支持特定的接口,在 Linux-2.6.22版本之前,Linux 被ACPI以_OSI(“Linux”)詢問時,會回答TRUE,但現今的Linux,會回答FALSE [1]

_OSI有規範其功能,但Windows生態系不是按照設計,只把它當作_OS的替代品,廠商通常只對WIN系統做測試,且根據該測試進行適當的BIOS開啟路徑,如此才可正常開機

大多數廠商沒有對Linux系統做測試,原因也很簡單,沒錢賺,Linux系統更新又非常頻繁,難以作出一套適用於所有Linux版本的Bios系統,為了可以正常開機,Linux選擇當ACPI詢問是否支援Windows時,返回TRUE,藉此使用Win的開機路徑,但實際上兩者是不兼容的,只是為了使用一個還可行的方案,總比完全沒有測試來的要好 [4]

由於Bios廠商沒有對Linux系統做測試,當ACPI使用_OSI(“Linux”)詢問作業系統Linux是否支援Linux時,作業系統Linux,會返回FALSE,避免ACPI對OS造成影響[3]

有看到有人說這句話 從來沒有代工廠測試過 Linux path.我其實不太懂這句話,具體的實際描述是什麼意思,我自己想像成,開機需要經過固定的步驟,可能為了避開BUG,不同的系統,開機順序不同 [5]

不過還是有bios廠商願意針對Linux做測試,設置acpi_osi=linux,就會讓Linux被詢問時,老實回答自己支援Linux作業系統

Refs :

[1] Why does Linux Say It Is not Linux in _OSI(“Linux”)?

[2] What do the kernel parameters acpi_osi=linux

[3] DSDT handling Operating System Variants

[4] ACPI _OSI and _REV methods

[5] bios如何区分Windows和Linux? 关于_OSI

重點都說完了,内核顯示參數就簡單說一下,請讀者自己去查資料吧

nomodeset
不載入所有關於顯示卡的驅動
nouveau.modeset=0
關閉nvidia顯卡的驅動,反之 =1為開啟
i915.modeset=0
關閉Intel顯卡的驅動,挺好奇對於Intel內顯會有什麼影響
xforcevesa 或 radeon.modeset=0 xforcevesa
跟AMD顯卡(ATI)有關的設定,我猜也是關閉吧,反正我不會買A牌顯卡...
acpi=off
回歸舊時代,電源相關設定,OS無法控管,交給bios處理
acpi功能失效,有不少硬體上奇怪的問題,可以用這參數解決

Ref :[6]Kernel mode setting (简体中文)

--

--

Gopher is cute
Caesar's study review on Web development

我的第一份後端工作結束了,短短四個月,部門全員掰掰,尋找新的機會。