導航:首頁 > 操作系統 > linux開機過程

linux開機過程

發布時間:2022-06-30 10:01:51

linux系統從開機到登陸界面的啟動過程是什麼樣的

黑馬程序員提醒您過程如下:
⑴開機BIOS自檢,載入硬碟。
⑵讀取MBR,MBR引導。
⑶grub引導菜單(Boot Loader)。
⑷載入內核kernel。
⑸啟動init進程,依據inittab文件設定運行級別
⑹init進程,執行rc.sysinit文件。
⑺啟動內核模塊,執行不同級別的腳本程序。
⑻執行/etc/rc.d/rc.local
⑼啟動mingetty,進入系統登陸界面。

❷ 嵌入式linux系統的啟動流程是什麼樣的

1)
初始化
RAM
因為
Linux
內核一般都會在
RAM
中運行,所以在調用
Linux
內核之前
Bootloader
必須設置和初始化
RAM,為調用
Linux內核
做好准備。初始化
RAM
的任務包括設置
CPU
的控制寄存器參數,以便能正常使用
RAM
以及檢測RAM
大小等。
2)
初始化串口埠

Linux
的啟動過程中有著非常重要的作用,它是
Linux內核和用戶交互的方式之一。Linux
在啟動過程中可以將信息通過串口輸出,這樣便可清楚的了解
Linux
的啟動過程。雖然它並不是
Bootloader
必須要完成的工作,但是通過串口輸出信息是調試
Bootloader
和Linux
內核的強有力的工具,所以一般的
Bootloader
都會在執行過程中初始化一個串口作為調試埠。
3)
檢測
處理器類型
Bootloader在調用
Linux內核前必須檢測系統的處理器類型,並將其保存到某個常量中提供給
Linux
內核。Linux
內核在啟動過程中會根據該處理器類型調用相應的初始化程序。
4)
設置
Linux啟動參數
Bootloader在執行過程中必須設置和初始化
Linux
的內核啟動參數。
5)
調用
Linux內核映像
Bootloader完成的最後一項工作便是調用
Linux內核。如果
Linux
內核存放在
Flash
中,並且可直接在上面運行(這里的
Flash

Nor
Flash),那麼可直接跳轉到內核中去執行。但由於在
Flash
中執行代碼會有種種限制,而且速度也遠不及
RAM
快,所以一般的
嵌入式系統
都是將
Linux內核拷貝到
RAM
中,然後跳轉到
RAM
中去執行。

❸ 簡述Linux系統的啟動過程

BIOS -> GRUB stage1 -> GRUB stage 2 -> GRUB load kernel & inited image(如果有)-> run Kernel -> run initrd image init script(如果 initrd 裡面有) -> mount / partition -> run init script in / partition -> init system base server/config -> run inittab/rc script -> start services -> 啟動字元控制台登錄 (如果設置了圖形啟動那麼繼續) -> start X server -> start X登錄管理器

❹ LINUX操作系統的啟動過程

一、啟動內核
首先介紹啟動內核部分。電腦啟動時,BIOS裝載MBR,然後從當前活動分區啟動,LILO獲得引
導過程的控制權後,會顯示LILO提示符。此時如果用戶不進行任何操作,LILO將在等待制定
時間後自動引導默認的操作系統,而如果在此期間按下TAB鍵,則可以看到一個可引導的操作
系統列表,選擇相應的操作系統名稱就能進入相應的操作系統。
當用戶選擇啟動LINUX操作系統時,LILO就會根據事先設置好的信息從ROOT文件系統所在的分
區讀取LINUX映象,然後裝入內核映象並將控制權交給LINUX內核。LINUX內核獲得控制權後,
以如下步驟繼續引導系統:
1. LINUX內核一般是壓縮保存的,因此,它首先要進行自身的解壓縮。內核映象前面的一些
代碼完成解壓縮。
2. 如果系統中安裝有可支持特殊文本模式的、且LINUX可識別的SVGA卡,LINUX會提示用戶
選擇適當的文本顯示模式。但如果在內核的編譯過程中預先設置了文本模式,則不會提示選
擇顯示模式。該顯示模式可通過LILO或RDEV工具程序設置。
3. 內核接下來檢測其他的硬體設備,例如硬碟、軟盤和網卡等,並對相應的設備驅動程序
進行配置。這時,顯示器上出現內核運行輸出的一些硬體信息。
4. 接下來,內核裝載ROOT文件系統。ROOT文件系統的位置可在編譯內核時指定,也可通過
LILO或RDEV指定。文件系統的類型可自動檢測。如果由於某些原因裝載失敗,則內核啟動
失敗,最終會終止系統。

