无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 2786|回复: 9
打印 上一主题 下一主题

[求助] how to get pxe mac by memory

[复制链接]
1#
发表于 2016-2-2 09:34:20 | 显示全部楼层
在回答这个问题之前,提醒一下网络上有如下的教程,可供深入了解 grub4dos 的内部变量和内部函数:

http://www.rmprepusb.com/tutorials/grub4dos/grub4dos-internal-variables-and-functions

回到正题。正如楼主所注意到的,在 fsys_pxe.c 中,定义了 pxe_mac 变量:

MAC_ADDR pxe_mac;

因此,它肯定在内存中。

但是,这个地址不是固定的,不同的编译器会把它放在不同的内存地址处,不同的 grub4dos 版本,也会产生不同的地址。

既然你懂得 C 语言,你肯定了解这个现象。

也就是说,用户无法直接获得 pxe_mac 的值。


楼主没讲清楚,你要这个 mac 值究竟有什么用?如果你的理由充分,开发者可以把它放在固定变量区,让用户能够直接访问它。

另外,这个变量虽然不在固定变量区,但是它在 int13 处理程序的空间上存有一个备份,叫做 saved_pxe_mac,可以在 asm.S 中找到它的定义。

就是说,只要你用 map 建立了虚拟盘,你就有办法找到这个 saved_pxe_mac,即使你脱离了 grub4dos 环境,也能获得 saved_pxe_mac 的值。

这是因为,int13 处理程序的空间是与操作系统无关的,任何变量,只要它处于 int13 的代码空间中,那么任何操作系统都能访问它。

在 asm.S 中,它的定义是这样的:


  1.         . = int13_handler + 0x124

  2. VARIABLE(saved_pxe_mac)
  3.         
  4.         .byte        0, 0, 0, 0, 0, 0
复制代码


也就是说,它位于 int13 处理程序空间的固定偏移量 0x124 处,长度为 6 个字节。

你需要在你的操作系统中找到 int13 处理程序空间的开头,也就能够获得 pxe_mac 的值了。

点评

我有track到这段, 无奈技术不够, 我不知如何找出  发表于 2016-2-2 11:25
请问GRLDR有没有办法取得主板UUID不是帮助中的硬盘UUID  发表于 2016-2-2 10:03
回复

使用道具 举报

2#
发表于 2016-2-2 11:43:17 | 显示全部楼层
babyshin 发表于 2016-2-2 11:23
我是做pxe量产的,

其中有一个很重要的一环: 如何纪录本机端的硬体讯息

楼上 chenall 已经告诉了获得 mac 地址的方法,应该可以满足你的需要了。

点评

Yes ^^  发表于 2016-2-2 12:22
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-3 16:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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