grub工具的详解

#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键,输入密码后才能操作。



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

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

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

时间: 2024-10-13 16:04:13

grub工具的详解的相关文章

Grub&initrd&initramfs详解

一.GRUB(Boot loader) 二.Grub命令行 三.Grub加密 四.进入单用户模式 五.Grub损坏,修复 六.救援模式 七.内核模块获取 八.ramdisk和initrd 九.内核信息输出的伪fs 十.initramfs和initrd的区别 一.GRUB(Boot loader)    Grub:GRand Unified Bootloader        Grub 0.x:grub legacy        Grub 1.x:grub2    grub legacy:  

Linux 性能测试工具Lmbench详解

Linux 性能测试工具Lmbench详解 2010-06-04 16:07 佚名 评测中心 字号:T | T Lmbench 是一套简易可移植的,符合ANSI/C 标准为UNIX/POSIX 而制定的微型测评工具.一般来说,它衡量两个关键特征:反应时间和带宽.Lmbench 旨在使系统开发者深入了解关键操作的基础成本. AD:2014WOT全球软件技术峰会北京站 课程视频发布 Linux 性能测试工具Lmbench 是一套简易可移植的,符合ANSI/C 标准为UNIX/POSIX 而制定的微型

Android APK优化工具Zipalign详解

最近在googl play上发布apk要优化 Android SDK中包含一个"zipalign"的工具,它能够对打包的应用程序进行优化.在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率.因此,这种方式能够让应用程序和整个系统运行得更快.我们强烈推荐在新的和已经发布的程序上使用zipalign工具来得到优化后的版本 一.这里下载android SDK,只为了用他的zipalign工具,当然什么时候大家有兴趣了用来开发两个小程序也是很简单的 A

【转】Linux命令工具 top详解

Linux命令工具 top详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最"敏感"的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序:而且该命令的很多特性都可以通过交互式命令或者在个人定制

抓包工具Fidder详解(主要来抓取Android中app的请求)

抓包工具Fidder详解(主要来抓取Android中app的请求) 今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以抓取PC上开发web时候的数据包,而且可以抓取移动端(Android,Iphone,WindowPhone等都可以),太强大了,以前搞web的时候,知道有一款叫做HttpWatch工具,可以抓取web的请求数据包的,但是和这款神器来

linux下grub相关知识详解

一.grub相关知识详解 (1)grub:GRand Unified Bootloader grub 0.x :grub legacy grub 1.x : grub2 grub legacy: stage1:mbr的bootloader阶段 stage1_5:mbr之后的扇区,让stage1的bootloader能够识别stage2所在分区的文件系统 stage2:磁盘分区(/boot/grub/) 配置文件:/etc/grub.conf-->/boot/grub/grub.conf stag

Linux命令工具 top详解

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最"敏感"的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序:而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定. 常在linux

轻量级高可用实现工具--keepalived详解

一 .keepalived简介 keepalived:它的诞生最初是为ipvs(一些服务,内核中的一些规则)提供高可用性的,最初最主要目的是能够自主调用ipvsadm来生成规则,并且能够自动实现将用户访问的地址转移到其他节点上进行实现的. keepalived:核心包含两个ckechers和VRRP协议. ckeckers #检查服务检查reserved的健康状况的,基于脚本也可以服务本身的健康状况.这里是实现ipvs后端健康状况的检测的. VRRP # Virtual Router Redun

xtrabackup备份工具使用详解

xtrabackup备份工具使用详解 innobackupex: 需要MySQL服务处于运行状态 [percona]下载 wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.8/RPM/rhel6/x86_64/percona-xtrabackup-2.1.8-733.rhel6.x86_64.rpm wget https://www.percona.com/downloads/percona-toolkit/2.2.