yjqd 发表于 2016-6-3 11:16:02

UD分区怎样和硬盘交换磁盘

用FbinstTool制作的UD启动U盘,启动后,我想启动硬盘上的grldr,在命令行输入

map () (hd0)
map (hd0) ()
errorcheck off
map --hook
errorcheck on
find --set-root /grldr
chainloader /grldr

提示找不到grldr

dxvyi 发表于 2016-6-3 11:32:30

find --set-root /grldr
chainloader /grldr
boot

yjqd 发表于 2016-6-3 11:52:38

dxvyi 发表于 2016-6-3 11:32
find --set-root /grldr
chainloader /grldr
boot

我输入了boot的,刚才忘了写

dxvyi 发表于 2016-6-3 12:03:43

yjqd 发表于 2016-6-3 11:52
我输入了boot的,刚才忘了写

我的就是这样写的,没问题呀

yjqd 发表于 2016-6-3 12:12:49

dxvyi 发表于 2016-6-3 12:03
我的就是这样写的,没问题呀

你也是用的ud启动盘吗

dxvyi 发表于 2016-6-3 12:14:50

yjqd 发表于 2016-6-3 12:12
你也是用的ud启动盘吗

是呀。前面这样的:
timeout 30
default 0
gfxmenu (ud)/main || find --set-root /main && gfxmenu /main

captain_g 发表于 2016-6-3 12:39:30

设想一下,你UD启动后,如果启动U盘(宿主盘)本身就是被BIOS识别为 hd0 的情形会如何呢?

命令中的 () 和 (hd0) 不就是同一个东东吗?

所以,应该先判断一下。

yjqd 发表于 2016-6-3 13:37:16

captain_g 发表于 2016-6-3 12:39
设想一下,你UD启动后,如果启动U盘(宿主盘)本身就是被BIOS识别为 hd0 的情形会如何呢?

命令中的 ()...

UD启动后,我输入root,发现(ud)是当前盘,输入find,出现
(ud)
(hd0)
(hd1)
输入root (hd0),再输入ls,发现和(UD)中的内容一样

不知该怎样交换磁盘了

不点 发表于 2016-6-3 14:24:40

我觉得是 “胡乱使用交换磁盘的命令”。

map () (hd0)
map (hd0) ()

相当于

map (ud) (hd0)
map (hd0) (ud)

这是胡乱使用。ud 不是 BIOS 盘号,它就像 pd 那样,是一个象征性的盘号,不能用于磁盘交换。

你把这个错误的用法删除掉(即,删除这两条交换命令,也删除 map --hook 命令),就好了。

yjqd 发表于 2016-6-3 14:41:43

不点 发表于 2016-6-3 14:24
我觉得是 “胡乱使用交换磁盘的命令”。

map () (hd0)


我原来看到启动UD可见分区的pe命令如下:
find --set-root --ignore-floppies --ignore-cd /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader /bootmgr

我就以为ud能用于磁盘交换

不点 发表于 2016-6-3 14:54:17

你看 find --set-root --ignore-floppies --ignore-cd /bootmgr 执行之后,当前分区已经变成 bootmgr 所在分区了。也就是说,root 命令返回的不是 ud,而是正常的分区 (hd0,0) 之类的了。这是根本性的差别。当 root 是 ud 的时候,你不可以使用上述交换命令,因为他们交换的是 ud 的盘号,这种交换是没有意义的。

yjqd 发表于 2016-6-3 15:15:26

不点 发表于 2016-6-3 14:54
你看 find --set-root --ignore-floppies --ignore-cd /bootmgr 执行之后,当前分区已经变成 bootmgr 所在 ...

确实是你说的那样,当我把两行find --set-root --ignore-floppies --ignore-cd /bootmgr删除后,执行命令,发现磁盘交换根本没交换成功

yjqd 发表于 2016-6-3 15:27:53

yjqd 发表于 2016-6-3 15:15
确实是你说的那样,当我把两行find --set-root --ignore-floppies --ignore-cd /bootmgr删除后,执行命令 ...

再问一下
执行下面命令
find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader /bootmgr
启动了可见分区的winpe.wim

bootmgr是在UD分区(可见分区没有bootmgr),它为什么能找到可见分区的boot文件夹中的bcd

lbw2007 发表于 2016-6-5 13:36:39

关于bootmgr,你可以仔细观察一下U盘的分区表,mbr是不显示ud区的。
bootmgr只能识别ntfs和fat分区,无法识别UD分区,对他来说,ud区是一个“未分配空间”,所以,他启动了第一个自己觉得实际存在的分区

yjqd 发表于 2016-6-5 15:59:21

lbw2007 发表于 2016-6-5 13:36
关于bootmgr,你可以仔细观察一下U盘的分区表,mbr是不显示ud区的。
bootmgr只能识别ntfs和fat分区,无法 ...

谢谢以上所有朋友的回复,微软的文件不识别UD分区这我知道

当执行find /bootmgr
出现:
(ud)
(hd0)

可见分区用命令就能发现是(hd0,0),(hd0,0)和(hd0)是磁盘分区和磁盘的关系,这样的话bootmgr能找到可见分区的boot文件夹中的bcd就是应该的
我是这样想的,不知对不对

另外:
当root时,出现(ud) filesystem type is fb
当root (hd0)时,也会出现filesystem type is fb,再root,出现
(hd0) filesystem type is fb

当root (ud)或是root (hd0)后再执行ls,会发现列出的文件和目录是一样的

不点 发表于 2016-6-5 16:40:25

不用纠结,我来解释一下所发生的现象。

当一个盘上安装了 ud 时,这个 ud 区占用 MBR 的一段空间,最小有 8M,最大可以有几个 G。这部分空间是隐藏的。也就是说,普通的软件看不见这个区域。

你要是知道 MBR 通常保留了 63 个扇区(为隐藏的),你就能够理解这个现象了。这不过就是把 63 扇区扩大到 8M 或几个 G 罢了。

而通常的可见分区,是在分区表上定义的。

在 grub4dos 中,(hd0) 用来代表整个盘,也就是从 MBR 开始直到最后一个物理扇区的整个设备,就是 (hd0)。

当这个盘上安装了 ud 并从 ud 启动时,grub4dos 也认为整个盘 (hd0) 是 ud 系统。注意不要迷糊了,此时仅仅涉及所谓 “隐藏” 的内容(即 ud 区),不影响 (hd0,0) (hd0,1) 之类的通常分区。

所以你会发现,(ud) 和 (hd0) 都是 ud 区的内容。

至于说 bootmgr 位于 ud 区而被启动,然后这个 ud 区的 bootmgr 又能找到(或不能找到)硬盘上可见分区里面的 boot.ini(或 bcd)文件,那是 bootmgr 自己的事,与 grub4dos 无关。

yjqd 发表于 2016-6-5 17:09:55

不点 发表于 2016-6-5 16:40
不用纠结,我来解释一下所发生的现象。

当一个盘上安装了 ud 时,这个 ud 区占用 MBR 的一段空间,最小 ...

谢谢回复,以前了解 ud 区占用 MBR 的一段空间和 MBR 通常保留了 63 个扇区(为隐藏的)的知识,但自己有时思考的时候又没想到联系起来分析
页: [1]
查看完整版本: UD分区怎样和硬盘交换磁盘