无忧启动论坛

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

ud.FAT法:把UD扩展区当作fat区

  [复制链接]
跳转到指定楼层
1#
发表于 2015-1-23 21:33:00 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 pseudo 于 2015-1-23 21:49 编辑

如果能把UD扩展区当作fat16/32区分配盘符,用windows资源管理器来访问(即使只读),当然方便。那样小gho文件、散开的外置工具放入ud就方便读取了。
障碍之一,ud扩展区无对应分区表项,或者不是第一个分区表项,windows不会自动分配盘符。
这个好办,pecmd2012就有把盘上某些扇区映射成一个盘的功能。
障碍之二,即使把ud扩展区直接映射成一个分区,这个分区也因无文件分配表(File Allocation Table,FAT),windows资源管理器读不懂它。
在不提供专门的ud文件系统驱动程序、不像udm、multimbr那样对ud做大动作前提下,构造FAT成为关键。

下面是思路,有待实证:
1、fbinsttool格式化ud时,问用户是否为ud扩展区生成FAT,如果“是”,就在ud扩展区写入一个名为ud.FAT(或者一个固定、特定、恰当的其它名字)的适当大小文件。
对于ud而言,ud.FAT只是ud扩展区文件之一,此法只需增加一个文件到ud,ud的结构没大变动。
2、ud.FAT作为ud扩展区第一个文件,占据ud扩展区开头位置,往ud扩展区加入其它文件时,fbinsttool须确保它们总是位于ud.FAT之后。整理ud碎片时,fbinsttool确保ud.FAT保持在ud扩展区开头。
3、整个ud扩展区被当作无分区表项的一个fat16/32分区,ud.FAT占据空间恰好对应分区头部,内容含fat16/32分区的分区引导记录、文件分配表等,ud扩展区其它文件内容占据的空间对应fat16/32分区内相应文件内容占据的空间。ud扩展区其它文件有双重身份:既是普通ud扩展区文件,在ud头部有文件登记信息;又是fat16/32分区普通文件,在fat16/32分区头部即ud.FAT里有文件登记信息。ud.FAT有双重身份:既是普通ud扩展区文件,在ud头部有文件登记信息;又是fat16/32分区头部。
4、往ud扩展区加入其它文件、整理碎片时,ud.FAT内容被相应同步修改。

点评

很有想法,思路清晰明了。  发表于 2015-2-23 20:58

评分

参与人数 5无忧币 +21 收起 理由
hero8000 + 5 赞一个!
fxq + 5 很给力!
不会懂1 + 1 www.h7u.net魔天记
潜水者 + 5 赞一个!
zhczf + 5 赞一个!

查看全部评分

88#
发表于 2015-3-15 21:32:17 | 只看该作者
是把整个ud区当作fat分区吗?
回复

使用道具 举报

87#
发表于 2015-2-26 00:14:32 | 只看该作者
pseudo 发表于 2015-2-25 23:47
没有udext.exp文件时,等效于有一个包含UD扩展区所有文件列表的udext.exp文件?
“同步到UD目录”反过来也 ...


1: >>没有udext.exp文件时,等效于有一个包含UD扩展区所有文件列表的udext.exp文件?
需要输出的文件,其实很少。大概就efi.img.
其它,输出,还真没看到有什么实际的用途。

1)BIOS启动阶段:
现在UD启动后,直接看到的目录就是(hd0,0),  就是UD扩展区本身,不在是(ud).
在bios启动阶段,用户  不用 (ud) 了,直接用(hd0,0)。什么文件都看的清清楚楚。
相当于一个扩展的(udext).

2)windows阶段:也是直接访问 UD扩展区本身, 自动记载到盘符。


现在UD主区,就放个引导文件,和 udext.exp.


2: “同步到UD目录”反过来也行?
现在没有这个必要。
1) 操作主要在 扩展区的文件系统上。文件直接拷过来就可以了。
对于需要输出到UD的文件,碎片整理下,在点下 “同步到UD目录”就可以了。
事实上,需要导出的IMG文件,一般创建后就不动了,所以“同步到UD”一次后, 再也不需要 “同步到UD”了。

2) UD扩展区被锁住了, FBtool不能创建会修改文件。所以, 自然就没有 UD-->文件系统 这回事。
再说,那样也太费劲了,直接拷贝过去就完了,干嘛 非得绕过圈子,绕UD,创建,在导过来?

扩展区的操作 是“以文件系统上操作为主”,需要才同步到UD。


回复

使用道具 举报

86#
 楼主| 发表于 2015-2-25 23:47:29 | 只看该作者
