无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 43001|回复: 195
打印 上一主题 下一主题

grub4dos FAT分区创建文件命令(02-09 )

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-13 13:06:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最新版本下载地址
http://grub4dos-chenall.googlecode.com/files/fat.zip

查看最新版本信息请移步我的搏客..
http://www.chenall.com/blog/2010/01/GRUB4DOS_FAT.html

使用方法都在截图中了,,,

BUG是在所难免的...

目前只支持操作根目录。只能用在FAT16分区上。

需要先将FAT16分区设为root才可以使用。

创建文件最大不能超过19MB,使用连续簇存放文件,如果可用的连续簇的空间小于文件大小,不能创建。

!请使用虚拟机测试(并设置硬盘还原),否则写错了我可不管,^_^...

唉,原理基本上明白了,但是要把原理转换成程序,我还有好长一段路要走。。
注:新的版本必须要有路径名(截图的的旧版的)至少也得加()/代表当前磁盘
例子:
fat file create size=* ()/bootmgr

2010-02-09
1.不再使用dd命令来复制文件,加快复制文件的速度.

2010-02-06
1.修正了一个写文件分配表的BUG.

2010-01-30
1.修正FAT dir命令显示的问题。
2.添加了一些帮助信息。fat 或 fat help都可以显示帮助信息。
3.优化的创建文件分配表的代码。

2010-01-29
1.支持FAT32。

2010-01-13
修正一个可用簇数计算方法的错误,导致写FAT表错误。

2010-01-12
预览版。

[ 本帖最后由 chenall 于 2010-2-8 11:49 编辑 ]

20100112222742034.png (5.93 KB, 下载次数: 197)

20100112222742034.png

20100112222911354.png (10.66 KB, 下载次数: 179)

20100112222911354.png

20100112223549655.png (13.03 KB, 下载次数: 198)

20100112223549655.png

20100112223609392.png (7.4 KB, 下载次数: 198)

20100112223609392.png
2#
发表于 2010-1-13 15:10:52 | 只看该作者
支持大师,好作品一个接着一个。
可惜没个FAT16的分区整。
回复

使用道具 举报

3#
发表于 2010-1-14 23:51:52 | 只看该作者
难道GRUB4DOS 的COPY离我不远了???
回复

使用道具 举报

4#
发表于 2010-1-15 03:26:54 | 只看该作者
c大,0106的版本已经支持ghostid,为什么0108的版本又有个外置的ghostid,这两个有什么区别呢

还有一个疑问,chinese目录下的几个文件有什么区别,貌似也并不能直接支持中文显示

[ 本帖最后由 NicTense 于 2010-1-15 03:52 编辑 ]
回复

使用道具 举报

5#
 楼主| 发表于 2010-1-15 09:55:33 | 只看该作者
0108以后的GRUB4DOS版本没有内置GHOSTID命令,使用了外置的。

chinese目录下的是支持中文的啊。需要加载字体文件才能显示中文。

@junyee
现在就可以尝试了。暂时使用以下方法实现复制。

fat file create size=要复制文件的大小 test.bin
dd if=(hdx,y)/test.bin of=()/test.bin

要复制文件的大小可以通用cat命令得到
cat --length=0 (hdx,y)/test.bin
回复

使用道具 举报

6#
发表于 2010-1-15 16:07:07 | 只看该作者
一直都没加载字体,惭愧啊,怪不得中文乱码了

肥16这种格式貌似只能用在dos底下了,我都很久没用过这种格式的分区了
回复

使用道具 举报

7#
 楼主| 发表于 2010-1-15 17:34:52 | 只看该作者
一般情况下32MB左右的磁盘格式化自动是使用FAT16格式的。像CSPE里面的CSPE.img和EXT.IMG都是FAT16的。

再小的分区就大都是FAT12的了。

一般的软盘镜像大多是FAT12格式的。

搞这个命令我主是要用于内存盘启动时动态添加文件,以方便实现模块化。

[ 本帖最后由 chenall 于 2010-1-15 17:36 编辑 ]
回复

使用道具 举报

8#
发表于 2010-1-15 18:16:38 | 只看该作者
原帖由 chenall 于 2010-1-15 09:55 发表


