Grub加载iso文件.docx

上传人:b****8 文档编号:28466319 上传时间:2023-07-14 格式:DOCX 页数:32 大小:29.25KB
下载 相关 举报
Grub加载iso文件.docx_第1页
第1页 / 共32页
Grub加载iso文件.docx_第2页
第2页 / 共32页
Grub加载iso文件.docx_第3页
第3页 / 共32页
Grub加载iso文件.docx_第4页
第4页 / 共32页
Grub加载iso文件.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

Grub加载iso文件.docx

《Grub加载iso文件.docx》由会员分享,可在线阅读,更多相关《Grub加载iso文件.docx(32页珍藏版)》请在冰豆网上搜索。

Grub加载iso文件.docx

Grub加载iso文件

Grub加载iso文件

如果你不曾知道的话,这或许是一个极其隐蔽的技巧了。

而事实上,所有的技术都是现成的,一点也不

神秘。

(这篇文章也早就想写,只是没有时间写。

用一个通常的例子来说明吧。

假定你有一张光盘的映象,它是由一个可引导的软盘映象制作出来的可引

导光盘的映象,或者像Mandriva那样,是用no-emulation模式制作出来的可引导光盘映象。

大家知道,要通过仿真来直接引导这样的光盘映象,实属困难,没有一个成熟的技术。

但是,我们退一步,不求引

导它,但求读取其中的文件,这一点是完全可以做到的。

通常我们在得到一个LINUX发行版的光盘ISO映象之后(假定我们不用它刻录一张真实的光盘的话),需要用操作系统的工具,如Windows的WinImage,以及Linux的mount命令等,来抽取光盘里面我

们所需要的某些个引导文件,如floppy.img,vmlinuzz,all.rdz等。

需要把它们拷贝出来,放到硬盘,然

后才可以引导Linux的安装过程。

我们这里介绍的技术,可以略过所有这些复杂的步骤,而是很简单地,达到我们启动安装程序的目的。

我们不需要在操作系统之下抽取文件了,因为我们的GRUBforDOS本身就可以读取光盘映像中的全

部文件!

!

酷酷!

!

我们这里做出一个假定,那就是,硬盘上的光盘映像在物理上是连续存放的。

这是因为,我们要用到GRUBforDOS的磁盘仿真能力,而GRUBforDOS的磁盘仿真,在没有--mem参数的情况下,要求

被仿真的文件(也就是我们的ISO),必须在物理扇区上是连续存放的。

如果你的内存足够大,比如有

1G那么大,你就可以使用带有--mem参数的磁盘仿真命令,在这种情况下,整个650M的ISO文件,都放到了内存中,因此,不再要求ISO文件的连续性了。

考虑到目前绝大多数人没有1G内存,所以,

我们只好要求ISO文件的连续性了。

好了,关子卖完了,该说点实质的了:

map(hdX,Y)/your_distro.iso(hdZ)

map--hook

别骂我哟!

其实只要有这两条命令就够了,我刚才叙述得是否太过神秘?

然而如果我不吹一吹,你很可

能懒得看下去,也就看不到这里了(你甚至得感谢我吹牛,呵呵)。

对于上述命令,也许那些不熟悉GRUB的人会感到某些疑惑,所以,我在这里简单解释一下。

第一条map命令,是将你硬盘上的ISO文件,仿真为一个原来不存在的硬盘(hdZ)。

比如,假定你的

机器原来只有4个硬盘(hd0),(hd1),(hd2),(hd3),现在这个Z就可以是4了,(hd4)就是第五个硬盘。

map--hook的意思是,让这个仿真在GRUB环境下立即发生作用,而不是等到敲入boot命令之后才起作用。

现在你在GRUB下检验一下,是不是可以访问(hdZ)中的文件了呢?

如果不行,你尽管把吐沫星子喷

过来,我认了。

由于(hdZ)是ISO9660格式的文件系统,而我们的GRUB正好可以识别ISO9660格式的文件系统,

也正是因为这个,所以,我们可以顺利读出ISO里面的文件。

原理上就是如此简单啊,没有什么需要进一步解释的。

接下来就看你的了!

既然(hdZ)中有你光盘中的全部内容,你也就不需要拷到硬盘上了,你直接用

kernel和initrd等命令来启动安装,这就完了。

如果里面有个软盘映象,需要你再次启动仿真,那对你

来说,应当是轻车熟路了,这回用

map--mem(hdZ)/.../floppy.img(fd0)

map--rehook

chainloader(fd0)+1

rootnoverify(fd0)

boot

就可以了,因为软盘不会太大,你的内存应当足够容纳下它了。

需要说明的是,如果你前面的ISO是用--mem来仿真的,那么这次的软盘也必须用--mem来仿真。

是因为,把一个不带--mem的磁盘仿真的BIOS磁盘号码,定向到真实的内存(而非磁盘介质)中,

这是要失败的。

关于如何让一个文件在磁盘上按照物理扇区**连续**存放,本文不再赘述,请参阅其他的文章。

过简单来说,方法有两个,一个是在空的FAT12/16/32/NTFS分区中建立的文件,一般就已经是连续的了?

?

多个碎块的文件,变成连续的文件。

在ext2分区不可能建立超过1M大小的连续文件。

所以,要

建立连续文件,最好是在微软的分区格式中才有保障。

另外,由于GRUBforDOS的NTFS模块是含有BUG的,因此,你的map(hdX,Y)/your_distro.iso(hdZ)命令虽然会成功,但在随后的读取时却很有可能碰到失败,并且文件越大,失败率越高(对于

ISO这样几百兆大小的文件,几乎肯定会失败的)。

因此建议,为了确实保证最大限度的安全、最高的

成功率,请尽量避免使用NTFS文件系统,而应当把ISO文件放在FAT12/FAT16/FAT32格式的分

区里面。

(转载时请注明作者:

不点,写作时间:

2005年8月14日)

附:

Grub命令详解

blocklist

用法:

blocklistFILE

描述:

输出文件的块清单标记。

boot

用法:

boot

描述:

引导已加载的操作系统或扇区链式加载器。

bootp

用法:

bootp[--with-configfile]

描述:

通过BOOTP初试化网络设备。

如果使用了`--with-configfile'参数,此命令将会试图去加载一个特定的配置文件。

cat

用法:

catFILE

描述:

显示指定文件的内容。

chainloader

用法:

chainloader[--force]FILE

描述:

加载扇区链式加载器。

若使用了--force参数,则忽略该扇区的启动标识的有效性。

cmp

用法:

cmpFILE1FILE2

描述:

比较两个文件,并且报告两者之间的不同的信息。

color

用法:

colorNORMAL[HIGHLIGHT]

描述:

改变菜单的颜色。

Normal用于指定菜单项的未选中时的颜色,HIGHLIGHT则用于指定菜单项的被选中时的颜色。

如果你未指定HIGHLIGHT色,那么我们将使用NORMAL的反色值。

颜色值的格式是

"FG/BG"。

FG和BG是颜色的名称,如下:

black(黑),blue(蓝),green(绿),cyan(青),red(红),

magenta(粉红),brown(棕),light-gray(亮灰),dark-gray(暗灰),light-blue(浅蓝),light-green(淡绿),light-cyan(淡青),light-red(明红),light-magenta(浅红),yellow(黄)和white(白)。

注意,BG的值只能是前八个。

另外,若想使用闪烁的前景色,你在FG前使用前缀"blink-"即可。

configfile

用法:

configfileFILE

描述:

将指定文件作为配置文件予以加载。

debug

用法:

debug

描述:

打开/关闭除错模式。

default

用法:

default[NUM|`saved']

描述:

把NUM项菜单设为缺省值。

device

用法:

deviceDRIVEDEVICE

描述:

声明BIOS驱动器对应的实际物理设备。

这条命令只用于grub命令行。

portmap

用法:

portmapprog_numbervers_number

描述:

进行端口映射。

dhcp

用法:

dhcp

描述:

通过DHCP初试化网络设备。

splashimage

用法:

splashimageFILE

描述:

图形模式下载入背景图片文件。

foreground

用法:

foregroundRRGGBB

描述:

设置图形模式下的前景色。

RR代表红色,GG代表绿色,BB代表蓝色。

注意他们都使用十六进制的值。

background

用法:

backgroundRRGGBB

描述:

设置图形模式下的背景色。

RR代表红色,GG代表绿色,BB代表蓝色。

注意他们都使用十六进制的值。

clear

用法:

clear

描述:

清屏幕。

displayapm

用法:

displayapm

描述:

显示APMBIOS的相关信息。

displaymem

用法:

displaymem

描述:

显示GRUB所判断到的当前系统的内存分布,包括所有物理内存区域。

dump

用法:

dumpFROMTO

描述:

显示诸多文件的内容。

注意,FROM所指定的必须是一个GRUB文件,TO所指定的必须是一个OS文件。

embed

用法:

embedSTAGE1_5DEVICE

描述:

如果设备是个驱动器,则将Stage1.5嵌入到主引导扇区之后。

如果是个FFS分区,则可嵌入到该设备饿`引导代码'区中。

并输出Stage1.5所占的扇区数。

fallback

用法:

fallbackNUM

描述:

如果调用当前的菜单项时出现错误,则转移到NUM项后重试

find

用法:

find[--set-root]FILENAME

描述:

在所有分区上查找文件名,并显示包含该文件的设备。

如果设置了参数--set-root,则在找到第一个匹配后马上停止,并且把该设备设为根。

fstest

用法:

fstest

描述:

切换文件系统的试验模式。

gfxmenu

用法:

gfxmenuFILE

描述:

使用FILE中的图形菜单。

geometry

用法:

geometryDRIVE[CYLINDERHEADSECTOR[TOTAL_SECTOR]]

描述:

输出驱动器的相关信息。

在grub壳程序中,你可以用这条命令设置驱动器参数为任意值。

如果你省略了总扇区数,则该值缺省有其它参数决定。

halt

用法:

halt[--no-apm]

描述:

关闭系统。

如果APM(高级电源管理)功能存在,将使用APMBIOS关闭系统,除非指定了`--no-apm'选项。

help

用法:

help[--all][PATTERN...]

描述:

显示内部命令的帮助信息。

要查看所有命令的帮助,请使用`--all'参数。

hiddenmenu

用法:

hiddenmenu

描述:

隐藏菜单。

hide

用法:

hidePARTITION

描述:

通过在分区类型上置隐藏标志,隐藏指定分区。

ifconfig

用法:

ifconfig[--address=IP][--gateway=IP][--mask=MASK][--server=IP]

描述:

指定IP地址,子网掩码,网关和服务器地址。

不带参数时,将显示当前的网络配置。

impsprobe

用法:

impsprobe

描述:

通过一些循环操作,侦测出符合Intel多处理器规范1.1/1.4的CPUs,以便于发挥其更好的效能。

initrd

用法:

initrdFILE[ARG...]

描述:

加载Linux格式的初始化虚拟盘,并设置必要的参数。

install

用法:

install[--stage2=STAGE2_FILE][--force-lba]STAGE1[d]DEVICESTAGE2[ADDR][p][CONFIG_FILE][REAL_CONFIG_FILE]

描述:

安装STAGE1到指定设备上,安装加载STAGE2需要的块列表到STAGE2上。

如果使用了选项'd',STAGE1总是试图使用安装STAGE2的驱动器,而不是启动盘。

STAGE2将加载在指定地址上,如果未声明地址,则自动检测。

如果使用了选项'p'或给出了配置文件,将修改STAGE2的第一个数据块,修正实际Stage2启动时使用的配置文件位置。

对于Stage1.5,该值为Stage2的路径。

如果安装的是Stage1.5,且指定了实际配置文件,则将该配置文件路径写入Stage2中。

ioprobe

用法:

ioprobeDRIVE

描述:

侦测指定设备的I/O端口号。

kernel

用法:

kernel[--no-mem-option][--type=TYPE]FILE[ARG...]

描述:

尝试载入主引导影像文件。

其它项将被作为内核的命令行参数而传递给内核。

使用此命令以前,内核所用到的模块应该被重新载入。

参数--type用于说明内核的类型,包括"netbsd","freebsd","openbsd","linux","biglinux"和"multiboot"。

参数--no-mem-option用于说明不必自动传递Linux的内存参数。

lock

用法:

lock

描述:

如果用户未被认证,则终止命令的执行。

makeactive

用法:

makeactive

描述:

将root设备置为活动分区。

当然,此命令只对PC的硬盘主分区有效。

map

用法:

map[--status][--hook][--unhook][--rehook][[--read-only][--fake-write][--unsafe-boot][--disable-chs-mode][--disable-lba-mode][--heads-per-cylinder=H][--sectors-per-track=S]TO_DRIVE

FROM_DRIVE]

描述:

对设备进行映射。

这对于扇区链式引导是很有用的功能,比如DOS。

这里,目的驱动器(TO_DRIVE)可以是一个磁盘文件,即使用磁盘虚拟功能。

注意,这要求磁盘文件是连续存放于分区中的。

另外,若使用了--read-only参数,该功能将使`磁盘'处于只读;若使用了--fake-write参数,该功能将使`磁盘'处于假写,即可以"写入"数据,但是却并未记录到真实磁盘上;若使用了--unsafe-boot参数,该功能将使`磁盘'处于真实可写;若使用了--disable-chs-mode参数,CHS访问功能将被禁用;若使用了--disable-lba-mode参数,LBA访问功能将被禁用;H和S指定了虚拟磁盘的物理参数。

若使用了--status,--hook,--unhook,--rehook诸参数之一,那么其它的命令行参数将被忽略。

md5crypt

用法:

md5crypt

描述:

产生一个MD5格式的密码。

module

用法:

moduleFILE[ARG...]

描述:

对多重启动影像,加载启动模块文件(不处理该文件的内容,用户必须自己确定核心的要求)。

剩余参数作为`模快命令行`传递,象`kernel'命令一样。

modulenounzip

用法:

modulenounzipFILE[ARG...]

描述:

与'module'类似,但是自动禁用了解压缩。

pager

用法:

pager[FLAG]

描述:

没有参数时,切换页模式。

如果使用了FLAG参数,那么它为`on'时为开启,为`off'时为关闭。

partnew

用法:

partnewPARTTYPESTARTLEN

描述:

创建一个新的主分区。

START为起始扇区号,LEN为其包含的扇区数,TYPE为其分区类型。

parttype

用法:

parttypePARTTYPE

描述:

改变指定分区(PART)的分区类型(TYPE)。

password

用法:

password[--md5]PASSWD[FILE]

描述:

设置密码。

当其处于菜单文件的首项时,将禁用所有的交互式菜单编辑功能,包括编辑菜单项(`e`)/进入命令行(`c`)。

当正确输入密码(由PASSWD指定)后,载入新的菜单文件(由FILE指定)。

如果你没有指定FILE项,那么上述被禁用的功能将被启用了。

当然,你也可以将此命令用到某个菜单项里,用以提高系统安全性。

参数--md5说明密码(PASSWD)是使用md5crypt加密的。

pause

用法:

pause[MESSAGE...]

描述:

终止命令的运行,并给出一段信息。

任意键按下后,将继续。

quit

用法:

quit

描述:

从GRUB命令行中退出。

rarp

用法:

rarp

描述:

用RARP初始化网络设备。

read

用法:

readADDR

描述:

从内存的指定位置读取一个32-bit的值,并以十六进制形式显示出来。

reboot

用法:

reboot

描述:

重启系统。

fontfile

用法:

fontfileFILE

描述:

指定中文字体文件,并切换到简体中文显示方式。

scdrom

用法:

scdrom[--install],[--bootcd]

描述:

寻找系统的第一个CD-ROM驱动器,然后为其分配一个驱动器号以备后续使用(--install)。

或者,用该驱动器中的可引导光盘启动系统。

(--boot)。

run

用法:

runFILE

描述:

运行一个为光盘启动而设计的引导文件(非模拟方式的)

root

用法:

root[DEVICE[HDBIAS]]

描述:

设置根分区。

设置根分区为指定设备(DEVICE),然后尝试挂接该分区以得到分区大小(用于在ES:

ESI中传递,扇区链式启动方式要求这样)。

BSD驱动类型用于启动BSD的核心启动),和确定BSD子分区所

