linux 引导 lilo grub grub2 比较,使用GRUB2制作简单的系统引导

本文只是简单说下在实际操作grub2中自己遇到的概念不清的问题。

首先你要了解grub2是干什么用的,其中有一些是关于存储设备的知识。

在存储设备中(硬盘,有些U盘),有一个512字节的区域是叫做MBR,

MBR全称(Master boot Record)是一些存储设备的绝对0扇区,MBR是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它,但可以通过命令来修改和重写。它主要由”主引导程序区“,”硬盘分区表“,”扇区结束标志字“三部分组成,

下面图是拷贝别人的东西,说的比较详尽。http://blog.csdn.net/lanxinju/article/details/5714124

MBR由三部分构成:

1.主引导程序代码,占446字节

2.硬盘分区表DPT,占64字节

3.主引导扇区结束标志AA55H

标准 MBR 结构

地址

描述

长度

(字节)

Hex

Oct

Dec

0000

0000

0

代码区

440

(最大 446)

01B8

0670

440

选用软盘标志

4

01BC

0674

444

一般为空值; 0x0000

2

01BE

0676

446

标准 MBR 分区表规划

(四个16 byte的主分区表入口)

64

01FE

0776

510

55h

MBR 有效标志:

0xAA55

2

01FF

0777

511

AAh

MBR, 总大小: 446 + 64 + 2 =

512 这样我们的主引导程序就放在446字节的区域,可想而知这块引导程序受到空间的限制,所以功能定位就比较清楚了,因为大小的限制,这段程序不足以引导起我们的内核,它扮演了一个“接力棒”的角色,BIOS执行完,把执行大权交给这片区域,这片区域代码完成启动的第一阶引导,主要是加载启动分区的 boot或者在/分区加载boot目录,读取第二阶段引导代码,第二阶段引导代码加载内核,解压缩等。(明显是看不到胜利的主)

可以生成这段引导程序的软件有不少,常见的有LILO和GRUB,但貌似GRUB呼声很高,比较好用,优点可以自己去搜索。

使用GRUB可以帮助我们生成这段引导代码,下面说下如何做这件事件。

首先下载GRUB源代码,最新的GRUB2的源代码,

./configure -prefix- 配置一些参数

make     编译

make install  安装

grub依赖其它的库,电脑中不存在的话,少什么装什么就可以了。

安装完成生成一些工具,确认可以使用这些工具后。

其中重要的是

grub-install 在指定的存储设备上设定引导程序

grub-mkconfig 生成grub.cfg

grub-install 后面跟着的是你在使用fdisk -l看到的插到系统中存储设备的名称。

例如你把U盘插入系统,fdisk -l下

设备名称是/dev/sda4

那么执行

grub-install /dev/sda4 在U盘上就生成了那段程序。这个时候不要把自己的系统盘写一次,否则后果很严重。

生成程序后,程序执行结果和配置文件有很大关系,所以还需要生成配置文件,GRUB2的配置文件一般是生成的,GRUB1自己手动写也可以。

生成什么样的配置文件和grub下的/etc/default/grub里面定义的内容有关系。

下面的东西也是拷贝别人,可以参考下

# 设定默认启动项,推荐使用数字

GRUB_DEFAULT=0

# 注释掉下面这行将会显示引导菜单

#GRUB_HIDDEN_TIMEOUT=0

# 黑屏,并且不显示GRUB_HIDDEN_TIMEOUT过程中的倒计时

GRUB_HIDDEN_TIMEOUT_QUIET=true

# 设定超时时间,默认为10秒

# 设定为-1取消倒计时

GRUB_TIMEOUT=10

# 获得发行版名称(比如Ubuntu, Debian)

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

# 将会导入到每个启动项(包括recovery mode启动项)的'linux'命令行

GRUB_CMDLINE_LINUX=""

# 同上,但是只会添加到 normal mode 的启动项

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

# 取消注释以允许图形终端(只适合grub-pc)

#GRUB_TERMINAL=console

# 分辨率设定,否则采用默认值

#GRUB_GFXMODE=640x480

# 取消注释以阻止GRUB将传递参数 "root=UUID=xxx" 传递给 Linux

#GRUB_DISABLE_LINUX_UUID=true

# 取消启动菜单中的“Recovery Mode”选项

#GRUB_DISABLE_LINUX_RECOVERY="true"

# 当GRUB菜单出现时发出鸣音提醒

#GRUB_INIT_TUNE="480 440 1"

设置合适配置后,需要更新下找到,up开头的命令。

执行命令

grub-mkconfig -o 跟路径名称

你想把配置文件放到u盘的boot目录下,后面的路径就是可以进到U盘boot的路径

这时,会根据你当前的系统情况生成个配置文件,一般这个文件需要修改。

在配置文件中也有设置root的位置的地方,这个位置就是你启动另外的系统时,在grub命令行模式下敲打ls之类的命令后显示的存储设备名称,有可能你系统挂载好几个存储设备,选择你内核所在的那个存储设备的分区即可。把内核和文件系统指定正确后,启动系统,一切OK。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值