没有udext.exp文件时,等效于有一个包含UD扩展区所有文件列表的udext.exp文件?
“同步到UD目录”反过来也行?

点评

1: >>没有udext.exp文件时,等效于有一个包含UD扩展区所有文件列表的udext.exp文件? 需要输出的文件,其实很少。大概就efi.img. 其它,输出,还真没看到有什么实际的用途。 1)BIOS启动阶段: 现在UD启动后,  详情 回复 发表于 2015-2-26 00:14
回复

使用道具 举报

85#
发表于 2015-2-25 20:40:59 | 只看该作者
本帖最后由 mdyblog 于 2015-2-25 20:43 编辑
pseudo 发表于 2015-2-25 15:52
嗯,请J大看看能否做个调整:格盘时,允许选择ud扩展区起点——起点可以像原来那样紧接(8M)ud区,也可以往 ...


MBROSTool -16 已经支持了---高端隐藏。


同时支持 扩展同步到UD目录。

MBROSTool5.3-16B-支持UD扩展区.7z

支持同步 UD扩展区的文件 到 UD目录。 FBInstTool 等也可以看到这个文件。
udext.exp中保存   UD扩展区的文件 需要输出到 UD的文件名 列表。UTF8编码。
选【同步到UD目录】,就会 同步到UD目录,并报告结果。



同步后的报告:




对于那些在UD中无效的文件,会提示滴。


回复

使用道具 举报

84#
 楼主| 发表于 2015-2-25 15:52:03 | 只看该作者
嗯,请J大看看能否做个调整:格盘时,允许选择ud扩展区起点——起点可以像原来那样紧接(8M)ud区,也可以往后平移到某处(可简单地让ud扩展区充满u盘后端)。
这可能需要修正某些fbinstplus、fbinsttool代码。但从概念上说,变动将很有限,比较可行。

变动之后,fbinsttool照常管理ud区和ud扩展区,用户习惯完全不变。

变动之后,u盘可以做成单分区表项结构:
(8M)ud区(不可见)+普通区(分区表项排第一,自然可见)+ud扩展区(不可见)
分区表项法映射ud扩展区的efi.img后,ufi区对应第二分区表项,自然对windows隐藏。
由于保持了第一分区表项对应低端分区,可极大提高efi启动成功率。

缺点是ud扩展区靠后可能BIOS启动时影响读盘,这由用户了解利弊后自己设法应对就是了。

点评

MBROSTool -16 已经支持了---高端隐藏。 、、  详情 回复 发表于 2015-2-25 20:40
回复

使用道具 举报

83#
发表于 2015-2-24 18:26:56 | 只看该作者
后学这样一个想法,不知可通也?

把可见分区建立在最前面,UD建立在中端深度隐藏,由UD建立出来的分区表项分区,自然变成最后隐藏分区+v2

如此数据由最后往前面推计算,后学认为grub4dos应该可以在中端启动才是。

NTFS+UD+V2=三分区
回复

使用道具 举报

82#
发表于 2015-2-22 16:21:39 | 只看该作者
mdyblog 发表于 2015-2-22 13:00
原版ud
FbinstTool 1.607.2015.0119.EXE  其它版本也可以。

恩。
我那个脚本其实也不需要,不过是占位罢了
回复

使用道具 举报

81#
发表于 2015-2-22 13:00:39 | 只看该作者
本帖最后由 mdyblog 于 2015-2-22 13:04 编辑
sunsea 发表于 2015-2-22 10:33
原版ud?拓展区是按本楼的fat法吧?


原版ud
FbinstTool 1.607.2015.0119.EXE  其它版本也可以。

可能差不多吧。
没有 ud.FAT
扩展区不需要一个文件(或尸体)。

点评

恩。 我那个脚本其实也不需要,不过是占位罢了  详情 回复 发表于 2015-2-22 16:21
回复

使用道具 举报

80#
发表于 2015-2-22 12:59:43 | 只看该作者
zds1210 发表于 2015-2-22 00:38
你这项把UD扩展区map成一个盘,能不能在原版的UD中使用?
能的话,又要怎么使用?

贴张图吧!
回复

使用道具 举报

79#
发表于 2015-2-22 10:33:22 来自手机 | 只看该作者
mdyblog 发表于 2015-2-21 18:15
MBROSTOOL
已经实现了  UD扩展区  MAP成一个硬盘分区出来。
PECMD也实现了。

原版ud?拓展区是按本楼的fat法吧?

点评

原版ud FbinstTool 1.607.2015.0119.EXE 其它版本也可以。  详情 回复 发表于 2015-2-22 13:00
回复

使用道具 举报