在的PC分区。

可选的磁盘偏移参数,用于BSD核心确定有多少个控制器在当前控制器前。

比如:

假设同时有一个IDE和SCSI盘,而BSD根分区在SCSI盘上,那么磁盘偏移就为1。

rootnoverify

用法:

rootnoverify[DEVICE[HDBIAS]]

描述:

类似`root'指令,但不测试安装该分区。

这用于有些系统装在GRUB能访问的磁盘区之外,但仍需要设置正确的根分区的情况。

有些需要安装分区才能确定的参数可能会有问题。

savedefault

用法:

savedefault

描述:

将当前项设置为默认的引导项。

serial

用法:

serial[--unit=UNIT][--port=PORT][--speed=SPEED][--word=WORD][--parity=PARITY][--

stop=STOP][--device=DEV]

描述:

初始化一个串口设备。

UNIT用于指定要使用的串口设备(如,0==COM1);PORT用于指定端口号;SPEED用于指定通讯的数率;WORD为字长;PARITY为奇偶类型(取`no',`odd'和`even'之一的值。

);STOP是停止位的长度值;选项--device仅用于命令行模式,用以指定tty设备的文件名。

默认值是这样的,COM1,9600,8N1。

setkey

用法:

setkey[TO_KEYFROM_KEY]

描述:

改变键盘映射关系。

把FROM_KEY映射为TO_KEY。

这里的键必须是字母,数字,和以下特殊键:

escape(转义),exclam(!

),at(@),numbersign(#),dollar($),parenright()),caret(^),ampersand(&),asterisk(*),plus(+),percent(%),minus(-),underscore(_),equal(=),parenleft[(],backspace(退格),

tab(制表),bracketleft([),braceleft({),bracketright(]),braceright(}),enter(回车),control(控制),

semicolon(;),colon(,quote('),doublequote("),slash(/),backquote(`),tilde(~),shift(换档),backslash(\),bar(|),comma(,),less(<),period(.),greater(>),question(?

),alt(交互),space(空格),capslock(大写),

