码迷,mamicode.com
首页 > 其他好文 > 详细

grub应用

时间:2015-10-02 06:40:41      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:grub

一、GRUB简介

   GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

=========================================================================================


二、GRUB的组成

grub分为三个部分

   第一部分被放在MBR中前446字节里(MBR共512字节,中间54字节存放磁盘分区信息,最后2字节判断MBR是否损坏),主板启动时首先会读取MBR里的内容,所以grub是系统内核启动之前就启动的。

   第二部分放在MBR之后的扇区中,存放的是文件系统的驱动程序,可以在系统内启动分区没挂载的情况下读取磁盘内里的指定内容

   第三部分就是存在磁盘分区中的内容,里面是grub的配置信息,内核文件,这里就是gurb的根分区

==============================================================================


三、GRUB的功能

1、提供菜单,并提供交互式接口(e: 进入编辑模式 在内核后添加single,后按b就可以进入单用户模式、c:进入命令行接口模式)

2、选择要启动的内核或系统(允许传递引导参数给内核,选择界面可隐藏)

3、为编辑功能提供保护机制(选择运行指定的内核得先输入密码、使用e命令得先输入密码)

=============================================================================


四、 grub的两种形式(使用虚拟机演示)

1、图形模式

    系统启动之前开始出现倒数秒数的时候,按esc可以进入grub界面(一般是隐藏的,会启动默认的系统)选择我们想要启动的不同系统。我这里只有一个系统,所以只有一项可以选

技术分享

按e进入编辑模式

技术分享

按上下选择要编辑的项,按e对其编辑,按enter键保存编辑,按o新添一行,d删除此行,b启动系统


2、命令行模式  

系统启动前倒数秒数的时候按esc进入图形界面,之后按c键会进入命令行模式

技术分享

技术分享


grub的命令行接口 :

help:获得帮助列表  

root (hd#,#) 设置哪儿块磁盘为根        

kernel /path/to/kernel_file :设置本次启动时用到的内核文件 vmlinuz(z表示压缩的意思);额外还可以添加许多内核支持使用的cmdline参数

initrd /path/to/initrd_file : 设定为选定的内核提供额外文件的ramdisk;要和内核版本一样

boot:引导启动选定的内核

五、GRUB的配置文件: /boot/grub/grub.conf

配置项:支持命令行补全(tab)

default=#: //设定默认启动的菜单项

timeout=#: //指定菜单项等待选项选择的时长

splashimage=(hd#,#)/path/to/xpm_pic_file :   //指明菜单背景图片所在路径(gimp 640*680)

hiddenmenu :     //隐藏菜单

password [--md5] string :   //菜单编辑认证

title TITLE :           //定义菜单项“标题”

         root (hd#,#): //grub查找stage2及kernel文件所在设备分区;为grub的“根”

kernel /path/to/vmlinuz_file [parameters]:  //启动内核并设置额外参数

initrd /path/to/initramfs_file:   //内核匹配的ramfs文件

         password [--md5] string :    //启动选定的内核或操作系统时进行认证 【grub-md5-crypt 生成密码】

=========================================================================================


六、安装GRUB命令

使用grub-install命令

   # grub-install [--root-directory=DIR] DEVICE

    --root-directory=指定的路径必须是内核及initrd文件所在的分区的挂载点的父目录,且此挂载点必须叫boot

========================================================================================


七、实例,安装GRUB至令一个磁盘,并使用这个磁盘启动一个带bash的linux的系统

1、给虚拟机新建1个20G的磁盘,过程图解:



技术分享

技术分享


技术分享

技术分享


技术分享

技术分享


2、启动虚拟机,并给新的磁盘分3个区

/dev/sdb1(/boot):100M 文件系统使用ext4

/dev/sdb2(swap):2G

/dev/sdb3(/):5G 文件系统使用ext4


技术分享


技术分享



[root@pyhon ~]# mke2fs -t ext4 /dev/sdb1      //格式化分区,文件系统为ext4
[root@pyhon ~]# mke2fs -t ext4 /dev/sdb3
[root@pyhon ~]# mkswap /dev/sdb2


[root@pyhon ~]# mkdir /mnt/boot
[root@pyhon ~]# mount /dev/sdb1 /mnt/boot/
[root@pyhon ~]# grub-install --root-directory=/mnt /dev/sdb


技术分享


技术分享

4、创建/sysroot目录,挂载/dev/sdb3,具体操作过程如下



[root@pyhon ~]# mkdir /mnt/sysroot
[root@pyhon ~]# mount /dev/sdb3 /mnt/sysroot/
[root@pyhon ~]# cd /mnt/sysroot/
[root@pyhon sysroot]# mkdir -pv bin boot dev etc home lib lib64 media mnt opt proc root sbin srv sys tmp usr var
[root@pyhon sysroot]# cp /bin/bash /mnt/sysroot/bin/
[root@pyhon sysroot]# ldd /bin/bash

[root@pyhon sysroot]# cp /lib64/libtinfo.so.5 /mnt/sysroot/lib64/    
[root@pyhon sysroot]# cp /lib64/libdl.so.2 /mnt/sysroot/lib64/
[root@pyhon sysroot]# cp /lib64/libc.so.6 /mnt/sysroot/lib64/
[root@pyhon sysroot]# cp /lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64/


技术分享



5、修改/mnt/boot/grub/grub.conf文件,并关闭此虚拟机

技术分享

[root@pyhon ~]# sync
[root@pyhon ~]# sync
[root@pyhon ~]# sleep 10
[root@pyhon ~]# shutdown -h now


技术分享

技术分享


技术分享



技术分享

技术分享


grub应用

标签:grub

原文地址:http://shandianzhu.blog.51cto.com/936901/1699860

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