78#
发表于 2015-2-22 08:24:55 | 只看该作者
本帖最后由 mdyblog 于 2015-2-22 08:27 编辑
zds1210 发表于 2015-2-22 00:38
你这项把UD扩展区map成一个盘,能不能在原版的UD中使用?
能的话,又要怎么使用?


》》你这项把UD扩展区map成一个盘,能不能在原版的UD中使用?
能的话,又要怎么使用?
---------------------
1) 原版的UD 可以访问 主数据区,随便 编辑都可以。
2) 扩展区,只能查看允许看的那部分文件,不能编辑-----锁住了。
     ---目前,“查看允许看的那部分文件”,那部分界面还没写(接口设计好了),只是锁住了。目前投石问路,看大家的反映,喜欢,且我有时间就接着写。
     我想,“查看允许看的那部分文件”,没几个吧。就是几个重要的IMG。

3) BIOS启动时map成(hd0,0), 后面是透明的了。
4)    PE启动时, PECMD直接加载到盘符,  后面是透明的了。
回复

使用道具 举报

77#
发表于 2015-2-22 00:38:36 | 只看该作者
mdyblog 发表于 2015-2-21 18:15
MBROSTOOL
已经实现了  UD扩展区  MAP成一个硬盘分区出来。
PECMD也实现了。


你这项把UD扩展区map成一个盘,能不能在原版的UD中使用?
能的话,又要怎么使用?

点评

贴张图吧! [attachimg]209980[/attachimg]  详情 回复 发表于 2015-2-22 12:59
》》你这项把UD扩展区map成一个盘,能不能在原版的UD中使用? 能的话,又要怎么使用? --------------------- 1) 原版的UD 可以访问 主数据区,随便 编辑都可以。 2) 扩展区,只能查看允许看的那部分文件,不  详情 回复 发表于 2015-2-22 08:24
回复

使用道具 举报

76#
发表于 2015-2-21 18:15:22 | 只看该作者
MBROSTOOL
已经实现了  UD扩展区  MAP成一个硬盘分区出来。
PECMD也实现了。
grldr也实现了。(包内有), 如果用默认的 grldr, 需要调用包内的 ldudpe来map UD。
还可以锁住UD区,防止fbt  fbi  等破坏。
现在 可以直接启动PE, 并在PE中加载 UD到盘符(Z:),访问外置。

效果:
6269#


PECMD.EXE (88.05.52)  UDM+FIXDRV.WCS 也支持 UDEXt

PE启动时, 自动加载  UDEXt效果图:

点评

原版ud?拓展区是按本楼的fat法吧?  详情 回复 发表于 2015-2-22 10:33
你这项把UD扩展区map成一个盘,能不能在原版的UD中使用?  详情 回复 发表于 2015-2-22 00:38
回复

使用道具 举报

75#
发表于 2015-2-10 23:02:57 来自手机 | 只看该作者
pseudo 发表于 2015-2-10 18:56
@sunsea
辛苦了。


pecmd去不掉,扇区映射和分区表修改实在很方便
回复

使用道具 举报

74#
发表于 2015-2-10 22:48:14 来自手机 | 只看该作者
pseudo 发表于 2015-2-10 18:56
@sunsea
辛苦了。


extinfo.txt内有分区的偏移和长度,格式如下:
起始扇区号s*以扇区计量的分区长度s

到时直接读该文件即可
回复

使用道具 举报

73#
发表于 2015-2-10 22:37:07 来自手机 | 只看该作者
pseudo 发表于 2015-2-10 18:56
@sunsea
辛苦了。


extinfo.txt是留给grldr内的加载程序和编辑程序用的
回复

使用道具 举报

72#
 楼主| 发表于 2015-2-10 18:56:54 | 只看该作者
本帖最后由 pseudo 于 2015-2-10 19:02 编辑

@sunsea
辛苦了。

想更方便:1产生了 (ud)/extinfo.txt文件,能否不要此文件,仍实现2、3。
pecmd能否不限于2012版。

另外,如果输入的序号是5或其它,可能会等效于1,有点风险。

点评

pecmd去不掉,扇区映射和分区表修改实在很方便  详情 回复 发表于 2015-2-10 23:02
extinfo.txt内有分区的偏移和长度,格式如下: 起始扇区号s*以扇区计量的分区长度s 到时直接读该文件即可  详情 回复 发表于 2015-2-10 22:48
extinfo.txt是留给grldr内的加载程序和编辑程序用的  详情 回复 发表于 2015-2-10 22:37
回复

使用道具 举报

