+++++++grub应用及双系统共存

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)关机

+++++++grub应用及双系统共存


2)添加新的磁盘

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


3)启动虚拟机

+++++++grub应用及双系统共存


4)进入命令行

+++++++grub应用及双系统共存


5)查看磁盘

+++++++grub应用及双系统共存


6)分区

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


7)格式化

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


8)挂载

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


9)安装grub

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


10)复制bash程序及其相关的库

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

11) 给出配置文件

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


12)同步

+++++++grub应用及双系统共存


13)关机

# shutdown -h now


13)查看第二个磁盘的名字

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


13)、新建虚拟机

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


14)启动新建的虚拟机

+++++++grub应用及双系统共存


15)启动OK

+++++++grub应用及双系统共存



六、grub的修复

1、在命令行中: grub 只是stage1(MBR 512)被破坏时,才能修复. 

2、开机失效: rescue模式


1、在命令行中: grub

1)备份mbr

1
[[email protected] ~]# dd if=/dev/sda of=/root/mbr.bak bs=512 count=1


2)破坏mbr的stage1

1
[[email protected] ~]# 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
[[email protected] ~]# 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
[[email protected] ~]# reboot

+++++++grub应用及双系统共存


2、开机失效: rescue模式

1)备份mbr

1
[[email protected] ~]# dd if=/dev/sda of=/root/mbr.bak bs=512 count=1


2)破坏mbr的stage1

1
[[email protected] ~]# dd of=/dev/sda if=/dev/zero bs=446 count=1


3)重启

+++++++grub应用及双系统共存


4)rescue模式救援

1)、挂载光盘 关机 --> 编辑虚拟主机 --> CD/DVD(IDE) --> 使用ISO镜像文件 --> 浏览选择DVD光盘


2)、开机进入界面 开启虚拟机 

+++++++grub应用及双系统共存

保证光盘连接



3)、选择黄色标记的行ESC,输入 linux rescue 后回车

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


4)、选择语言

+++++++grub应用及双系统共存

OK


5)、键盘类型

+++++++grub应用及双系统共存

OK

+++++++grub应用及双系统共存


6)、是否需要启动网络

+++++++grub应用及双系统共存

NO 


7)、临时将/挂载在/mnt/sysimage中

+++++++grub应用及双系统共存

Continue

+++++++grub应用及双系统共存


8)、告知已经找到磁盘,需要使用root,运行chroot /mnt/sysimage即可

+++++++grub应用及双系统共存

OK


9)、

+++++++grub应用及双系统共存


10)、选择第一个

+++++++grub应用及双系统共存


11)、打印一个shell提示符

+++++++grub应用及双系统共存


12)、切换至原root根目录

+++++++grub应用及双系统共存


13)、修复

+++++++grub应用及双系统共存

14)、重启测试

+++++++grub应用及双系统共存


+++++++grub应用及双系统共存




七、双系统安装

1、新建一个虚拟机

2、添加U盘安装windows

3、安装LInux系统

    语言、键盘、主机名、时区、root的密码

    分区、bootloader及默认启动项、程序包选择


安装Windows系统

+++++++grub应用及双系统共存+++++++grub应用及双系统共存

3、安装Linux

选择Linux系统安装光盘

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

进入后ESC,选择CDROM

+++++++grub应用及双系统共存


选择安装Linux

+++++++grub应用及双系统共存


路过

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


+++++++grub应用及双系统共存


设定安装时的语言

+++++++grub应用及双系统共存


设定键盘语言

+++++++grub应用及双系统共存


选择基本存在设备

+++++++grub应用及双系统共存


设定主机名

+++++++grub应用及双系统共存


设定时区

+++++++grub应用及双系统共存


设定ROOT密码

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

自定义分区

+++++++grub应用及双系统共存



自定中,不要编辑/dev/sda1,(XP系统盘)


默认引导设定

+++++++grub应用及双系统共存


选择自定义最小化安装

+++++++grub应用及双系统共存


安装过程 

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存



起动CentOS

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


账号: root

密码: 键入之前设定的密码


+++++++grub应用及双系统共存


+++++++grub应用及双系统共存

+++++++grub应用及双系统共存


重启测试Windows

  • +++++++grub应用及双系统共存










本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1960959,如需转载请自行联系原作者