二、執行init程序
其次介紹init程序,利用init程序可以方便地定製啟動其間裝入哪些程序。init的任務是
啟動新進程和退出時重新啟動其它進程。例如,在大多數Linux系統中,啟動時最初裝入
六個虛擬的控制台進程,退出控制台窗口時,進程死亡,然後init啟動新的虛擬登錄控制台,
因而總是提供六個虛擬登陸控控制台進程。
控制init程序操作的規則存放在文件/etc/inittab中。Red Hat Linux預設的inittab文
件如下:
#
#inittab This file describes how the INIT process should set up the system in a certain
#run-level.
#
#
#Default runlevel.The runlevels used by RHS are:
#0-halt(Do NOT set initdefault to this)
#1-Single user mode
#2-Multiuser,without NFS(the same as 3,if you do not have networking)
#3-Full multiuser mode
#4-unused
#5-X11
#6-reboot(Do NOT set initdefault to this)
#
id:3:initdefault:

#system initialization
si::sysinit:/etc/rc.d/rc.sysinit
10:0:wait:/etc/rc.d/rc 0
11:1:wait:/etc/rc.d/rc 1
12:2:wait:/etc/rc.d/rc 2
13:3:wait:/etc/rc.d/rc 3
14:4:wait:/etc/rc.d/rc 4
15:5:wait:/etc/rc.d/rc 5
16:6:wait:/etc/rc.d/rc 6
#Things to run in every runlevel
ud:once:/sbin/update

#Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

#When our UPS tells us power has failed,assume we have a few minutes of
power left.Schele a
#shutdown for 2 minutes from now.
#This does,of course,assume you have powered installed and your UPS
connected and working
#correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Restored;Shutdown Cancelled"

#Run gettys in standard runlevels
1:12345:respawn:/sbin/minggetty tty1
2:2345:respawn:/sbin/minggetty tty2
3:2345:respawn:/sbin/minggetty tty3
4:2345:respawn:/sbin/minggetty tty4
5:2345:respawn:/sbin/minggetty tty5
6:2345:respawn:/sbin/minggetty tty6
#Run xdm in runlevel 5

x:5:respawn:/usr/bin/X11/xdm -nodaemon
Linux有個運行級系統,運行級是表示系統當前狀態和init應運行哪個進程並保持在這種
系統狀態中運行的數字。在inittab文件中,第一個項目指定啟動時裝入的預設運行級。
上例中是個多用戶控制台方式,運行級為3。然後,inittab文件中每個項目指定第二個
欄位的項目用哪種運行級(每個欄位用冒號分開)。因此,對運行級3,下列行是相關的:
13:3:wait:/etc/rc.d/rc 3
1:12345:respawn:/sbin/minggetty tty1
2:2345:respawn:/sbin/minggetty tty2
3:2345:respawn:/sbin/minggetty tty3
4:2345:respawn:/sbin/minggetty tty4
5:2345:respawn:/sbin/minggetty tty5
6:2345:respawn:/sbin/minggetty tty6
最後六行建立Linux提供的六個虛擬控制台。第一行運行啟動腳本/etc/rc.d/ rc 3;
這將運行目錄/etc/
rc.d/rc3.d中包含的所有腳本,這些腳本表示系統初始化時要啟動的程序。一般來說,
這些腳本不需要編輯或改變,是系統預設的。

❺ linux操作系統的詳細啟動過程有哪些

當用戶打開PC的電源,BIOS開機自檢,按BIOS中設置的啟動設備(通常是硬碟)啟動,
接著啟動設備上安裝的引導程序lilo或grub開始引導Linux,Linux首先進行內核的引導,
接下來執行init程序,init程序調用了rc.sysinit和rc等程序,rc.sysinit和rc當完成系
統初始化和運行服務的任務後,返回init;init啟動了mingetty後,打開了終端供用戶登
錄系統,用戶登錄成功後進入了Shell,這樣就完成了從開機到登錄的整個啟動過程。

載入內核

LILO啟動之後,如果你選擇了Linux作為准備引導的操作系統,第一個被載入的東西就是內核。請記住此時的計算機內存中還不存在任何操作系統, PC(因為它們天然的設計缺陷)也還沒有辦法存取機器上全部的內存。因此,內核就必須完整地載入到可用RAM的第一個兆位元組之內。為了實現這個目的,內核是被壓縮了的。這個文件的頭部包含著必要的代碼,先設置CPU進入安全模式(以此解除內存限制),再對內核的剩餘部分進行解壓縮。

