无忧启动论坛

标题: ud若干特殊现象解释 [打印本页]

作者: pseudo    时间: 2011-1-2 16:53
标题: ud若干特殊现象解释
一、ud文件系统

ud文件系统比较简单。开发者经常采用怎么编程简单就怎么做的方式处理问题。理解这点,许多问题都很自然得到解释。

1、是否允许文件名带空格
先声明我没有仔细考证到底是否允许带空格,我想说的是,即使不允许空格,也很自然、合理。

有空格的文件名、目录名处理起来,比无空格的复杂。

举个例子,如果允许文件名带空格,那么
copy A B C
是表示把“A B"这个文件复制成”C”,还是把“A”复制成“B C”?

既然这样写有歧义,那么这样约定吧:用户必须把文件名加上双引号,写成诸如:
copy “A B” “C”
这样是清楚了。

但用户会抱怨,我的文件没有空格,还要加引号,烦。显示文件列表的时候,显示那么多引号,烦。更有人提出:我想把双引号本身,作为特殊文件名的一部分,你能支持吗?

看来,加双引号也有随双引号带来的烦恼。

那么,作为开发者,怎样才简单?规定ud里不支持文件名带空格最简单!ud是新事物,作者可以制定游戏规则。

那么遇到有空格的要拖入,怎么办?拒绝吗?不好。折中点,帮你改名放入吧。

大家在ie中也许有经验,保存网页时,如果标题有冒号,\号等特殊字符,那么有的网站会帮你转成其它合法字符让你保存,有的网站不帮你转,结果保存时报错:文件名有非法字符。

2. 零字节文件
太特殊了,也没啥实际意义,如果处理麻烦,不支持算了。

3. 理解ud的目录
管理目录层次多复杂啊。不支持算了。
但文件多了,按多层次目录管理很有必要,怎么办?
弄个假的(模拟的)多层次目录对付一下,事实上只有一个目录层次。

你想把0PE.GZ放在0PE目录?好,我把这个文件还是放在根目录(事实上只有一个目录层次),但文件名记为“0PE/0PE.GZ",注意这里”/“号你看着以为是目录分隔,其实只是组成文件名的多个字符中的一个。然后,fbinttool按文件名的特点,以树状结构图形化显示ud里的文件,让你看起来很有”层次”感,真以为ud里有目录层次了。

实际上ud里所有文件摆的是一字长蛇阵,都在一个层次上,不过有的文件名带有一个或多个“/"号而已。这一字长蛇阵,管理起来多简单啊,真弄层次结构,就复杂多了。如果你是开发者?你不想省点事?即使你有劲头弄复杂的,想过没有,越复杂越容易出错,难维护,没完没了啊。再说,搞那么复杂,有多大必要?

现在可以理解为什么ud不支持空目录了。即你把某目录下文件都删掉,这个目录就跟着不存在了。

要体验这些很简单。你在fbinsttool中右键点击ud里根目录的grldr文件,重命名为abc/grldr,你会发现,fbinttool显示ud里多了个abc目录,grldr跑到abc目录里去了。
实际上,grldr还在原地,只是名字改为带”/"号的了,你看到grldr在abc目录,那是fbinttool根据文件名,把本来同一层次的文件,按树状显示成不同层次的结构,骗你的,好听点叫“模拟”,当然大家也乐意上这个当。
因为ud里压根没有abc目录,只有名为“abc/grldr”的文件,目录是附属于文件而模拟存在的。当你用fbinttool删除abc目录里的grldr文件,就对应着删除“abc/grldr”这个文件,删除后,没有文件名以abc/开头的文件了,于是目录abc也就跟着消失。

二、PE、Linux在ud的部署

1. 为什么pe不能解开放入ud

fbinst+0PE有“悠久”的历史。
0PE是首个可以解开iso放入ud的PE,已经两年了,至今能这样部署的PE依然不多。
解开放入的好处之一是启动超快。200MB的0PE甚至快过20MB的其它PE,因为0PE有更小的“U启内核”。
解开的另一个好处是方便增删组件。

那么其它PE为什么不能解开放入ud呢?
一般pe最终是由setupldr.bin(可能被改名了)引导的,grub4dos菜单里写成诸如:
chainloader /setupldr.bin
如果pe的iso解开放入ud,那么setupldr.bin获得控制权后,它要找ntdetect.com、winnt.ini、winpe.is_等文件,肯定无法找到。因为只有grldr、fbinst能访问ud,微软程序setupldr.bin不认得ud里的东西。

2. 为什么CDlinux等linux类的iso不能全藏入ud

因为iso里有两部分程序,一部分只在启动初期用到,载入内存后,这部分文件就不需要了;另一部分是进入保护模式后(这时grldr的仿真已失效)才用到的。
如果藏入ud,那么前一部分没问题,但进入保护模式后,要访问后一部分就没办法了,grldr已经失效,linux不认识ud,注定失败。
firadisk能否挽救?不能,firadisk只能在windows保护模式下起作用,对linux无效。

其实,要将类linux的iso藏入ud也是可以的,但可见区要放一份从iso解出的文件,以便解决访问后一部分文件的问题。

