Grub的安装和使用

rel="File-List" href="file:///V:%5CTEMP%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///V:%5CTEMP%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///V:%5CTEMP%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">

在使用grub前,最重要的事情之一就是理解这个程序是如何引用设备的,如系统硬盘驱动器、分区等。对于配置grub实现多操作系统的引导,这方面的信息是很重要的。

 

grub的设备命名

       系统的第一个硬盘驱动器被grub称为(hd0),在它上面的第一个分区被称为(hd0,0),第二个分区被称为(hd0,1),以此类推即可。第二个硬盘驱动器上的第一个分区则被称为(hd1,0)。无论是并口硬盘还是串口硬盘或是SCSI硬盘,在grub都是用hd来标识;而不像在Linux中使用mount挂载硬盘时,SCSI硬盘和串口硬盘要使用sd来标识。在Linux中,并口硬盘用hd标识,第一块并口硬盘则在hd后加a,以此类推到第n块硬盘为hdn;而第k块硬盘的第1个分区则被称为hdk1。若是串口硬盘将hd换成sd即可。注意grub中硬盘名称与硬盘分区名称与Linux中的差异,并要知道如何转换。

 

grubroot device

Linux 中,当谈到root device时,通常是指主Linux分区。但是,grub有它自己的root device定义。grubroot device分区是保存Linux内核的分区。这可能是Linux的主分区,也可能不是。实际上,人们可以将grubroot device分区看作是grub的当前工作路径。一旦使用grub就一定要使用grubroot命令指定一个root device分区。

 

grub的引导过程

       实际上grub在安装时是把一个小于512bytestage1文件装入了MBR(假设grub安装在MBR)。当磁盘引导时会运行MBR中引导程序,如果是stage1的话,则会按照指定的路径载入Linuxgrub文件夹下的stage2stage2再对grub文件夹下的grub.conf文件进行解析,从而显示启动界面、读入Linux kernel、加载硬件驱动,直至系统启动完成。

       grub对操作系统的引导可以分为两类:直接引导和间接引导。许多的Unix和类Unix系统,如Linux的各种版本都可以被直接引导,而Windows操作系统则不能被直接引导,只能够进行间接引导。

       这里只讨论GNU/Linux的直接引导,过程如下:

1.       使用root命令将root device设置为操作系统镜像(image)所在的分区,并挂载该分区;

2.       使用kernel命令载入该系统的kernel image并为该image提供参数;

3.       使用initrd命令将各个硬件的驱动载入内存中,以驱动这些硬件。initrd 就是initial ramdisk的缩写,是将内存作当作虚拟磁盘使用。initrd的作用主要是在系统核心还没有载入之前,先以Kernel modules的方式将系统的硬件设备(scsi卡,网卡,声卡等等的驱动程序)先载入内存中,以驱动这些装置。所以当你将自己的硬件配备的驱动程序编译成模块,而非编入系统核心时,就必须使用initial ramdisk

4.       使用boot命令启动。

接下来讨论间接引导。间接引导的实质就是通过grub载入其他操作系统自己的启动引导加载程序,是一种链式的引导方式。过程如下:

1.       使用rootnoverity命令将root device设置为操作系统镜像(image)所在的分区,但并不挂载,以防grub在挂载不能识别的文件系统时出错;

2.       使用makeactive命令激活grub当前的root device。首先,在现代的操作系统中,这一步是没有必要的;其次,这只能在grub当前的root device是磁盘的主分区的时候才有效;

3.       使用chainloader +1命令载入指定的操作系统的启动引导程序。+1表示读入grub当前的root device分区的512字节(该分区的第一个扇区)的启动区;

4.       使用boot命令启动。

 

grub的命令行

       前面已经谈到了许多命令行的命令了,如rootkernel等。这一部分主要是讨论如何在一个陌生的系统中通过grub的命令行来引导系统。

       Linux的引导为例。通过上面的讲解,可以知道首先要找到系统镜像所在的分区。有两个命令可以实现:catfind。在grub中,cat和在Linux中比较相似,可以显示指定文件的内容。但需要注意的是,若不指出分区,那么cat只会在目前的grubroot device分区里寻找。find则与Linux中的find命令有所不同:在grub中,find将在所有挂载的分区中搜寻指定的文件和文件夹。要命的是必须给出完整的文件路径和文件名,这直接导致它在grub中变成了鸡肋。所以常用catTab来寻找系统镜像和其他必须的文件。

在找到kernelinitrd命令所必需的文件后,还必须给出kernel载入的kernel image的必要参数。下面是一些常用的kernel参数:

ro    表示kernel是只读的

root=/dev/*     root指定的是Linuxroot分区,*Linux的分区表示法而非grub的,因为这是kernel而非grub的参数。

root=LABEL=              这里需要指明的是Linuxroot分区 / LABEL表示使用/etc/fstab中为根文件系统指定的标签(label)

quiet              不输出启动信息

rhgb        图形方式启动

single      单用户模式。在单用户模式下,用“passwd –d 账户名“命令更改口令。其他如更换显示器,而无法进入图形界面等其他原因需要进入其他运行级,都可以这么做了。进入linux单用户模式后vi /etc/shadow,然后将第一行,即以root开头的一行中root:后和下一个:前的内容删除,最后保存并reboot重启。

 

Windows XP引导Linux

dd if=/dev/(grub引导程序stage1所在分区)  of=路径/Linux.lnx bs=512 count=1

将生成的Linux.lnx弄到Windows XPC盘根目录下,在boot.ini新建一行,写入C:/Linux.lnx=" Linux "即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值