執行內核

內核在內存中解壓縮之後,就可以開始運行了。此時的內核只知道它本身內建的各種功能,也就是說被編譯為模塊的內核部分還不能使用。最基本的是,內核必須有足夠的代碼設置自己的虛擬內存子系統和根文件系統(通常就是ext2文件系統)。一旦內核啟動運行,對硬體的檢測就會決定需要對哪些設備驅動程序進行初始化。從這里開始,內核就能夠掛裝根文件系統(這個過程類似於Windows識別並存取C盤的過程)。內核掛裝了根文件系統之後,將啟動並運行一個叫做 init的程序。

注意:在這里我們故意略去了Linux內核啟動的許多細節,這些細節只有內核開發人員才感興趣。如果你好奇的話,可以訪問http://www.redhat.com:8080地址處的 「Kernel Hackers Guide」。

init進程

init進程是非內核進程中第一個被啟動運行的,因此它的進程編號PID的值總是1。init讀它的配置文件/etc/inittab,決定需要啟動的運行級別(Runlevel)。從根本上說,運行級別規定了整個系統的行為,每個級別(分別由0到6的整數表示)滿足特定的目的。如果定義了 initdefault級別,這個值就直接被選中,否則需要由用戶輸入一個代表運行級別的數值。

輸入代表運行級別的數字之後,init根據/etc/inittab文件中的定義執行一個命令腳本程序。預設的運行級別取決於安裝階段對登錄程序的選擇:是使用基於文本的,還是使用基於X-Window的登錄程序。

rc命令腳本程序

我們已經知道,當運行級別發生改變時,將由/etc/inittab文件定義需要運行哪一個命令腳本程序。這些命令腳本程序負責啟動或者停止該運行級別特定的各種服務。由於需要管理的服務數量很多,因此需要使用rc命令腳本程序。其中,最主要的一個是/etc/rc.d/rc,它負責為每一個運行級別按照正確的順序調用相應的命令腳本程序。我們可以想像,這樣一個命令腳本程序很容易變得難以控制!為了防止這類事件的發生,需要使用精心設計的方案。

對每一個運行級別來說,在/etc/rc.d子目錄中都有一個對應的下級目錄。這些運行級別的下級子目錄的命名方法是rcX.d,其中的X就是代表運行級別的數字。比如說,運行級別3的全部命令腳本程序都保存在/etc/rc.d/rc3.d子目錄中。

在各個運行級別的子目錄中,都建立有到/etc/rc.d/init.d子目錄中命令腳本程序的符號鏈接,但是,這些符號鏈接並不使用命令腳本程序在 /etc/rc.d/init.d子目錄中原來的名字。如果命令腳本程序是用來啟動一個服務的,其符號鏈接的名字就以字母S打頭;如果命令腳本程序是用來關閉一個服務的,其符號鏈接的名字就以字母K打頭。

許多情況下,這些命令腳本程序的執行順序都很重要。如果沒有先配置網路介面,就沒有辦法使用DNS服務解析主機名!為了安排它們的執行順序,在字母S 或者K的後面緊跟著一個兩位數字,數值小的在數值大的前面執行。比如:/etc/rc.d/rc3.d/S50inet就會在 /etc/rc.d/rc3.d/S55named之前執行(S50inet配置網路設置,S55named啟動DNS伺服器)。

存放在/etc/rc.d/init.d子目錄中的、被符號鏈接上的命令腳本程序是真正的實幹家,是它們完成了啟動或者停止各種服務的操作過程。當 /etc/rc.d/rc運行通過每個特定的運行級別子目錄的時候,它會根據數字的順序依次調用各個命令腳本程序執行。它先運行以字母K打頭的命令腳本程序,然後再運行以字母S打頭的命令腳本程序。對以字母K打頭的命令腳本程序來說,會傳遞Stop參數;類似地對以字母S打頭的命令腳本程序來說,會傳遞 Start參數。

編寫自己的rc命令腳本

在維護Linux系統運轉的日子裡,肯定會遇到需要系統管理員對開機或者關機命令腳本進行修改的情況。有兩種方法可以用來實現修改的目的:

● 如果所做的修改只在引導開機的時候起作用,並且改動不大的話,可以考慮簡單地編輯一下/etc/rc.d/rc.local腳本。這個命令腳本程序是在引導過程的最後一步被執行的。

