GRUB應用
GRUB:grand uniform bootloader:統一引導加載器,找到操作系統所在的磁盤,並把內核加載到內存,將控制器轉交給內核的程序
GRUB 0.X:
GRUB 1.X:就是通常所說的GRUB2
功能:就是MBR中的前 446 個字節,是BooTLoader的一種,提供一個菜單,允許用戶選擇要啓動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓展開,把系統控制權移交給內核,主要是由device.map,menulst,stage1,stage2,以及一系列的stage1_5組成。
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
1,default=#:默認啓動的菜單項,菜單項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進程了。
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: 進入編輯模式
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
VMware 虛擬機下grub製作:
第一步:準備好塊新磁盤,分2 個區
第二步:模擬啓動時的boot目錄,和根目錄,並掛載。如下
第三步:製作 grub,並生成 grub 的配置文件
製作grub:
拷貝內核文件和initramfs 文件到 /mnt/boot 目錄下,並生成 grub.conf 文件
第四步: 生成根文件系統
第五步:拷貝使用命令和庫到對應根目錄下
注意:文件複製完成後,修改對應/boot/grub/gurb.conf文件中root=sda2
將剛纔的磁盤鏡像作爲另一個虛擬機的啓動盤。