grub詳解

#GRUB詳解

grub基礎概念

前面的開機過程我們知道:按照BIOS定義的硬件設備啟動順序,第一啟動設備中的MBR去讀取boot loader。boot loader功能很強大,要重新自檢硬件設備,開始有一個菜單供用戶選擇系統或者內核版本,還要加載內核將內核解壓到RAM中并執行,最后將控制權移交給內核。屈屈446個字節怎么讓它完成那么多功能。所以Linux將boot loader的程序代碼執行分成兩個階段。

stage1: mbr

stage1_5: mbr之后的扇區,讓stage1中的bootloader能識別stage2所在的分區上的文件系統;

stage2:磁盤分區(/boot/grub/)

看看/boot/grub上都有什么

centos7上面的:

grub詳解

centos6上面的:

grub詳解

grub主程序最重要的任務之一是:識別磁盤,加載內核文件。怎么識別:

(hd0,0)
()括起來,硬盤以hd表示,后面接數字,后面的表示硬盤分區。

第一塊磁盤的第一個分區的boot sector代號就是(hd0,0)
第一塊磁盤的第一個邏輯分區的boot sector代號就是(hd0,4)

grub的配置文件

vim /boot/grub/menu.lst

grub詳解

這里面的root代表的是內核文件放置哪一個分區,而不是根目錄。

kernel后面接的是內核的文件名,文件名后面接的是文件名的參數

啟動時要掛載根目錄,所以root=/dev后面指的是Linux根目錄掛載到哪個分區

配置項:
    default=#: 設定默認啟動的菜單項;落單項(title)編號從0開始;

    timeout=#:指定菜單項等待選項選擇的時長;

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

    hiddenmenu:隱藏菜單;

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

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

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

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

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

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

安裝grub

如果你的Linux主機原來使用的并非grub,那么就需要來安裝。

grub-install --root-directory=ROOT /dev/DISK

將grub安裝至當前系統的MBR下面
    grub-install /dev/sda

我的/home為獨立的/dev/sda3,如何安裝grub到/dev/sda3
    grub-install --root-directory=/home /dev/sda3
    ll /home/boot/grub/

實例:預計啟動時要直接顯示菜單,且菜單倒數位30秒。另外,在原本的menu。lst當中新增三個啟動菜單,分別說明如下:

1、假設/dev/sda1內含有boot loader,此loader如何取得控制權?
2、如何重新讀取MBR內的loader?
3、利用你原本的系統內核文件,新建一個可強制進入單用戶維護模式的菜單。

grub詳解

配置完成后,我們并不知道/dev/hda1到底有沒有包含grub的主程序,因此我們想要將grub主程序再次安裝到/dev/hda1的boot sector,重新將grub安裝到MBR上面去。

#grub
#root (hd0,0)
#find /grub/stage1
#find /vmlinuz-2.6.28-92.e15
#setup (hd0,0)  (覆蓋原來的boot sector)

grub詳解

這要重啟后就是這樣

grub詳解

原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/60767

(0)
N24_yeziN24_yezi
上一篇 2016-11-25 20:02
下一篇 2016-11-25 23:29

相關推薦

  • 正則表達式字符集

    POSIX Description ASCII Unicode Shorthand Java [:alnum:] Alphanumeric characters [a–zA–Z0–9] [\p{L}\p{Nl}  \p{Nd}] \p{Alnum} [:alpha:] Alphabetic characters …

    Linux干貨 2017-07-07
  • 任務計劃

    所謂計劃任務就是指某一個時間系統自動做一件事情如輸入指令或者保存文件等等 計劃任務分兩種:一次性計劃任務命令(at)和周期性計劃任務命令(crontab)at的用法:如果當前時間為2017年6月6日 at 18:00 2017-06-6 w > /root/who.txt init 0 (輸入ctrl+d結束編輯…

    Linux干貨 2017-06-07
  • CentOS6.7上編譯安裝MariaDB

    CentOS6.7上編譯安裝MariaDB

    系統運維 2016-06-03
  • 批量部署lxc虛擬機

    前言:lxc是一種操作系統層虛擬化(Operating system–level virtualization)技術,為Linux內核容器功能的一個用戶空間接口。它將應用軟件系統打包成一個軟件容器(Container),內含應用軟件本身的代碼,以及所需要的操作系統核心和庫。通過統一的命名空間和共用API來分配不同軟件容器的可用硬件資源,創造出應用程…

    Linux干貨 2016-03-20
  • Linux發展歷史與基礎知識

    工具: 億圖 CRT 思維圖工具-Dream VPS-搬瓦工,亞馬遜云,阿里云 網站: 阿里云-help.aliyun.com 企業新聞-36kr.com lnmp.org-如何配置web服務 中關村在線-zol.com:看服務器設備 計算機組成: 硬件,軟件。 CPU類型 ·x86 ·x64 ·ARM ·m68k(moto) ·power ·Ultrasp…

    Linux干貨 2017-03-26
  • lvs

    #!/bin/bash # vip=10.1.0.5 mask='255.255.255.255' case $1 in start) echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore e…

    Linux干貨 2016-10-27

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-07 23:52

    可以寫寫grub的修復的過程

欧美性久久久久