无忧启动论坛

标题: ipxe转grub4dos启动后map失败,谁来看看? [打印本页]

作者: 邪恶海盗    时间: 2020-3-23 00:13
标题: ipxe转grub4dos启动后map失败,谁来看看?
看图:



没有map成功,什么原因???

作者: liuzhaoyzz    时间: 2020-3-23 08:28
map --mem /images/openwrt.img (hd30)之后,需要map --hook
然后ls dev才能看到(hd30)吧。

作者: symwww    时间: 2020-3-23 10:08
map命令在boot之后才会生效,需要map --hook

作者: 邪恶海盗    时间: 2020-3-23 10:40
liuzhaoyzz 发表于 2020-3-23 08:28
map --mem /images/openwrt.img (hd30)之后,需要map --hook
然后ls dev才能看到(hd30)吧。


实测map --hook之后用ls和find也是查不到的,但用geometry可以

另外我发现网启的情况下(pd)里的文件不能用dd命令直接调用,正因为这样我才先把映像map到虚拟磁盘,然后再dd到目标磁盘



作者: liuzhaoyzz    时间: 2020-3-23 10:49
不点大说过,
find 不搜索 pd 设备(除非 pd 是当前设备)。

你的hd30是从(pd)映射过去的,是不是与这个有关?


作者: 邪恶海盗    时间: 2020-3-23 11:00
liuzhaoyzz 发表于 2020-3-23 10:49
不点大说过,
你的hd30是从(pd)映射过去的,是不是与这个有关?


如果map到(hd),也就是最后一个硬盘之后的硬盘,用ls和find是都能找到的

作者: liuzhaoyzz    时间: 2020-3-23 11:03
        (hd30)是不是被认为是光盘什么的啊?为啥你map --mem (hd)就可以找到?好奇怪。是不是ls和find的逻辑是查找到最后一个找到的硬盘号之后,如果下一个没有,就不再查找了,所以(hd30)找不到?

作者: 邪恶海盗    时间: 2020-3-23 14:35
liuzhaoyzz 发表于 2020-3-23 11:03
(hd30)是不是被认为是光盘什么的啊?为啥你map --mem (hd)就可以找到?好奇怪。是不是ls和find的逻 ...


不排除这个可能,我试了map到(hd5)也是这样的情况

作者: 邪恶海盗    时间: 2020-3-23 14:39

尝试map成光盘,也搜索不到,可能程序设计的逻辑就是这样的

在测试中我还发现,用map xx.img (hd0)命令可以直接把映像写到硬盘里去,是我测试多了糊涂了,还是程序设计map本身就有这个功能呢?
作者: chenall    时间: 2020-3-24 13:06
hd 和 fd 需要连续的才会被find查找到

map xxx.img (hd0) 只是把 xxx.img虚拟为(hd0)

并不是写到入(hd0),

map hook之后后续对(hd0)的操作实际就是对xxx.img的操作。



作者: 邪恶海盗    时间: 2020-3-24 13:38
chenall 发表于 2020-3-24 13:06
hd 和 fd 需要连续的才会被find查找到

map xxx.img (hd0) 只是把 xxx.img虚拟为(hd0)

1.应该是驱动器号必需连续才行吧
2.假如(hd0)是物理驱动器呢,map何解?
作者: chenall    时间: 2020-3-24 13:45
1是的。

2.不管(hd0)是否存在,只要你使用了 map xxx.img (hd0)
hook生效后对(hd0)的操作都是操作xxx.img。
PS: 现在学习grub4dos是不是有点晚了。。^_^


作者: 邪恶海盗    时间: 2020-3-24 15:26
chenall 发表于 2020-3-24 13:45
1是的。

2.不管(hd0)是否存在,只要你使用了 map xxx.img (hd0)

刚试了,的确是这样,map并不会改变硬盘驱动器的内容...

我只想使用其中几个小功能而已,另外我发现dd if=(pd)/xxxx.img of=(hd1)这样会出现错误,是不能这样用么?

我现在是先把映像map到(hd30),然后把(hd30)全盘DD到(hd1),好像没发现什么问题...

作者: 不点    时间: 2020-3-24 16:11
邪恶海盗兄,grub4dos 都要消失了,现在才开始学 grub4dos,有点马后炮的味道。

不过,要学的话,也可以。但是,安全总得是 “第一” 吧?

你用 dd 是不是太 “胆大” 了点?你不怕毁了你的 (hd1) 全盘贵重数据?

我想,无论哪个教程,都会在醒目位置告诉你 dd 的危险性。

哪能随便就用 dd 来在真实机器上胡乱测试呢?



作者: 不点    时间: 2020-3-24 16:39
邪恶海盗 发表于 2020-3-24 15:26
刚试了,的确是这样,map并不会改变硬盘驱动器的内容...

我只想使用其中几个小功能而已,另外我发现dd if ...

我想,你的 (hd1) 的内容已经被覆盖掉了。不过,它只覆盖掉了开头的 0x2B0000 个字节。

