淺談 Linux 系統啟動過程

      網友投稿 845 2025-04-02

      前言


      Linux 啟動過程

      BIOS 自檢過程

      系統引導

      加載第一個程序

      初始化系統

      前言

      Linux 啟動過程

      BIOS 自檢過程

      系統引導

      加載第一個程序

      初始化系統

      前言

      Linux 系統在日常工作中已經是我們朝夕相處的親密伴侶,每次當我們按下可愛的電源鍵那一刻起直到出現熟悉的登陸界面。這短短的一瞬間它都經歷什么?

      Linux 啟動過程

      對于一臺安裝了 Linux 系統的主機來說,當我們按下開機按鈕時一共要經歷這幾個階段。

      其中,每個過程都執行了自己該做的初始化部分的事情,有些過程又可分為好幾個子過程。

      接下來,我們就對每個階段做一個詳細分析和講解。

      BIOS 自檢過程

      稍有計算機基礎的人都應該聽過 BIOS(Basic Input / Output System),又稱基本輸入輸出系統,可以視為是一個永久地記錄在 ROM 中的一個軟件,是操作系統輸入輸出管理系統的一部分。早期的 BIOS 芯片確實是"只讀"的,里面的內容是用一種燒錄器寫入的,一旦寫入就不能更改,除非更換芯片。現在的主機板都使用一種叫 Flash EPROM 的芯片來存儲系統 BIOS,里面的內容可通過使用主板廠商提供的擦寫程序擦除后重新寫入,這樣就給用戶升級 BIOS 提供了極大的方便。

      BIOS 的功能由兩部分組成,分別是 POST 碼和 Runtime 服務。POST 階段完成后它將從存儲器中被清除,而Runtime服務會被一直保留,用于目標操作系統的啟動。

      BIOS兩個階段所做的詳細工作如下:

      步驟1:上電自檢POST(Power-on self test),主要負責檢測系統外圍關鍵設備(如:CPU、內存、顯卡、I/O、鍵盤鼠標等)是否正常。例如,最常見的是內存松動的情況,BIOS自檢階段會報錯,系統就無法啟動起來;

      步驟2:步驟1成功后,便會執行一段小程序用來枚舉本地設備并對其初始化。這一步主要是根據我們在 BIOS 中設置的系統啟動順序來搜索用于啟動系統的驅動器,如硬盤、光盤、U盤、軟盤和網絡等。我們以硬盤啟動為例,BIOS此時去讀取硬盤驅動器的第一個扇區(MBR,512字節),然后執行里面的代碼。至此,BIOS 的任務就完成了,此后將系統啟動的控制權移交到 MBR 部分的代碼。

      系統引導

      我們首先來了解一下 MBR,它是 Master Boot Record 的縮寫。硬盤的 0 柱面、0 磁頭、1 扇區稱為主引導扇區。它由三個部分組成,主引導程序(Bootloader)、硬盤分區表 DPT(Disk Partition table)和硬盤有效標志(55AA),其結構圖如下所示:

      磁盤分區表包含以下三部分:

      Partition ID (5:延申 82:Swap 83:Linux 8e:LVM fd:RAID)

      Partition起始磁柱

      Partition的磁柱數量

      通常情況下,諸如 lilo、grub 這些常見的引導程序都直接安裝在MBR中。

      我們以grub為例來分析這個引導過程

      grub有兩個作用:

      加載扇區

      加載內核

      首先加載 /boot/grub

      grub 加載第一個文件是 stage1,此時只能識別 ext3 系統文件。

      加載完 stage1 后才能加載 stage1.5,stage1.5 有很多文件格式,當加載完 stage1.5 后能夠識別其他的文件格式。

      grub 加載 stage2 就可以看到開機畫面。

      grub 加載完 tage2 開始加載內核,首先加載 kenal

      內核都是模塊化內核的路徑是 /lib/modules/

      Grub 在加載內核的同時也在加載驅動文件。只有加載完驅動后才能識別硬盤。

      加載第一個程序

      加載第一個程序 /sbin/init 加載這個程序會運行 /etc/inittab 配置文件這里主要設置了啟動默認進入的級別。

      一共有7個運行級別路徑為 /etc/rc.d

      0-----關機

      1------單用戶模式

      2----單用戶不能用nfs

      3-----字符模式

      4------未定義

      5------圖形界面

      6-----重啟

      我們預覽下 init 腳本主要是加載各種存儲介質相關的設備驅動程序。當所需的驅動程序加載完后,會創建一個根設備,然后將根文件系統 rootfs 以只讀的方式掛載。這一步結束后,釋放未使用的內存,轉換到真正的根文件系統上面去,同時運行 /sbin/init 程序,執行系統的1號進程。此后系統的控制權就全權交給 /sbin/init 進程了。

      初始化系統

      到這里就是就快要看到曙光啦,接下來就是最后一步初始化系統。

      /sbin/init 進程是系統其他所有進程的父進程,當它接管了系統的控制權之后,它首先會去讀取 /etc/inittab 文件來執行相應的腳本進行系統初始化,如設置鍵盤、字體,裝載模塊,設置網絡等。

      主要包括以下工作:

      執行系統初始化腳本(/etc/rc.d/rc.sysinit),對系統進行基本的配置,以讀寫方式掛載根文件系統及其它文件系統,到此系統算是基本運行起來了,后面需要進行運行級別的確定及相應服務的啟動。

      執行/etc/rc.d/rc 腳本。該文件定義了服務啟動的順序是先 K 后 S,而具體的每個運行級別的服務狀態是放在 /etc/rc.d/rc*.d(*=0~6) 目錄下,所有的文件均是指向 /etc/init.d下相應文件的符號鏈接。rc.sysinit 通過分析 /etc/inittab 文件來確定系統的啟動級別,然后才去執行 /etc/rc.d/rc*.d 下的文件。

      /etc/init.d-> /etc/rc.d/init.d /etc/rc ->/etc/rc.d/rc /etc/rc*.d ->/etc/rc.d/rc*.d /etc/rc.local-> /etc/rc.d/rc.local /etc/rc.sysinit-> /etc/rc.d/rc.sysinit

      淺談 Linux 系統啟動過程

      也就是說,/etc 目錄下的 init.d、rc、rc*.d、rc.local 和 rc.sysinit 均是指向 /etc/rc.d 目錄下相應文件和文件夾的符號鏈接。

      執行用戶自定義引導程序 /etc/rc.d/rc.local。執行 /etc/rc.d/rc3.d/S99local 時,它就是在執行 /etc/rc.d/rc.local。S99local 是指向 rc.local 的符號鏈接。就是一般來說,自定義的程序不需要執行上面所說的繁瑣的建立 shell 增加鏈接文件的步驟,只需要將命令放在 rc.local 里面就可以了,這個 shell 腳本就是保留給用戶自定義啟動內容的。

      完成了系統所有的啟動任務后,Linux 會啟動終端或 X-Window· 來等待用戶登錄。tty1,tty2,tty3…這表示在運行等級1,2,3,4 的時候,都會執行 /sbin/mingetty,而且執行了 6 個,所以 Linux 會有 6 個純文本終端,mingetty 就是啟動終端的命令。

      除了這 6 個之外還會執行 /etc/X11/prefdm-nodaemon 這個主要啟動 X-Window

      至此,系統就啟動完畢了。

      Linux 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【跟唐老師學習云網絡】 - 第6篇 ARP你在哪
      下一篇:微軟低代碼開發平臺收費(免費的低代碼開發軟件)
      相關文章
      久久久无码精品亚洲日韩按摩| 国产成人高清亚洲| 亚洲午夜久久久久妓女影院| 另类专区另类专区亚洲| 老牛精品亚洲成av人片| 亚洲AV无码一区二区三区久久精品| 亚洲AV无码久久久久网站蜜桃 | 亚洲精品麻豆av| 亚洲AV无码专区日韩| 国产亚洲精品成人久久网站| 在线91精品亚洲网站精品成人| 亚洲大码熟女在线观看| 国产精品国产亚洲区艳妇糸列短篇| 亚洲精品一卡2卡3卡四卡乱码| 亚洲精品无码久久久久APP| 亚洲AV女人18毛片水真多| 婷婷亚洲综合一区二区| 亚洲成人影院在线观看| 亚洲裸男gv网站| 亚洲片国产一区一级在线观看| 中文字幕日韩亚洲| 亚洲一区二区三区AV无码| 国产亚洲精品国产| 亚洲伊人久久大香线蕉苏妲己| 亚洲电影唐人社一区二区| 亚洲国产精品综合一区在线| 国产亚洲国产bv网站在线| 亚洲人成色77777在线观看| 18禁亚洲深夜福利人口| 亚洲美女在线国产| 国产亚洲欧洲精品| 99ri精品国产亚洲| 亚洲av乱码一区二区三区香蕉| 国产亚洲精品成人AA片| 亚洲av日韩av永久无码电影| 亚洲欧洲精品成人久久奇米网 | 精品久久久久久亚洲精品| 亚洲乱码中文字幕在线| 亚洲äv永久无码精品天堂久久 | 亚洲精品美女久久久久久久| 日韩精品电影一区亚洲|