Chinaunix首页 | 论坛 | 博客
  • 博客访问: 503172
  • 博文数量: 119
  • 博客积分: 5054
  • 博客等级: 大校
  • 技术积分: 1305
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-03 13:13
文章分类

全部博文(119)

文章存档

2011年(4)

2010年(115)

我的朋友

分类: LINUX

2010-01-04 15:11:08

摘自《Ubuntu部落》

硬件基础

一块硬盘,它起始的一部分扇区为主引导扇区,包括 MBR(主引导纪录)和 DPT(分区表,您可以阅读分区概念章节中相关内容)

每个分区起始的一部分扇区,为分区引导扇区。

在分区引导扇区之后的部分,为文件系统的索引,文件系统通过它定位文件在硬盘上的位置。不同的文件系统采用不同的索引,例如 FAT 文件系统使用文件分配表和目录区。

绝大多数操作系统,对硬盘的读写操作,通过文件系统来完成,因此引导扇区中的内容,我们不能够在文件系统中进行操作,而需要专用软件,比如引导管理器。

我们对文件进行修改后,操作系统会将文件系统索引中的内容同步。

系统引导流程

1. 系统启动时,首先引导至 MBR,将控制权移交安装在 MBR 中的引导管理器(Windows 使用 NTLDR,Linux 通常用 Grub)

2. 引导管理器读取分区表

3. 引导管理器读取分区中的配置文件,并按配置文件中预设的参数运行

例如,Grub 读取“/boot/grub/menu.lst”文件中内容,将可引导系统通过菜单显示

4. 引导管理器根据您的选择,可能会有如下活动

加载内核,启动 Linux 系统检查活动分区,并引导它(单一 Windows 系统)

读取相应分区的引导扇区,将控制权移交该扇区中的引导管理器,

Ubuntu 系统在安装 Grub 时,会提问您安装在 MBR 或者分区引导扇区中。如果将 Grub 安装在分区引导纪录中,您必须确保 MBR 中的引导管理器能够正确的引导至分区引导扇区。

如果您在 MBR 中使用的是 Windows 的引导管理器 NTLDR,完成这件工作会非常困难,因而我们推荐您使用 Grub。

Grub 介绍

Grub 主要有以下功能:

菜单式选择

命令行模式

支持开机画面

支持大硬盘

其它的功能还有很多,就不一一介绍了。

您可以运行命令 grub 启动它。会显示一些版本信息和使用提示,当然还有命令提示符,如下:

GNU GRUB   version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported.   For
the    first   word, TAB lists possible command
completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub>

您可以使用 TAB 键补全命令和路径,这非常重要,因为 Grub 中路径表示方式与操作系统是不同的,您可能比较陌生,所以尽量用 TAB 补全它,既方便,也不容易

出错。您可以在 grub> 提示符后按 TAB 键,会将所有可用的命令显示出来。

呵呵,是不是有点晕,命令可真不少啊!!!

其实我们会用到的命令只有两个,

root
setup

Grub 术语

在分区概念章节里,我们已经介绍了 Linux 系统中表示分区的方法 /dev/hda5

/dev/hdMN        M 为 a 起始的小写字母,表示硬盘序号;N 为 1 起始的数字,表示分区序号

Grub 中使用的表示方法为 hd0,1

hdX,Y            X 为 0 起始的数字,表示硬盘序号;Y 为 0 起始的数字,表示分区序号

您得留意它们之间的区别:

N 从 1 开始计数,X 和 Y 从 0 开始计数

N 为 1~4,它是一个主分区;N 为 5 或大于 5,它是第(N-4)个逻辑分区。Y 按分区在硬盘上排列的顺序排列,无论它表示的是主分区还是逻辑分区。

举例来说:

                  主      主      逻      逻      主
/dev/hdMN        hda1   hda2    hda5    hda6    hda3
hdX,Y            hd0,0  hd0,1   hd0,2   hd0,3   hd0,4

现在我们来看 root 和 setup 命令的使用:

grub>root (hd0,1)

这个命令将 Grub 的根分区定位为 “(hd0,1)”

grub>setup (hd0)

这个命令表示将 Grub 安装在“(hd0)”,因为没有指定安装的分区,所以安装位置为 MBR

Grub 的根分区 为 Grub 配置文件 /boot/grub/menu.lst 所在分区。假如您单独为 /boot目录挂载了一个分区,那么 Grub 的根分区通常为您系统中 /boot 目录

所在的分区。搞错了根分区,Grub 就不能正确读取配置文件,自然不能正确引导。

引导分区 ,Windows 等系统的引导分区为它的安装分区,Linux 系统的引导分区为它的/boot 目录所在的分区

系统根目录所在分区 ,Linux 根目录 / 的挂载分区。Linux 系统的分区挂载信息保存在文件系统分配表 /etc/fstab 文件中

Grub 首先读取根分区中的 /boot/grub/menu.lst 文件,并转到引导分区,如果是 Windows等系统,则将控制权移动分区引导扇区中的启动管理器。如果是

Linux 系统,则加载内核和设备,并根据 /etc/fstab 文件的内容挂载文件系统。

看这个例子:(假设 Grub 安装在 MBR 中)

title       Ubuntu
root        (hd0,0)
kernel      (hd0,1)/boot/vmlinuz-2.6.15-25-686
root=/dev/sda3 ro splash vga=0x31b
initrd      (hd0,1)/boot/initrd.img-2.6.15-25-686
boot

Grub 的安装位置为 (hd0)

