Linux 系統啟動與 GRUB2 核心操作指南

Linux 系統啟動與 GRUB2 核心操作指南

Linux 系統的啟動過程是一個環環相扣的鏈條,從硬件自檢到用戶登錄,每一步都依賴關鍵組件的協作。其中,GRUB2 引導器systemd 進程是核心樞紐,而運行級別則決定了系統的啟動狀態。以下是系統啟動流程、關鍵配置及故障處理的詳細解析

一、Linux 系統啟動全流程

系統啟動從硬件通電到登錄界面出現,可分為 8 個關鍵步驟,層層遞進:

  1. 開機自檢(POST)
    計算機通電后,BIOS/UEFI 會對 CPU、內存、硬盤等硬件進行檢測,確保硬件正常工作。檢測通過后,定位啟動設備(如硬盤)
  2. MBR 引導
    從啟動設備的MBR(主引導記錄) 中讀取引導程序 GRUB2(MBR 位于硬盤第一個扇區,僅 512 字節)。
  3. GRUB2 菜單加載
    GRUB2 讀取配置文件/boot/grub2/grub.cfg,解析內容并顯示引導菜單(如多系統選擇、內核版本選擇)
  4. 加載 Linux 內核
    用戶選擇內核后,GRUB2 將內核文件(如/boot/vmlinuz-xxx)和初始化內存盤(/boot/initramfs-xxx.img)載入內存
  5. 內核初始化
    內核接管系統控制權,完成內存分配、進程調度、驅動加載等基礎環境搭建,為后續進程運行鋪路
  6. 啟動 systemd 進程
    內核初始化完成后,啟動系統第一個進程systemd(進程號為 1),它是所有后續進程的父進程
  7. 設置運行級別
    systemd 讀取/etc/systemd/system/default.target文件,確定系統默認運行級別,并啟動對應級別的服務(如網絡、圖形界面)
  8. 進入登錄界面
    所有服務啟動完成后,系統彈出登錄界面,等待用戶輸入賬號密碼
二、運行級別:系統狀態的 “開關”

運行級別定義了系統啟動后的狀態,通過對應的 target 文件控制。傳統的 0-6 級別與 systemd 的 target 對應關系如下:

運行級別對應 target描述
0poweroff.target關機
1rescue.target單用戶模式(無網絡,用于修復)
2multi-user.target多用戶模式(無網絡,較少使用)
3multi-user.target完全多用戶模式(命令行界面,有網絡)
4(保留)未定義,可自定義(保留)
5graphical.target圖形化界面(含命令行功能)
6reboot.target重啟

常用操作命令

  • 查看當前默認運行級別:systemctl get-default
  • 設置默認運行級別(如命令行):systemctl set-default multi-user.target
  • 臨時切換到圖形界面(不改變默認):systemctl isolate graphical.target
三、GRUB2 引導器:啟動的 “總開關”

GRUB2 是系統啟動的關鍵引導程序,負責加載內核。以下是其核心配置與維護操作:

  1. 生成 GRUB2 配置文件
    當內核更新或引導菜單需要修改時,需重新生成grub.cfg

    grub2-mkconfig -o /boot/grub2/grub.cfg  # 推薦方式,直接寫入配置文件
    # 或 grub2-mkconfig > /boot/grub2/grub.cfg
    
  2. GRUB2 加密:防止未授權修改
    為避免他人通過 GRUB2 菜單篡改系統(如破解密碼),可對 GRUB2 加密:

    • 明文加密(簡單但密碼可見):
      編輯/etc/grub.d/00_header,添加:

      cat << EOF
      set superusers="zhangsan"  # 定義管理員用戶
      password zhangsan 123456   # 用戶名+密碼(明文)
      EOF
      

      生成配置:grub2-mkconfig -o /boot/grub2/grub.cfg

    • 密文加密(更安全):
      先生成密文密碼:

      grub2-mkpasswd-pbkdf2  # 輸入密碼后,復制輸出的密文(不含空格)
      

      編輯/etc/grub.d/00_header,添加:

      cat << EOF
      set superusers="tom"  # 管理員用戶
      password_pbkdf2 tom 復制的密文  # 密文密碼
      EOF
      

      生成配置:grub2-mkconfig -o /boot/grub2/grub.cfg

四、應急處理:破解 root 密碼與修復 GRUB2

