码迷,mamicode.com
首页 > 系统相关 > 详细

谢烟客---------Linux之grub应用

时间:2017-08-30 10:05:03      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:linux

Grub基础、工作流程、grub配置文件、grub功能、grub内置命令行接口

grub安装、grub修复

双系统安装(先Windows后Linux,以免windows NTloader会覆盖Linux loader)


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


配置格式

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

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


2)破坏mbr的stage1

[root@localhost ~]# dd of=/dev/sda if=/dev/zero bs=446 count=1


3)用grub命令行修复 

1)、进入grub命令行

[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)、设置引导设备位置

grub> root (hd0,0)
root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83


3)、给设备安装grub

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)重启验证

grub> quit  
quit
[root@localhost ~]# reboot
[root@localhost ~]#

技术分享


2、开机失效: rescue模式

1)备份mbr

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


2)破坏mbr的stage1

[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



本文出自 “Reading” 博客,请务必保留此出处http://sonlich.blog.51cto.com/12825953/1960959

谢烟客---------Linux之grub应用

标签:linux

原文地址:http://sonlich.blog.51cto.com/12825953/1960959

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!