系統啟動流程&&管道及重定向
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。
系統啟動流程&&管道及重定向