為什么Linux會開機黑屏?

在這里插入圖片描述
有的童鞋由于工作的需要,或者想體驗一把無廣告的世界,會去嘗試使用Linux的發行版,但是經常被Linux拒之門外,甚至連系統到裝不上,當然這個現象也在越來越少,只有更多的人去使用它,它才會變的更好。

在安裝時遇到問題,無論是度娘還是Google,有些人會使用下面這樣的命令來解決問題。

acpi_osi=linux
nomodeset
nouveau.modeset=0
i915.modeset=0
acpi=off
xforcevesa

那么這些參數是什么意思?作用是什么?

1. 什么是ACPI

它的英文全稱是:Advanced Configuration and Power Interface

中文的意思是:高級配置與電源接口


在以前(比較久遠)的時代,電源管理,包含風扇等多是由底層的BIOS來控制的,操作系統是不負責的,原因也很簡單,當時的硬件五花八門,沒有大一統的規范,那么操作系統就很難去適配。所以電源耗電問題是無法靠操作系統來優化的。

直到有了 ACPI 規范后,就可以通過操作系統來發送 ACPI 命令,以此控制電源的消耗,比如:

  • 高性能
  • 低性能
  • 屏幕亮度

正是因為有了ACPI,我們才能在相同的主板上,安裝不同的操作系統,而不會有異常,大致的工作原理就是開機時,ACPI會詢問操作系統需要控制哪些功能,比如散熱功能,那么ACPI就會把風扇的控制權交給操作系統。

2. 為什么有了ACPI還有問題?

這個問題是一個商人怎樣賺錢的問題,雖然有了 ACPI 規范,但是總有膀大腰圓的企業,特立獨行,自成體系(你們先猜猜是誰)

上面提到,在開機時ACPI會詢問操作系統需要支持哪些功能,但是有一個歷史問題就是,以前是使用 _OS 函數詢問,但是這個函數有問題,后來改成 _OSI 函數來詢問操作系統是否支持特定的接口,在 Linux-2.6.22 版本以前,Linux被ACPI以 _OSI 詢問,會回答TRUE,現在是回答FALSE。

_OSI 有規范其功能,但是Windows生態系沒有按照設計規則,只把它當做 _OS 的替代品,廠商通常只對Windows系統做測試,且根據測試進行選擇適當的BIOS開機路徑,然后才能正常開機。

但是大多數的廠商并沒有對Linux系統做測試,原因很簡單,不賺錢,都是為了賺錢,不磕磣!

Linux系統更新比較頻繁,難以做出一套適用于所有Linux版本的BIOS系統,為了可以正常開機,Linux選擇當ACPI詢問是否支持Windows時,返回TRUE,以此使用window的開機路徑,但實際上兩者是不兼容的,只是為了使用一個折中的方案,總比沒有測試過的要好。

由于Bios廠商沒有對Linux系統做測試,當ACPI使用 _OSI(”Linux”) 詢問操作系統時,操作系統會返回FALSE,因為Linux不敢返回TRUE,畢竟都沒有做過測試,很有可能開不了機,返回FALSE就避免了ACPI對操作系統造成影響。

3. 參數的含義

Linux系統在啟動時會經過 grub,這個時候可以通過 grub 傳遞一些參數給內核。

  1. nomodeset

    不加載任何關于顯卡的驅動,無論你是獨顯還是集成顯卡。

  2. nouveau.modeset=0

    關閉Linux自帶的開源顯卡驅動(是為了NVIDIA顯卡所寫),反之=1位打開。

  3. i915.modeset=0

    關閉Intel顯卡的驅動,這個一般是指CPU中的集成顯卡了。

  4. xforcevesaradeon.modeset=0 xforcevesa

    關閉AMD的顯卡驅動

  5. acpi=off

    回到過去,電源管理控制關閉,操作系統將無法控制,完全由BIOS來處理。那么此時,電源、屏幕亮度、風扇等等都將無法控制。

nouveau是一個自由及開放原始碼顯卡驅動程序,是為Nvidia的顯卡所編寫,也可用于屬于系統芯片的NVIDIA Tegra系列,此驅動程序是由一群獨立的軟件工程師所編寫,Nvidia的員工也提供了少許幫助。
該項目的目標為利用逆向工程Nvidia的專有Linux驅動程序來創造一個開放原始碼的驅動程序。由讓freedesktop.org托管的X.Org基金會所管理,并以Mesa 3D的一部分進行散布,該項目最初是基于只有2D繪圖能力的“nv”自由與開放原始碼驅動程序所開發的,但紅帽公司的開發者Matthew Garrett及其他人表示原先的代碼被混淆處理過了。nouveau以MIT許可證許可。
項目的名稱是從法文的“nouveau”而來,意思是“新的”。這個名字是由原作者的的IRC客戶端的自動取代功能所建議的,當他鍵入“nv”時就被建議改為“nouveau”。

