www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]Linux啟動過程剖析

Linux啟動過程的剖析能幫助那些想深入學習Linux用戶建立一個相關(guān)Linux啟動過程的清晰概念,進而可以進一步研究Linux接下來是如何工作的。

Linux啟動過程如下:當用戶打開PC的電源,BIOS開機自檢,按BIOS中設(shè)置的啟動設(shè)備(通常是硬盤)啟動,接著啟動設(shè)備上安裝的引導(dǎo)程序lilo或grub開始引導(dǎo)Linux,Linux首先進行內(nèi)核的引導(dǎo),接下來執(zhí)行init程序,init程序調(diào)用了rc.sysinit和rc等程序,rc.sysinit和rc當完成系統(tǒng)初始化和運行服務(wù)的任務(wù)后,返回init;init啟動了mingetty后,打開了終端供用戶登錄系統(tǒng),用戶登錄成功后進入了Shell,這樣就完成了從開機到登錄的整個啟動過程。如圖所示:

 

<center>

 

下面分步來介紹下linux的啟動過程

1、BIOS自檢

當你打開計算機電源,計算機會首先加載BIOS信息,BIOS信息是如此的重要,以至于計算機必須在最開始就找到它。這是因為BIOS中包含了CPU的相關(guān)信息、設(shè)備啟動順序信息、硬盤信息、內(nèi)存信息、時鐘信息、PnP特性等等。在此之后,計算機心里就有譜了,知道應(yīng)該去讀取哪個硬件設(shè)備了。

計算機在接通電源之后首先由BIOS進行自檢,即進行所謂的POST(Power ON Self Test),然后依據(jù)BIOS內(nèi)設(shè)置的引導(dǎo)順序從硬盤、軟盤或CDROM中讀入“引導(dǎo)塊”。 在 PC 中,引導(dǎo) Linux 是從 BIOS 中的地址 0xFFFF0 處開始的。BIOS 的第一個步驟是加電自檢(POST)。POST 的工作是對硬件進行檢測。BIOS 的第二個步驟是進行本地設(shè)備的枚舉和初始化。給定 BIOS 功能的不同用法之后,BIOS 由兩部分組成:POST 代碼和運行時服務(wù)。當 POST 完成之后,它被從內(nèi)存中清理了出來,但是 BIOS 運行時服務(wù)依然保留在內(nèi)存中,目標操作系統(tǒng)可以使用這些服務(wù)。

要引導(dǎo)一個操作系統(tǒng),BIOS 運行時會按照 CMOS 的設(shè)置定義的順序來搜索處于活動狀態(tài)并且可以引導(dǎo)的設(shè)備。引導(dǎo)設(shè)備可以是軟盤、CD-ROM、硬盤上的某個分區(qū)、網(wǎng)絡(luò)上的某個設(shè)備,甚至是 USB 閃存。通常,Linux 都是從硬盤上引導(dǎo)的,其中主引導(dǎo)記錄(MBR)中包含主引導(dǎo)加載程序。

眾所周知,硬盤上第0磁道第一個扇區(qū)被稱為MBR,也就是Master Boot Record,即主引導(dǎo)記錄,它的大小是512字節(jié),別看地方不大,可里面卻存放了預(yù)啟動信息、分區(qū)表信息。系統(tǒng)找到BIOS所指定的硬盤的MBR后,就會將其復(fù)制到0×7c00地址所在的物理內(nèi)存中。當 MBR 被加載到 RAM 中之后,BIOS 就會將控制權(quán)交給 MBR。其實被復(fù)制到物理內(nèi)存的內(nèi)容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。

提取MBR的信息

要看MBR的內(nèi)容,請使用下面的命令

#從/dev/sda上讀取前512個字節(jié)的內(nèi)容,并將其寫入mbr.bin文件中

root@farsight:/home/linux# dd if=/dev/sda f=mbr.bin bs=512 count=1

1+0 records in

1+0 records out

512 bytes (512 B) copied, 0.000798615 seconds, 641 kB/s

#以十六進制和ASCII碼格式打印這個二進制文件的內(nèi)容

root@farsight:/home/linux# od -xa mbr.bin

0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e

k H dle dle so P < nul 0 8 nul nul so X so @

0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006

