grub应用
2016-01-02 17:50
183 查看
GRUB(Boot Loader)
一、 grub legacy:
1. stage1: mbr
2. stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;
3. stage2:磁盘分区(/boot/grub/)
二、 配置文件:/boot/grub/grub.conf <-- /etc/grub.conf
(一) stage2及内核等通常放置于一个基本磁盘分区;
1. 功用:
(1) 提供菜单、并提供交互式接口
![](http://s5.51cto.com/wyfs02/M00/79/12/wKiom1aHipvwMLAFAAAUKR-wWDs721.png)
e: 编辑模式,用于编辑菜单;
![](http://s3.51cto.com/wyfs02/M00/79/11/wKioL1aHis2RKIbTAAAcWAJo9ZM119.png)
c: 命令模式,交互式接口;
![](http://s1.51cto.com/wyfs02/M00/79/11/wKioL1aHiu-gPPdjAAAPlk_6ncA772.png)
(2) 加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
(3) 为菜单提供了保护机制
为编辑菜单进行认证
为启用内核或操作系统进行认证
(二) 如何识别设备:
格式: (hd#,#)
hd#: 磁盘编号,用数字表示;从0开始编号
#: 分区编号,用数字表示; 从0开始编号
(三)grub的命令行接口
help: 获取帮助列表
![](http://s2.51cto.com/wyfs02/M01/79/11/wKioL1aHi0PhC_g9AAAuTqK5Lg4152.png)
help KEYWORD: 详细帮助信息
![](http://s5.51cto.com/wyfs02/M01/79/12/wKiom1aHi0Ly25EAAAAvu7jePHw300.png)
find (hd#,#)/PATH/TO/SOMEFILE:
![](http://s2.51cto.com/wyfs02/M01/79/11/wKioL1aHi4-ya6Z_AAATgP7F62M663.png)
root (hd#,#)
kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数;
initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk;
boot: 引导启动选定的内核;
(四)手动在grub命令行接口启动系统:
grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot
![](http://s3.51cto.com/wyfs02/M02/79/12/wKiom1aHi7rgaKU3AAAaPuJgofw505.png)
(五) 配置文件:/boot/grub/grub.conf
![](http://s1.51cto.com/wyfs02/M02/79/11/wKioL1aHjDiDfG6EAABpZTqQUuU281.png)
1. 配置项:
default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;
timeout=#:指定菜单项等待选项选择的时长;
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
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: 启动选定的内核或操作系统时进行认证;
![](http://s1.51cto.com/wyfs02/M00/79/12/wKiom1aHjF2BQbEOAABwbRghDdE995.png)
![](http://s2.51cto.com/wyfs02/M00/79/11/wKioL1aHjJ3D12W8AAATVbZ-_Eo831.png)
![](http://s5.51cto.com/wyfs02/M01/79/11/wKioL1aHjLqglO4XAAAUlfGi-0g361.png)
(六) grub-md5-crypt命令
![](http://s3.51cto.com/wyfs02/M02/79/11/wKioL1aHjF-jV6Q2AAAQX3hug6I642.png)
(七)进入单用户模式:
1. 编辑grub菜单(选定要编辑的title,而后使用e命令);
2. 在选定的kernel后附加
1, s, S或single都可以;
3. 在kernel所在行,键入“b”命令;
三、如何在新硬盘安装grub
1. 添加一块新硬盘
2. 在新磁盘上新建分区,第二个分区为swap分区
![](http://s1.51cto.com/wyfs02/M02/79/12/wKiom1aHjxPRfxiwAAAzKWJHwiU178.png)
3. 格式化三个分区
![](http://s4.51cto.com/wyfs02/M00/79/11/wKioL1aHj3TDJfSWAABJtu1mad8818.png)
![](http://s4.51cto.com/wyfs02/M00/79/12/wKiom1aHj1PiJQjxAABQaWq-5U8811.png)
![](http://s4.51cto.com/wyfs02/M02/79/12/wKiom1aHj1STctIYAAAWRlHTM9c941.png)
5.在mnt下创建boot目录,将/dev/sdb1挂在到其上
![](http://s2.51cto.com/wyfs02/M01/79/12/wKiom1aHj9aAKLxQAAATycoLV7Q218.png)
6.在sdb上安装grub
![](http://s3.51cto.com/wyfs02/M00/79/11/wKioL1aHkETTj_cCAAAwEy5cIsQ818.png)
![](http://s5.51cto.com/wyfs02/M01/79/12/wKiom1aHkFmjkoBHAAAfIOxM9Nc598.png)
7.复制kernrl以及initrd到/mnt/boot下
![](http://s2.51cto.com/wyfs02/M02/79/12/wKiom1aHkTWRiBvVAAASKOGTCM0477.png)
8.编写grub的配置文件/mnt/boot/grub.grub.conf
![](http://s2.51cto.com/wyfs02/M00/79/12/wKiom1aHkcbxUSXZAAAWcqh-8v0041.png)
9.创建根文件系统以及在其下面创建所必须的目录
![](http://s4.51cto.com/wyfs02/M02/79/12/wKiom1aHkm6htjjkAABjtBSaVGA206.png)
10.查看/bin/bash以来的库,以及将这些库文件复制到其相对应的目录中
![](http://s4.51cto.com/wyfs02/M01/79/12/wKiom1aHkxDT8YikAABV1evgMrQ950.png)
11.切换至新建的根,验证其是否可用,只不过bash中没有其他可用的命令,只有内建命令可用
![](http://s3.51cto.com/wyfs02/M01/79/11/wKioL1aHk4fxIo_EAAARyckXV2s838.png)
12.重新编译配置文件,因为init不再是sbin下的而是bin下的bash
![](http://s1.51cto.com/wyfs02/M00/79/13/wKiom1aHlEfzhVfeAAAaoj9VgD8702.png)
13.在此系统上新建磁盘,在选择磁盘的时候要选择自己刚才新建的磁盘而不是以前的磁盘
![](http://s2.51cto.com/wyfs02/M01/79/11/wKioL1aHlKXTAaonAAA1rhJicvw918.png)
14.然后选择启动就可以看到自己编译的配置文件的信息
![](http://s5.51cto.com/wyfs02/M01/79/13/wKiom1aHla7RYJHuAAAVBEdKPrM883.png)
![](http://s2.51cto.com/wyfs02/M02/79/11/wKioL1aHle3ilcq4AAAbWLNW2GI209.png)
15.在启动之前进入kernel中添加selinux=0,一定的是在init之前
![](http://s3.51cto.com/wyfs02/M00/79/13/wKiom1aHllDhyhf4AAASyWtBRG8801.png)
16.其中系统就可以看到自己安装的简易的系统了
![](http://s2.51cto.com/wyfs02/M00/79/11/wKioL1aHlq_TLlAaAAATeDf8Otk264.png)
四、安装grub:
1.备份一下grub文件
![](http://s3.51cto.com/wyfs02/M00/79/13/wKiom1aHlvvCxcWdAAAamkU5FQQ418.png)
2.破坏grub文件
![](http://s4.51cto.com/wyfs02/M02/79/11/wKioL1aHlzzyBG8vAAAZp5Mor6Y540.png)
(1) grub-install
grub-install --root-directory=ROOT /dev/DISK
![](http://s5.51cto.com/wyfs02/M01/79/11/wKioL1aHl2uAo0EQAAApDY9NJyU313.png)
(2) grub,在root设备上必须事先存在grub目录,而且其下的问价都必须得存在
grub> root (hd#,#)
grub> setup (hd#)
![](http://s4.51cto.com/wyfs02/M00/79/11/wKioL1aHl4fw4JyLAABReMtOoF4666.png)
五、紧急救援模式
1. 再次破环grub
![](http://s3.51cto.com/wyfs02/M00/79/13/wKiom1aHmKvzcjTRAAAiyWX0arM563.png)
2.连接光盘镜像,重新启动,第三个选项就是救援模式,也可以敲Esc键,在命令行接口输入linux rescue,也可以进入紧急救援模式:
![](http://s5.51cto.com/wyfs02/M00/79/11/wKioL1aHmRmTfG3EAAR8fekecWw718.png)
3.设置语言
![](http://s1.51cto.com/wyfs02/M01/79/11/wKioL1aHmZnS73L6AAAgWjaYcY8099.png)
4.设置键盘类型
![](http://s3.51cto.com/wyfs02/M02/79/13/wKiom1aHmZnzZW_LAAAfNc4MpI4090.png)
5.是否连接网络,如果要从网络中下载的话就要选择启动,如果自己明确知道本地有的话可以不用选择。
![](http://s1.51cto.com/wyfs02/M02/79/11/wKioL1aHml6zyTNTAAAWY9Kx0rw767.png)
6.紧急救援模式会尝试在本地磁盘寻找是否有操作系统,如果找到的话,就会把根挂载至当前启动的这个小的救援模式的/mnt/sysimsge目录下,就可以到sysimage目录下找到这些文件了。
![](http://s1.51cto.com/wyfs02/M01/79/13/wKiom1aHmzGBXkPaAAAvopjN_5k800.png)
7.显示找到系统,而且根挂载至当前启动的这个小的救援模式的/mnt/sysimsge目录下,用的时候直接切换至sysimage目录下即可
![](http://s1.51cto.com/wyfs02/M00/79/11/wKioL1aHm8XyTf39AAAfwQPMvLw116.png)
![](http://s1.51cto.com/wyfs02/M02/79/11/wKioL1aHm_CBZvvNAAAT7q-51Mg219.png)
8.启动shell,就会出现提示符
![](http://s4.51cto.com/wyfs02/M01/79/13/wKiom1aHnAPBR4OkAAAUBGC84Rw500.png)
![](http://s5.51cto.com/wyfs02/M02/79/13/wKiom1aHnDvzMDM0AAAV7WcyTTY508.png)
9.切换根至/mnt/sysimsge目录
![](http://s4.51cto.com/wyfs02/M00/79/11/wKioL1aHnJmAgKN0AAAJxbm0FbI959.png)
10.安装grub
![](http://s3.51cto.com/wyfs02/M01/79/11/wKioL1aHnMSRqspHAAARO9hmMSw751.png)
11.然后就可以重新启动系统
![](http://s1.51cto.com/wyfs02/M01/79/13/wKiom1aHnMvyWgxfAAAFTUPrTTI965.png)
本文出自 “blankmanba” 博客,请务必保留此出处http://shuanglong.blog.51cto.com/10743732/1730894
一、 grub legacy:
1. stage1: mbr
2. stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;
3. stage2:磁盘分区(/boot/grub/)
二、 配置文件:/boot/grub/grub.conf <-- /etc/grub.conf
(一) stage2及内核等通常放置于一个基本磁盘分区;
1. 功用:
(1) 提供菜单、并提供交互式接口
![](http://s5.51cto.com/wyfs02/M00/79/12/wKiom1aHipvwMLAFAAAUKR-wWDs721.png)
e: 编辑模式,用于编辑菜单;
![](http://s3.51cto.com/wyfs02/M00/79/11/wKioL1aHis2RKIbTAAAcWAJo9ZM119.png)
c: 命令模式,交互式接口;
![](http://s1.51cto.com/wyfs02/M00/79/11/wKioL1aHiu-gPPdjAAAPlk_6ncA772.png)
(2) 加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
(3) 为菜单提供了保护机制
为编辑菜单进行认证
为启用内核或操作系统进行认证
(二) 如何识别设备:
格式: (hd#,#)
hd#: 磁盘编号,用数字表示;从0开始编号
#: 分区编号,用数字表示; 从0开始编号
(三)grub的命令行接口
help: 获取帮助列表
![](http://s2.51cto.com/wyfs02/M01/79/11/wKioL1aHi0PhC_g9AAAuTqK5Lg4152.png)
help KEYWORD: 详细帮助信息
![](http://s5.51cto.com/wyfs02/M01/79/12/wKiom1aHi0Ly25EAAAAvu7jePHw300.png)
find (hd#,#)/PATH/TO/SOMEFILE:
![](http://s2.51cto.com/wyfs02/M01/79/11/wKioL1aHi4-ya6Z_AAATgP7F62M663.png)
root (hd#,#)
kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数;
initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk;
boot: 引导启动选定的内核;
(四)手动在grub命令行接口启动系统:
grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot
![](http://s3.51cto.com/wyfs02/M02/79/12/wKiom1aHi7rgaKU3AAAaPuJgofw505.png)
(五) 配置文件:/boot/grub/grub.conf
![](http://s1.51cto.com/wyfs02/M02/79/11/wKioL1aHjDiDfG6EAABpZTqQUuU281.png)
1. 配置项:
default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;
timeout=#:指定菜单项等待选项选择的时长;
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
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: 启动选定的内核或操作系统时进行认证;
![](http://s1.51cto.com/wyfs02/M00/79/12/wKiom1aHjF2BQbEOAABwbRghDdE995.png)
![](http://s2.51cto.com/wyfs02/M00/79/11/wKioL1aHjJ3D12W8AAATVbZ-_Eo831.png)
![](http://s5.51cto.com/wyfs02/M01/79/11/wKioL1aHjLqglO4XAAAUlfGi-0g361.png)
(六) grub-md5-crypt命令
![](http://s3.51cto.com/wyfs02/M02/79/11/wKioL1aHjF-jV6Q2AAAQX3hug6I642.png)
(七)进入单用户模式:
1. 编辑grub菜单(选定要编辑的title,而后使用e命令);
2. 在选定的kernel后附加
1, s, S或single都可以;
3. 在kernel所在行,键入“b”命令;
三、如何在新硬盘安装grub
1. 添加一块新硬盘
2. 在新磁盘上新建分区,第二个分区为swap分区
![](http://s1.51cto.com/wyfs02/M02/79/12/wKiom1aHjxPRfxiwAAAzKWJHwiU178.png)
3. 格式化三个分区
![](http://s4.51cto.com/wyfs02/M00/79/11/wKioL1aHj3TDJfSWAABJtu1mad8818.png)
![](http://s4.51cto.com/wyfs02/M00/79/12/wKiom1aHj1PiJQjxAABQaWq-5U8811.png)
![](http://s4.51cto.com/wyfs02/M02/79/12/wKiom1aHj1STctIYAAAWRlHTM9c941.png)
5.在mnt下创建boot目录,将/dev/sdb1挂在到其上
![](http://s2.51cto.com/wyfs02/M01/79/12/wKiom1aHj9aAKLxQAAATycoLV7Q218.png)
6.在sdb上安装grub
![](http://s3.51cto.com/wyfs02/M00/79/11/wKioL1aHkETTj_cCAAAwEy5cIsQ818.png)
![](http://s5.51cto.com/wyfs02/M01/79/12/wKiom1aHkFmjkoBHAAAfIOxM9Nc598.png)
7.复制kernrl以及initrd到/mnt/boot下
![](http://s2.51cto.com/wyfs02/M02/79/12/wKiom1aHkTWRiBvVAAASKOGTCM0477.png)
8.编写grub的配置文件/mnt/boot/grub.grub.conf
![](http://s2.51cto.com/wyfs02/M00/79/12/wKiom1aHkcbxUSXZAAAWcqh-8v0041.png)
9.创建根文件系统以及在其下面创建所必须的目录
![](http://s4.51cto.com/wyfs02/M02/79/12/wKiom1aHkm6htjjkAABjtBSaVGA206.png)
10.查看/bin/bash以来的库,以及将这些库文件复制到其相对应的目录中
![](http://s4.51cto.com/wyfs02/M01/79/12/wKiom1aHkxDT8YikAABV1evgMrQ950.png)
11.切换至新建的根,验证其是否可用,只不过bash中没有其他可用的命令,只有内建命令可用
![](http://s3.51cto.com/wyfs02/M01/79/11/wKioL1aHk4fxIo_EAAARyckXV2s838.png)
12.重新编译配置文件,因为init不再是sbin下的而是bin下的bash
![](http://s1.51cto.com/wyfs02/M00/79/13/wKiom1aHlEfzhVfeAAAaoj9VgD8702.png)
13.在此系统上新建磁盘,在选择磁盘的时候要选择自己刚才新建的磁盘而不是以前的磁盘
![](http://s2.51cto.com/wyfs02/M01/79/11/wKioL1aHlKXTAaonAAA1rhJicvw918.png)
14.然后选择启动就可以看到自己编译的配置文件的信息
![](http://s5.51cto.com/wyfs02/M01/79/13/wKiom1aHla7RYJHuAAAVBEdKPrM883.png)
![](http://s2.51cto.com/wyfs02/M02/79/11/wKioL1aHle3ilcq4AAAbWLNW2GI209.png)
15.在启动之前进入kernel中添加selinux=0,一定的是在init之前
![](http://s3.51cto.com/wyfs02/M00/79/13/wKiom1aHllDhyhf4AAASyWtBRG8801.png)
16.其中系统就可以看到自己安装的简易的系统了
![](http://s2.51cto.com/wyfs02/M00/79/11/wKioL1aHlq_TLlAaAAATeDf8Otk264.png)
四、安装grub:
1.备份一下grub文件
![](http://s3.51cto.com/wyfs02/M00/79/13/wKiom1aHlvvCxcWdAAAamkU5FQQ418.png)
2.破坏grub文件
![](http://s4.51cto.com/wyfs02/M02/79/11/wKioL1aHlzzyBG8vAAAZp5Mor6Y540.png)
(1) grub-install
grub-install --root-directory=ROOT /dev/DISK
![](http://s5.51cto.com/wyfs02/M01/79/11/wKioL1aHl2uAo0EQAAApDY9NJyU313.png)
(2) grub,在root设备上必须事先存在grub目录,而且其下的问价都必须得存在
grub> root (hd#,#)
grub> setup (hd#)
![](http://s4.51cto.com/wyfs02/M00/79/11/wKioL1aHl4fw4JyLAABReMtOoF4666.png)
五、紧急救援模式
1. 再次破环grub
![](http://s3.51cto.com/wyfs02/M00/79/13/wKiom1aHmKvzcjTRAAAiyWX0arM563.png)
2.连接光盘镜像,重新启动,第三个选项就是救援模式,也可以敲Esc键,在命令行接口输入linux rescue,也可以进入紧急救援模式:
![](http://s5.51cto.com/wyfs02/M00/79/11/wKioL1aHmRmTfG3EAAR8fekecWw718.png)
3.设置语言
![](http://s1.51cto.com/wyfs02/M01/79/11/wKioL1aHmZnS73L6AAAgWjaYcY8099.png)
4.设置键盘类型
![](http://s3.51cto.com/wyfs02/M02/79/13/wKiom1aHmZnzZW_LAAAfNc4MpI4090.png)
5.是否连接网络,如果要从网络中下载的话就要选择启动,如果自己明确知道本地有的话可以不用选择。
![](http://s1.51cto.com/wyfs02/M02/79/11/wKioL1aHml6zyTNTAAAWY9Kx0rw767.png)
6.紧急救援模式会尝试在本地磁盘寻找是否有操作系统,如果找到的话,就会把根挂载至当前启动的这个小的救援模式的/mnt/sysimsge目录下,就可以到sysimage目录下找到这些文件了。
![](http://s1.51cto.com/wyfs02/M01/79/13/wKiom1aHmzGBXkPaAAAvopjN_5k800.png)
7.显示找到系统,而且根挂载至当前启动的这个小的救援模式的/mnt/sysimsge目录下,用的时候直接切换至sysimage目录下即可
![](http://s1.51cto.com/wyfs02/M00/79/11/wKioL1aHm8XyTf39AAAfwQPMvLw116.png)
![](http://s1.51cto.com/wyfs02/M02/79/11/wKioL1aHm_CBZvvNAAAT7q-51Mg219.png)
8.启动shell,就会出现提示符
![](http://s4.51cto.com/wyfs02/M01/79/13/wKiom1aHnAPBR4OkAAAUBGC84Rw500.png)
![](http://s5.51cto.com/wyfs02/M02/79/13/wKiom1aHnDvzMDM0AAAV7WcyTTY508.png)
9.切换根至/mnt/sysimsge目录
![](http://s4.51cto.com/wyfs02/M00/79/11/wKioL1aHnJmAgKN0AAAJxbm0FbI959.png)
10.安装grub
![](http://s3.51cto.com/wyfs02/M01/79/11/wKioL1aHnMSRqspHAAARO9hmMSw751.png)
11.然后就可以重新启动系统
![](http://s1.51cto.com/wyfs02/M01/79/13/wKiom1aHnMvyWgxfAAAFTUPrTTI965.png)
本文出自 “blankmanba” 博客,请务必保留此出处http://shuanglong.blog.51cto.com/10743732/1730894
相关文章推荐
- Android OpenGL ES 应用(二) 纹理
- APM浅析
- RTAI 例子
- Ubuntu 下配置protobuf
- POJ 3046 Ant Counting(dp—多重集组合数问题)
- ListView setOnItemClickListener无效原因分析
- 罗马数字
- ListView setOnItemClickListener无效原因分析
- Http编程之HttpClient
- oracle数据库名,服务名,实例名的区别
- BCache源码浅析之一基本使用与代码模块
- enum类型的大小
- BZOJ-1934 Vote 善意的投票 最大流+建图
- UEFI不小心误删EPS分区里的grub引导恢复
- BZOJ-1934 Vote 善意的投票 最大流+建图
- 【tyvj1034】尼克的任务
- 将子类对象引用赋值给超类对象 JAVA 编译时多态性
- Reactive Cocoa 处理多个网络请求的问题
- ip地址的分类以及子网的划分
- oracle中常用包介绍以及包的用法