Linux操作系统启动管理器-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

[[email protected] ~]# fdisk /dev/sdb         //给磁盘分区,分区过程如下图所示(红框标识)

//让内核读取磁盘分区

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

至此磁盘分区准备完成!!

3、创建/boot目录,挂载/dev/sdb1,具体操作过程如下

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

[[email protected] ~]# cp /boot/vmlinuz-2.6.32-504.el6.x86_64 /mnt/boot/vmlinuz
[[email protected] ~]# cp /boot/initramfs-2.6.32-504.el6.x86_64.img /mnt/boot/initramfs.img

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

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

[[email protected] sysroot]# cp /bin/bash /mnt/sysroot/bin/
[[email protected] sysroot]# ldd /bin/bash

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

将ls及依赖的库文件复制到/mnt/sysroot目录下面对应的目录中,测试如下

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

[[email protected] ~]# sync
[[email protected] ~]# sync
[[email protected] ~]# sleep 10
[[email protected] ~]# shutdown -h now

6、将磁盘拆下来放到一个新的虚拟机上,测试如下

时间: 2024-09-30 15:33:36

Linux操作系统启动管理器-grub的相关文章

Linux操作系统启动管理器GRUB

转载:http://58vpn.blog.sohu.com/309434214.html [GRUB是什么]GNU GRUB(简称"GRUB")是一个来自GNU项目的启动引导程序.GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统.GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数.GRUB是在计算机启动后运行的第一个程序,他是用来负责加载.传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任

Linux之操作系统启动管理器-GRUB

[GRUB是什么] GNU GRUB(简称"GRUB")是一个来自GNU项目的启动引导程序.GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统.GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数.GRUB是在计算机启动后运行的第一个程序,他是用来负责加载.传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出,系统引导的其它部份,比如系统的初始化及启动过程则完全由内核来控制完成.

浅谈-LINUX 操作系统启动过程

LINUX 操作系统启动过程 通过一段时间的学习已经对linux有了一定的了解,接下来就开始研究一下linux 操作系统的启动过程吧.当然这是为了让大家比较容易发现linux启动过程中容易发生问题的地方以及解决办法. 目录 一.简述 二.详解 1.BIOS加电自检 2.读取MBR 三.加载内核 1.Grub引导分为三个阶段 2.Stage1.5阶段存在的原因 3.详解三阶段引导过程 四.调用init进程 1.init的功能作用 2.init初始化流程 3.init 执行 run-level 的各

Linux逻辑卷管理器(LVM)

LVM基础 通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM),用户可以在系统运行时动态调整文件系统的大小,把数据从一块硬盘重定位到另一块硬盘,也可以提高I/O操作的性能,以及提供冗余保护,它的快照功能允许用户对逻辑卷进行实时的备份. 对一般用户来讲,使用最多的是动态调整文件系统大小的功能.这样,你在分区时就不必为如何设置分区的大小而烦恼,只要在硬盘中预留出部分空闲空间,然后根据系统的使用情况,动态调整分区大小. 在LVM中,主要有三个概念: 物理卷(Ph

linux操作系统启动流程和光盘镜像制作

1.简述linux操作系统启动流程 POST (加电自检):自检主要硬件设备如:CPU.内存.硬盘是否正常,以及输入输出设备是否存在问题等. BIOS(Boot Sequence):BIOS(基本的输入输出系统)装载在硬件芯片CMOS之上,自检时会启动这个程序,并根据CMOS上的配置信息去读取其他的硬件信息,检测正常之后进行硬件设备的初始化. 读取MBR:引导加载程序,在MBR(主引导记录)中,主要功能是识别,加载系统的核心文件,并提交到内存中运行来启动对应的系统. Kernel运行:Kerne

linux操作系统启动流程一

linux系统的启动流程: POST --> BootSequence(BIOS) --> bootloader --> kernel [-->ramfs] --> rootfs[ro]--> /sbin/init --> 设定默认运行级别 --> 进行系统初始化 --> 并行执行ctrl+alt+del热键功能定义,系统服务的开启和关闭,电源的管理,dbus管理 -->登录提示符 在我们linux系统的启动过程中存在着这样的启动流程,下面我们一

Linux操作系统启动流程

一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下几步:1)开机BIOS自检,加载硬盘.2)读取MBR,进行MBR引导.3)grub引导菜单(Boot Loader).4)加载内核kernel.5)启动init进程,依据inittab文件设定运行级别6)init进程,执行rc.sysinit文件.7)启动内核模块,执行不同级别的脚本程序.8)执行/etc/rc.d/rc.local9)启动mingetty,进入系统登陆界面. linux系统安装时,如

Linux操作系统启动流程浅析

启动BIOS程序 当电源键按下之后,BIOS(Basic nput Output System)就会由主板上的闪存来运行.BIOS程序会把自己解压缩到系统的内存之中,然后读取CMOS(Complementary Metal Oxide Semiconductor)内存储的信息(例如系统时间,启动设备顺序等)来对系统进行配置.同时进行自检(POST:Power-On Self Test).检测系统的硬件是否存在问题,自检通过之后,BIOS会加载第一启动设备的MBR(Master Boot Reco

linux 系统中多重操作系统引导管理器grub学习

注:以下学习均在X86架构的CPU下搭建完成的linux系统. 一.linux系统启动流程简介 POST开机自检-->加载BIOS-->读取MBR-->启动Boot Loader/Grub程序-->加载内核-->用户层init依据inittab文件来设定运行等级-->init进程执行rc.sysinit-->启动内核模块-->执行不同运行级别的脚本程序-->执行/etc/rc.d/rc.local-->执行/bin/login程序,进入登录状态