系統故障時,需掌握關鍵修復技巧:

  1. 破解 root 密碼(忘記密碼時):

    1. 重啟系統,在 GRUB2 菜單按e進入編輯模式;

    2. 找到內核行(以linux16linux開頭),末尾添加rd.break,按Ctrl+X啟動;

    3. 進入偽系統,重新掛載根目錄為讀寫模式:

      mount -o remount,rw /sysroot
      
    4. 切換到真實系統環境:chroot /sysroot

    5. 修改 root 密碼:

      passwd root  # 手動輸入新密碼
      # 或 echo "新密碼" | passwd --stdin root  # 非交互式設置
      
    6. 修復 SELinux 標簽(避免權限問題):touch /.autorelabel

    7. 退出并重啟:exit(兩次,第一次退出 chroot,第二次重啟系統)

  2. 修復 GRUB2 引導器(誤刪 GRUB2 目錄時):

    1. 重新安裝 GRUB2 到硬盤(以/dev/sda為例):

      grub2-install /dev/sda
      
    2. 生成配置文件恢復菜單:

      grub2-mkconfig -o /boot/grub2/grub.cfg
      
  3. 修復 /boot 目錄(內核文件丟失時):

    1. 進入救援模式(從安裝盤啟動,選擇 “Rescue a Linux system”);

    2. 掛載系統根目錄到/mnt/sysroot,并切換到該環境:chroot /mnt/sysroot

    3. 掛載安裝光盤(提供內核包):mount /dev/cdrom /mnt

    4. 重新安裝內核(需替換為實際內核版本):

      rpm -ivh /mnt/Packages/kernel-3.10.0-xxx.rpm --force
      
    5. 恢復 GRUB2(同上述 “修復 GRUB2” 步驟);

    6. 退出并重啟:exit(兩次)

總結:啟動流程與核心操作要點

Linux 啟動的核心邏輯是 “硬件自檢→引導程序→內核→初始化進程→服務啟動”,其中GRUB2systemd是兩大關鍵組件。掌握運行級別的切換、GRUB2 的配置與加密、以及應急修復(如破解密碼、恢復引導器),能有效應對系統啟動故障。記住:配置修改后及時生成 GRUB2 配置文件,是避免引導失敗的關鍵習慣

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91600.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

供應鏈分銷代發源碼:一站式打通供應商供貨、平臺定價、經銷商批發及零售環節

在當前復雜的市場環境中&#xff0c;供應鏈管理成為企業發展的關鍵。尤其對于電商平臺來說&#xff0c;高效、精準的供應鏈管理不僅能提升運營效率&#xff0c;還能增強市場競爭力。為了應對日益復雜的供應鏈挑戰&#xff0c;核貨寶供應鏈分銷代發系統應運而生&#xff0c;旨在…

機器學習、深度學習與數據挖掘:核心技術差異、應用場景與工程實踐指南

技術原理與核心概念數據挖掘作為知識發現的關鍵技術&#xff0c;其核心在于通過算法自動探索數據中的潛在模式。關聯規則挖掘可以發現項目之間的有趣關聯&#xff0c;如經典的"啤酒與尿布"案例&#xff1b;聚類分析能夠將相似對象自動分組&#xff0c;常用于客戶細分…

《C++初階之STL》【stack/queue/priority_queue容器適配器:詳解 + 實現】(附加:deque容器介紹)

【stack/queue/priority_queue容器適配器&#xff1a;詳解 實現】目錄前言&#xff1a;------------標準接口介紹------------一、棧&#xff1a;stack標準模板庫中的stack容器適配器是什么樣的呢&#xff1f;1. 棧的基本操作std::stack::topstd::stack::pushstd::stack::pop2…

Thymeleaf 模板引擎原理

Thymeleaf 的模板文件&#xff0c;本質上是標準的 HTML 文件&#xff0c;只是“加了標記&#xff08; th&#xff1a;&#xff09;的屬性”&#xff0c;讓模板引擎在服務端渲染時能 識別并處理 這些屬性&#xff0c;從而完成數據&#xff08;model&#xff09; 的填充。<!DO…

5、生產Redis高并發分布式鎖實戰

一、核心問題與解決方案 問題本質 #mermaid-svg-W1SnVWZe1AotTtDy {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-W1SnVWZe1AotTtDy .error-icon{fill:#552222;}#mermaid-svg-W1SnVWZe1AotTtDy .error-text{fill:#5…

CS231n-2017 Lecture8深度學習框架筆記

深度學習硬件&#xff1a;CPU:CPU有數個核心&#xff0c;每個核心可以獨立工作&#xff0c;同時進行多個線程&#xff0c;內存與系統共享GPU&#xff1a;GPU有上千個核心&#xff0c;但每個核心運行速度很慢&#xff0c;適合并行做類似的工作&#xff0c;不能獨立工作&#xff…

以ros的docker鏡像為例,探討docker鏡像的使用

標題以ros的docker鏡像為例&#xff0c;探討docker鏡像的使用&#xff08;待完善&#xff09; 1. docker介紹&#xff08;以ros工程距離&#xff09; &#xff08;1&#xff09;個人理解&#xff1a;docker就是一個容器&#xff0c;主要的作用就是將環境打包好&#xff0c;方…

Android Audio實戰——TimeCheck機制解析(十三)

上一篇文章我們雖然通過 tombstoned Log 推斷出 audioserver 崩潰的原因就是系統調用內核接口時發生阻塞,導致 TimeCheck 檢測超時異常而崩潰,但并沒有實質性的證據證明是 kernel 層出現問題導致的崩潰,因此這里我們繼續看一下 TimeCheck 的檢測原理。 一、TimeCheck機制 T…

