无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站
楼主: sgw888

[发布] 基于GRUB4DOS的BOOTSECT

[复制链接]
发表于 2011-5-9 23:01:37 | 显示全部楼层
汗啊,我都没有注意到。
if /i "%~0"=="%nx0"
这个语句是错误的,应该是
if /i "%~0"=="%~nx0"

正在抽空看看批处理代码。。。
回复

使用道具 举报

发表于 2011-5-9 23:57:32 | 显示全部楼层
要问下jianliulin:
批处理打包后,怎么还原?
回复

使用道具 举报

发表于 2011-5-9 23:59:45 | 显示全部楼层

回复 #42 zhaohj 的帖子

如果是尾续批处理,右键点击管理尾续文件……
回复

使用道具 举报

发表于 2011-5-10 00:03:00 | 显示全部楼层
看了一下,发现太多的goto我被转晕了。。

我先看看能不能优化一下。
回复

使用道具 举报

发表于 2011-5-10 01:02:28 | 显示全部楼层
小改了一下,新的批处理在附件,未测试。

因为时间关系,只跟踪修改了一小部份。你们可以再继续改进。

注:附件只有批处理。不可直接使用。

直接查找####就可以看到我修改的内容。

BOOTSECT.rar

3.85 KB, 下载次数: 50, 下载积分: 无忧币 -2

回复

使用道具 举报

发表于 2011-5-10 08:02:06 | 显示全部楼层
这个吧,
DOS下的FDISK,DSPT,可以写MBR,备份恢复

BOOTPART,可以写DOS,WIN98,NT5,NT6的分区代码
回复

使用道具 举报

发表于 2011-5-10 08:20:16 | 显示全部楼层
确实转向太多,待测试无误后需要优化处理。
重复处理的代码 call 变量
回复

使用道具 举报

 楼主| 发表于 2011-5-10 08:35:49 | 显示全部楼层
:_mbrsx

#先检查引导代码是不是msdos
if /i not %yddm%==msdos goto :_2mbrsx
echo
echo The msdos boot code : Update FAT32 partition DBR only.
####这个我没有看明白,难道是只能/dos mbr?不可以/nt52 mbr?
####这里应该需要有一个goto :end的吧??


说明一下,因为 刷新 dos 代码是后来加的功能。主要是我在测试中发现,这个功能对我个人有点用处。比如说有些按F11或者F10 F9启动隐藏分区的,基于MSDOS的还原类软件,比如 一键还原精灵等,它们的代码是启动IO。SYS的。 使用DOS 的SYS命令 也可以做到 ,但它要传输启动文件,而一键还原精灵的IO。SYS是经过修改的,不能替换。

上面应该是 只能 /nt52 或者是 /nt60 /mbr  DOS的MBR实在是没必要的。因为MBR就是一个通用的程序,不管它是什么代码,它都决定不了DBR的引导。

我就是只想实现 FAT32 分区更新成DOS代码的功能。 为了避免别人误用,我就加了判断。
另外,好像是少了一个 goto :end 太大意了。
回复

使用道具 举报

发表于 2011-5-10 08:48:45 | 显示全部楼层
原帖由 zhaohj 于 2011-5-9 23:57 发表
要问下jianliulin:
批处理打包后,怎么还原?


批出理打包实际就是把一个或者多个文件尾续在批处理后面(暂且称之为尾续文件),尾续的时候把前一个文件用0x00补全为512字节的倍数,以便后面一个文件刚好以整数扇区开始,


还原方法: 先把整个文件(包含批处理及尾续文件)读到内存里

map --mem=0x10000 %run% (rd)    ## run 为整体文件的绝对路径

然后利用grub4dos map命令将尾续文件 map 为一个盘 ,尾续文件一般都是img、iso等可以映射为磁盘的文件。

map --mem (rd)2+875,447623 (fd0)  , ## 这样的map方发是未正式公开的方法,在时空有介绍。


2: 是尾续文件的开始扇区
875: 是尾续文件的占用山区数
447623 :是尾续文件的实际大小,以字节为单位

以上参数可以从fbinstTool 中查找到,当比处理内容改变后这些参数有可能会变化,若改变了map 的参数务必要跟着修改。


aaaa.PNG

[ 本帖最后由 jianliulin 于 2011-5-10 08:50 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2011-5-10 08:53:07 | 显示全部楼层
根据CHENALL 提示,只修复一处BUG。

另外,CHENALL 有些地方,改的地方,我看不懂。 从内存中取变量值的方法。实在搞不懂。
CHENALL 优化了一部分。 希望有时间,其它网友也帮助优化检查一下错误。

另外,CHENALL 提到 关于磁盘跟分区取值可以弄一个函数。 我印象中这个好像只调用了一次。  磁盘跟分区表示法检查,有些地方语句是一样的。 但磁盘是 (hd0) 这种形式, 分区是 (hd0,0) 这种形式,我多加了判断,除了形式上的判断,还有字符数的检查。 磁盘就是5个,分区就是7个。

大家帮忙看一下,还有没有继续优化的空间。

另外,我对CALL 不熟悉。 习惯了GOTO。 CALL 执行完,总是要返回到原来的地方继续执行。有时候想不明白,容易出错。

[ 本帖最后由 sgw888 于 2011-5-10 08:56 编辑 ]

20110510 暂时修改.rar

3.92 KB, 下载次数: 42, 下载积分: 无忧币 -2

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-12-10 22:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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