{ > nul | ? nul ack 9 nul stx s $ j ! ack nul

0000040 be00 07be 0438 0b75 c683 8110 fefe 7507

nul > > bel 8 eot u vt etx F dle soh ~ ~ bel u

……

這個 dd 命令需要以 root 用戶的身份運行,它從 /dev/hda(第一個 IDE 盤) 上讀取前 512 個字節(jié)的內(nèi)容,并將其寫入 mbr.bin 文件中。od 命令會以十六進制和 ASCII 碼格式打印這個二進制文件的內(nèi)容。

2、啟動GRUB/LILO

Boot Loader 就是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核做好一切準備。

Boot Loader有若干種,其中Grub、Lilo和spfdisk是常見的Loader。

GRUB和LILO都是引導(dǎo)加載程序,它們會引導(dǎo)操作系統(tǒng)。當機器引導(dǎo)它的操作系統(tǒng)時,BIOS會讀取引導(dǎo)介質(zhì)上最前面的512字節(jié)(即MBR: master boot record)。在單一的 MBR 中只能存儲一個操作系統(tǒng)的引導(dǎo)記錄,所以當需要多個操作系統(tǒng)時就會出現(xiàn)問題。所以需要更靈活的引導(dǎo)加載程序。

GRUB 與 LILO 的比較

所有引導(dǎo)加載程序都以類似的方式工作,滿足共同的目的。不過,LILO 和 GRUB 之間有很多不同之處:

● LILO 沒有交互式命令界面,而 GRUB 擁有。

● LILO 不支持網(wǎng)絡(luò)引導(dǎo),而 GRUB 支持。

● LILO 將關(guān)于可以引導(dǎo)的操作系統(tǒng)位置的信息物理上存儲在 MBR 中。如果修改了 LILO 配置文件,必須將 LILO 第一階段引導(dǎo)加載程序重寫到 MBR。相對于 GRUB,這是一個更為危險的選擇,因為錯誤配置的 MBR 可能會讓系統(tǒng)無法引導(dǎo)。使用 GRUB,如果配置文件配置錯誤,則只是默認轉(zhuǎn)到 GRUB 命令行界面。

安全提示:

關(guān)于安全性,任何可以接觸到引導(dǎo)磁盤/CD 的人,只需要使用沒有設(shè)置安全性的 grub.conf 或 lilo.conf,就可以繞過本文中提及的所有安全措施。特別是使用 GRUB 時,因為能夠引導(dǎo)到單用戶模式,所以是一個嚴重的安全漏洞。解決此問題的一個簡單方法是在機器的 BIOS 中禁止通過 CD 和軟盤進行引導(dǎo),并確保為 BIOS 設(shè)置了一個口令,使得其他人不能修改這些設(shè)置。

我們以Grub為例來講解。系統(tǒng)讀取內(nèi)存中的grub配置信息(一般為menu.lst或grub.lst),并依照此配置信息來啟動不同的操作系統(tǒng)。

3、加載內(nèi)核

當內(nèi)核映像被加載到內(nèi)存后,內(nèi)核階段就開始了。 內(nèi)核映像并不是一個可執(zhí)行的內(nèi)核,而是一個壓縮過的內(nèi)核映像。通常它是一個zImage(壓縮映像,小于512KB)或bzImage(較大的壓縮映像,大于512KB),它是提前使用zlib進行壓縮的。在這個內(nèi)核映像前面是一個例程,它實現(xiàn)少量硬件設(shè)置,并對內(nèi)核映像中包含的內(nèi)核進行解壓,然后將其放入高端內(nèi)存中,如果有初始RAM磁盤映像,就會將它移動到內(nèi)存中,并標明以后使用。然后此例程會調(diào)用內(nèi)核,并開始啟動內(nèi)核引導(dǎo)的過程。

在GRUB命令中,我們可以使用initrd映像引導(dǎo)一個特定的內(nèi)核,方法如下:

grub> kernel /bzImage-2.6.14.2

[Linux-bzImage, setup=0x1400, size=0x29672e]

grub>initrd /initrd-2.6.14.2.img

[Linux-initrd @ 0x5f13000, 0xcc199 bytes]

grub> boot

UncomprESSing Linux... Ok, booting the kernel.

根據(jù)grub設(shè)定的內(nèi)核映像所在路徑,系統(tǒng)讀取內(nèi)存映像,并進行解壓縮操作。此時,屏幕一般會輸出“Uncompressing Linux”的提示。當解壓縮內(nèi)核完成后,屏幕輸出“OK, booting the kernel”。 如果不知道要引導(dǎo)的內(nèi)核的名稱,只需使用/然后按下Tab鍵,就會顯示內(nèi)核和initrd映像列表。

系統(tǒng)將解壓后的內(nèi)核放置在內(nèi)存之中,并調(diào)用start_kernel()函數(shù)來啟動一系列的初始化函數(shù)并初始化各種設(shè)備,完成Linux核心環(huán)境的建立。至此,Linux內(nèi)核已經(jīng)建立起來了,基于Linux的程序應(yīng)該可以正常運行了。

4、執(zhí)行init進程

init進程是所有進程的起點,內(nèi)核在完成內(nèi)核引導(dǎo)后,即在本線程(進程)空間內(nèi)加載init程序,它的進程號為1。init進程是所有進程的發(fā)起者和控制者。因為在任何基于Unix的系統(tǒng)(比如Linux)中,它都是第一個運行的進程,所以init進程的編號(Process ID,PID)永遠是1。如果init出現(xiàn)了問題,系統(tǒng)的其余部分也就隨之而垮掉了。

init進程有兩個作用:

● 扮演終結(jié)父進程的角色:所有的孤兒進程都會被init進程接管??焖賵?zhí)行一下ps -af 命令,可以列出許多父進程ID(Parent Process ID,PPID)為1的進程來。