71#
发表于 2015-2-10 17:57:38 来自手机 | 只看该作者
mdyblog 发表于 2015-1-25 21:59
不占用分区表的, 只是在文件的flag中做了个标记。
是 深度隐藏的。


启动时自动加载,就有看需要提前到什么地步了,是提前于native的话我有驱动,提前于shell的话就一堆方案了
回复

使用道具 举报

70#
发表于 2015-2-10 13:38:32 | 只看该作者
看了老大的帖子,还是不明白到底要把UD扩展区弄成什么样子?老大们能不能说清楚一些。
回复

使用道具 举报

69#
发表于 2015-2-10 13:27:38 | 只看该作者
本帖最后由 sunsea 于 2015-2-10 23:05 编辑
pseudo 发表于 2015-1-28 14:41
不支持这种双国籍,ud文件系统暂时看不到发展方向了。

那就放弃ud文件系统吧。


写好了,一个cmd脚本,配合pecmd2012(用cli版)和fbinst plus:
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. color 0a
  4. title ud.FAT制作工具 by sunsea
  5. echo ud.FAT制作工具
  6. echo.
  7. echo 1.全新制作
  8. echo 2.挂载盘符
  9. echo 3.制作分区表项
  10. echo 4.退出
  11. echo.
  12. set /p choice=请输入序号:
  13. if "%choice%"=="1" goto 1
  14. if "%choice%"=="2" goto 2
  15. if "%choice%"=="3" goto 3
  16. exit

  17. :1
  18. echo 请输入磁盘编号(别选错了!):
  19. fbinst.exe --hdlist "No.%%N %%I %%P"
  20. set /p choice=请输入磁盘编号(别选错了!如果列表为空请自觉退出):
  21. cls
  22. echo.
  23. echo 注意:您的U盘上的数据将在制作过程中彻底丢失!如果您没备份好请自觉退出
  24. pause
  25. set /p size=请输入UD区大小,单位为MB:
  26. set /p primarysize=请输入UD的主分区大小,单位为MB:
  27. set /p grldrfile=请输入你的引导器的路径:
  28. set /a size=%size%*1024*2
  29. set /a primarysize=%primarysize%*1024*2
  30. set /a extended=%size%-%primarysize%+6
  31. fbinst.exe (hd%choice%) format -f --fat32 -a --unit-size 8 -p %primarysize% -e %extended% -l 50
  32. fbinst.exe (hd%choice%) add grldr %grldrfile%
  33. set tempfilename=%random%
  34. set /a extstartsector=64+50+%primarysize%+3
  35. set /a extlengthsector=%extended%-6
  36. echo %extstartsector%s*%extlengthsector%s>"%TEMP%\%tempfilename%.txt"
  37. echo 不要往UD内添加其他文件或者进行碎片整理了!>"%TEMP%\警告.txt"
  38. fbinst.exe (hd%choice%) add extinfo.txt "%TEMP%\%tempfilename%.txt"
  39. fbinst.exe (hd%choice%) add 警告wanring.txt "%TEMP%\警告.txt"
  40. set udFATLength=
  41. if 8388608 LSS %extlengthsector% (set udFATLength=4294967295) else (set /a udFATLength=%extlengthsector%*512)
  42. fbinst.exe (hd%choice%) resize ud.FAT %udFATLength% -e
  43. PECMD.EXE RAMD ImDisk*V*%extstartsector%s*%extlengthsector%s*1*\\.\PhysicalDrive%choice% -a -o hd -m O:
  44. echo.
  45. set /p fs=请输入ud.FAT的文件系统名字(比如FAT32或者NTFS):
  46. format O: /fs:%fs% /q /v:udFAT
  47. echo.
  48. echo ud.FAT已经制作完毕!
  49. set /p exp=需要explorer游览吗?(y/n):
  50. if "%exp%"=="y" start /wait explorer O:
  51. echo 卸载。
  52. PECMD.EXE RAMD ImDisk* -D -m O:
  53. pause
  54. exit

  55. :2
  56. echo 请输入磁盘编号(别选错了!):
  57. fbinst.exe --hdlist "No.%%N %%I %%P" --ALL --UD
  58. set /p choice=请输入磁盘编号(别选错了!如果列表为空请自觉退出):
  59. cls
  60. fbinst.exe (hd%choice%) export extinfo.txt "%TEMP%\extinfo.txt"
  61. for /f "usebackq" %%a in ("%TEMP%\extinfo.txt") do set extinfo=%%a
  62. set /p mp=请输入挂载盘符:
  63. PECMD.EXE RAMD ImDisk*V*%extinfo%*1*\\.\PhysicalDrive%choice% -a -o hd -m %mp%:
  64. echo 挂载完毕!
  65. set /p exp=需要explorer游览吗?(y/n):
  66. if "%exp%"=="y" start /wait explorer %mp%:
  67. pause
  68. echo 卸载。
  69. PECMD.EXE RAMD ImDisk* -D -m O:
  70. exit

  71. :3
  72. echo 请输入磁盘编号(别选错了!):
  73. fbinst.exe --hdlist "No.%%N %%I %%P" --ALL --UD
  74. set /p choice=请输入磁盘编号(别选错了!如果列表为空请自觉退出):
  75. cls
  76. fbinst.exe (hd%choice%) export extinfo.txt "%TEMP%\extinfo.txt"
  77. for /f "usebackq" %%a in ("%TEMP%\extinfo.txt") do set extinfo=%%a
  78. set extinfo=%extinfo:*=,%
  79. set i=0
  80. for /f "delims=," %%a in ("%extinfo%") do (echo %%a>"%TEMP%\extinfo!i!.txt"&set /a i=!a!+1)
  81. for /f "usebackq" %%a in ("%TEMP%\extinfo0.txt") do set /a extstart=%%a
  82. for /f "usebackq" %%a in ("%TEMP%\extinfo1.txt") do set /a extlength=%%a
  83. rem 其实WIndows不管分区ID,只要是07或者0B都看得见且能用
  84. PECMD.EXE TEAM CALC #extstartbyte=%extstart%|CALC #extlengthbyte=%extlength%|PART -raw %choice%#4 %%extstartbyte%% %%extlengthbyte%%
  85. echo 生成完毕。
  86. pause
