GRUB應用

                           GRUB應用

GRUB:grand uniform bootloader:統一引導加載器,找到操作系統所在的磁盤,並把內核加載到內存,將控制器轉交給內核的程序

GRUB 0.X

 GRUB 1.X:就是通常所說的GRUB2

功能:就是MBR中的前 446 個字節,是BooTLoader的一種,提供一個菜單,允許用戶選擇要啓動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓展開,把系統控制權移交給內核,主要是由device.mapmenulststage1,stage2,以及一系列的stage1_5組成。

 

 

wKiom1aQx1HDdsNxAAEPvgEfyy4204.jpg

device.map:存放的是內核文件的根分區

menu.lis:是grub.conf的鏈接文件,設置了可以選擇的內核菜單,存放於stage2

stage:用於grub引導程序過大,所以分2段引導,第一段存放在MBR中,第二段存放於內核文件系統中,第一段引導完成後可以找到第二段,但是,第二段是存放於內核文件系統中的。當stage1運行完成時還沒有格式化文件系統,此時要運行stage2需要藉助於stage1_5 stage1_5通常位於 stage1 字段後的 63 個扇區。由於stage2 在內存中存放可以使用的文件系統不確定,所以這就是有多個 stage1_5 的原因了。

GRUB配置文件:/boot/grub/grub.conf  鏈接文件到--->/etc/grub.conf

  1default=#:默認啓動的菜單項,菜單項titile編號從0開始,操作系統個數,

  2,配置timeout=5,默認等待用戶選擇的時長;

 2,splashimge=(hd#,#)/path/to/xpm_pic_file 操作系統選擇默認背景圖片(xpm.gz格式)

  3,hiddenmenu:隱藏;只能看到進度條,看不不到加載的每條內容

       a可選:  password [--md5] string:設置密碼,菜單編輯認證;

  4,title CentOS (2.6.32-358.el6.x86_64)    # 標題名,用戶可自定義 

    root (hd0,0)    # 指定 grub 的根位置 

    # 指定 kernel 文件的位置,還要指出root(系統啓動後)的位置,掛載方式 ro,這項很關鍵。 

    # 加載後會啓動 init 進程。 

    kernel/vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DMLANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16crashkernel=auto rd_LVM_LV=vg0/root KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet 

    # 在內核啓動過程中裝載根文件系統時有用 

    initrd/initramfs-2.6.32-358.el6.x86_64.img                       

 b,可選:  password [--md5] string:啓動選定的內核或操作系統時認證;

 

initramfs文件說明:initramfs-2.6.32-358.el6.x86_64.img :

  initramfs 是以 gzip 壓縮的 cpio 格式的文件。內核啓動時將他作爲一個臨時的根文件系統。 

  grub stage2 initrd加載到內存裏,然後將其中的內容釋放到內存中, 

  內核便去執行init腳本,這時內核將控制權交給了init文件處理。 

  init 它也主要是加載各種存儲介質相關的設備驅動程序。當所需的驅動程序加載完後, 

  會創建一個根設備,然後將根文件系統rootfs以只讀的方式掛載。 

  這一步結束後,釋放未使用的內存,轉換到真正的根文件系統上面去,同時運行/sbin/init程序, 

  執行系統的1號進程。此後系統的控制權就全權交給/sbin/init進程了。

   wKiom1aQx2bSnj4_AAC4J8iXggI255.jpg

initramfs的製作:

可以使用 dircut 命令,用法如下: 

只有在 initramfs文件損毀的時候會使用到 

  dracut /mnt/initramfs-`uname-r`.img `uname -r` 

製作完成後查看命令:
            du -sh/mnt/initramfs-2.6.32-358.el6.x86_64.img

  du -sh /boot/initramfs-2.6.32-358.el6.x86_64.img

GRUB的功能:

    1)提供菜單,並提供交互式接口

               

e: 進入編輯模式

wKiom1aQx3ij7JOoAAFVYQBNk90073.jpg

 

2)選擇要啓動的內核或系統

    可以通過 grub 向內核傳遞參數修改root 密碼,使用 e 選項,讓內核進入單用戶模式即可通過命令修改密碼。

3)爲編輯功能提供保護機制。

grub-md5-crypt  

Password:  

Retype password:  

$1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0 

# 上面是生成的加密字符串 

# 然後將信息加入到 grub.conf 文件中,格式如下: 

password --md5 $1$Mp7Rp1$l2wzOILNUqpUhAR7zXvQb0 

# 當然加入 grub.conf 文件的位置不同,加密效果也不一樣。 

具體加密位置見GRUB配置文件a,b兩個可選加密位置。

 

GRUB安裝方法:

  gurb-install命令安裝grub

   grub-install[--root-directory=/path/to/somewhere] DEVICE

           mkdir /mnt/boot

           mount /dev/sdb1 /mnt/boot

           grub-install --root-directory=/mnt /dev/sdb

wKiom1aQx5OjwR60AAMjwBl7qe4755.jpg

 

VMware 虛擬機下grub製作:

 第一步:準備好塊新磁盤,分2 個區

      wKiom1aQx6nAlXr3AAFqK0rw1Gw712.jpg

 第二步:模擬啓動時的boot目錄,和根目錄,並掛載。如下

 wKiom1aQx8uSxYHKAABKstndJUM851.jpg

 第三步:製作 grub,並生成 grub 的配置文件

製作grub

  wKiom1aQx9nQVFiTAAQhH8gT7ME348.jpg

 

 

 拷貝內核文件和initramfs 文件到 /mnt/boot 目錄下,並生成 grub.conf 文件

wKiom1aQx_HzCqLRAAK4pL2rGOE823.jpg

 第四步: 生成根文件系統

wKioL1aQyCyS-C6kAAJ5n-RN25k372.jpg

 第五步:拷貝使用命令和庫到對應根目錄下

wKiom1aQyC6ydQUpAABxNtRhQQA680.jpg

wKioL1aQyG-yvxNMAABGp5iUMSU134.jpg

wKioL1aQyG_TbTx6AAAqXeG_O4o146.jpg


注意:文件複製完成後,修改對應/boot/grub/gurb.conf文件中root=sda2

wKioL1aQyIChjGTHAAD9L9ACuHQ729.jpg

 將剛纔的磁盤鏡像作爲另一個虛擬機的啓動盤。


wKiom1aQyHGDbVG6AACS57EO9ro734.jpg

wKioL1aQyJ2wzPqtAAEqfTAEkr0210.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章