日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 开机启动文件夹,Linux开机启动流程

發布時間:2025/3/15 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 开机启动文件夹,Linux开机启动流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux開機啟動詳細流程圖:

一、BIOS 加電自檢

當你按電源開關開機時,電腦會首先去啟動BIOS(基本輸入輸出系統),BIOS一般是集成在主板上的.

BIOS 的工作

1.檢測連接硬件,比如顯卡,內存,磁盤等等,檢測的目的是以后把這些設備信息提供給操作系統

2.尋找啟動磁盤,每一種BIOS都會有開機啟動菜單,可以在菜單里設置以哪個設備啟動系統

比如:光驅,硬盤,網絡等等,這個菜單可以設置多個選項,依照設置次序在設備上尋找啟動信息

3.找到了啟動硬盤,接著BIOS就會在磁盤上找啟動扇區,找到內核啟動系統.

1)先試著尋找第一個扇區,也就是主引導記錄MBR(Master Boot Record)

2)如果第一個扇區上沒有沒有存在操作系統,再去尋找標記為BOOT的分區.

不論是MBR還是BOOT分區,存儲操作系統的空間都只有446字節;

如果沒有在上面提到的位置找到操作系統的內核,那么BIOS就無法繼續啟動工作.

而我們的內核往往會大于446個字節,存放在磁盤的其他位置上,既然446裝不下內核,又為了能順利的找到放在其他位置上的內核,

人們想出了一個辦法就在446字節里寫了一個小程序,當BIOS試著啟動操作系統時就會執行這個小程序,然后再由小程序來載入其他位置的內核.這個小程序就是啟動載入器(boot loader)

二、BOOT Loader

linux的boot loader(上文提到的小程序) 常見的有兩種:lilo grub

因為lilo存在著一個1024柱面的限制,并且更改了磁盤上的啟動信息文件后需要重新啟動系統才能同步446字節的內容,因為lilo的缺陷,已經被grub所取代.現在的絕大多數類linux系統都采用grub做boot loader;

grub則沒有了lilo各種限制,而且方便到能修改系統文件的啟動內容就可以立刻與446內容同步.

那么我們就看看grub的內容 它存在于 /boot/grub中

GRUB有幾個重要的文件,STAGE1、STAGE1.5、STAGE2

STAGE1:它只有512字節,通常放在MBR中,它的作用很簡單,就是在系統啟動時用于裝載STAGE2并將控制權交給它。

STAGE2:GRUB的核心,所有的功能都是由它實現。

STAGE1.5:介于STAGE1和STAGE2之間,是它們的橋梁,因為STAGE2較大,通常都是放在一個文件系統當中的,但是STAGE1并不能識別文件系統格式,

所以才需要STAGE1.5來引導位于某個文件系統當中的STAGE2。根據文件系統格式的不同,STAGE1.5也需要相應的文件,如:e2fs_stage1_5,fat_stage1_5,分別用于識別ext和fat的文件系統格式。它存放于1-63的柱面之間.

引導順序如下:STAGE1->;STAGE1.5->;STAGE2,

主要的配置文件時 grub.conf

里面選項含義:

title:一個操作系統引動的標頭,可以使多個

root :指明所需文件存在于哪個磁盤哪個分區上 (hd0,0)表示第一個硬盤,第一個分區,可參考/boot/grub/device.map

kernel:內核文件的名字,并且會有一些加載內核時的參數 or代表以只讀方式加載

initrd:包含一些附加的驅動程序

三、內核啟動

內核啟動后會向bios查詢電腦的所有硬件信息,然后自己接手下來管理這些設備,以便提供給linux使用

內核會試著驅動這些設備,這些設備的驅動一部分包含在內核中,叫做靜態驅動,一部分以模塊的方式(動態)存放文件系統中,由

于此時還未掛載任何文件系統,因此還不能使用文件系統中的模塊,這里只能驅動在內核中存在的硬件驅動程序的對應設備.想驅動內核中未包含的硬件驅動就需要加載文件系統.

