grub4dos新手指南-1
对于多数没有或很少接触过linux的windows用户来说,刚开始使用grub时离不开菜单。也就是说,使用grub前,我们要准备menu.lst文件。
先讲一些最为常用的命令
help
用来显示其它命令的用法,例子:
help root
default
指定缺省的菜单项,由0开始算起,例子: default 0 该命令必须在第一个title之前指定
timeout
缺省的等待时间,如果在指定的时间(以秒为单位)不按任何键,则会启动缺省的菜单项,例子: timeout 10该命令必须在第一个title之前指定
root
用来指定根设备,例子: root (hd0,0)
rootnoverify
该命令也可以用来指定根设备。root在设置根设备前,先测试一下该分区的文件系统是否可以识别,而rootnoverify则省略这一测试。rootnoverify (hd0,0)
chainloader
把启动扇区的内容装入内存,参数+1指的是把分区的第一个扇区,例子: chainloader +1
boot
启动操作系统。在使用该命令前,必须用kernel或者chainloader把系统内核或者启动扇区/启动文件装入内存。例子: boot
在配置文件中不需要使用这个命令。这是因为GRUB在执行了菜单项的所有命令后,会自动加上boot。该命令一般在命令行界面里使用。
Grub4dos高级功能
虚拟磁盘
GRUB4DOS中的虚拟磁盘是由map命令实现的。map命令的功能介绍如下:
磁盘交换
map命令在GRUB Legacy中也存在,用作磁盘交换。
比如说,你有两只硬盘,但两只硬盘上均有可启动的系统。在第一只硬盘上启动时,不需要特殊的处理,直接用chainloader装载启动扇区就可以了。不过,如果要从第二只硬盘上启动,那么单单用chainloader是不够的,这是因为很多操作系统都缺省地从第一只硬盘上装载启动所需的文件,如果文件不在其上,系统便不能顺利地读取,从而导致启动失败。
一个原始的解决方法是在BIOS中修改启动顺序,把需要启动的硬盘放到最前面。那么,重启计算机后该硬盘便会成为第一只硬盘,从而可以正常启动,但这种方法明显很麻烦。
GRUB中的map命令可以在运行时交换磁盘,而无需修改BIOS。例如:
title Boot First Partition on Second Disk
map (hd0) (hd1)
map (hd1) (hd0)
chainloader (hd1,0)+1
boot
在该例子中,使用了map命令交换了(hd0)和(hd1)。要注意,交换是在命令boot后才生效的。因此在chainloader命令中,读取的仍然是第二只硬盘。
建立虚拟磁盘
在GRUB4DOS中,大大地扩展了map命令的用法。利用该命令可以建立虚拟磁盘,例子:
把(hd0,0)根目录下的aa.dsk文件映射为第二只硬盘,并且使用原来硬盘上的系统启动:
title Create Virtual Disk
map (hd0,0)/aa.dsk (hd1)
root (hd0,0)
chainloader +1
boot
(在该例子中,把(hd0,0)根目录下的aa.dsk文件映射为第一只硬盘,原来的第一只映射为第二只硬盘。)
从aa.dsk里虚拟出来的磁盘中启动:
title Boot From Virtual Disk
map (hd0,0)/aa.dsk (hd0)
map (hd0) (hd1)
map --hook
root (hd0,0)
chainloader +1
boot
上面提到,map命令的映射不是马上起作用的。但是要从虚拟磁盘中启动,就必须从中读取数据,因此需要使映射提前起效。map --hook的作用便是使前面map命令指定的映射立刻生效。
把(hd0,0)根目录下的aa.img文件映射为第一只虚拟软盘,并从中启动:
title Boot From Virtual Floppy
map (hd0,0)/aa.img (fd0)
map --hook
root (fd0)
chainloader +1
boot
使用这种方式进行映射后,虚拟磁盘的内容和影像文件的内容是同步的,也就是说,如果你修改了虚拟磁盘的内容,影像文件也同样被更新。如果你重启了机器,该修改的效果仍然存在。
在使用这种方式进行映射时,影像文件在磁盘上的存放必须是连续的。
GRUB4DOS中建立的虚拟磁盘,包括以下所说的内存盘,都是通过截取INT 13来实现的。因此在启动了操作系统后,如果该系统是通过INT 13来访问磁盘的,例如各类的DOS,那么在进入系统后仍然可以访问虚拟盘。如果系统是采用其它方式来访问磁盘,例如Linux、Unix和WinNT系列的操作系统,那么在进入系统后便不能访问虚拟盘。但古典系统Win9X系列比较特殊,正常情况下它使用保护模式的驱动来访问磁盘,但如果找不到合适的驱动时,win9x会使用INT 13来访问磁盘,因此,在Win9X下也可以访问虚拟磁盘。
建立虚拟内存盘
用map也可以建立虚拟内存盘,其用法和以上的很相似,你只需要在map建立虚拟盘的命令中加上--mem参数就行了。使用了该映射方式,影像文件的内容是装载到内存后才进行映射。所以你必须有足够的内存来存放影像和启动系统。而且,虚拟磁盘和影像文件是分离的,对虚拟磁盘所作的修改不会被更新到影像文件中。
在这种映射方式中,映像文件在磁盘上的存放不需要是连续的。
例子:把(hd0,0)根目录下的aa.dsk文件映射为第一只硬盘,原来的第一只映射为第二只硬盘,并且从aa.dsk里虚拟出来的磁盘中启动:
title Boot From Virtual Disk
map --mem (hd0,0)/aa.dsk (hd0)
map (hd0) (hd1)
map --hook
root (hd0,0)
chainloader +1
boot
把(hd0,0)根目录下的aa.img文件映射为第一只虚拟软盘,并从中启动:
title Boot From Virtual Floppy
map --mem (hd0,0)/aa.img (fd0)
map --hook
root (fd0)
chainloader +1
boot
自动生成MBR
映像文件有两种类型。一种是文件系统映像,它里面只包含某一个文件系统的数据。另一种是磁盘映像,它里面包含了类似于物理硬盘的结构,也就是,映像以MBR开始,然后才是文件系统的数据。对于虚拟内存盘,其结构是类似于真实硬盘的,因此在使用map命令进行映射时,应该使用磁盘影像。
GRUB4DOS考虑到了这个问题。为了让用户使用更加方便,GRUB4DOS作了如下的改进:当把磁盘影像读入内存时,程序会检测其结构,如果发现是文件系统影像,那么在它前面自动生成MBR,把它变为磁盘影像。因此,无论用户选择使用文件系统影像还是磁盘影像,装载到内存后都会变成正确的格式。
自动生成MBR。
还有一个应用,就是直接从硬盘上的装载分区,从而生成虚拟磁盘。例如:
title Load Partition From Disk
map --mem (hd0,0)+1 (hd0)
(注意:在map命令中,(hd0,0)+1是指整个(hd0,0)分区,而不是(hd0,0)的第一个扇区。这种表示只是在map命令中适用,在其它的地方,(hd0,0)+1 还是原来的意义。)
map (hd0) (hd1)
map --hook
root (hd0,0)
chainloader +1
boot
该菜单的功能是把硬盘上第一个分区装载到内存,并自动在其前面加上MBR生成虚拟磁盘。然后把该虚拟磁盘映射为第一只硬盘,原来的硬盘映射为第二只硬盘。最后,从虚拟磁盘中启动。
在使用该菜单启动后,系统分区的内容和好像和原来一样,但这时实际是使用在内存里的虚拟磁盘。对分区的修改会在重启机器后消失。
该菜单是把整个分区的内容装载到内存,要确定内存足够大,否则命令不会成功。
虚拟设备(md)
在GRUB4DOS中,你可以用设备(md)来访问整个内存,就和用(nd)访问网络设备,用(cd)来访问光盘类似。
GRUB4DOS也扩展了cat命令,它可以用--hex来以十六进制输出,也可以用--locate=STRING来在文件中搜索字符串。
例子:
cat --hex (hd0)+1 以十六进制形式显示第一只硬盘的MBR。
cat --hex (hd0,0)+1 以十六进制形式显示第一只硬盘第一个分区的启动扇区
cat --hex (md)+2 以十六进制形式显示内存开始1K的内容,这里其实是中断向量表。
cat --hex (md)0x800+1 以十六进制形式显示内存从0x800 * 512 = 1M 开始512字节的内容,也就是从扩展内存开始的512字节。
虚拟设备(rd)
用虚拟设备(md)可以访问从地址0开始的物理内存,而使用(rd)则可以访问从某一地址开始的内存。
map --rd-base=ADDR 用来设置(rd)内存设备的开始地址(以字节为单位)。
map --rd-size=SIZE 用来设置(rd)内存设备的长度(以字节为单位)。
当把grub.exe作为linux内核启动时,可以用指定初始盘。进入grub后,(rd)设备的开始地址和长度自动设置为初始盘的地址和长度。因此,可以在grub中用(rd)设备来访问初始盘。
map --ram-drive=RD
用来设定访问(rd)内存设备的BIOS设备名。缺省值是0x7F,表示(rd)对应的虚拟盘是软盘设备。如果(rd)对应的虚拟盘是硬盘设备,那么需要设置RD, 使得 0x80< RD < 0xFF。
map的其他参数
* --status
用于显示当前的磁盘映射。 map --status
* --floppies=M, --harddrives=N
指定软盘/硬盘的数目。 map --harddrvies=2 使用该命令后,本地硬盘的数目设为2。
* --memdisk-raw=RAW
RAW取值0或1(缺省是1)。RAW=0时,使用int15/ah=87h读扩展内存。RAW=1时,使用内部的函数来读扩展内存。 map --memdisk-raw=0
* --safe-mbr-hook=SMH ,--int13-scheme=SCH
这两个参数是为了在Windows 9X下能正常使用虚拟盘而设的。
SMH取值0或1(缺省是1),当你在Windows 9X下使用虚拟盘时出现问题时,可以试试使用以下的命令: map --safe-mbr-hook=0
SCH取值也是0或1(缺省是1),当你在Windows 9X下使用虚拟盘时出现问题时,也可以试试使用以下的命令: map --int13-scheme=0
* --read-only
使用了该参数后,当前进行映射的磁盘被设为只读模式。 map --mem --read-only (hd0,0)/aa.dsk (hd1)
* --fake-write
使用了该参数后,当前进行映射的磁盘看似可写,但写入的内容均被丢弃。 map --mem --fake-write (hd0,0)/aa.dsk (hd1)
grub4dos新手指南-1的更多相关文章
- grub4dos新手指南-2
Grub4dos 新手指南 一.GRUB4DOS的配置文件Grub4dos 有三个文件,grldr.grldr.mbr和menu.lst,配置文件是menu.lst,和GRUB一样.该文件一般放在和启 ...
- Markdown 新手指南
Markdown 新手指南 「简书」作为一款「写作软件」在诞生之初就支持了 Markdown,Markdown 是一种「电子邮件」风格的「标记语言」,我们强烈推荐所有写作者学习和掌握该语言.为什么 ...
- 原创教程:《metasploit新手指南》介绍及下载
原创教程:<metasploit新手指南>介绍及下载 1.1 作者简介 这份教程并不是“玄魂工作室”原创,但是我还是要力推给大家.相比那些一连几年都在问“我怎么才能入门”的人而言,我们更欣 ...
- 在不格式化原有系统盘的情况下,利用grub4dos+firadisk制作RamOS VHD Win7总结
在不格式化原有系统盘的情况下,利用grub4dos+firadisk制作RamOS VHD Win7总结在不格式化原有系统盘的情况下,用grub4dos+firadisk安装WIN7到VHD,内存大的 ...
- 抛弃优启Grub4dos和PE大多数时间可以这样用
在能够进入Windows的情况下,Grub4dos和PE大多数时间可以这样用 http://files.cnblogs.com/files/liuzhaoyzz/boot_moban.rar Grub ...
- 抛弃vboot不格盘用grub4dos+firadisk安装Ghost版XP到VHD,轻松RAMOS!
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=363198&extra=抛弃vboot不格盘用grub4dos+firadisk安 ...
- grub4dos通用菜单及相关工具包
grub4dos通用菜单及相关工具包 全套工具包(含PE.ISO,可根据需要替换删减):http://pan.baidu.com/s/1i4EjWod模板文件3.3M(不含PE.ISO):http:/ ...
- GRUB4DOS入门
目 录 第1章 GRUB4DOS入门 1 1.1 用途 1 1.2 安装 1 1.2.1 修改MBR 1 1.2.2 修改PBR 3 1.2.3 DOS 4 1.2 ...
- 为知笔记 Markdown 新手指南
为知笔记 Markdown 新手指南 http://www.wiz.cn/feature-markdown.html 时序图,流程图详细流程图语法 http://adrai.github.io/flo ...
随机推荐
- ubuntu配置LAMP
1.安装Apache sudo apt-get install apache2 如果显示未找到软件则执行sudo apt-get update(建议使用ubuntu正在支持的系统版本,不在支持的版本可 ...
- 【类不类二】Python的类变量与实例变量
在研究类的时候,难免会有很多疑问,C论坛和博客园高手如云(不知道是不是也美女如云), 搜到了这篇博文,是介绍Python的类变量和实例变量的 ! 刚好在下对self.***这种形式的实例变 量不是很理 ...
- ural 1100. Final Standings(数据结构)
1100. Final Standings Time limit: 1.0 secondMemory limit: 16 MB Old contest software uses bubble sor ...
- informix 存储过程结构
1.简介 存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行 ...
- WSAEventSelect IO复用模型
1 今天帮一学习WSAEventSelect的网友排查一个测试用服务器端recv返回0的问题,出现这个问题直观判断一般是客户端socket关闭了,可是他的代码很简单并且是本机测试,通过wireshar ...
- react学习笔记-05 lifecycle
根据React官网,react有三个生命状态:装载(Mounting),更新(updating),卸载() 一:装载 装载:componentWillMount/componentDidMount(组 ...
- python_批量修改文件名
1.在movies文件夹下面的所有文件前面都加上[可可可可] #coding:utf-8 import os movie_name = os.listdir('./movies') for temp ...
- Android;设置TextView加粗 代码设置
我用过paint的那种方式,不好使. private void setTextBold(TextView textView) { //android中为textview动态设置字体为粗体 textVi ...
- bootstrap如何自定义5等分
根据bootstrap源码改的1比5的栅格系统 /*5等分媒体查询样式begin*/ .col-xs-1-5,.col-sm-1-5,.col-md-1-5,.col-lg-1-5,.col-xs-4 ...
- 完全删除Postgresql
First: If your install isn't already damaged, you can drop unwanted PostgreSQL servers ("cluste ...