Linux 入門記錄:十八、Linux 系統啟動流程 + 單用戶修改 root 密碼 + GRUB 加密

来源:http://www.cnblogs.com/mingc/archive/2017/10/03/7617038.html
-Advertisement-
Play Games

一、系統啟動流程 一般來說,Linux 系統的啟動流程是這樣的: 1. 開機之後,位於電腦主板 ROM 晶元上的 BIOS 被最先讀取,在進行硬體和記憶體的校驗以及 CPU 的自檢沒有異常後, BIOS 將被載入到記憶體中。 2. BIOS 按照其存儲的啟動順序,依次嘗試載入含有 MBR 信息的可啟動 ...


一、系統啟動流程

一般來說,Linux 系統的啟動流程是這樣的:

1. 開機之後,位於電腦主板 ROM 晶元上的 BIOS 被最先讀取,在進行硬體和記憶體的校驗以及 CPU 的自檢沒有異常後, BIOS 將被載入到記憶體中。

2. BIOS 按照其存儲的啟動順序,依次嘗試載入含有 MBR 信息的可啟動設備(一般是硬碟,可設置),然後將控制權交給 MBR 中的 Bootloader(引導程式)。

3. Linux 中使用 GRUB(多操作系統引導程式)作為 Bootloader。GRUB 可以識別(根)文件系統並載入 Kernel(內核),同時將系統的控制權交給 Kernel。

4. Kernel 極其精簡,載入過程中也可能會載入一些必要的模塊打包文件。

5. 隨同 Kernel 一起載入的還有 init(/sbin/init)進程,是 Linux 啟動的第一個進程,它負責載入文件系統並根據運行級別啟動(重啟)和關閉相應服務,最後初始化字元終端和/或啟動圖形終端,等待用戶登錄。

至此,系統啟動完成。

 

二、流程詳解

1. BIOS(Basic Input Or Output,基本輸入輸出系統)

BIOS 是電腦啟動後最先被讀取的系統,在硬體和記憶體的校驗以及 CPU 的自檢通過、沒有異常後,BIOS 將被載入到記憶體里。BIOS 主要存儲了設備(一般是硬碟,可在 BIOS 界面設置)的啟動順序,BIOS 依次嘗試載入含有 MBR 信息的可啟動設備,找到後將控制權交給 MBR 中的 Bootloader。

 

2. MBR(Master Boot Record,主引導記錄)

MBR 在磁碟上的第一個扇區(1 扇區占 512 位元組),它的前 446 位元組是 Bootloader(引導程式),後 4 個 16 位元組是最多 4 個主分區信息,最後 2 位元組 55 AA 是啟動標識。

Linux 中使用 GRUB 作為 Bootloader。

 

3. GRUB(GRand Unified Bootloader,多操作系統引導程式)

GRUB 是現在 Linux 使用的主流引導程式,可以用來引導現在幾乎所有的操作系統。

GRUB 是模塊化的,運行時會經歷如下階段:

(1)stage1:stage 1 大小 512 位元組(和 MBR 一樣大),是 MBR 的備份,MBR 損壞時可以從這裡得到一個備份。

(2)*_stage1_5:用於識別多種類型文件系統的文件。CentOS 6 以後的版本預設文件系統是 ext4,會相應地識別 e2fs_stage1_5 文件。識別後,載入文件系統。

(3)stage2:根據 GRUB 配置文件 /boot/grub/grub.conf 的內容來決定如何載入 Kernel。該文件內容一般如下:

default:預設啟動的內核編號,從0開始(每個內核信息由title標識)
timeout:等待用戶選擇要啟動的內核的超時時間,單位為秒
splashimage:使用的背景圖片
hiddenmenu:隱藏菜單
title:操作系統或內核的標題
    root:內核所在的分區,(hd0,1)表示第1塊磁碟的第1個分區
    (在grub中,設備統統以hd開頭,並緊跟一個數字作為各磁碟設備的標記,從0開始編號;分區也是從0開始編號,而我的(hd0,1)是因為我的第0個分區是swap交換分區)
    kernel:要載入的內核文件,後面附帶啟動參數
    initrd:額外驅動或模塊的打包文件,ram disk 或 ram fs 文件(通常是歸檔壓縮文件,以.img為文件名尾碼)

 

4. Kernel(內核)

GRUB 的最後階段 stage2 會根據 GRUB 配置文件 /boot/grub/grub.conf 的內容來載入 Kernel,並將系統控制權交給 Kernel。

命令 dmesg 可以用來查看本次啟動時內核的輸出信息。

 

5. init(Linux 啟動的第一個進程)

init 進程是 Linux 啟動的第一個進程,PID 為 1,其他所有進程是它的子進程。

