首页 文章

在vmware中构建多个vxworks

提问于
浏览
3

当我在vmware中构建一个vxworks时,它可以工作 . 但是当我使用不同的IP分别创建更多两个vxworks时,第二个vxworks失败(log来自vxware.log):

2015-09-02T09:10:45.057+08:00| vcpu-0| W110: VLANCE: RDP OUT to unknown Register 100 
2015-09-02T09:10:45.057+08:00| vcpu-0| I120: VNET: MACVNetPort_SetPADR: Ethernet0: can't set PADR (0) 
2015-09-02T09:10:45.057+08:00| vcpu-0| I120: Msg_Post: Warning 
2015-09-02T09:10:45.057+08:00| vcpu-0| I120: [msg.vnet.padrConflict] MAC address 00:0C:29:5A:23:AF of adapter Ethernet0 is within the reserved address range or is in use by another virtual adapter on your system. Adapter Ethernet0 may not have network connectivity.

我确信每个vxworks操作系统都有自己的MAC地址 . 另一点是我通过复制第一个文件来创建第二个vxworks .

2 回答

  • -2

    原谅我 .
    删除宏VXWORKS_RUN_ON_VMWARE以及sysLn97xEnd.c中的任何相关代码 .
    在VMWorkstation 11下,一切都运行良好 .
    MAC可以在vm机器的配置页面下设置 .
    也许这些宏是针对vmworkstation的远程版本 .


    在vmware中设置mac地址不起作用 . 你需要一个函数来在系统启动时生成不同的mac地址 . vm机器的每个副本都需要构建一个不同的bootrom和一个vxworks . (简单地在(.wpj)MAKEFILE中使用-D MACRO来在不同项目之间使用单个标头切换mac . )这里是一个用于在一个vm机器中设置多个mac的脏解决方案:0 . 定义mac地址和访问它的函数在ln97xEnd.c中 . \ #define LN97_MAX_IP(4)int ln97EndLoaded = 0; char ln97DefineAddr [LN97_MAX_IP] [6] = {{0x00,0x0c,0x29,0x5a,0x23,0xa0},{0x00,0x0c,0x29,0x5a,0x23,0xa1},{0x00,0x0c,0x29,0x5a,0x23,0xa2 },{0x00,0x0c,0x29,0x5a,0x23,0xa3}}; END_OBJ * ln97xEndList [LN97_MAX_IP] = {NULL,NULL,NULL,NULL}; char * ln97xFindDefinedAddr(LN_97X_DRV_CTRL * pDrvCtrl){int i; for(i = 0; i endObj){return ln97DefineAddr [i]; if(i 1.将ln97xEnd.c中的ln97xEndLoad()修改为init不同的mac(并在需要时存储END_OBJ *) . END_OBJ * ln97xEndLoad ... DRV_LOG(DRV_DEBUG_LOAD,“Done loading ln97x ... \ n”, 1,2,3,4,5,6); / **添加以保存END_OBJ * * / if(ln97EndLoaded endObj; ln97EndLoaded;} / ** end add * / return(&pDrvCtrl-> endObj); ... 2在sysLn97xEnd.c中更改sysLan97xEnetAddrGet() . 不应该通过ln97xFindDefinedAddr()而不是“00:0C:29:5A:23:AF”设置aprom . char * ln97xFindDefinedAddr(LN_97X_DRV_CTRL * pDrvCtrl); ... STATUS sysLan97xEnetAddrGet . .. {char * addrDef = NULL; ... / *由frankzhou修改以支持VMware * / \ #define VXWORKS_RUN_ON_VMWARE \ #ifndef VXWORKS_RUN_ON_VMWARE / *检查ASCII'W在APROM字节14和15 * / if((aprom) [0xe]!='W')||(aprom [0xf]!='W')){logMsg(“sysLn97xEnetAddrGet:W未存储在aprom \ n”中,0,1,2,3,4,5) ;返回ERROR;} \ #endif \ #ifdef VXWORKS_RUN_ON_VMWARE / **由bonex添加多mac addr * / addrDef = ln97xFindDefinedAddr(pDrvCt RL); if(addrDef == NULL){aprom [0] = 0x00; APROM \ [1] = 0x0c; APROM [2] = 0x29; APROM [3] = 0x5a; APROM [4] = 0×23; APROM [5] = 0XAF; } else {bcopy(addrDef,aprom,6); } / *以bonex结尾 / \ #endif / 以frankzhou结尾 / ... 3.重建bootrom,并重建vxworks . 结果:[telnet到vmware并检查arpShow] [1] [1]:https://i.stack.imgur.com/kR9Uy.jpg

  • 1

    这是由于在sysLn97xEnd.c中设置了MAC地址 . 必须修改此项并为另一个vxworks节点重新创建bootrom和vxworks映像,否则它将呈现冲突 .

相关问题