无忧启动论坛

标题: .................... [打印本页]

作者: 527104427    时间: 2013-8-12 13:40
标题: ....................
本帖最后由 527104427 于 2016-8-15 21:30 编辑


http://blog.sina.com.cn/a527104427

http://bbs.wuyou.net/forum.php?m ... d=379244&extra=
作者: zhaohj    时间: 2013-8-12 14:42
root (15)改变了当前盘符,再map的()盘有问题了
去掉root (15)
作者: 527104427    时间: 2013-8-12 14:55
zhaohj 发表于 2013-8-12 14:42
root (15)改变了当前盘符,再map的()盘有问题了
去掉root (15)

一样出错

2.png (17.52 KB, 下载次数: 48)

2.png

作者: sratlf    时间: 2013-8-12 15:45
527104427 发表于 2013-8-12 14:55
一样出错

map成0xa0或以后的设备再试试  0x0f和0x10这都是分配给fd设备的
作者: zhaohj    时间: 2013-8-12 15:47
(0)~(0x7a)别用,这个是软盘仿真;光盘镜像用(0xa0)~(0xff)吧,我也忘了你查一下readme
作者: 527104427    时间: 2013-8-12 16:11
本帖最后由 527104427 于 2013-8-12 16:21 编辑
sratlf 发表于 2013-8-12 15:45
map成0xa0或以后的设备再试试  0x0f和0x10这都是分配给fd设备的


不知道下面的代码有什么问题呢?执行后,(cd)就消失了,我是从光驱启动的。

!BAT
ls (cd)/
map (hd0,1)/isos/win7.iso (15)
map --rehook
ls (15)/ > nul && echo ! if "(15)"=="(15)" && echo ! if "(15)"=="(0)" && echo ! echo
ls (cd)/ || echo -e $[0104](cd) is missing !!

作者: 527104427    时间: 2013-8-12 16:12
zhaohj 发表于 2013-8-12 15:47
(0)~(0x7a)别用,这个是软盘仿真;光盘镜像用(0xa0)~(0xff)吧,我也忘了你查一下readme

同问楼上问题
作者: sratlf    时间: 2013-8-12 16:16
527104427 发表于 2013-8-12 16:11
不知道下面的代码有什么问题呢?执行后,(cd)就消失了,我是从光驱启动的。

!BAT

ls (15)/ > nul && echo ! if "(15)"=="(15)" && echo ! if "(15)"=="(0)" && echo ! echo

我能问下这是想表达什么意思吗。。。

是物理光驱启动还是量产的启动  物理光驱启动的话应该是ls (cd0)/吧
作者: 527104427    时间: 2013-8-12 16:20
sratlf 发表于 2013-8-12 16:16
ls (15)/ > nul && echo ! if "(15)"=="(15)" && echo ! if "(15)"=="(0)" && echo ! echo

我能问下这 ...

SISO中的一段map代码,我只是将代码简化了,按理说,这代码是一点问题都没有的
作者: 527104427    时间: 2013-8-12 16:23
sratlf 发表于 2013-8-12 16:16
ls (15)/ > nul && echo ! if "(15)"=="(15)" && echo ! if "(15)"=="(0)" && echo ! echo

我能问下这 ...

一楼更新了图片
作者: sratlf    时间: 2013-8-12 16:47
527104427 发表于 2013-8-12 16:23
一楼更新了图片

你把15改成0xa0以后的就可以了  15不是给cd用的
作者: 不点    时间: 2013-8-12 16:55
好像这句有问题:

ls (cd)/ || echo -e $[0104](cd) is missing !!

有可能 ls (cd)/ 成功了,但返回的是失败的值。此时直接用 ls (cd)/ 后面不要加逻辑判断子句,试试结果如何?是不是可以列出 (cd) 上的文件?


作者: 527104427    时间: 2013-8-12 16:57
不点 发表于 2013-8-12 16:55
好像这句有问题:

ls (cd)/ || echo -e $[0104](cd) is missing !!

提示
Error 17: Cannot mount selected partition
作者: 不点    时间: 2013-8-12 17:01
本帖最后由 不点 于 2013-8-12 17:03 编辑

那这样:

geometry (cd)

root (cd)

看看显示什么结果。


还有啊,怀疑是批处理的限制(或 bug)。手动在命令行敲入这一系列命令,看看是否不再有问题了呢?


作者: 527104427    时间: 2013-8-12 17:03
sratlf 发表于 2013-8-12 16:47
你把15改成0xa0以后的就可以了  15不是给cd用的

改成 0xa0 就达不到我的需求了.

谢谢,我再试试其它办法。
作者: 527104427    时间: 2013-8-12 17:05
本帖最后由 527104427 于 2013-8-12 17:07 编辑
不点 发表于 2013-8-12 17:01
那这样:

geometry (cd)


是这样的提示:

1.png (26.83 KB, 下载次数: 56)

1.png

作者: 不点    时间: 2013-8-12 17:12
本帖最后由 不点 于 2013-8-12 17:20 编辑

