grub啟動引導程式配置及命令行介面詳解

来源:https://www.cnblogs.com/walk1314/archive/2018/05/15/9018919.html
-Advertisement-
Play Games

Grub(GRand Unified Bootloader),統一資源引導器,它的工作是提供一個菜單,允許用戶選擇要啟動的系統或不同的內核版本;把用戶選定的內核裝載到RAM中的特定空間中,然後解壓、展開,而後把系統控制權移交給內核。 Grub目前有兩個版本: 1、GRUB 0.X:Grub Lega ...


  Grub(GRand Unified Bootloader),統一資源引導器,它的工作是提供一個菜單,允許用戶選擇要啟動的系統或不同的內核版本;把用戶選定的內核裝載到RAM中的特定空間中,然後解壓、展開,而後把系統控制權移交給內核。

  Grub目前有兩個版本:

      1、GRUB 0.X:Grub Legacy(CentOS5、6,version 0.97);

      2、GRUB 1.X:Grub2(CentOS7,version 1.96)。

Grub詳解(Grub Legacy,CentOS6為例):

  1、Grub程式主要由3部分組成:

    stage1:MBR(0柱面 0磁軌 1扇區)中

    stage1_5:MBR隨後的扇區

    stage2:讀取grub.conf配置文件,並實現引導功能的擴展

  釋義:MBR只有512bytes的空間,給Bootloader的空間很小隻有446bytes,因此Grub程式分為三段來進行:

          "stage 1" 被裝入磁碟的MBR中;

          特殊的"stage 1_5"被裝入MBR隨後的扇區,它能夠識別內核和"stage 2"所在分區的文件系統格式並幫助引導"stage 2";

          "stage 2"位於文件系統上;

      stage 2程式和配置文件grub.conf可以與內核文件處於不同的分區上(但必須位於同一磁碟),只要"stage 1.5"能夠驅動它們各自所在的分區。

      在linux中,與啟動相關的文件(grub目錄、vmlinuz、initramfs)均位於boot目錄下:

      

  2、Grub的配置文件:/boot/grub/grub.conf

   註意:必須確保grub目錄、vmlinuz等在同一個目錄;此外它創建了一個鏈接文件/etc/grub.conf 用於指向此配置文件,保證用戶使用配置文件的一致性。

        default=#:設定預設啟動的菜單項,編號從0開始

        timeout=#:等待菜單項選項的時長,超時自動啟動系統

        splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜單背景圖片文件路徑

        hiddenmenu:隱藏菜單

        password [--md5] STRING:菜單編輯認證

        title TITLE:定義菜單項“標題”, 可出現多次

            root (hd#,#):grub查找stage2及kernel文件所在的分區;為grub的“根”

            kernel /VMLINUZ_FILE [PARAMETERS]:啟動的內核

            initrd /INITRAMFS_FILE:內核匹配的ramfs文件

            password [--md5] STRING:啟動選定的內核或操作系統時進行認證

   示例:

   1)利用grub-md5-crypt生成密碼

   

   2)修改/boot/grub/grub.conf配置文件

   

   3)效果

   

  3、Grub的功能:

    1)提供菜單,並提供互動式介面:

        e:編輯模式,用於編輯菜單;

        c:命令模式,互動式介面;

    2)載入用戶選擇的內核或操作系統:

        允許傳遞參數給內核;

        可隱藏此菜單;

    3)為菜單提供了保護機制:

        為編輯菜單進行認證;

        為啟用內核或操作系統進行認證。

  4、Grub的編輯模式和命令行模式:

    1)開機按任意鍵進入菜單界面:

             

    2)按c鍵進入編輯界面:

    

    3)按e鍵進入命令行界面:

    

    4)grub的命令行命令:

          help:獲取幫助列表

          help KEYWORD:詳細幫助信息

          find /FILENAME:查找文件所在的磁碟分區

          root (hd#,#):指定boot所在分區

          kernel /KERNEL_FILE:設定本次啟動時用到的內核文件;額外還可以添加許多內核支持使用的cmdline參數,如:selinux=0,init=/path/to/init

          initrd /INITRAMFS_FILE:設定為選定的內核提供額外文件的ramfs

          boot:引導啟動選定的內核、

    註意,grub識別到的磁碟(hd#, #),例如(hd0, 0),表示第1塊磁碟,第1個分區。

    示例,通過命令行啟動系統:

      

    5)grub的編輯命令:

      b鍵:表示boot,啟動;

      e鍵:表示edit,編輯選中的項:

            o鍵:在選中行的下一行添加一行

            O鍵:在選中行的上一行添加一行

            d鍵:刪除選中的行

            Esc鍵:退出編輯界面

    示例,進入單用戶模式:

      

      

      

      

  5、安裝Grub的方法

    方法1:

    grub-install [--root-directory=DIR] DEVICE

      DEVICE:針對哪個磁碟安裝

      --root-directory=DIR:指定grub映像文件(主要是“stage 2”)的存放位置,預設為當前系統根目錄。

    grub-install會在指定的目錄下創建boot/grub/的層級目錄,並將生成的“stage 2”置於DIR/boot/grub/下。因為內核vmlinuz-xxxx與虛擬文件系統initramfs通常位於boot目錄下,故一般將DIR指定為boot目錄的父目錄即可。

    示例:

    

    方法2:

      輸入grub命令進入grub命令行

        root (hd0,0):相當於上面的--root-directory=DIR

        setup (hd0):為哪個磁碟安裝

        quit:退出


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

-Advertisement-
Play Games
更多相關文章
  • 為了定製個性化的用戶界面,我們通常會藉助於WPF強大的樣式(style),修改控制項屬性,重寫控制項模板(template),樣式幫助我們構建一致的個性化控制項。通過樣式可以調整界面的顯示效果,這隻是界面構成的一部分,界面有很多功能是與程式功能無關的,比如停靠、拖動、縮放等,這些通用的功能要如何實現呢,所 ...
  • 你新建winform項目的時候,會有一個app.config的配置文件,寫在裡面的<connectionStrings name=" " connectionString=" "></connectionStrings >, connectionString代表資料庫鏈接字元串,name代表你想要引 ...
  • 一、概括 1.通常創建一個對象的方法如圖: 通過 Student tom = new Student(); 創建tom對象,這種創建實例的形式被稱為構造方法。 簡述:用來初始化對象的,為類的成員賦值。 2.構造方法特點 a.方法名與類名相同; b.沒有返回值類型; c.必須要通過new的形式調用; ...
  • Linux桌面發行版 UbuntuCentOSRed heat LinuxOracle Linux 一、系統安裝 1、系統分區 若手動分區swap和根分區必須創建,推薦創建boot分區。 / 根目錄,唯一必須掛載的目錄。(在絕大多數情況下有2G的容量應該是夠用了。當然了,很多東西都是多多益善的)sw ...
  • 下載軟體包: 首先需要安裝apr和apr-util 安裝apr-util: ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr sudo make sudo make install 這兩個必不可少,如果缺少其他的依賴 ...
  • 在上一篇在Docker中體驗資料庫之Mongodb之後,這次記錄一下在docker中安裝mysql。過程要比Mongodb麻煩一點…… 參考網址: https://dev.mysql.com/doc/refman/5.7/en/linux-installation-docker.html https ...
  • 寫在前面 Rocketmq採用apache rockemq 4.2.0release版本。 源碼路徑(http://mirrors.shu.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-source-release.zip) 場景 這裡採用兩台Ubu ...
  • 1.查看系統環境 2.安裝軟體包和Apache SVN模塊 3. 驗證安裝 4.驗證Apache SVN模塊是否安裝成功,需要檢查mod_dav_svn.so和mod_authz_svn.so 5. 使用svnadmin命令創建SVN倉庫repos 6.修改repos目錄屬主和屬組 7. 複製/va ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...