4. 參數一般應對什么場景?

如果只是知道這些參數可能還不夠,一定要應用到實際情況當中,下面以我的經驗總結一下什么場景用哪些參數。

當然講之前要知道,這些參數是加到哪里的。

啟動時,e鍵進入配置界面,找到 quiet splash —這個字符串,把后面的—改成nouveau.modeset=0。

這種修改方式是臨時的,如果要永久修改需要進入操作系統之后,修改grub的配置文件。

  1. 安裝Linux系統時黑屏

    • 當你是NVIDIA卡時,并且沒有集顯,直接使用 nouveau.modeset=0 ,然后開機進入系統之后,安裝NVIDIA的閉源驅動,這個問題的出現說到底就是英偉達TMD不開源。
    • 當你是NVIDIA卡時,并且有集顯,使用 nomodset ,后面和上面一樣,進入系統安裝驅動。
    • 當你是AMD卡時,沒有集顯使用 radeon.modeset=0 ,有集顯使用 nomodset ,進入系統之后安裝驅動。
  2. 系統已經安裝完成,在安裝NVIDIA閉源驅動后,重新啟動后黑屏

    使用 nomodset 參數進入操作系統,然后卸載NVIDIA閉源驅動,并且關閉nouveau的開源驅動之后再重新安裝驅動。

    sudo gedit /etc/modprobe.d/blacklist.conf
    

    在最后一行加入

    blacklist nouveau
    

    然后執行

    sudo update-initramfs -u
    

    最后還需要重啟。

  3. 電腦使用顯卡相關的參數后依然無法開機

    這可能就是BIOS比較特殊,Linux操作系統支持其開機路徑,大部分的原因是ACPI導致的,那么需要關閉ACPI。使用 acpi=off 參數。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535951.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Golang跨平臺UI框架之Wails(一)

Golang作為后端、腳手架、API服務等很常見,但Go不僅僅局限于此,它的目標是星辰大海!本系列文章就開始講解如何使用Go來構建現代化的桌面級程序。 1. 初識Wails Wails 是一個框架,可使用 Go 和 Web 技術編寫桌面應用程序。我們先來欣賞一下美圖: Go官方是不支持寫帶有GUI…

Linux安裝NVIDIA顯卡驅動的正確姿勢

文章目錄Linux安裝NVIDIA顯卡驅動的正確姿勢什么是nouveau驅動?檢測NVIDIA驅動是否成功安裝集顯與獨顯的切換使用標準倉庫進行自動化安裝使用**PPA**倉庫進行自動化安裝使用官方的NVIDIA驅動進行手動安裝常見問題解決Linux安裝NVIDIA顯卡驅動的正確姿勢 可能想玩Li…

Linux安裝CUDA的正確姿勢

Linux安裝CUDA的正確姿勢 CUDA(Compute Unified Device Architecture,統一計算架構)是由NVIDIA所推出的一種集成技術,是該公司對于GPGPU的正式名稱。 透過這個技術,用戶可利用NVIDIA的GeForce 8以后的GPU和較新的Qua…

Linux升級內核的正確姿勢

Linux升級內核的正確姿勢 很多童鞋在玩耍linux發行版的時候,都會遇到各種各樣的問題,比如:網卡不能使用,亮度不能調節,觸摸板不能識別,藍牙不能使用等等,這些關系都和linux的內核有關系。 什么…

Ubuntu 18.04安裝NVIDIA(英偉達) RTX2080Ti顯卡

Ubuntu 18.04安裝NVIDIA(英偉達) RTX2080Ti顯卡 在安裝顯卡之前請先把ubuntu 18.04系統提前安裝好。 需要準備的資料: NVIDIA 驅動 下載驅動 驅動的下載地址,在此下載頁面選擇合適的顯卡,目前最新的顯卡驅動版本是…

Ubuntu18.04安裝cuDNN和Tensorflow的正確姿勢

文章目錄Ubuntu18.04安裝cuDNN和Tensorflow的正確姿勢一、檢查NVIDIA驅動是否安裝成功二、檢查CUDA是否安裝成功三、安裝cuDNN1. 確定版本2. 下載安裝包3. 解壓安裝4. 安裝libcupti四、安裝Tensorflow1. 確定版本2. 安裝pip3. 安裝Tensorflow4. 檢查是否正常運行五、錯誤解決1.…

HttpServletResponse應用 的 簡單介紹

HttpServletResponse是專門用于HTTP協議的ServletResponse接口,它用于封裝HTTP響應消息,允許操控HTTP協議相關數據,包括響應頭和狀態碼,支持Cookies和session跟蹤,HttpServletResponse也定義了一系列用于描述各種HTTP狀…