● 如果所做的修改比較細致,或者還要求關閉進程使之明確地停止運行,則需要在/etc/rc.d/init.d子目錄中添加一個命令腳本程序。這個命令腳本程序必須可以接受Start和Stop參數並完成相應的操作。

第一種方法,編輯/etc/rc.d/rc.local腳本,當然是兩種方法中比較簡單的。如果想在這個命令腳本程序中添加內容,只需要使用喜歡的編輯器程序打開它,再把打算執行的命令附加到文件的末尾就可以了。這對一兩行的修改來說的確很便利。

如果確實需要使用一個命令腳本程序,這時必須選擇第二個方法。編寫一個rc命令腳本程序的過程並不像想像中那麼困難。我們下面就給出一個例子,看看它是怎樣實現的(順便說一句,你可以把我們的例子當作範本,按照自己的需要進行修改和添加)。

假設你打算每隔60分鍾調用一個特殊的程序來彈出一條消息,提醒自己需要從鍵盤前面離開休息一會兒,命令腳本程序將包括下面幾個部分:

● 關於這個命令腳本程序功能的說明(這樣就不會在一年之後忘記它);

● 在試圖運行它之前驗證這個命令腳本程序確實存在;

● 接受start和stop參數並執行要求的動作。

參數給定後,我們就可以編寫命令的腳本程序。這個程序很簡單,大家可以自己編寫一下,我在這里就不給出了。

編寫好新的命令腳本程序之後,再從相關的運行級別子目錄中加上必要的符號鏈接,來控制這個命令腳本程序的啟動或者停止。在我的印象中,只想讓它在運行級別3或者運行級別5中啟動,原因是我認為只有這兩個運行級別才是日常工作的地方。最後,希望這個命令腳本程序在進入運行級別6(重啟動)的時候被關閉。

激活或者禁止服務項目

有的時候會發現,在引導的時候並不需要某個特定的服務被啟動。如果你正在考慮使用Linux替換Windows NT的文件和列印伺服器,就更是如此。

我們已經知道,在特定的運行級別子目錄中給符號鏈接改個名稱,就可以讓該服務不被啟動,如把其名稱的第一個字母由S改為K。一旦熟練掌握了命令行和符號鏈接,就會發現這是激活或者禁止服務的最快辦法。

在學習這個改名方法的時候,可能會覺得圖形化的操作界面ksysv比較容易掌握。雖然它原來是設計使用在KDE環境里的,但在 Red Hat Linux 7.2下預設安裝的GNOME環境里也運行得很好。如果想啟動它,只需簡單地打開一個xterm窗口,並輸入ksysv命令就可以了。屏幕上會出現一個窗口,其中列出了能夠修改的全部參數,需要時還包括在線幫助。

警告:如果是在一個現實中的系統上學習本文的知識,要多多運用常識。當試著對啟動腳本程序進行修改的時候,要記住所做的修改可能會造成你的系統不能正常工作,而且無法採用重啟動的方法恢復。不要在正常運轉的系統上實驗新的設置,對你准備修改的文件要全部進行備份。最重要的是,在手邊要准備一張引導盤以防不測

❻ linux 開機

總結一下,linux的開機整個流程。

· 1: 啟動電源後,主機第一步先做的就是查詢BIOS(全稱:basic input/output system 基本輸入輸出系統)信息。了解整個系統的硬體狀態,如CPU,內存,顯卡,網卡等。嗯,這一步windows算和它是一家。不分彼此。

· 2: 接下來,就是主機讀取MBR(硬碟的第一個扇區)里的boot loader了。這個可是重點哦,據說troubleshooting里就會考這點,給個壞了的loader,叫你修正。windows不支持linux的分區格式。所以,用windows的boot。ini是查不到linux的系統的。一般我裝系統都是先裝windows再裝linux,然後用grub來做boot loader。兩個字:省心!因為linux不像windows那麼小氣。grub可是支持windows分區格式的哦。

· 3: 接上一步,主機讀取boot loader後,會讀取裡面的信息,知道誰跟誰是待在哪,假如主機想進入linux系統,讀取到linux核心是在/boot文件目錄中後,將此核心載入到內存中。開始了接下來的分析啟動之旅。

· 4: OK,第一個運行程序是誰?就是/sbin/init程序。不信,就用top程序看下,是不是PID為1的就是這個東東,它,可是萬物之祖啊,我簡稱它是女媧娘娘(不喜歡亞當夏娃)。

