Grub基础、工作流程、grub配置文件、grub功能、grub内置命令行接口
grub安装、grub修复、
双系统安装(先Windows后Linux,以免windows NTloader会覆盖Linux loader)
splashimage修改请见上篇
GRUB Grand Uniform Bootloader
CentOS5,6 grub1 0系,设备或分区编号从0开始
CentOS7 grub2 1系,设备或分区编号从1开始
CentOS5,6 grub应用:
一、grub的工作流程
stage1 mbr中
stage1.5 mbr之后的扇区,存储stage2所在分区的驱动
stage2 提供菜单,加载内核和ramdisk至内存,移交控制权
二、grub配置文件
通常boot(stage2)在一个普通的分区上:
boot为一个独立的分区, /可以为普通分区或lvm。访问boot通过挂载在根中实现
内核: kernel /vmlinuz, initrd /initramfs
boot和根在同一个分区,/必须为普通分区
内核: kernel /boot/vmlinuz, initrd /boot/initramfs
配置路径
/etc/grub.conf -> ../boot/grub/grub.conf
/boot/grub/menu.lst -> ./grub.conf
配置格式
1
2
3
4
5
6
7
8
9
10
|
default=0
## 默认启动菜单
timeout=5
## 等待用户选择菜单的超时时长
splashimage=(hd0,0)
/meiling
.xpm.gz
# 菜单的背景图片 640X480 14位索引色
hiddenmenu
## 是否隐藏菜单
password --md5 STRING
## 菜单加密功能,STRING由grub-md5-crypt 或 openssl passwd -1 -salt STRING 生成
title CentOS 6 (2.6.32-696.el6.i686)
## 定义菜单项的标题
root (hd0,0)
## 引导设备位置 左0: 第一个磁盘设备,右0:第一个分区
kernel
/vmlinuz-2
.6.32-696.el6.i686 ro root=
/dev/mapper/myvg-lv_root
rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=myvg
/lv_swap
KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet rd_NO_DM rd_LVM_LV=myvg
/lv_root
rhgb quiet
initrd
/initramfs-2
.6.32-696.el6.i686.img
password --md5 STRING
|
注意: root,kernel,initd格式的缩进
三、grub的功能
提供菜单 : tile TITLE
加载用户选择的kernel及ramdisk : kernel path parameters , initrd path
为菜单提供保护机制(kernel和菜单编辑认证) : password --md5 STRING
四、grub的内置命令行接口
root (hd#,#) 指定引导设备在哪个设备的哪个分区上。#从0开始,表示1.
kernel /vmlinuz PARAMETERS
当stage1.5找到stage2时,内核只识别stage2所在的分区,此分区为/,所以分区的vmlinuz路径为,/vmlinuz
PARAMETERS:
ro 以只读方式挂载root=PATH指明的路径的根
root=<路径> 指明root的位置
quiet 静默模式
selinux=0 不启动selinux
init=/path/to/somefile 开机后,init程序为哪个。默认为/sbin/init
1,s,S,single 单用户模式
<更多参数: google: kernel command line parameters>
initrd /initramfs 指定initramfs的路径
五、grub的安装
安装grub: grub-install命令 重新安装grub stage1,1.5,2
grub-install命令
grub-install --root-directory=DIR DEIVCE
--root-directory=DIR 指向boot目录的上一级目录
DEVICE 给哪个设备安装grub
1)关机
2)添加新的磁盘
3)启动虚拟机
4)进入命令行
5)查看磁盘
6)分区
7)格式化
8)挂载
9)安装grub
10)复制bash程序及其相关的库
11) 给出配置文件
12)同步
13)关机
# shutdown -h now
13)查看第二个磁盘的名字
13)、新建虚拟机
14)启动新建的虚拟机
15)启动OK
六、grub的修复
1、在命令行中: grub 只是stage1(MBR 512)被破坏时,才能修复.
2、开机失效: rescue模式
1、在命令行中: grub
1)备份mbr
1
|
[root@localhost ~]# dd
if
=/dev/sda of=/root/mbr.bak bs=
512
count=
1
|
2)破坏mbr的stage1
1
|
[root@localhost ~]# dd of=/dev/sda
if
=/dev/zero bs=
446
count=
1
|
3)用grub命令行修复
1)、进入grub命令行
1
2
3
4
5
6
7
8
9
10
|
[root@localhost ~]# grub
Probing devices to guess BIOS drives. This may take a long time.
GNU GRUB version
0.97
(640K lower / 3072K upper memory)
[ Minimal BASH-like line editing
is
supported. For the first word, TAB
lists possible command completions. Anywhere
else
TAB lists the possible
completions of a device/filename.]
grub>
|
2)、设置引导设备位置
1
2
3
|
grub> root (hd0,
0
)
root (hd0,
0
)
Filesystem type
is
ext2fs, partition type
0x83
|
3)、给设备安装grub
1
2
3
4
5
6
7
8
9
10
|
grub> setup (hd0)
setup (hd0)
Checking
if
"/boot/grub/stage1"
exists... no
Checking
if
"/grub/stage1"
exists... yes
Checking
if
"/grub/stage2"
exists... yes
Checking
if
"/grub/e2fs_stage1_5"
exists... yes
Running
"embed /grub/e2fs_stage1_5 (hd0)"
...
27
sectors are embedded.
succeeded
Running
"install /grub/stage1 (hd0) (hd0)1+27 p (hd0,0)/grub/stage2 /grub/grub.conf"
... succeeded
Done.
|
4)重启验证
1
2
3
4
|
grub> quit
quit
[root@localhost ~]# reboot
[root@localhost ~]#
|
2、开机失效: rescue模式
1)备份mbr
1
|
[root@localhost ~]# dd
if
=/dev/sda of=/root/mbr.bak bs=
512
count=
1
|
2)破坏mbr的stage1
1
|
[root@localhost ~]# dd of=/dev/sda
if
=/dev/zero bs=
446
count=
1
|
3)重启
4)rescue模式救援
1)、挂载光盘 关机 --> 编辑虚拟主机 --> CD/DVD(IDE) --> 使用ISO镜像文件 --> 浏览选择DVD光盘
2)、开机进入界面 开启虚拟机
保证光盘连接
3)、选择黄色标记的行或ESC,输入 linux rescue 后回车
4)、选择语言
OK
5)、键盘类型
OK
6)、是否需要启动网络
NO
7)、临时将/挂载在/mnt/sysimage中
Continue
8)、告知已经找到磁盘,需要使用root,运行chroot /mnt/sysimage即可
OK
9)、
10)、选择第一个
11)、打印一个shell提示符
12)、切换至原root根目录
13)、修复
14)、重启测试
七、双系统安装
1、新建一个虚拟机
2、添加U盘安装windows
3、安装LInux系统
语言、键盘、主机名、时区、root的密码
分区、bootloader及默认启动项、程序包选择
安装Windows系统
3、安装Linux
选择Linux系统安装光盘
选择安装Linux
路过
设定安装时的语言
设定键盘语言
选择基本存在设备
设定主机名
设定时区
设定ROOT密码
自定义分区
自定中,不要编辑/dev/sda1,(XP系统盘)
默认引导设定
选择自定义最小化安装
安装过程
起动CentOS
账号: root
密码: 键入之前设定的密码
重启测试Windows