@junyee
现在就可以尝试了。暂时使用以下方法实现复制。
fat file create size=要复制文件的大小 test.bin
dd if=(hdx,y)/test.bin of=()/test.bin
要复制文件的大小可以通用cat命令得到
cat --length=0 (hdx,y)/test.bin

我看得不是很明白,这是COPY还是Creat???
源文件(hdx,y)/test.bin ---》目标文件()/test.bin ???


再者,请问Chenall大哥,以后会不会考虑加入FAT32/NTFS/CDFS/PD 等格式的支持?这样的话此功能才有一定实际意义,毕竟FAT16在硬盘上用得都比较少了。

如果这方面能成功的话,这个G4D就不单止是个引导程序了,更像个OS!!!

[ 本帖最后由 junyee 于 2010-1-15 18:18 编辑 ]
回复

使用道具 举报

9#
发表于 2010-1-15 20:44:43 | 只看该作者
原帖由 chenall 于 2010-1-15 17:34 发表
一般情况下32MB左右的磁盘格式化自动是使用FAT16格式的。像CSPE里面的CSPE.img和EXT.IMG都是FAT16的。

再小的分区就大都是FAT12的了。

一般的软盘镜像大多是FAT12格式的。

搞这个命令我主是要用于内存 ...

请问你现在这个命令支部支持FAT12阿?
现在大家都没FAT16了,还不如先搞FAT12有意义,至少可以在软盘镜像上测试。
回复

使用道具 举报

10#
发表于 2010-1-16 10:02:15 | 只看该作者
支持一下,不错!!!
回复

使用道具 举报

11#
发表于 2010-1-16 10:07:17 | 只看该作者
不带参数的configfile 放在所有的 title 之前,表示兼容以前的启动方式,即,优先执行与 grldr 处于相同目录的 menu.lst 文件。

如果去掉这个 “不带参数的configfile”,则优先执行的是内置菜单。

[ 本帖最后由 不点 于 2010-1-16 10:08 编辑 ]
回复

使用道具 举报

12#
 楼主| 发表于 2010-1-19 22:38:55 | 只看该作者
更新了一下,支持FAT12了。
内容。

http://bbs.znpc.net/viewthread.p ... fromuid=29#pid43728

有条件或需要的就测试下,没有BUG的话今年内就不会再更新了。
回复

使用道具 举报

13#
发表于 2010-1-21 00:01:57 | 只看该作者
@ 不点

貌似这个不带参数的configfile并没有真正起到您说的作用(也就是readme里所说的)

我分别测试了620,1203和最新的0113版本

grldr的内置菜单如下


pxe detect
configfile
default 0
timeout 30


title Command line
commandline

title Ghost 11.02
map /ghost.img (fd0)||map --mem /ghost.img (fd0)
map --hook
rootnoverify (fd0)
chainloader +1

title Tango WinPE SP3
chainloader /ntldr

title Boot from local HDD
chainloader (hd1)+1
rootnoverify (hd1)

title Boot from CDROM
cdrom --init
map --hook
chainloader (cd0)

title Reboot
reboot

title Shutdown
halt


grldr放于u盘根目录,根目录下放了一个menu.lst
内容只有一行
commandline

按道理,如果configfile起作用,优先执行同目录下的menu.lst
那么启动后应该是直接进入命令行模式

但是实际进入的却是上面的菜单选择

把内置菜单换成默认的,也就是把原版的grldr放到u盘根目录
u盘启动后为(fd0)
而由于我的(hd0,0)的根目录有一个用于载入pe的menu.lst
grub启动后直接进入pe
也就是说,起作用的还是内置菜单,

这个是原版内置的第一项
title find /menu.lst, /boot/grub/menu.lst, /grub/menu.lst
errorcheck off
configfile /menu.lst
configfile /boot/grub/menu.lst
configfile /grub/menu.lst
find --set-root --ignore-floppies --ignore-cd /menu.lst && configfile /menu.lst
find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst && configfile /boot/grub/menu.lst
find --set-root --ignore-floppies --ignore-cd /grub/menu.lst && configfile /grub/menu.lst
errorcheck on
commandline