Fx(功能键)和delete(删除)。

setup

用法:

setup[--prefix=DIR][--stage2=STAGE2_FILE][--force-lba]INSTALL_DEVICE[IMAGE_DEVICE]描述:

自动安装GRUB.这条命令使用更灵活的install命令将GRUB安装到指定设备上。

如果给出了映象设备,将在该设备寻找GRUB,否则使用缺省的根设备。

根设备可用root指令指定。

如果你确认系统的BIOS

应该支持LBA模式,但是GRUB却没有工作于该模式,则请指定`--force-lba'参数。

如若你在命令行中

已安装了一次GRUB可是,你却无法卸载GRUB程序所在的分区,请指定`--stage2'参数。

terminal

用法:

terminal[--dumb][--no-echo][--no-edit][--timeout=SECS][--lines=LINES][--silent][console][serial][hercules][graphics]

描述:

选择一个终端。

当指定了多个终端以后,按任意键方可继续操作。

如果控制台和串口都被指定了,那么你

首先在其中按下键盘的终端将被首先选中。

如果没有指定任何参数,那么此命令将显示出当前的终端设置;参数--dumb用以指定一个哑终端,否则即为vt100兼容型;若使用了--no-echo参数,屏幕上将不会

回显输入的字符;若使用了--no-edit参数,theBASH-like的编辑功能将被禁用;若使用了

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1