Linux啟動流程詳解,從BIOS到運行級別

一、BIOS

BIOS(基本輸入輸出系統)是電腦的主要固件之一,內置於計算機的主板上,主要作用是在計算機加電時進行自檢,並將系統控制權移交給操作系統。在Linux啟動的過程中,BIOS是第一步。

當計算機開機時,BIOS會自動初始化硬件資源,包括CPU、內存、硬盤、光驅等。接下來,BIOS會加載自檢程序,進行一系列硬件自檢,如果發現錯誤,就會輸出錯誤信息。如果自檢通過,BIOS會搜索啟動設備的引導扇區,並將控制權轉交給引導扇區。在Linux啟動過程中,引導扇區是非常重要的,因為它包含着操作系統的啟動程序。

二、引導程序

引導程序是位於硬盤的引導扇區中的第一扇區,它是操作系統啟動的第二步。在Linux系統中,引導程序通常是GRUB(GRand Unified Bootloader)。GRUB是一個多重引導程序,它可以識別主流操作系統,比如Windows、Linux、Mac等,用戶可以在啟動時選擇任何一個操作系統。

#在Linux系統中,GRUB的配置位於以下文件中:/etc/grub.d/40_custom
#GRUB啟動順序可以在/etc/grub.d/00_header和40_custom中進行調整
menuentry 'Ubuntu 18.04' {
   set root='hd0,msdos2'
   linux /vmlinuz root=/dev/sda2 ro
   initrd /initrd.img
}

從GRUB開始,Linux系統才開始真正地被加載。在此過程中,GRUB會讀取內核文件和其它必要的文件系統模塊並將它們加載到內存中。

三、內核啟動

內核是Linux系統的核心部分,也是運行與系統最底層,直接操作硬件資源的部分。內核啟動是Linux啟動的第三步。

在內核啟動時,Linux會做如下操作:

1、設置系統日誌

2、初始化CPU、內存、硬盤等硬件

3、掛載根文件系統

4、建立root用戶的環境變量

5、啟動init進程

內核會創建root文件系統並掛在,以便操作系統可以訪問硬盤中的數據。接下來,內核會加載一些必要的模塊,如文件系統模塊、網絡模塊等。在文件系統準備好之後,內核會啟動init進程。init是Linux系統的第一個用戶級別進程,它是進程控制的直接祖先。在Linux中,init一直存在於運行級別中,負責啟動和終止其它的用戶級別進程。

四、用戶級別

用戶級別是操作系統運行時的可供用戶選擇的不同狀態,也稱為運行級別。在Linux中,有七個運行級別。不同的運行級別提供了不同的服務,如多用戶服務、圖形界面、只運行背景服務等。用戶可以根據需求選擇運行級別。

以下是運行級別的定義:

0:系統停機狀態,也稱關機

1:單用戶工作狀態,root用戶的命令行模式

2:多用戶狀態,沒有NFS支持

3:完整的多用戶狀態,有NFS支持且無圖形界面

4:系統未使用,保留

5:多用戶狀態,帶圖形界面

6:系統正常關閉並重啟

用戶可以通過運行級別來控制Linux系統的狀態。在Linux中,運行級別可以通過修改/etc/inittab文件來實現。例如,可以增加下面這行代碼來在“init 5”的時候啟動Nginx服務器。

#在/etc/inittab中設置運行級別,並添加如下兩行代碼
id:5:initdefault:
ng:5:respawn:/usr/local/nginx/sbin/nginx

總結

以上是Linux系統啟動的完整過程,從BIOS開始,到引導程序,再到內核啟動,最後到用戶級別。操作系統的啟動過程非常複雜,需要各種硬件和軟件的協同作用。了解Linux的啟動過程可以幫助我們更好地理解操作系統,並且在處理問題時可以更快地找到根本問題。在實際運維中,了解Linux系統的啟動過程也非常重要。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-02 20:36
下一篇 2024-12-02 20:36

相關推薦

  • Python如何區分代碼塊的級別

    Python是一種動態語言,其程序在運行前需由解釋器進行解析。在Python語言中,代碼塊的級別是非常重要的,對於代碼塊的排列順序、執行順序及錯誤檢測都有着重要的影響。Python…

    編程 2025-04-29
  • 圖像與信號處理期刊級別

    本文將從多個方面介紹圖像與信號處理期刊級別的相關知識,包括圖像壓縮、人臉識別、關鍵點匹配等等。 一、圖像壓縮 圖像在傳輸和存儲中佔據了大量的空間,因此圖像壓縮成為了很重要的技術。常…

    編程 2025-04-28
  • Python爬蟲流程用法介紹

    本文將介紹Python爬蟲的流程,包括數據採集、數據處理以及數據存儲等方面。如果想要使用Python爬取網站數據,本文將為您提供詳細的指導和實例。 一、數據採集 1、確定目標網站 …

    編程 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
  • Java項目Git發布流程規範

    本文旨在介紹Java項目在使用Git進行發布時的流程規範。Git作為一個版本控制工具,其功能十分強大,但是對於Java項目進行發布時,需要我們根據標準化的流程規範來執行操作,以確保…

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

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

    編程 2025-04-27
  • xmake qt:構建Qt應用的全流程解決方案

    本文將會詳細闡述xmake qt的使用方法以及其能夠解決的問題。針對Qt應用開發中的各種困境,xmake提供了一整套的解決方案,包括自動構建、依賴管理、部署打包等,極大地提高了開發…

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

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

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25

發表回復

登錄後才能評論