Linux 的 init 進程是由傳統的 sysvinit 演變而來的,init 進程讀取的配置文件 /etc/inittab 僅保留了 sysvinit 的 inittab 文件定義的預設運行級別 runlevel,其他的配置則分散到了 /etc/init/*.conf 多個文件中。

init 進程會根據 /etc/inittab 文件定義的 runlevel 去執行相應目錄下的腳本。

 

6. runlevel(運行級別)

命令 runlevel 可顯示上一個及當前 runlevel。命令 init 可用來改變當前的 runlevel。

Linux 的 runlevel 有 7 個:

0:系統停機,預設運行級別不能設為0,否則不能正常啟動
1:單用戶模式,root許可權,用於系統維護,禁止遠程登陸
2:多用戶模式(無網路)
3:多用戶狀態(命令行界面)
4:保留未使用
5:多用戶模式(圖形化界面)
6:系統重啟,預設運行級別不能設為6,否則不能正常啟動

這 7 個 runlevel 分別對應了 /etc/rc.d/rc[0-6].d/ 七個目錄:

每個目錄存儲了所有以 K* 和 S* 開頭的文件,K 開頭的文件表示從其他 runlevel 切換過來需要開啟(重啟)的服務,S 開頭的文件表示從其他 runlevel 切換過來需要關閉的服務。

 

三、單用戶修改root密碼

為內核傳遞參數 "1" 或 "single" ,可讓系統進入單用戶模式(runlevel 1)。單用戶模式下不啟動任何服務,直接以 root 用戶登錄,並且不需要密碼,可以使用 passwd 修改 root 密碼。

 

操作步驟如下:

開機後,在 GRUB 引導等待用戶選擇要載入內核的超時時間內,隨意按下一個鍵,進入內核的選擇界面。

上圖中,選中目標版本內核,按下 "e" 鍵進入編輯。

上圖中,選中 kernel,按下 "e" 鍵進入編輯。

上圖中,在行末尾為內核傳遞參數 "1" 或 "single" ,回車確定,按 "b" 啟動。

上圖中,成功進入單用戶模式,並且用 root 用戶登錄,使用 passwd 修改 root 密碼,然後 exit 退出,正常重啟即可。

 

四、GRUB加密

管理員可以通過單用戶模式修改 root 密碼,但是這也導致任何人都可能通過這種方式入侵系統。為了防止這種危險,可以進行 GRUB 加密。

1. 在 root 用戶下輸入 grub-md5-crypt 命令,然後輸入為 GRUB 設置的密碼,產生一組 MD5 加密後的密文。

2. 將得到的密文添加到 GRUB 配置文件 /boot/grub/grub.conf 中。

這樣在用戶在開機後要編輯內核時就會強制要求輸入 GRUB 密碼,剔除了非法修改 root 密碼的可能。

其次,也可以在 title 段添加一個 passward,它是用於內核(系統)啟動時要求輸入的密碼。

 

參考鏈接:

Linux系統啟動流程

圖解Linux系統啟動流程

Linux系統啟動過程

linux中inittab文件詳解

Linux系統有7個運行級別(runlevel)

CentOS 6.4 Grub加密碼


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1》迭代器原理及使用: 1>原理: 迭代器是訪問集合元素的一種方式,迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束;迭代器只能往前不會後退,不過這也沒什 麽,人們很少在迭代途中往後退,另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素;迭代器僅僅在迭代到某個元素時才計 ...
  • 本文目錄:1. CGI是什麼2. 各種術語解釋3. web server和CGI的交互模式 3.1 CGI模式 3.2 模塊模式 3.3 php-fpm模式 1. CGI是什麼 CGI是common gateway interface的縮寫,大家都譯作通用網關介面,但很不幸,我們無法見名知意。 我們 ...
  • 懶蟲windows系列(一) 首先是快捷鍵,因為自己太懶了,覺得用滑鼠很麻煩,下麵總結一下自己最常用的快捷鍵(windows10 ) Ctrl+Shift+N:新建文件夾 F2:重命名 Ctrl + L:鎖屏 Art + F4:關閉當前視窗 Win+Prt Sc:屏幕截圖。截圖自動存放至“圖片”文件 ...
  • 本文目錄:1. 基礎2. I/O模型2.1 Blocking I/O模型2.2 Non-Blocking I/O模型2.3 I/O Multiplexing模型2.4 Signal-driven I/O模型2.5 Asynchronous I/O模型2.6 同步IO和非同步IO、阻塞和非阻塞的區分3. ...
  • 1》set集合:是一個無序且不重覆的元素集合;訪問速度快,解決了重覆的問題; s2 = set(["che","liu","haha"]) add():添加元素; difference():將前一個集合與後者的不同建立為一個新的集合;沒有改變當前集合,生成了新的集合; difference_upda ...
  • 一、源代碼管理 絕大多數開源軟體都是直接以源代碼形式發佈的,一般會被打包為 tar.gz 的歸檔壓縮文件。程式源代碼需要編譯為二進位可執行文件後才能夠運行使用。源代碼的基本編譯流程為: 源代碼形式的軟體使用起來較為麻煩,但是相容性和可控性較好。並且開源軟體一般會大量使用其他開源軟體的功能,所以開源軟 ...
  • 本文目錄:1. 背景2. 連接的具體過程分析 2.1 socket()函數 2.2 bind()函數 2.3 listen()函數和connect()函數 2.3.1 深入分析listen() 2.3.2 syn flood的影響 2.4 accept()函數 2.5 send()和recv()函數 ...
  • 操作系統筆記 1、批處理、分時、實時是操作系統的三種基本類型 2、分散式系統是由若幹個電腦經互連網路連接而成的,這些電腦既可以獨立工作,又能協同工作。可實現系統內的資源管理,任務動態分配,並能並行地運行分散式程式。分散式系統是網路操作系統的更高級的形式並保持了網路操作系統的全部功能。 3、核心態 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...