· 5: init首先查找啟動等級(run-level)。因為啟動等級不同,其運行腳本(也就是服務)會不同。默認的等級有以下幾項:

0 - halt (系統直接關機)

1 - single user mode (單人模式,用於系統維護時使用)

2 - Multi-user, without NFS (類似3模式,不過少了NFS服務)

3 - Full multi-user mode (完整模式,不過,是文本模式)

4 - unused (系統保留功能)

5 - X11 (與3模式類似,不過,是X終端顯示)

6 - reboot (重新開機)

(不要選擇0或4,6 否則,進步了系統的)

· 6: OK。系統知道自己的啟動等級後,接下來,不是去啟動服務,而是,先設置好主機運行環境。讀取的文件是/etc/rc。d/rc。sysinit文件。那究竟要設置哪些環境呢?

· 設置網路環境/etc/sysconfig/network,如主機名,網關,IP,DNS等。

· 掛載/proc。此文件是個特殊文件,大小為0,因為它是在內存當中。裡面東東最好別刪。

· 根據內核在開機時的結果/proc/sys/kernel/modprobe。開始進行周邊設備的偵測。

· 載入用戶自定義的模塊/etc/sysconfig/moles/*。moles

· 讀取/etc/sysctl。conf文件對內核進行設定。

· 設定時間,終端字體,硬碟LVM或RAID功能,以fsck進行磁碟檢測。

· 將開機狀況記錄到/var/log/dmesg中。(可以用命令dmesg查看結果)

· 7: OK,接下來,就是啟動系統服務了,不同的run-level會有不同的服務啟動。到/etc/rc。d目錄中,不同的level會有不同的目錄。如啟動3模式,會有個rc3。d目錄,裡面就保存著服務。其中,S(start)開頭的表明開機啟動,K(kill)開頭的表明開機不啟動。數字表示啟動順序。數字越小,啟動越早。

注意,他們都是連接到etc/rc。d/init。d/目錄中的相關文件。所以,想手工啟動某一服務,可以用"/etc/rc。d/init。d/某個服務 start"啟動哦。相反,我們也可以把某個服務ln(鏈接命令)到不同run-level的目錄中。記得打上S或者K+數字哦。

· 8: 讀取服務後,主機會讀取/etc/rc。d/rc。local文件。所以,如果需要什麼開機啟動的話,可以寫個腳本或命令到這裡面來。就不用像上面那麼麻煩。以後刪除也方便。

OK,經過一番長途跋涉後,系統終於可以安心的開啟shell了。把控制權交到我們手上了。我們可以為所欲為了。最好,養成好習慣,平時不要用root用戶登陸。上次我就一不小心錯輸了poweroff。那可是網關伺服器啊。全公司人都上不了網啊。還好跟他們已經熱乎了。只是狂K了我一頓而已。

❼ Linux系統開機過程中卡住,無法開機

重裝系統然後就可以進行正常開機了,說明是裡面的系統出現故障了。

❽ 簡述linux系統的啟動過程

這個簡直他的一些技能過程,這個世界把它看完,這個要是他會針對下去內部流程障礙能夠用三分鍾跑了。

閱讀全文

與linux開機過程相關的資料

熱點內容
java棧的元素 瀏覽:737
程序員與籃球事件 瀏覽:673
app反編譯不完整 瀏覽:788
電腦上的文件夾怎麼調整 瀏覽:5
伺服器無響應是什麼原因呀 瀏覽:984
wd文檔里的app怎麼製作 瀏覽:513
電腦里的文件夾沒有了一般能恢復嗎 瀏覽:418
哪裡有配加密鑰匙的 瀏覽:210
伺服器開不了機怎麼把數據弄出來 瀏覽:958
gif動態圖片怎麼壓縮 瀏覽:521
黑猴子棒球壓縮文件解壓密碼 瀏覽:631
如何讓app適應不同的手機屏幕大小 瀏覽:10
蘋果手機如何給安卓手機分享軟體 瀏覽:761
蘋果電腦怎麼運行騰訊雲伺服器 瀏覽:59
明日之後沙石堡命令助手 瀏覽:261
蛋糕店用什麼樣的app 瀏覽:877
長安銀行信用卡app怎麼取現 瀏覽:635
dos命令cmd命令的 瀏覽:226
阿里雲存檔視頻文件的伺服器 瀏覽:194
ftp修改文件許可權命令 瀏覽:491