怀疑是 yaya 的 CDROM 增强功能,带来了隐蔽的错误。(cd) 仍然识别,盘号是 BIOS 传递的正确的 0x9F。

这具体是什么错误,恐怕要 yaya 来看看才行。

再试试

root (cd)
root (hd0)
root (cd)

看看这样折腾折腾,会不会起作用?

继续折腾……

cat --hex (cd)0+20

看看显示的扇区数据是否正常?(扇区数据太多,不一定都要截图)


作者: sratlf    时间: 2013-8-12 17:12
527104427 发表于 2013-8-12 17:03
改成 0xa0 就达不到我的需求了.

谢谢,我再试试其它办法。

你的什么要求  0xa0到0xff  这么多地址都不能用吗。。。为什么一定要将一个cd设备弄成fd设备
作者: 不点    时间: 2013-8-12 17:29
@sratlf

527104427 大元帅的用法不属于正常的用法。但也不算是绝对的错误。将 ISO 仿真为普通的软盘(或硬盘),是可以的,grub4dos 仍然能够访问其 ISO9660 的光盘格式的文件系统。但它不再是虚拟的光驱了,而是虚拟的软盘(或硬盘)了。因此,这种虚拟盘,不可以当 no-emulaition 模式的可启动光盘来启动。

如果一个硬盘的分区(比如说 (hd0,6))是 iso9660 格式的文件系统,那么这个分区也可以被 grub4dos 识别,grub4dos 可以访问这个分区上的 “光盘” 格式。


作者: 527104427    时间: 2013-8-12 17:35
不点 发表于 2013-8-12 17:12
怀疑是 yaya 的 CDROM 增强功能,带来了隐蔽的错误。(cd) 仍然识别,盘号是 BIOS 传递的正确的 0x9F。

这 ...

root (cd)
root (hd0)
root (cd)
仍然报错

继续
cat --hex (cd)0+20
正常列出数据。

作者: 不点    时间: 2013-8-12 17:40
好的,那就要 yaya 看看了。只要扇区数据正常,不该出这种错误。你说过,0.4.5 没问题,那就基本可以定位是 yaya 的错误了。


作者: 2011yaya2007777    时间: 2013-9-3 12:21

问题一:map一个非UDF格式的ISO就正常;map一个UDF格式的ISO后,root 或 ls 报错。

root (15)/ 之后,根目录就是  (15)/ ,而 isos 子目录并不在 (15)/ 内,因此 map /isos/win.iso (15) 自然出错。应当是 map (hd0,1)/isos/win.iso (15)
作者: 2011yaya2007777    时间: 2013-9-3 12:33
问题二:不知道下面的代码有什么问题?执行后,(cd)就消失了,我是从光驱启动的。

!BAT
ls (cd)/
map (hd0,1)/isos/win7.iso (15)
map --rehook
ls (15)/ > nul && echo ! if "(15)"=="(15)" && echo ! if "(15)"=="(0)" && echo ! echo
ls (cd)/ || echo -e $[0104](cd) is missing !!

我在 VPC 虚拟机使用 0.4.6a 2013_7_24 版本测试,没有发现问题。
使用 boot.iso 启动虚拟机。
map (hd0,0)/win.iso (15)
map --rehook
ls (15)/  正常
ls (cd)/  正常
作者: 不点    时间: 2013-9-3 17:00
yaya,你最好用与楼主同样的虚拟机来测试。有些问题或许只在一种虚拟机下才有表现。比如说,楼主的虚拟机的 BIOS 把 (cd) 的盘号弄成了 0x9F,有可能在这个情况下,0.4.6a 的 bug 表现出来了。

楼主最好也提供一个可以重现问题的环境,供 yaya 测试。比如,提供一个最小的 iso 文件,让问题重现。
作者: 2011yaya2007777    时间: 2013-9-5 14:42
使用 VPC 虚拟机,引导 cd 分配盘符 0xef,测试正常。
使用 VM 虚拟机,引导 cd 分配盘符 0x9f,测试正常。
使用 BOCHS 虚拟机,引导 cd 分配盘符 0xe0,测试正常。
作者: 神的马甲    时间: 2013-9-5 15:06
2011yaya2007777 发表于 2013-9-5 14:42
使用 VPC 虚拟机,引导 cd 分配盘符 0xef,测试正常。
使用 VM 虚拟机,引导 cd 分配盘符 0x9f,测试正常。 ...

yaya大可能没留言到一个细节,楼主强调是udf格式的iso才会出问题……
作者: 2011yaya2007777    时间: 2013-9-6 14:42
问题在光盘驱动,与虚拟机无关。基本现象是加载udf类型的文件后,加载其他类型的光盘文件就出错。

测试方法:
map /iso1.iso (15)
map /udf1.iso (16)
map --hook
ls (15)/
ls (16)/
ls (15)/
ls (16)/

问题基本解决,请测试。

grldr.rar

139.54 KB, 下载次数: 6

测试.rar

282.64 KB, 下载次数: 5






欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3