內核會嘗試掛載根文件系統,根文件系統至少包含 /etc /bin /sbin /lib /dev 這5大目錄

他們5個缺一不可.都會導致系統無法啟動

根文件系統掛載是以只讀方式掛載的,因為這時linux還在啟動階段,并不穩定,避免破壞系統資料

四、啟動INIT服務

順利的掛載了根文件系統后,就會啟動init服務

內核會按 /sbin/init /etc/init /bin/init 順序尋找init程序,

如果找不到則內核報錯 這里存在一個參數 init=/bin/sh 如果啟動時指定了則最后執行/bin/sh

而不會產生內核報錯.也被稱為快速啟動,因為它忽略了很多啟動初始化工作.

啟動init的目的就是為了初始化系統環境,啟動了init就證明了內核已經順利啟動,接下來就由init服務來建立linux使用環境

init做了什么?它會讀取 /etc/inittab 文件,根據這個文件的信息來進行初始化工作.

會執行三個腳本 /etc/rc.d/rc.sysinit /etc/rc.d/rc /etc/rc.d/rc.local

rc.sysinit 主要的功能用來建立系統的基本環境

啟動udev selinux子系統

udev負責產生 /dev中的文件,selinux負責增強系統的安全性

設定核心參數 sysctl -p 加載 /etc/sysctl.conf

設定系統時間 將硬件時間設定為系統時間

加載鍵盤和交換分區 swapon -a -e

設置主機名,掛載文件系統,并將根重新掛載為可讀寫的.

加載動態驅動模塊

USB設備與RAID & LVM

卸載 /initrd/ 目錄

rc 腳本設置啟動級別 linux中有許多不同的啟動級別,不同的啟動級別會制定不同的服務

根據指定rc的參數會對應執行 /etc/rc.d/rc[0-6].d/ 中的連接腳本文件 以S開頭的則啟動

rc.local 前兩個腳本都是系統至關重要的腳本,如果我們想在啟動過程中放置一些其他程序

應該使用rc.local腳本中 因為S99local存在于rc[2-5].d中

三個RC腳本執行完畢后,就會建立虛擬主控制臺 執行 /bin/login 就提供了用戶登陸界面了

如果是圖形 L5級別的話,會啟動X window登錄界面

所有的啟動就都已經完畢

用戶環境初始化

輸入用戶名和密碼系統驗證,然后會執行

/etc/profile