root (hd0,0) ,这一行表示 Grub 的根分区为第一块硬盘的第一个分区 (hd0,0) ,它读取该分区中的配置文件 grub/menu.lst

kernel 和 initrd 行中的 (hd0,1) ,表示当前系统的 /boot 目录挂载到第一块硬盘的第二个分区 (hd0,1)

kernel 行的 root=/dev/sda3 ,表示当前系统的 / 目录挂载到第一块硬盘的第三个分区(hd0,2) ,内核根据该分区中的 /etc/fstab 文件来挂载文件系统

Grub 配置文件

/boot/grub/menu.lst 文件,主要由一些下面这样的块构成的

title       Ubuntu
root        (hd0,2)
kernel      (hd0,2)/boot/vmlinuz-2.6.15-25-686
root=/dev/sda3 ro splash vga=0x31b
initrd      (hd0,2)/boot/initrd.img-2.6.15-25-686
boot
title       Windows xp
root        (hd0,0)
makeactive
chainloader +1

每一块代表一个操作系统,包含下面里几个部分

title xxx 标题,title 和分隔符后的内容为 Grub 菜单中显示的条目

root (hdX,Y) 引导分区,可以留空,默认为 grub/menu.lst 所在分区(根分区),可以使用 grub>root (hdX,Y) 命令设置,或者在您安装系统时自动设置

如果您计划引导至分区引导扇区,如 Windows 或者 Unix 系统(Unix 和 Linux 系统,您需要选择将引导管理器安装到分区中),那么需要这样配置

makeactive     设置活动分区,系统默认设置,可以删除

chainloader +1 链式引导,不要动它。

如果以这种方式引导系统,上面 root (hdX,Y) 这一行通常需要配置, (hdX,Y) 为您的系统所在的分区。假如您的 Windows 在第一块硬盘的第一个分区,则这样写 root (hd0,0)

如果您引导的是 Linux 系统(没有在分区中安装引导管理器,而是安装到 MBR),则需要这样配置

kernel      (hd0,2)/boot/vmlinuz-2.6.15-25-686
root=/dev/sda2 ro splash vga=0x31b
initrd      (hd0,2)/boot/initrd.img-2.6.15-25-686 设备镜像文件,与上一行保持一致
boot            不要动它
kernel 这一行最关键,它控制系统内核的加载。行末以 ro 起始的部分为参数(ro 只读,splash 显示启动画面,vga 设定启动屏幕分辨率)

之前的部分可以写为这种形式:

kernel     (hdX,Y)/boot/vmlinuz    root=/dev/sdMN

(hdX,Y) 通常不是必须的, 如果您安装了多个 Linux 系统, 或者 /boot目录与根目录 /不在一个分区,则应把它写为 /boot 目录所在分区。而后面的root=/dev/sdMN 为系统根目录 / 所在的分区。

initrd 这一行的 (hdX,Y) 与上一行保持一致。

Grub 安装

上面已经向您介绍了 Grub 的安装,不过更多的侧重理论。现在我们来实践一下,假设您的系统不能引导,您可以尝试下面的方法:
1、

a.、找一张 Ubuntu 的 LiveCD (Knoppix 也是不错的选择)

b.、也可以使用安装光盘,启动后在 boot 提示符后输入 linux rescue ,回车进入救援模式。

2、如果您拥有 root 权限,命令行提示符为 # ,如果是普通用户,则为 $ 。

a、在救援模式下,通常你已经具有了 root 权限

b、如果是 LiveCD 且没有 root 权限,    请在终端中输入 su 命令切换到 root,    会提问你 root的密码。如果不知道 root 密码,可以使用这个命令 sudo su ,只要你知道自己的密码,并且你在 ID 在 sudoer 列表中就可以了。

3、 在终端中输入 grub ,会进入到 Grub 的提示符界面

a、 输入命令 root (hd 后按 Tab 键,屏幕上就会列出所有可用选项。比如我的是这样的:

Possible disks are: hd0 hd1

这表示我装了两块硬盘,如果你只有一块硬盘的话,那么一定是 hd0。

在 root(hd 后输入 0 ,按 Tab ,会自动补上一个 , ,现在你输入的内容成为这样:

root(hd0,

再按 Tab 键,会列出所有可用选项,我的是这样的。

Possible partitions are:
Partition num: 0, Filesystem type
unknown, partition type 0x7
Partition num: 1, Filesystem type is
fat, partition type 0xc
Partition num: 2, Filesystem type is
reiserfs, partition type 0x83
Partition num: 4, Filesystem type is
reiserfs, partition type 0x83
Partition num: 5, Filesystem type
unknown, partition type 0x82
Partition num: 6, Filesystem type
unknown, partition type 0x7
Partition num: 7, Filesystem type is
fat, partition type 0xc

输入你的选择,比如为 1 , Tab 一次后,结果是这样的:

root (hd1,1)

现在回车

b、输入命令

setup (hd0)

将 grub 安装在 mbr 中

c、quit 命令退出 GRUB

Grub 使用

命令行

在 Grub 启动菜单中,您可以选择您要的选项,按下 e 键,进入到命令行模式修改您的启动参数,完成后回车

按 b 键,Grub 将以您修改后的参数引导系统。

其它

在 Grub 启动菜单中,按下 c 进入命令行模式

按下 d 删除当前选中的项

阅读(1006) | 评论(0) | 转发(0) |
0

上一篇:Gdb 调试器(简要介绍)

下一篇:Linux基础

给主人留下些什么吧!~~