你用 dd 来复制 pd 的内容,我不知道 dd 是否支持 pd。它有可能支持,也有可能不支持。在支持的情况下,它有可能会出现 bug。我的意思是,这种情况,不一定有很多人去测试。

pd 不是一个 “扇区” 式的设备。它是 “字节” 式的。所以,有些命令,对 pd 就可能无效了,或者是不能适应了。

可以把 pd 上的文件先复制到内存里面,再从内存复制到本地硬盘。比如,用 map 之类的命令。

pd 不是扇区设备。程序不能随机地去访问 pd 上某个文件的字节。比如,你要想获取一个 pd 文件上的最后一个字节,你不得不把整个文件从头到尾完整读出来,才能得到最后一个字节。pd 与通常的扇区设备差别很大。

dd 命令可能就是针对“扇区”设备而设计的,可能无法用于 pd。


作者: 邪恶海盗    时间: 2020-3-24 17:06
不点 发表于 2020-3-24 16:11
邪恶海盗兄,grub4dos 都要消失了,现在才开始学 grub4dos,有点马后炮的味道。

不过,要学的话,也可以 ...

我只是用其中几个命令而已,DD危险不怕,我用虚拟机测试,保证万无一失才上物理机...
作者: 邪恶海盗    时间: 2020-3-24 17:07
不点 发表于 2020-3-24 16:39
我想,你的 (hd1) 的内容已经被覆盖掉了。不过,它只覆盖掉了开头的 0x2B0000 个字节。

你用 dd 来复 ...

所以我先MAP到虚拟盘,然后再用...

GRUB2我看了,模块化的设计很好,但不如grub4dos一个grldr来得清爽...
作者: liuzhaoyzz    时间: 2020-3-24 17:40
不点 发表于 2020-3-24 16:11
邪恶海盗兄,grub4dos 都要消失了,现在才开始学 grub4dos,有点马后炮的味道。

不过,要学的话,也可以 ...

       我对于grub4dos也就知道几条常用的命令而已,对于很多命令的参数细节记不住,我最佩服的是pseudo,他对于grub4dos玩的真是好,好不夸张地说,甚至可能超过grub4dos开发者们,他写的代码我看起来简直就是天书!
作者: 邪恶海盗    时间: 2020-3-24 18:02
liuzhaoyzz 发表于 2020-3-24 17:40
我对于grub4dos也就知道几条常用的命令而已,对于很多命令的参数细节记不住,我最佩服的是pseudo ...

我看过,抄都不会抄...
作者: 邪恶海盗    时间: 2020-3-24 19:59
chenall 发表于 2020-3-24 13:45
1是的。

2.不管(hd0)是否存在,只要你使用了 map xxx.img (hd0)

pxe启动grldr时能用configfile命令指定使用内置菜单么,启动时还搜索menu.lst感觉没这必要...
作者: liuzhaoyzz    时间: 2020-3-25 07:49
邪恶海盗 发表于 2020-3-24 19:59
pxe启动grldr时能用configfile命令指定使用内置菜单么,启动时还搜索menu.lst感觉没这必要...

pxe启动grldr,启动搜索menu.lst很有必要啊!menu.lst外置,可以很方便地编辑菜单,菜单内置到grldr不方便。
作者: 邪恶海盗    时间: 2020-3-25 19:11
liuzhaoyzz 发表于 2020-3-25 07:49
pxe启动grldr,启动搜索menu.lst很有必要啊!menu.lst外置,可以很方便地编辑菜单,菜单内置到grldr不方 ...

我已经内置了,不想弄外置...
作者: 江南一根葱    时间: 2020-3-26 19:50
网络dd安装openwrt? ,如果是我,一般把openwrt.img再塞进另一个img (fd)里,然后map成fd,再用dd
作者: 邪恶海盗    时间: 2020-3-26 20:02
江南一根葱 发表于 2020-3-26 19:50
网络dd安装openwrt? ,如果是我,一般把openwrt.img再塞进另一个img (fd)里,然后map成fd,再用dd

硬盘映像能map成(fd)么?

作者: chenall    时间: 2020-3-26 20:54
好像不用那么麻烦,直接map 到rd 再dd if=(rd)+1 of=(hd0)
作者: 邪恶海盗    时间: 2020-3-26 21:04
chenall 发表于 2020-3-26 20:54
好像不用那么麻烦,直接map 到rd 再dd if=(rd)+1 of=(hd0)

map到(rd)跟(hd30)有什么区别么?

那个configfile参数能不能指定使用内置菜单?
作者: chenall    时间: 2020-3-26 21:38
rd是临时内存盘,不占用虚拟磁盘号
作者: chenall    时间: 2020-3-26 21:38
已经内置菜单乐,还要configfile指定内置菜单?
作者: 邪恶海盗    时间: 2020-3-26 22:44
chenall 发表于 2020-3-26 21:38
rd是临时内存盘,不占用虚拟磁盘号

那没事,反正正常情况下也没人上30个物理硬盘...
作者: 邪恶海盗    时间: 2020-3-26 22:44
chenall 发表于 2020-3-26 21:38
已经内置菜单乐,还要configfile指定内置菜单?