● 進入某個特定的運行級別時運行相應(yīng)的程序,以此對各種運行級別進行管理,這個作用由/etc/inittab文件定義的。 內(nèi)核被加載后,第一個運行的程序便是/sbin/init,該文件會讀取/etc/inittab文件,并依據(jù)此文件來進行初始化工作。

5、通過/etc/inittab文件進行初始化

init進程的工作是根據(jù)/etc/inittab來執(zhí)行相應(yīng)的腳本進行系統(tǒng)初始化,如設(shè)置鍵盤、字體,裝載模塊,設(shè)置網(wǎng)絡(luò)等。其最主要的作用就是設(shè)定Linux的運行等級,其設(shè)定形式是“:id:5:initdefault:”,這就表明Linux需要運行在等級5上。Linux的運行等級設(shè)定如下:

0:關(guān)機

1:單用戶模式

2:無網(wǎng)絡(luò)支持的多用戶模式

3:有網(wǎng)絡(luò)支持的多用戶模式

4:保留,未使用

5:有網(wǎng)絡(luò)支持有X-Window支持的多用戶模式

6:重新引導(dǎo)系統(tǒng),即重啟

對于RedHat來說,按以下順序執(zhí)行:

a、執(zhí)行/etc/rc.d/rc.sysinit(由init執(zhí)行的第一個腳本)

在設(shè)定了運行等級后,Linux系統(tǒng)執(zhí)行的第一個用戶層文件就是/etc/rc.d/rc.sysinit腳本程序,它做的工作非常多,包括設(shè)定PATH、設(shè)定網(wǎng)絡(luò)配置(/etc/sysconfig/network)、啟動swap分區(qū)、設(shè)定/proc、把root文件系統(tǒng)輸入到mtab、使用系統(tǒng)為裝入模塊做準備、查找模塊的相關(guān)文件、檢查文件系統(tǒng),以進行必要的修復(fù)、加載所有其他文件系統(tǒng)、清除幾個/etc文件,如/etc/mtab、/etc/fastboot和/etc/nologin、刪除UUCP的lock文件、刪除過時的子系統(tǒng)文件、刪除過時的pid文件、設(shè)置系統(tǒng)時鐘、打開交換、初始化串行端口、裝入模塊等等。如果你有興趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的腳本夠你看幾天的。

b、執(zhí)行/etc/rc.d/rcX.d[KS]

首先終止K開頭的服務(wù)(用來關(guān)閉一個服務(wù)),然后啟動S開頭的服務(wù)(用來啟動一個服務(wù));對每一個運行級別來說,在/etc/rc.d子目錄中都有一個對應(yīng)的下級目錄。這些運行級別的下級子目錄的命名方法上rcX.d, 其中X就是代表運行級別的數(shù)字。在各個運行級別的子目錄中,都建立有到/etc/rc.d/init.d子目錄中命令腳本程序的符號鏈接。鏈接的名稱在K與S后有一個數(shù)字,表示執(zhí)行順序,數(shù)字小的先執(zhí)行如K01tog-pegasus 、 S00microcode_ctl。對以K開頭的腳本執(zhí)行時系統(tǒng)會傳遞stop參數(shù),而S開頭的腳本系統(tǒng)會傳遞start參數(shù)。

c、執(zhí)行/etc/rc.d/rc.local

Redhat中運行模式2,3,5都把/etc/rc.d/rc.local作為初始化腳本中的最后一個文件,所以用戶可以自己在這個文件中添加一些需要在其他初始化工作之后,登陸之前執(zhí)行的命令。

你如果打開了此文件,里面有一句話,讀過之后,你就會對此命令的作用一目了然:

# This script. will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don’t want to do the full Sys V style. init stuff.

rc.local就是在一切初始化工作后,Linux留給用戶進行個性化的地方。你可以把你想設(shè)置和啟動的東西放到這里。

6、執(zhí)行/bin/login

login程序會提示使用者需輸入帳號與密碼,接著編碼并確認密碼的正確性,若二者相合,則為使用者進行初始化環(huán)境,并將控制權(quán)交給shell,即用戶登錄。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