这里还有一个问题不明白
按这里的顺序
应该是先执行的 configfile /menu.lst
那么应该是执行u盘根目录的 (fd0)/menu.lst,即进入命令行才对
为什么实际执行的却是 (hd0,0)/menul.lst
也就是说起作用的是 find --set-root --ignore-floppies --ignore-cd /menu.lst && configfile /menu.lst

是configfile代码有误,还是我没理解对呢

[ 本帖最后由 NicTense 于 2010-1-22 02:32 编辑 ]
回复

使用道具 举报

14#
 楼主| 发表于 2010-1-21 00:21:07 | 只看该作者
可以试试把硬盘的GRLDR改名或删除再重启.

有可能是启动到了硬盘上的GRLDR了.

另外菜单应该至少要有一个title的吧.

把上面u盘的那个menu.lst的内容换成如下
default 0
timeout 5
title command
commandline
回复

使用道具 举报

15#
发表于 2010-1-21 00:24:59 | 只看该作者

回复 #15 chenall 的帖子

我确定不是启动到硬盘上的grldr,因为版本不一样

好了,按您说的修改了menu.lst,把硬盘的grldr改名

重起

还是进入我的内置菜单选项

[ 本帖最后由 NicTense 于 2010-1-21 00:30 编辑 ]
回复

使用道具 举报

16#
 楼主| 发表于 2010-1-21 00:42:31 | 只看该作者
我用虚拟机下测试从软盘启动或硬盘启动都是正常的.
把GRLDR的内置菜单改成了#14上面的菜单.

还有一点忘了,和U盘启动加载GRLDR应该也有关系.比如
用FBINST加载的可能就不会优先使用根目录下的menu.lst,其它的工具应该也是类似的吧.

你可以试试进入GRUB4DOS命令行以后再
chainloader (fd0)/grldr
试试看会不会先加载同根目录下的menu.lst

[ 本帖最后由 chenall 于 2010-1-21 00:50 编辑 ]
回复

使用道具 举报

17#
发表于 2010-1-21 01:05:56 | 只看该作者

回复 #17 chenall 的帖子

还是一样执行内置菜单,无视u盘根目录menu.lst

我用的bootice,启动时,电脑无视u盘mbr,直接从pbr启动

下次换个u盘测试一下再来报告


另外就是,14楼最后一个问题

先执行的 configfile /menu.lst
那么应该是执行u盘根目录的 (fd0)/menu.lst,即进入命令行才对
为什么实际执行的却是 (hd0,0)/menul.lst
也就是说起作用的是 find --set-root --ignore-floppies --ignore-cd /menu.lst && configfile /menu.lst

c大能否帮我解释一下这个,不太理解

configfile执行了menu.lst之后是跳转了,不再继续执行,还是执行完还会回来继续执行下面的命令呢

[ 本帖最后由 NicTense 于 2010-1-21 01:10 编辑 ]
回复

使用道具 举报

18#
发表于 2010-1-21 01:26:23 | 只看该作者
测试了另外一个u盘,usb-hdd格式,同样的grub和menu.lst
启动后进入命令行
也就是说,configfile起作用了
这个也是用bootice做的,不同的是这个grub装在mbr
用u盘启动,电脑是从u盘的mbr的grub启动的

而之前那个u盘,电脑无视这个u盘的mbr,而直接从pbr启动(即这个u盘的mbr好坏或者用什么格式都没影响)

所以,我估计可能configfile不起作用跟什么工具制作的无关

而跟装在mbr还是pbr可能有关系
回复

使用道具 举报

19#
发表于 2010-1-21 01:28:58 | 只看该作者
问题很可能是 BOOTICE 造成的。启动 GRLDR 时,必须把 DH 寄存器设置成 GRLDR 所在的分区号码。如果不设置,那就相当于没有正确地设置 root 设备,那么当然就不正常了。

用 GRUB4DOS 的引导扇区搜索到 GRLDR 后,DH 就正确地设置了。你应该试试 GRUB4DOS 的引导扇区。
回复

使用道具 举报