启动时有个搜索menu.lst的过程,不能去掉???
作者: chenall    时间: 2020-3-27 06:26
很矛盾呢,你用了自定义内置菜单还自己搜menu.lst?
作者: dsfgamesky    时间: 2020-3-27 08:29
本帖最后由 dsfgamesky 于 2020-3-27 08:31 编辑
邪恶海盗 发表于 2020-3-26 22:44
启动时有个搜索menu.lst的过程,不能去掉???

当然能去掉,不用内置菜单也可以吧,G4D的内置菜单只是G4D先执行它而已(读取内置菜单的命令是write 0x307ff8 1 && configfile)



作者: liuzhaoyzz    时间: 2020-3-27 09:13
邪恶海盗 发表于 2020-3-26 21:04
map到(rd)跟(hd30)有什么区别么?

那个configfile参数能不能指定使用内置菜单?

configfile
用法: configfile FILE
描述:

将指定文件作为配置文件予以加载。

configfile 命令执行后,boot device 和 root device 将同时更新为 FILE 文件所在的设备。
如果在预置菜单(内置菜单)的初始化命令组中出现不带任何参数的 configfile 命令,那么控制将转到启动设备上的menu.lst文件。
例:

configfile /MENU.LST

#加载当前设备根目录下的配置文件 /MENU.LST

configfile (md)4+8
#特殊用法,内置菜单的位置是公开的,在内存中的固定地址 0x800 处,长度是 4K,即(md)4+8 处内存块,因此,执行此命令后会重新加载一次内置菜单,可作为进入二级或三级或任意菜单后返回主菜单之用。

configfile本身就是加载外置菜单的,内置菜单中,你去掉这一句不行吗?去掉了应该就不会查找menu.lst了吧。


作者: 邪恶海盗    时间: 2020-3-27 15:07
chenall 发表于 2020-3-26 21:38
rd是临时内存盘,不占用虚拟磁盘号

然后我又想到一个问题,map到(hd30)有个弊端,假如不是硬盘硬像,是不是会map失败???
作者: 邪恶海盗    时间: 2020-3-27 15:09
本帖最后由 邪恶海盗 于 2020-3-27 15:11 编辑
liuzhaoyzz 发表于 2020-3-27 09:13
configfile
用法: configfile FILE
描述:

PXE启动时会搜索menu.lst,使用configfie (md)4+8无效,去掉configfile也一样
作者: 邪恶海盗    时间: 2020-3-27 15:13
dsfgamesky 发表于 2020-3-27 08:29
当然能去掉,不用内置菜单也可以吧,G4D的内置菜单只是G4D先执行它而已(读取内置菜单的命令是write 0x30 ...


write 0x307ff8 1  && configfile
无限循环...

作者: dsfgamesky    时间: 2020-3-27 16:28
邪恶海盗 发表于 2020-3-27 15:13
write 0x307ff8 1  && configfile
无限循环...

你是在内置菜单里面用这个指令???
作者: 邪恶海盗    时间: 2020-3-27 16:43
dsfgamesky 发表于 2020-3-27 16:28
你是在内置菜单里面用这个指令???

对啊,写在PXE detect后面
作者: dsfgamesky    时间: 2020-3-27 20:16
本帖最后由 dsfgamesky 于 2020-3-27 20:17 编辑
邪恶海盗 发表于 2020-3-27 16:43
对啊,写在PXE detect后面

这个是……加载内置菜单的命令啊……
你循环加载内置菜单???
pxe detect                                 ↰
write 0x307ff8 1 && configfile      ↵  
这样当然是一个死循环咯


作者: 邪恶海盗    时间: 2020-3-27 21:48
dsfgamesky 发表于 2020-3-27 20:16
这个是……加载内置菜单的命令啊……
你循环加载内置菜单???
pxe detect                           ...

SO....
作者: dsfgamesky    时间: 2020-3-28 08:11
邪恶海盗 发表于 2020-3-27 21:48
SO....

G4D在执行完内置菜单里的命令后并不会自动的查找menu.lst文件
G4D启动完之后,它会执行内置菜单的命令,然后根据你菜单里的命令执行
例如:
pxe detect
find --set-root /menu.lst
configfile /menu.lst
它就会查找/menu.lst然后将它设为配置文件执行里面的东西
如果菜单为空或者没有写类似命令,它在执行完这些指令之后会回到命令行界面

作者: 邪恶海盗    时间: 2020-3-28 11:47
dsfgamesky 发表于 2020-3-28 08:11
G4D在执行完内置菜单里的命令后并不会自动的查找menu.lst文件
G4D启动完之后,它会执行内置菜单的命令, ...

你试试,PXE启动grldr时会自动搜索menu.lst,我都测试多少回了
作者: 江南一根葱    时间: 2020-3-28 11:54
邪恶海盗 发表于 2020-3-28 11:47
你试试,PXE启动grldr时会自动搜索menu.lst,我都测试多少回了

影响不大,让它搜索下也不会怀孕,还算多个备胎,
作者: 2011goodluckwxl    时间: 2020-10-11 12:51
看上去高大上啊




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