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

grub工具的详解

时间:2015-04-19 06:42:28      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:grub linux kernel forever21

   #Forever twenly one ,I have a lot of things to do.The morning sun always don‘t wake me.

   阴天有小雨,我坐在17楼的窗前开始思考一台电脑是如何启动的,它怎么就那么神奇可以做那么多的事情,给我们的世界带来这么大的变化,虽然它只是一台没有生命的机器。假如它能够说话,它会对我说什么呢?它会说喊我出去玩吗或者喊我留下来陪它吗?它会思考我现在的烦恼吗?它会笑着对我唱歌吗?是我想太多还是它需要我去想它?都不是吧,是我一直离不开你,让我魂牵梦绕的你,我要请求上帝给你生命,再赐给你一个灵魂,一双美丽的眼睛可以看到我,一双灵敏的耳朵可以听到我说的话,一张可以说话的嘴巴,最好赋予你甜美的声音,这样你就可以把自己唱给我听了,唱米店,唱梵高,唱你的forever21......

    一台没有生命的你该怎样唤醒呢?我想是需要先给你通电吧,有了电就有了色彩,再给你装一个系统那是你的灵魂,最后再用魔法将你体内的灵魂激活吧,grub召唤术,苏醒吧mysun!linux!

技术分享

    


     linux启动流程:

   加电自检--->加载主板BIOS--->引导主扇区MBR--->加载内核kernel至内存--->启动跟文件系统init设定系统运行等级--->执行rc.sysinit进行系统初始化--->启动内核模块--->根据系统等级开始启动各种服务--->执行/etc/rc.d/rc.local个性化设置文件--->执行/bin/login

技术分享


     从系统启动流程中grub的位置我们可以看出,它就是大召唤术,将主机硬件与系统内核链接起来。

grub是gun项目研发的多操作系统启动程序,它可以允许一台主机上存在多种不同的系统,你可以从中选一个加载启动,这一切的功能都是它提供的。

      grub的位置:grub分为三个部分

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

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

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

技术分享


   grub的两种形式

一、图形界面模式

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

技术分享按住e键选择,esc键退出选择,

技术分享

按e键进入命令行模式编辑

按enter键保存编辑,按o新添一行,d删除此行,b启动系统

二、命令行模式

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

技术分享


    grub的配置文件

    /boot/grub/grub.conf

技术分享default=0表示默认启动此配置文件里的系统

timeout=5表示系统启动前倒数5秒

splashimage定义grub图形界面背景图片的

hiddenmenu表示开启隐藏grub

title 定义系统名称

      root (hd0,0)定义grub的根为hd0上的0分区

      kernel 定义内核版本

      initrd 定义辅助内核启动的驱动程序

一般我们自己制作grub的时候只需要其中关键几项

timeout、title、root、kernel、initrd


   grub硬盘设备格式与系统的表示不一样

    系统中IDE硬盘用hd,scsi硬盘用sd,软盘用fd

    grub第一块硬盘表示为(hd0),第一块硬盘的第一个分区表示为(hd0,0)#仅以centos6为例,其他系统表示方式略有不同。

    文件表示法( , ) /path/to/file


    grub的工作在图形界面下:

    选择一个系统名称(title定义的名称)例如CentOS 6 (2.6.32-504.el6.x86_64),grub就会从root定义的根分区中查找kernel和initrd;kernel和initrd文件存放在与grub同级的根目录/boot下

技术分享然后就开始装载内核,最后启动系统。

   grub的工作在命令行模式下:

先用root指定grub的跟分区为(hd0,0)

在指定启动的内核为kernel (hd0,0)/vmlinuz-2.6.32.....

再指定启动辅助驱动initrd (hd0,0)/initramfs-2.6.32.....

最后输入boot启动系统内核

使用help获得帮助信息,使用find查找文件版本号

技术分享


     我们自己如何制作自己的grub呢?

很简单的,只需要几个步骤:

    1.给linux主机添加一块新硬盘,例如/dev/sdb

    2.给新硬盘分区,例如分为/dev/sdb1和/dev/sdb2

    3.新建挂载点/mnt/boot /mnt/sysinit 分别挂载sdb1,sdb2

    4.格式化两个分区为ext4文件系统

    5.执行grep-install --root-directory=/mnt /dev/sdb 在sdb上装载grub并把/mnt/boot设置为grub的根分区(命令中不能指定/mnt/boot,它会自动寻找boot,如果指定了它会在boot下在建boot)

    6.下载你想要的内核和对应的辅助驱动程序文件到/mnt/boot目录中

技术分享

    7.在/mnt/boot/grub目录下新建grub.conf文件,编辑其内容,此步骤就是设置grub的配置文件

技术分享

    8.在/mnt/sysinit目录下创建很多目录,例如mkdir -pv /mnt/sysinit/root etc bin sbin lib lib64 home tmp usr boot media dev var sys proc

技术分享

    9.复制一个bash到bin下,例如

技术分享    10.使用ldd /bin/bash命令查看运行bash所需要的库文件,将所有需要的库文件复制到对应的sysinit/lib64下面

       技术分享   11.使用chroot 命令测试一下新的根下的命令好不好用

     例如:我们先将/bin/ls命令复制到/mnt/bin/ls

           使用ldd /bin/ls获得ls所需的库文件

           将所有的库文件复制到对应的/mnt/lib64下

           最后使用chroot /mnt/sysinit /bin/bash 命令(意思是将/mnt/sysinit当作根,运行根下            的/bin/bash)

           运行ls,命令成功执行。

技术分享   12.运行sync命令将数据同步到磁盘上

   13.关闭当前主机

   14.在虚拟机上新建一个linux主机,不给它装系统,使用已有硬盘给此linux创建一块硬盘,选我们       刚才操作的sdb那块硬盘

   15.启动此虚拟机linux,看看是不是成功了,我们不但自己制作了一个gurb,还制作了一个什么功能       都没有的小系统(除了我们添加的ls命令)。此系统无法登陆,退出后没有在登录的选项,我们       只能关机重启了,这些都不是重点,重点是我们的grub成功了!!!!

技术分享


   注意:因为启动主机进入系统之前可以先进入grub,grub支持选择系统等级(系统分为0-6级,0关机,1单用户模式,2关闭网络接入的多用户模式,3正常模式,4预留模式,5启用桌面系统模式,6重启),如果在grub下选择了第一等级,那么允许用户不使用密码就可以用root身份登陆系统中。

例如:进入grub图形界面,e选择系统名,光标移到kernel按e进入设置界面,敲一个空格后面补上数字1就表示设定1单用户模式登录,这样不用密码就可以登录系统了

技术分享

    为了避免这个安全漏洞,grub支持加密

    使用grub-md5-crypt PASSWD 命令可以创建一个grub密码,将复制到grub.conf文件中的title上面     一行表示给grub加密,复制到下面一行,表示给kernel加密

   技术分享配置文件中设置为:password --md5 密码

技术分享给grub设置了密码,当我们启动主机进入grub界面的时候需要按p键,输入密码后才能操作。


    三月的烟雨飘摇的南方,你坐在你空空的米店

    你一手拿着苹果一手拿着命运,在寻找你自己的香

               我还是喜欢大胖子宋东野翻唱的这首《米店》















本文出自 “铜锣湾” 博客,请务必保留此出处http://wuhf2015.blog.51cto.com/8213008/1634869

grub工具的详解

标签:grub linux kernel forever21

原文地址:http://wuhf2015.blog.51cto.com/8213008/1634869

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