复制代码
回复

使用道具 举报

68#
发表于 2015-2-9 17:39:42 来自手机 | 只看该作者
pseudo 发表于 2015-1-28 14:41
不支持这种双国籍,ud文件系统暂时看不到发展方向了。

那就放弃ud文件系统吧。

我弄。
回复

使用道具 举报

67#
发表于 2015-2-9 11:51:55 | 只看该作者
本帖最后由 zds1210 于 2015-2-9 11:53 编辑

为了挽救UD,大家一直在努力。
但这种PE内核打包整体启动,貌似也是造成兼容性问题的重要原因。
个人感觉还是简化型UD三分区或分区表项好,UD区就放一个grldr,其它放到高端区或映射的img中。
回复

使用道具 举报

66#
发表于 2015-2-8 10:40:57 来自手机 | 只看该作者
直接映射然后用windows的格式化功能格式化,然后修改ud文件分配表即可
回复

使用道具 举报

65#
发表于 2015-2-8 08:29:00 | 只看该作者
jianliulin 发表于 2015-1-25 12:25
ud的文件列表是以一个个保存着文件信息(大小、名称等)结构体排列组成,以下是结构体的声明,

str ...

哪里呢小程序啊
回复

使用道具 举报

64#
发表于 2015-2-1 12:23:50 | 只看该作者
回复

使用道具 举报

63#
发表于 2015-2-1 11:49:35 来自手机 | 只看该作者
此帖怎么沉了?期望有工具出来,让我们傻瓜化制作
回复

使用道具 举报

62#
 楼主| 发表于 2015-1-29 11:56:20 | 只看该作者
本帖最后由 pseudo 于 2015-1-29 11:59 编辑
mdyblog 发表于 2015-1-28 21:35
可以用PECMD2012

建一个 FAT的IMG文件 efi.img


这样这个efi.img仍有ud身份,且受限于4g,不能利用整个ud扩展区。

放弃ud文件系统,只把fbinsttool作为分区工具,划分出ud扩展区,然后不用fbinsttool管理该区,用别的工具(需要这种小工具)为ud扩展区分配盘符,然后用资源管理器直接管理,爱格成fat还是exfat、ntfs、ext2、hpfs随意,文件可以不受4g限制,把ud扩展区当作一个深度隐藏区来用,ud扩展区空间得到充分利用。

就是说,ud扩展区上的东西只有一种身份(那就不限于4G了),fbinsttool彻底放弃对其管理。
回复

使用道具 举报

61#
发表于 2015-1-29 00:43:06 | 只看该作者
既然UD扩展分区看不到发展方向,不如就舍弃吧。每次仅建立UD主分区。那不就没那么多事了吗
回复

使用道具 举报

60#
发表于 2015-1-28 22:51:06 | 只看该作者
pseudo 发表于 2015-1-28 13:30
这里2493楼 有一个。

就算13年版本应该也有办法启动成功。

谢了。我就是把那两个拖进ud。一直都是没按什么就让他进入系统
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-25 14:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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