1. 程式人生 > >系統啟動流程&&管道及重定向

系統啟動流程&&管道及重定向

備註 -a linux 系統 初始 stdout runlevel 關註 gpo 發生

System startup process && pipeline and redirection.

試驗環境:debian9 物理機。

第一部分,系統啟動流程:

系統啟動包含七個步驟,【BIOS】【MBR-boot code】【GRUB-執行引導程序】【加載內核】【執行init】【Runlevel】。

1. BIOS所需要做的事情

 basic input output system ,稱之為基本輸入輸出系統,一般保存在主板上的 BIOS 芯片中;計算機啟動的時候第一個運行的就是 BIOS,BIOS 負責檢查硬件並且查找可啟動設備;可啟動設備在 BIOS 設置中進行定義,如 USB,CDROM ,HD。

2. MBR 所需要做的事情

 BIOS 找到可啟動設備後執行其引導代碼,引導代碼為 MBR 的前446字節。

3. GRUB 所需要做的事情

 可以用來引導幾乎所有的操作系統,grub 的相關文件保存在 /boot/grub/ 目錄中 ,grub 的配置文件為 /boot/grub/grub.conf 。

4. 內核所需要做的事情

 MBR 的引導代碼將負責找到並加載 linux 內核,linux 內核保存在 /boot/vmlinuz-(破折號後面跟具體的代號),一般還會加載內核模塊打包文件 /boot/initrd ,linux 為了保持 kernel 的精簡將一些不常用的驅動、功能編譯成模塊,需要時進行動態加載。命令 dmesg 查看本次啟動時內核的輸出信息。

5. init 所需要做的事情

 init 是 linux 系統中運行的第一個進程,調用 /etc/rc.d/rc.sysinit 負責對系統進行初始化,掛載文件系統,並且根據運行級別啟動相應服務,每個級別對應的啟動服務保存在 /etc/rc.d/rc(123456) 中,debian9 保存在 /etc 中。

linux 運行級別:

0--關機

1--單用戶模式

2--不帶網絡的多用戶模式

3--多用戶模式

4--未使用

5--圖形化模式

6--重新啟動

---------------------------------------------------------------------------------------------------------------------------------------愛笑的考拉----------------------------------------------------------------------------------------------------------------

備註:7個運行級別有可能隨著內核的更新會發生變化,請關註內核WIKI。

命令 runlevel 可顯示當前及上一個運行級別。

命令 init 可用以改變當前運行級別。

單用戶模式修改 root 密碼,為內核傳遞參數 “1” || “single” ,系統進入單用戶模式;單用戶模式不啟動任何服務,單用戶模式下直接以 ROOT 登陸,並且不需要密碼,可使用 passwd 修改 root 密碼;防止他人對 root 進行密碼更改,可以對 GRUB 進行加密。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二部分,管道及重定向:

在使用的終端中,系統會定義的三個標準;標準輸入使用 0 表示、標準輸出使用 1 表示、標準錯誤使用 2 表示。

a. 重定向

> ,將 Stdout 重定向到文件,如果沒有文件則創建,如果有則覆蓋。

>> ,將 Stdout 重定向到文件(追加)。

2> ,將 Stderr 重定向文件(覆蓋)。

2>&1 ,將 Stderr 與 Stdout 結合。

< ,將 Stdin 重定向。

b. 管道

| ,將一個命令的 Stdout 作為另一個命令的 Stdin。

系統啟動流程&&管道及重定向