/etc/profile.d/*.sh $HOME/.bash_profile

/etc/bashrc

$HOME/.bashrc

啟動級別

0 關機

1 單用戶

2 多用戶模式但帶網絡但不能遠程登錄

3 不受限多用戶模式 TUI

4 保留

5 圖形模式

6 重新啟動

查看啟動級別

*# runlevel**

N 3

N是上次的級別,3是當前級別 也就是說機器開機就是3級別

切換級別

init 5

掛載文件系統

/etc/fstab

第一項 是要mount的存儲裝置的實體位置或者用卷標

第二項 要掛到哪個目錄位置

第三項 指定要掛載的系統格式

第四項 mount時要設定的狀態,只讀或defauls

第五項 提供DUMP功能,在系統DUMP時需要BACKUP的標志位,其內定位置是 0

第六項 設定開機時文件系統是否要check

除了root的文件系統其必要的check為1 其他視需要而定 默認是0

LABEL=/boot /boot ext3 defaults 1 2

用戶登錄

開機啟動程序加載完畢以后,就要讓用戶登錄了。

一般來說,用戶的登錄方式有三種:

(1)命令行登錄

(2)ssh登錄

(3)圖形界面登錄

這三種情況,都有自己的方式對用戶進行認證。

(1)命令行登錄:init進程調用getty程序(意為get teletype),讓用戶輸入用戶名和密碼。輸入完成后,再調用login程序,核對密碼(Debian還會再多運行一個身份核對程序/etc/pam.d/login)。如果密碼正確,就從文件 /etc/passwd 讀取該用戶指定的shell,然后啟動這個shell。

(2)ssh登錄:這時系統調用sshd程序(Debian還會再運行/etc/pam.d/ssh ),取代getty和login,然后啟動shell。

(3)圖形界面登錄:init進程調用顯示管理器,Gnome圖形界面對應的顯示管理器為gdm(GNOME Display Manager),然后用戶輸入用戶名和密碼。如果密碼正確,就讀取/etc/gdm3/Xsession,啟動用戶的會話。

進入login shell

所謂shell,簡單說就是命令行界面,讓用戶可以直接與操作系統對話。用戶登錄時打開的shell,就叫做login shell。

Debian默認的shell是Bash,它會讀入一系列的配置文件。上一步的三種情況,在這一步的處理,也存在差異。

(1)命令行登錄:首先讀入 /etc/profile,這是對所有用戶都有效的配置;然后依次尋找下面三個文件,這是針對當前用戶的配置。

~/.bash_profile

~/.bash_login

~/.profile

需要注意的是,這三個文件只要有一個存在,就不再讀入后面的文件了。比如,要是 ~/.bash_profile 存在,就不會再讀入后面兩個文件了。

(2)ssh登錄:與第一種情況完全相同。

(3)圖形界面登錄:只加載 /etc/profile 和 ~/.profile。也就是說,~/.bash_profile 不管有沒有,都不會運行。

打開non-login shell

老實說,上一步完成以后,Linux的啟動過程就算結束了,用戶已經可以看到命令行提示符或者圖形界面了。但是,為了內容的完整,必須再介紹一下這一步。

用戶進入操作系統以后,常常會再手動開啟一個shell。這個shell就叫做 non-login shell,意思是它不同于登錄時出現的那個shell,不讀取/etc/profile和.profile等配置文件。

non-login shell的重要性,不僅在于它是用戶最常接觸的那個shell,還在于它會讀入用戶自己的bash配置文件 ~/.bashrc。大多數時候,我們對于bash的定制,都是寫在這個文件里面的。

你也許會問,要是不進入 non-login shell,豈不是.bashrc就不會運行了,因此bash 也就不能完成定制了?事實上,Debian已經考慮到這個問題了,請打開文件 ~/.profile,可以看到下面的代碼:

if [ -n "$BASH_VERSION" ]; then

if [ -f "$HOME/.bashrc" ]; then

. "$HOME/.bashrc"

fi

fi

上面代碼先判斷變量 $BASH_VERSION 是否有值,然后判斷主目錄下是否存在 .bashrc 文件,如果存在就運行該文件。第三行開頭的那個點,是source命令的簡寫形式,表示運行某個文件,寫成"source ~/.bashrc"也是可以的。

因此,只要運行~/.profile文件,~/.bashrc文件就會連帶運行。但是上一節的第一種情況提到過,如果存在~/.bash_profile文件,那么有可能不會運行~/.profile文件。解決這個問題很簡單,把下面代碼寫入.bash_profile就行了。

if [ -f ~/.profile ]; then

. ~/.profile

fi

這樣一來,不管是哪種情況,.bashrc都會執行,用戶的設置可以放心地都寫入這個文件了。

Bash的設置之所以如此繁瑣,是由于歷史原因造成的。早期的時候,計算機運行速度很慢,載入配置文件需要很長時間,Bash的作者只好把配置文件分成了幾個部分,階段性載入。系統的通用設置放在 /etc/profile,用戶個人的、需要被所有子進程繼承的設置放在.profile,不需要被繼承的設置放在.bashrc。

順便提一下,除了Linux以外, Mac OS X 使用的shell也是Bash。但是,它只加載.bash_profile,然后在.bash_profile里面調用.bashrc。而且,不管是ssh登錄,還是在圖形界面里啟動shell窗口,都是如此。

總結

以上是生活随笔為你收集整理的linux 开机启动文件夹,Linux开机启动流程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。