另一种办法是将后一部分文件”全内置“到前一部分文件里,启动初期随前一部分一并载入内存,这要改变iso里文件原有文件及其结构,多占内存,但确实可以实现全藏入ud的目的。后像已经开始有人这么去做了。

有个课题可以研究一下,就是如何(不改变结构)直接将CDlinux等全藏入ud。这个应该不太难。0PE差不多就是答案了。

以上过年闲聊,不必较真。
作者: Plantsoot    时间: 2011-1-2 17:03
P大总结的非常好,呵呵,搜集到我的帖子中去喽。
作者: fjxplsy    时间: 2011-1-2 17:11
学习啦!
谢谢P大
新年好!
作者: uiojkmm    时间: 2011-1-2 17:18
标题: 标题
顶p大,先顶再看
--------------
问下,如果在载入某个pe到内存前,用map (ud)/xx.iso将某个镜像载入内存,进到pe后能看到这个iso的内容吗?

[ 本帖最后由 uiojkmm 于 2011-1-2 17:42 编辑 ]
作者: messenger    时间: 2011-1-2 17:27
P大总结的很到位,学习了!
作者: 2010geminizz    时间: 2011-1-2 17:56
标题: 厉害啊,这里真是卧虎藏龙,新来报到,拜读拜读,谢谢你们的研究和分享
谢谢你们的研究和分享啊,拜读拜读!
新年快乐!
作者: pseudo    时间: 2011-1-2 19:12
原帖由 uiojkmm 于 2011-1-2 17:18 发表
顶p大,先顶再看
--------------
问下,如果在载入某个pe到内存前,用map (ud)/xx.iso将某个镜像载入内存,进到pe后能看到这个iso的内容吗?

开始时,ud不支持不带--mem参数的map (ud)/xx.iso,后来支持了。但我没考究对ud里文件不带--mem的map,是否被bean处理成实际上仍按带参数--mem来处理。换句话说,对ud文件,有无--mem是否都一样?
这个你可以测试一下,用一个较大体积的xx.iso,加与不加--mem分别试一下,进pe(非0PE)后看看剩余内存是不是小了许多。我也想知道答案。

map仿真盘,只在实模式好访问。带--mem参数的仿真盘,进入windows保护模式后,仍在内存中,不过一般访问不了。firadisk等,可以在保护模式下支持访问grub4dos(带--mem参数的)内存仿真盘,不带参数的访问不了。新版firadisk好像支持不带参数,但好像用法特殊。

[ 本帖最后由 pseudo 于 2011-1-2 19:14 编辑 ]
作者: 来顺祥    时间: 2011-1-2 19:19
标题: 回复 #1 pseudo 的帖子
说得很不错,等我这个小菜变成老菜时可能会理解得透彻一些,祝P大新年快乐!
作者: uiojkmm    时间: 2011-1-2 20:09
标题: 标题
原帖由 pseudo 于 2011-1-2 19:12 发表


开始时,ud不支持不带--mem参数的map (ud)/xx.iso,后来支持了。但我没考究对ud里文件不带--mem的map,是否被bean处理成实际上仍按带参数--mem来处理。换句话说,对ud文件,有无--mem是否都一样?
这个你可以 ...
虚拟机测试结果(额外载入21m的镜像):
带mem:56062-56240k
不带mem无法载入.
看来把外置丢进ud是不可能的了
作者: uiojkmm    时间: 2011-1-2 20:12
如果不放在ud里,可以载入,使用内存比放在ud里带mem载入少1000k左右
作者: uiojkmm    时间: 2011-1-2 20:16
还有一个问题,无论是放在ud带mem载入,还是外置可见区载入,载入后用于起动的虚拟光驱(真正用于引导pe的光驱)都会变为无法读取,但存放于该光驱中的外置程序却能运行
作者: 快雪时晴    时间: 2011-1-2 20:58
p大的确才华横溢,理论相当纯
作者: lvguo939    时间: 2011-1-2 21:26
总结的不错,学习一下。
作者: tubaozi    时间: 2011-1-3 09:22
非常好的扫盲贴,学习学习。
作者: woshi_1001    时间: 2011-1-3 10:22
呵呵,这个非常的好,原来UD区不支持空文件目录。
作者: shan    时间: 2011-1-3 11:06
学习了,P大新年好哦
作者: sht123960585    时间: 2011-1-3 11:59
学习了,感谢P大,祝新年愉快
作者: 2010-    时间: 2011-1-3 19:02
感谢pseudo大大对于UD文件系统的讲解!学习一下……
作者: M    时间: 2011-1-3 20:13
感谢P大的讲解,学习了。受益匪浅,祝P大和无忧的各位前辈、老师、会员童鞋新年快乐。
作者: jiayang83    时间: 2011-1-3 21:00
我也感谢P大的讲解,使我解开了些未知的问题困扰。
作者: 2010DOS622    时间: 2011-1-3 22:41
哈哈,今天刚把0pe解开放在ud里,只放了0pe.gz和srs驱动
作者: 2010leisurely    时间: 2011-1-4 23:36
原帖由 pseudo 于 2011-1-2 16:53 发表
有个课题可以研究一下,就是如何(不改变结构)直接将CDlinux等全藏入ud。这个应该不太难。0PE差不多就是答案了。