20#
发表于 2010-1-21 01:52:03 | 只看该作者
基本上我知道问题所在了

貌似是我这个电脑在启动的时候把 (bd) 定位为 (fd0,0)了

所以在启动后马上执行

ls/

提示:Error 17: Cannot mount selected partition

执行

root

提示:(fd0): Filesystem type unknown, partition type 0x47

而在执行 root (fd0) 后再 ls / 就正常了

也就是说,启动后 (bd) 对grub是无法读取的,所以根目录下的menu.lst自然被忽略
回复

使用道具 举报

21#
发表于 2010-1-21 01:57:05 | 只看该作者

回复 #20 不点 的帖子

如果进入grub后

chainloader (fd0)/grldr.mbr
或者
chainloader (fd0)+1

结果都一样,问题应该是出在 (fd0,0) 的问题上,但是grub启动后,u盘又被定位为 (fd0)

不知道是跟我的u盘有关还是跟我主板的bios有关,由于几个电脑,有的只支持usb-hdd,有的只支持usb-zip

我也没法确定这个问题了

不过看样子可以确定问题不在configfile命令上了
回复

使用道具 举报

22#
发表于 2010-1-21 02:51:29 | 只看该作者
把那个出问题的u盘格式化为usb-fdd格式
(bd)为(fd0),启动后执行root和 ls/ 均正常
而且启动后也能进入命令行模式,即根目录menu.lst生效

看来问题就出在usb-zip上了
由于usb-zip有分区表,存在mbr和pbr,启动后(bd)会被定位为 (fd0,0),而grub又不支持(fd0,0),从而导致(bd)出错,自然无法读取(bd)上的menu.lst文件
只是不知道这个是所有被认定为usb-zip格式的u盘的问题,还是只是我的u盘或者我的电脑的bios的问题
回复

使用道具 举报

23#
发表于 2010-1-21 14:09:05 | 只看该作者

回复 #23 NicTense 的帖子

在usb-zip上使用内置菜单的grldr,例如放个0PE试试?
回复

使用道具 举报

24#
发表于 2010-1-21 19:41:01 | 只看该作者
关注中 学习了 ~~~
回复

使用道具 举报

25#
 楼主| 发表于 2010-1-21 21:29:38 | 只看该作者
再改了一下.把几个命令整在一起,现在可以直接fat file copy了(必须配合最新版GRUB4DOS才可以使用用)

例子:
fat file copy (hd0,0)/grldr (hd1,0)/grldr

http://grub4dos-chenall.googlecode.com/files/fat.rar
http://grub4dos-chenall.googleco ... 4.5a-2010-01-21.zip

来源 可以是任何GRUB4DOS可以访问的文件,
目标 只能是FAT16/FAT12并且只可以使用根目录.

只是简单的把dd命令整合进去了.

[ 本帖最后由 chenall 于 2010-1-21 21:31 编辑 ]
回复

使用道具 举报

26#
发表于 2010-1-21 22:40:22 | 只看该作者
grub4dos想发展成为一个OS ?
回复

使用道具 举报

27#
发表于 2010-1-21 23:55:10 | 只看该作者

回复 #26 chenall 的帖子

来源是gzip压缩文件时,目标文件内容跟来源文件相同吗?
回复

使用道具 举报

28#
 楼主| 发表于 2010-1-22 00:19:31 | 只看该作者
没考虑这一点,你可以试一下.

因为是调用DD的功能.

刚试了,如果是GZ格式就不能复制了,呵呵.

我下次再改一下,如果是GZ格式按原文件复制.

[ 本帖最后由 chenall 于 2010-1-22 00:26 编辑 ]
回复

使用道具 举报

29#
发表于 2010-1-22 02:55:18 | 只看该作者
考虑到某些usb-zip启动后 (bd)和根区出错的问题,即(fd0,0)的问题
如果我在内置菜单的
configfile
这行前面加上一行

checkrange 0 read 0x8280 && root (fd0)

是不是应该可以解决问题了
回复

使用道具 举报

30#
 楼主| 发表于 2010-1-22 10:27:51 | 只看该作者
这个要看(fd0)被识别成什么了,有时会是(fd0,0)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-24 07:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表