Linux系統啟動過程解析:從BIOS到登錄界面

一、BIOS啟動階段

在電腦開啟的瞬間,計算機會首先加載主板上的BIOS固件,這部分程序負責硬件相關的初始化工作,比如檢測內存、檢測硬盤、檢測顯卡等。同時,BIOS還會從固定位置讀取引導扇區(boot sector)的內容,將控制權交給引導扇區的程序,進入下一個階段。

二、引導加載階段

引導扇區中的程序通常是一個小型的引導加載程序(bootloader),最常見的引導加載程序是GRUB。引導程序首先會讀取配置文件/grub/grub.cfg,這個文件包含了啟動菜單和內核選項。

grub.cfg示例:

menuentry 'Ubuntu' {
    linux /vmlinuz-4.10.0-42-generic root=/dev/sda1 ro quiet splash
    initrd /initrd.img-4.10.0-42-generic
}

上面的示例中,menuentry定義了啟動項的名稱,linux行指定了內核文件的位置和內核啟動參數,initrd行指定了初始內存盤(initrd)文件的位置,initrd里可以包含一些加載內核所必要的模塊和設備驅動。

三、內核啟動階段

引導程序將控制權轉交給內核,內核首先會進行硬件偵測,尋找所有可用的I/O設備,初始化中斷、內存和各種驅動程序。

隨後,內核會嘗試掛載root文件系統,這個過程是通過讀取fstab文件中的內容來完成的。

fstab示例:

/dev/sda1       /           ext4        errors=remount-ro 0       1
/dev/sda2       none        swap        sw                0       0

fstab文件中定義了已有的存儲設備的掛載點。上面的實例定義了/dev/sda1作為根文件系統的掛載點,使用ext4文件系統,並啟用錯誤日誌、請求重新掛載等功能。

內核成功掛載文件系統後,會執行/sbin/init程序,這個程序是系統的初始化管理程序。

四、系統初始化階段

初始化程序會啟動各種守護進程和系統服務,比如控制台、網絡、遠程文件共享、系統日誌等。這些服務會連接到本地或者遠程的設備和網絡,並開始提供各種服務。

最後系統加載登錄管理器,等待用戶登錄。Linux系統中最常見的登錄管理器是GDM和LightDM。

當用戶輸入用戶名和密碼後,系統開始啟動用戶的會話,並加載用戶的首選項和設置。

五、總結

在Linux系統啟動時,BIOS首先會啟動並初始化硬件,然後將控制權交給引導扇區,引導程序會讀取配置文件並引導內核啟動。內核啟動後會進行硬件偵測和文件系統掛載,接着會進入系統初始化階段啟動各種服務。最後啟動登錄管理器,等待用戶登錄。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/159515.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-19 19:00
下一篇 2024-11-20 00:14

相關推薦

  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • 如何使用Python將print輸出到界面?

    在Python中,print是最常用的調試技巧之一。在編寫代碼時,您可能需要在屏幕上輸出一些值、字符串或結果,以便您可以更好地理解並調試代碼。因此,在Python中將print輸出…

    編程 2025-04-29
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python調用C代碼過程用法介紹

    本文將從多個方面詳細闡述Python調用C代碼的過程,包括相關的知識點、實例代碼以及注意事項等內容。 一、概述 Python作為一門高級語言,在很多情況下不能滿足開發人員的需求。此…

    編程 2025-04-27
  • Python 如何進入編程界面?

    Python 是一種廣泛應用於 Web、遊戲、網絡爬蟲等領域的高級編程語言。Python 雖然易學易用,但還是需要一些工具和步驟來實際編寫運行程序。 一、命令行模式 在命令行模式下…

    編程 2025-04-27
  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27
  • 如何解決linux jar包 invalid or corrupt jarfile問題

    對於許多開發人員和系統管理員在Linux環境下使用Java開發過程中遇到的一個常見的問題是 invalid or corrupt jarfile(無效或損壞的jar文件)錯誤。當您…

    編程 2025-04-27
  • Python自動搶購代碼實現過程

    本文將詳細介紹使用Python實現自動搶購的代碼實現過程。 一、安裝selenium庫 Selenium是一個自動化測試框架,可以在瀏覽器中模擬用戶操作,可以用來實現自動搶購。 首…

    編程 2025-04-27
  • 在Linux上安裝JRE並配置環境變量

    本文將從以下幾個方面為您詳細闡述如何在Linux系統上,通過自己賬戶安裝JRE,並且配置環境變量。 一、安裝JRE 在進行安裝前,我們需要下載JRE的安裝包並解壓,可以從官方網站下…

    編程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用於Linux操作系統的一款照片管理器,它支持多種相機及存儲設備,並提供了一系列強大的工具,讓用戶可以方便地瀏覽、管理、編輯和導出照片。本文將從多個方面對GTKAM進行…

    編程 2025-04-27

發表回復

登錄後才能評論