支持P大,希望P大能就这个课题做个结案~~~~~~~~~
作者: shiningboy    时间: 2011-1-5 10:03
讲的不错
LZ又给0PE做广告了,0PE确实好,但至于为什么好,总是不够深入(至少我感觉是),早期一些稍微深入剖析的帖子因为架构变化也不适用,希望LZ能重新做点这方面工作,很期待
作者: 古豆    时间: 2011-1-5 17:19
0PE是个典范,应该专门研究下,如何把它的结构、技术应用于其他PE……哈哈
作者: 2010wqxcx    时间: 2011-1-5 17:35
终于弄明白是怎么回事了……
作者: HB天意    时间: 2011-1-5 18:17
如果pe的iso解开放入ud,那么setupldr.bin获得控制权后,它要找ntdetect.com、winnt.ini、winpe.is_等文件,肯定无法找到。因为只有grldr、fbinst能访问ud,微软程序setupldr.bin不认得ud里的东西。

我的外置无法在ud区加载,只能放到可见区。
很想知道怎么解决这个问题。
作者: USB3    时间: 2011-1-5 22:52
菜鸟来插嘴:0PE里有取UD工具。其他PE放入UD里整体启动,可否做批处理自动把UD的东西显示到“P盘”然后加载外置程序。
作者: pseudo    时间: 2011-1-5 23:05
原帖由 yidawpf 于 2011-1-5 18:17 发表
如果pe的iso解开放入ud,那么setupldr.bin获得控制权后,它要找ntdetect.com、winnt.ini、winpe.is_等文件,肯定无法找到。因为只有grldr、fbinst能访问ud,微软程序setupldr.bin不认得ud里的东西。
我的外置无法在ud区加载,只能放到可见区。
很想知道怎么解决这个问题。

一种方法是启动初期,用grub4dos将工具映像,甚至整个ud区,map为内存盘。pe集成firadisk,在windows里访问该盘,找到外置工具。

另一种方法是进入pe桌面后,用fbinst,或者类似百草霜的udhelper将外置工具取出来用。

更完善的方法,是开发一个windows下ud文件系统驱动,现在没精力搞。估计后面也会有高人出手,等现成的吧。

0PE大约在2009年上半年,提供了全藏入ud的全外置pe,是通过fbinst取ud工具的。
百草霜的工具不借助fbinst直接访问ud。目前0pe独家集成。
作者: kaojinni    时间: 2011-2-25 14:14
见解得相当丰富!看看就不一样!
作者: 2011zhafai    时间: 2011-3-11 02:51
ud真的是个比较神奇的文件系统····
作者: Allreal    时间: 2011-3-11 10:25
谢谢精辟的讲解。  :)  学习啦。
作者: js01    时间: 2011-3-28 13:39
学习了,总算找到解释以前觉得莫明其妙的问题。谢谢P大。
作者: binghe    时间: 2011-4-17 00:02
感谢普及知识啊。。。。
作者: lizp2020    时间: 2011-4-17 13:34
水平不够,还看不懂。
作者: 2011spj    时间: 2011-6-2 17:06
新手,刚刚了解UD,来学习下
作者: 2011ak47hqd    时间: 2011-6-5 18:55
大开眼界啊 学习过了
作者: 20116339    时间: 2011-7-7 12:42
见解得相当丰富!看看就不一样!
深入浅出,说的很明白!!
作者: 2011hbboyxu    时间: 2011-7-9 00:45
来学习来着!!!!!!顶一把。。。
作者: 2012zhai    时间: 2012-1-29 13:28
对于fbinst初学者很有帮助
作者: zeknight    时间: 2012-1-29 15:18
所有的东西都建立在对硬件的深入了解的基础上,佩服之至啊!
作者: xacxf_2000    时间: 2012-1-30 09:26
总结的不错,学习一下。
作者: congwulong    时间: 2012-3-13 19:37
更透彻的理解了UD,谢谢
作者: ll6ll6ll6    时间: 2012-7-29 22:37
好文,需要学习的东西太多了
作者: 445112826    时间: 2012-7-30 15:21
拜读,很多看不懂,学习中。
作者: 2012小飞侠    时间: 2012-9-3 19:56
标题: 回复 #1 pseudo 的帖子
好文章要顶的,好像有点短了,不能发
作者: zhczf    时间: 2012-9-4 12:58
看一看啊,学习一下啊,多谢了
作者: 冷静永不变    时间: 2012-9-20 18:14
这等好帖,沉了可惜,感谢P大的精彩总结。
作者: zds1210    时间: 2012-9-26 16:57
这个文章写得字啊。UD好,相当的好。U+也不错啊。量产也好。
作者: zds1210    时间: 2013-7-25 11:45
好帖子,决定援精。
作者: 2013_Jogger    时间: 2014-2-22 21:20
总结的很好。我怎么现在才看到。。。
作者: 2012hzy6420    时间: 2014-2-23 08:50
xx学习学习,谢谢分享




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