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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...