无忧启动论坛

标题: 不好意思,再次请教hotdll大大,见9楼问题 [打印本页]

作者: mygamexxx    时间: 2011-12-7 13:44
标题: 不好意思,再次请教hotdll大大,见9楼问题
FBINST制作的启动U盘,启动后为USB-ZIP,将U盘可见分区(文件系统FAT)通过map (fd0)+1 (hd) && map --hook,再进入DOS(A盘),dir C:\ 可以发现U盘可见分区识别为C盘(未加载USB的DOS驱动),md c:\123可在U盘建立123目录,rd c:\123可删除目录123,但无法COPY文件到C:(复制过程死机,重新启动后可发现复制的文件,但容量为0字节,通过del命令可删除这些0字节文件),手动运行GHOST,选择U盘可见分区(2:1),死机。

[ 本帖最后由 mygamexxx 于 2011-12-17 16:26 编辑 ]
作者: hotdll    时间: 2011-12-7 14:07
标题: 回复 #1 mygamexxx 的帖子
你这样操作是失误的。

你想做什么?呵呵

[ 本帖最后由 hotdll 于 2011-12-17 22:16 编辑 ]
作者: mygamexxx    时间: 2011-12-7 14:10
对这个倒是不太清楚,但所有文件都可以在C:上通过dir看到。我是菜鸟啊,不知道是否与饭大说的有关。
作者: hotdll    时间: 2011-12-7 14:10
呵呵。文件列表保存在(fd)+1上。你能看到正常。
作者: mygamexxx    时间: 2011-12-7 14:12
标题: 回复 #4 hotdll 的帖子
如果使用map (fd0) (hd),DOS7.1就无法启动。freedos可以启动,但运行ghost也会死机。

[ 本帖最后由 mygamexxx 于 2011-12-7 14:18 编辑 ]
作者: hotdll    时间: 2011-12-7 14:49
标题: 回复 #5 mygamexxx 的帖子
不要map (fd0) (hd)
你查看f6img的zip段
就是处理你这个问题的。
calc *0x8280&0xff/2 > nul || debug 1 > nul && command | call :zip_fix=
calc *0x82b8 && calc *0x82b9&0xff/2 > nul || debug 1 > nul && command | call :zip_fix=
正式的代码....
exit

::处理U盘被识别为ZIP,为了保持和非ZIP一致,调整U盘为HD0
:zip_fix
setlocal && debug 0
set /a hd0=*0x475&0xff+0x7f
call :move
map (0) (hd0) > nul || goto :end
map --hook
map --floppies=0
endlocal
set bdtmp=%~5
set bdtmp=%bdtmp:~4%
if "%bdtmp%"=="(bd)" || if "%~d4"=="(fd0)" command --set-path=(hd0)%~p4 || if "%~d4"=="(fd0,0)" command --set-path=(hd0,0)%~p4
calc *0x82b8 && calc *0x82b9=*0x82b9&0xffffff00|0x80 > nul
calc *0x82a0 || write 0x82a0 0x80 > nul
set bdtmp= && exit
:move
if %hd0%==127 exit
set /a hd1=%hd0%+1
map (%hd0%) (%hd1%) > nul
set /a hd0=%hd0%-1
goto :move
作者: mygamexxx    时间: 2011-12-7 16:32
饭大的代码中 map (0) (hd0) > nul || goto :end
是否与 map (fd0) (hd0) > nul || goto :end 等同
作者: hotdll    时间: 2011-12-7 16:57
标题: 回复 #7 mygamexxx 的帖子
回复 #7 mygamexxx 的帖子
一样的
作者: mygamexxx    时间: 2011-12-17 16:24
请教饭大:在GRUB4DOS帮助文档中有这一句:“在map命令行中,(hdm,n)+1式的写法被解释成代表整个(hdm,n)分区,而不仅仅是此分区的第一扇区。”
不点大大的回复中有map --mem (fd0)+1 (rd),表示将(fd0)映射到内存盘的说法。那么map (fd0)+1 (hd)是否也可以将(fd0)映射为(hd),而不是仅仅映射(fd0)一个扇区到(hd)?
作者: hotdll    时间: 2011-12-17 22:15
标题: 回复 #9 mygamexxx 的帖子
(hd)的意思是在最后一个硬盘号+1仿真一个磁盘。可能是(hd1) 也可能是(hd2)

如果fd0和fd1是u盘的话,map --mem (fd0)+1 (hd) && map --rehook 是可以的。




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