无忧启动论坛

标题: 关于map -in-situ [打印本页]

作者: chiannet    时间: 2015-4-26 09:16
标题: 关于map -in-situ
由于Windows只能识别可移动的U盘设备第一个主分区,如果没有主分区,则只能识别第一个逻辑分区。我想把UD所在u盘的高端隐藏分区(第二个主分区)map为一个只读的盘,用了以下命令尝试

map --read-only --in-situ (%root%,2)+1 (0xff)

map --read-only --in-situ (%root%,2)+1 (hd127)

两种写法任选其一,进入03PE(已集成WinVBlock)后,发现map的分区均被识别为本地驱动器,且--read-only参数似乎不起作用?都是可写的。请问该怎么解决此问题?
作者: 不点    时间: 2015-4-26 10:29
你的两条命令是完全一样的,都是采用磁盘号 255:

0xFF 是 255,而 hd127 等于 0x80 + 127 也等于 255。所以,两条命令没有差别。

in-situ 参数只能用于创建虚拟硬盘,不能用于创建虚拟光盘。所以,你的用法不符合开发者的设计目的。

但 winvblock 这个驱动程序允许你这么使用,它仍旧可以把你这个虚拟光盘当作虚拟硬盘来对待,算你幸运。

不过,据我所知,winvblock 和 firadisk 都没有支持 --read-only 参数,它们都忽略了这个参数。

你可以向 winvblock 的开发者提建议,要求支持 read only 的操作。不过,我个人认为,如果让 windows 下不能够写盘,则 windows 恐怕会出毛病。所以你最好干脆放弃使用 read only 参数。


作者: chiannet    时间: 2015-4-26 11:23
不点 发表于 2015-4-26 10:29
你的两条命令是完全一样的,都是采用磁盘号 255:

0xFF 是 255,而 hd127 等于 0x80 + 127 也等于 255。 ...

       谢谢不点大大指正谬误。

       我目前所用到的 imdisk,是支持物理驱动器的扇区映射为驱动盘的,且只读或可写均可,但imdisk是
只能在windows下运行的程序。也不好在native shell 阶段取得imdisk扇区映射为驱动盘所需的参数(扇区起始地址,长度等)
     不点大提到in-situ 参数只能用于创建虚拟硬盘,不知GRUB4DOS有其它方式可以将一个目录或一个分区映射为虚拟光盘的方式没有?或者 在grldr阶段获取(%root%,2)的起始扇区地址,长度,把它们写成文件,供native shell 调用?
作者: sp_star    时间: 2015-4-26 11:53
chiannet 发表于 2015-4-26 11:23
谢谢不点大大指正谬误。

       我目前所用到的 imdisk,是支持物理驱动器的扇区映射为驱动盘 ...

grldr应该也能按扇区映射。

作者: chiannet    时间: 2015-4-26 11:58
sp_star 发表于 2015-4-26 11:53
grldr应该也能按扇区映射。

关键是如何映射为只读盘?
作者: sp_star    时间: 2015-4-26 12:41
chiannet 发表于 2015-4-26 11:58
关键是如何映射为只读盘?

grldr映射的盘在native shell里也是不识别的,必须通过驱动来识别,比如winvblock 和 firadisk。上面不点说过,驱动不支持read only,这就没办法了。不过rw的盘,应该也能用吧?
作者: 不点    时间: 2015-4-26 12:51
sp_star 发表于 2015-4-26 11:53
grldr应该也能按扇区映射。

grub4dos 的虚拟盘是 bios 级别上的,不是操作系统级别上的。在 bios 级,没有文件系统的概念,因此没有目录(文件夹)的概念。所以,grub4dos 不存在把某个目录仿真为一个盘号的说法(就是说,这样的说法是没有意义的)。在古老的 DOS 时代,有个命令叫做 subst,可以把某个目录虚拟为一个盘号。这个 subst 就是操作系统级别的虚拟化程序。

一个分区就是一个扇区序列,所以,grub4dos 可以把分区映射为软盘、硬盘或光盘。在 grub4dos 下可以生办法获得一个分区的起始扇区和长度。这是能够做到的事情,只不过需要你去学习和研究。


作者: dd102    时间: 2016-6-15 19:08
不点 发表于 2015-4-26 12:51
grub4dos 的虚拟盘是 bios 级别上的,不是操作系统级别上的。在 bios 级,没有文件系统的概念,因此没有 ...

map (hd0)102400+16384000 (hd0)
为什么会提示  实际hd0 是40g的
info: total sectors calculated froM partition table(16370235) is less than the n UMber of sectors in the whole disk iMage(16384000).
作者: 不点    时间: 2016-6-15 21:40
dd102 发表于 2016-6-15 19:08
map (hd0)102400+16384000 (hd0)
为什么会提示  实际hd0 是40g的
info: total sectors calculated fro ...

这段英文,是告诉一点信息,如果看不懂,可以忽略。

背景知识:你要把某个扇区序列映射为一个虚拟硬盘。这个扇区序列的第一个扇区,就是虚拟硬盘的 mbr,它含有虚拟硬盘的分区表。从分区表可以算出虚拟硬盘的总扇区数。它应该等于 16384000 才对。可是却不相等。于是,grub4dos 给出一条信息,提醒你注意。如果你的分区表正好让所有的扇区都划分完毕,没有空闲的扇区,那就不会出现提示信息了。
作者: dd102    时间: 2016-6-15 23:07
不点 发表于 2016-6-15 21:40
这段英文,是告诉一点信息,如果看不懂,可以忽略。

背景知识:你要把某个扇区序列映射为一个虚拟硬盘 ...

好像读取虚拟出来的分区表不对,我再仔细看看,谢谢大师




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