移動站應該嘗試百度MIP的五個原因

MIP 是什么?MIP 是百度在 2016 年提出的移動網頁加速器項目。 MIP 能做什么?MIP 能幫助站長和網站開發者快速搭建移動端頁面。 MIP 怎么加速?MIP 從前端渲染和頁面網絡傳輸兩方面進行優化,杜絕頁面渲染中的阻塞問題,…

Vim從理解到應用

1991 年,來自荷蘭的一名工程師 Bram Moolenaar 為了在他的Amiga計算機上復制Vi的功能,正式發布 了Vim的第一個版本。在當時無論誰也沒想到,這款軟件未來能在技術圈爆發出那么大的威力,為千千萬萬的工程師節省了無數時間&#xff0…

如何用百度MIP快速搭建體驗友好的移動頁面

在讀這篇文章之前,請確定你已經了解 MIP 定義及加速原理。如果不確定的話,可以到 MIP 官網了解。 改造前期準備和注意事項: 你可以選擇直接將原先的移動站點直接改成 MIP 站,也可以單獨再做一套 MIP 站點與移動站并存。 復雜的頁面暫不建議…

JAVA知識基礎(一):數據類型

在我們學習一門編程語言時,最先要了解的就是數據類型,而數據類型又都是抽象的概念,初學者理解起來比較困難,所以我們往往是先應用再理解,但是在本篇文章我決定用先理解再應用的方式嘗試一下,試試效果。 1、…

百度MIP移動頁面加速——不只是CDN

MIP 是用 CDN 做加速的么?準確答案是:是,但不只是。 MIP 全稱 Mobile Instant Pages,移動網頁加速器,是百度提出的頁面加速解決方案。MIP 從前端渲染和頁面網絡傳輸兩方面進行優化,杜絕頁面渲染中的阻塞問…

JAVA知識基礎(二):基本語法

本篇主要介紹JAVA的運算符、循環結構以及條件結構。 1、JAVA運算符 計算機的最基本用途之一就是執行數學運算,作為一門計算機語言的Java也提供了一套豐富的運算符來操縱變量。 JAVA運算符可以大致概括為幾類:算術運算符、關系運算符、位運算符、邏輯運…

JAVA知識基礎(三):修飾符

JAVA中根據修飾對象的不同可以分為類修飾符、方法修飾符、變量修飾符三類,其中每種修飾符又可以單獨分成兩類:訪問修飾符和非訪問修飾符。為了便于理解,本文以訪問和非訪問的角度展開。 1、訪問修飾符 訪問修飾符有四個:public、…

百度推出新技術 MIP,網頁加載更快,廣告呢?

MIP 項目在 2016 年年初正式發布,幫助移動頁面加速(原理)。內測數據表明,MIP 頁面在 1s 內加載完成。現在已經有十多家網站加入 MIP 項目,有更多的網站正在加入中。在MIP收到的反饋中,大部分都提到了廣告的…

JAVA知識基礎(四):深入理解static關鍵字

1、static存在的主要意義 static的主要意義是在于創建獨立于具體對象的域變量或者方法。以致于即使沒有創建對象,也能使用屬性和調用方法! static關鍵字還有一個比較關鍵的作用就是 用來形成靜態代碼塊以優化程序性能。static塊可以置于類中的任何地方…

MIP改造常見問題二十問

在MIP推出后,我們收到了很多站長的疑問和顧慮。我們將所有疑問和顧慮歸納為以下二十個問題,希望對大家理解 MIP 有幫助。 1、MIP 化后對其他搜索引擎抓取收錄以及 SEO 的影響如何? 答:在原頁面 MIP 化,不會影響其它搜…

Nginx(零):背景

我們今天開始對Nginx的學習,本來是打算第一篇就是基礎知識介紹的,但是我感覺在學習一個新知識之前總應該知道,我們為什么要學習它,學習它的意義何在吧!所以我加了背景這一篇作為Nginx開始學習的標志。 1、Nginx的誕生…

Nginx(一):概念基礎

上一篇我們介紹了Nginx的背景,現在我們就要開始正式對Nginx的學習了。本篇我們將對Nginx的基本定義進行介紹,了解Nginx到底是什么。然后我們會介紹Nginx最基本的三個概念:反向代理、負載均衡、動靜分離。 1、Nginx是什么 Nginx(“engine x”…

MIP 官方發布 v1穩定版本

近期,MIP 官方發布了 MIP 系列文件的全新 v1 版本,建議開發者盡快完成升級。 一、 我是開發者,如何升級版本? 對于 MIP 頁面開發者來說,* 只需替換線上引用的 MIP 文件為 v1 版本 *,就可以完成升級。所有…