飛機大戰小游戲

1.視覺設計&#xff1a;采用柔和的藍紫色漸變背景&#xff0c;營造夢幻感飛機、敵機和子彈使用柔和的糖果色調添加了粒子爆炸效果&#xff0c;增強視覺反饋星星收集物增加游戲趣味性2.游戲機制&#xff1a;玩家使用左右方向鍵控制飛機移動空格鍵發射子彈P鍵暫停游戲擊落敵機獲得…

Linux 啟動服務腳本

1. 創建命令文件# 創建可執行文件 touch 文件名稱 例&#xff1a; touch stopServer.sh2. 命令文件授權# 授權文件可執行權限 chmod 777 文件名稱 例&#xff1a; chmod 777 stopServer.sh3. 停止服務命令編寫#!/bin/bash# 獲取進程號 pidps -ef | grep -- /mnt/apache-tomcat-…

【華為機試】34. 在排序數組中查找元素的第一個和最后一個位置

文章目錄34. 在排序數組中查找元素的第一個和最后一個位置描述示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a;提示&#xff1a;解題思路算法分析問題本質分析雙重二分查找詳解左邊界查找過程右邊界查找過程算法流程圖邊界情況分析各種解法對比二分查找變種詳解時間復…

【網絡編程】WebSocket 實現簡易Web多人聊天室

一、實現思路 Web端就是使用html JavaScript來實現頁面&#xff0c;通過WebSocket長連接和服務器保持通訊&#xff0c;協議的payload使用JSON格式封裝 服務端使用C配合第三方庫WebSocket和nlonlohmann庫來實現 二、Web端 2.1 界面顯示 首先&#xff0c;使用html來設計一個…

AI 驅動、設施擴展、驗證器強化、上線 EVM 測試網,Injective 近期動態全更新!

作為一個專注于金融應用、且具有高度可互操作性的高性能 Layer-1 區塊鏈&#xff0c;Injective 自誕生以來便為開發者提供有即插即用的技術模塊&#xff0c;以便開發者能夠更好地搭建新一代 Web3 金融類應用。談及項目發展的愿景和基本定位&#xff0c;創始團隊曾提到希望 Inje…

Qt-----初識

1. 什么是Qt定義&#xff1a;Qt是一個跨平臺的應用程序和用戶界面框架&#xff0c;主要用于開發具有圖形用戶界面的應用程序&#xff0c;同時也支持非GUI程序的開發。 編程語言&#xff1a;主要使用C&#xff0c;但也提供了對Python&#xff08;PyQt&#xff09;、JavaScript&a…

理解微信體系中的 AppID、OpenID 和 UnionID

前言: 在開發微信相關的服務(如小程序,公眾號,微信開放平臺等)時,很多人都會接觸到幾個看起來相似但實際用途不同的額ID: AppiD, OpenID,UnionID. 搞清楚這三者的區別,是微信生態開發中的基本功,本文將從開發者視角觸發,深入淺出地解釋它們的關系,區別以及實際應用場景一.什么是…

FFmpeg,如何插入SEI自定義數據

FFmpeg&#xff0c;如何插入SEI自定義數據 一、什么是SEI&#xff1f; SEI&#xff08;Supplemental Enhancement Information&#xff0c;補充增強信息&#xff09;是H.264/H.265視頻編碼標準中的一種元數據載體&#xff0c;它允許在視頻流中嵌入額外的信息&#xff0c;如時…

為什么分類任務偏愛交叉熵?MSE 為何折戟?

在機器學習的世界里&#xff0c;損失函數是模型的“指南針”——它定義了模型“好壞”的標準&#xff0c;直接決定了參數優化的方向。對于分類任務&#xff08;比如判斷一張圖片是貓還是狗&#xff09;&#xff0c;我們通常會選擇交叉熵作為損失函數&#xff1b;而在回歸任務&a…

[echarts]橫向柱狀圖

前言 接到一個需求&#xff0c;需要展示一個橫向的柱狀圖&#xff0c;按數量從大到小排序&#xff0c;并定時刷新 使用react配合echarts進行實現。 react引入echarts import React, { useEffect, useRef } from react; import * as echarts from echarts; import DeviceApi fro…

【開源項目】輕量加速利器 HubProxy 自建 Docker、GitHub 下載加速服務

??引言?? 如果你經常被 Docker 鏡像拉取、GitHub 文件下載的龜速折磨&#xff0c;又不想依賴第三方加速服務&#xff08;擔心穩定性或隱私&#xff09;&#xff0c;今天分享的 ??HubProxy?? 可能正是你需要的。這個開源工具用一行命令就能部署&#xff0c;以極低資源消…

java web jsp jstl練習

JSP 的學習。 核心功能模塊 1. 源代碼層 &#xff08; src &#xff09; HelloWorld &#xff1a;主程序入口領域模型 &#xff1a; domain 包含User.java和ceshi.java控制器 &#xff1a; servlet 包含登錄驗證和驗證碼相關ServletWeb表現層 &#xff08; web &#xff09; JS…