歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> grub配置文件分析及前期構建Linux

grub配置文件分析及前期構建Linux

日期:2017/2/28 15:44:17   编辑:Linux教程

grub作為linux的引導程序,有其獨特的風格

先說Linux的啟動過程

加電自檢-->BIOS(決定啟動次序)-->MBR(bootloader(grub))-->kernel-->init(/etc/inittab)-->rc.sysinit

MBR為0道扇區上的512個字節 Bootloader位於MBR的前446字節

grub 是兩段式的引導

stage1 MBR 負責引導第二個階段

stage2 讀取/boot/grub/中的文件

解讀/etc/grub.conf

default=0 //默認啟用系統的編號順序

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz //因為此系統上的boot目錄為一個單獨的分區,grub則直接進入此分區找到grub目錄,所以沒有指明 boot 目錄,但如果boot目錄在根分區上,則grub就直接進入根分區,找到boot目錄下grub

目錄後,那麼此時需要指明boot目錄

hiddenmenu

password --md5 $1$FSUEU/$uhUUc8USBK5QXc.Bf //#grub-md5-crypt 加密

title外的password表示進入grub編輯模式需要輸密碼,可防止用戶修改管理員密碼而取得管理員權限

title Red Hat Enterprise Linux Server (2.6.18-164.el5) //用於指明同個系統的不同內核或不同的操作系統

root (hd0,0) //grub所使用的根(grub引導過程中內核中的驅動還沒有啟動,無法識別文件系統,grub就以hd來標識磁盤,第一個0為 磁盤號,第二個0為分區號,grub則把它設為文件訪問的起始點)

kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/vol0/root rhgb quiet

##因為boot是一個獨立分區,那麼grub就把此分區當作‘根分區’/,並不同於文件系統中的根

##和上面的解釋一樣 ,如果boot是根分區上的一個目錄,這裡就要寫成/boot/vmlinuz-2.6.18-164.el5,

##記住不能以操作系統的眼光來對待它

## ro 只讀

## root=/dev/vol0/root 表示操作系統的根文件系統

## quit 靜默方式運行

initrd /initrd-2.6.18-164.el5.img

##因為kernel加載根是需要驅動的支持,而驅動又放在了根中models 這個目錄中,initrd則提供了所有kernel所

需要的驅動,那麼kernel就跳過了根,從而驅動文件系統,進而加載根文件系統

title Install Red Hat Enterprise Linux 5

root (hd0,0)

kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6

initrd /initrd-5

password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m. //title內的password表示進入此kernel時需要密碼

二、如果/boot/grub/grub.conf 不幸丟失,系統找不到此文件時,則可手動添加

grub>root (hd0,0)

grub>kernel /vmlinuz-2.6.18-164.el5 ro

grub>initrd /initrd-2.6.18-164.el5.img

grub>boot

則可引導系統了

三、使用grub-install命令在磁盤上安裝Bootloader

新增一塊磁盤

dd if=/dev/zero of=/dev/sdb bs=512 count=1 //將磁盤的前512字節空間充零

為boot分區分配100M的空間

echo '

n

p

1

+100M

w' |fdisk /dev/sdb

格式化為ext3

#mkfs -t ext3 /dev/sdb1

#mkdir /mnt/boot

mount /dev/sdb1 /mnt/boot

使用grub-install磁盤上安裝Bootloader

#grub-install --root-directory /mnt /dev/sdb ##因為是在磁盤上安裝,不需要指明/mnt/boot路徑,直接/mnt Bootloader會安裝在boot目錄中

新開一台虛擬機 將這塊磁盤掛上,有 grub> 提示符則表明安裝成功

grub-install會在boot目錄中創建grub目錄,生成如下文件

e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 stage2_eltorito xfs_stage1_5

fat_stage1_5 jfs_stage1_5 stage1 ufs2_stage1_5

ffs_stage1_5 minix_stage1_5 stage2 vstafs_stage1_5

/usr/share/grub/i386-RedHat目錄中存放的有這些文件 可通過cp 將這些文件拷貝到grub中 達到同樣的效果

那麼如果再為這個磁盤分區,並把kernel 和init,rc.sysinit ,拷到相應的目錄中去 就是我們自己構建的Linux了

Copyright © Linux教程網 All Rights Reserved