修改SUN工作站hostid不完全参考手册

发表于:2007-06-08来源:作者:点击数: 标签:
注意:修改前一定要备份原来的hostid和Ethernetaddress信息。 一、永久修改法: 1、查找eeprom地址修改 该方法对从station5、station20等等直到Blade100、Blade150系列都适用,注意操作过程中屏幕显示结果的细小差别,不要完全照搬。 以blade150+solaris8为

注意:修改前一定要备份原来的hostid和Ethernet address信息。

一、永久修改法:
1、 查找eeprom地址修改
该方法对从station5、station20等等直到Blade100、Blade150系列都适用,注意操作过程中屏幕显示结果的细小差别,不要完全照搬。
以blade150+solaris8为例,原始HOSTID为:83188869,Ethernet address:0:3:ba:18:88:69;拟改为80cf7afe。
Step1:  Stop+a              【进入OK状态】
Step2:  OK show-devs        【按空格键找到包含eeprom的全路径名】
Step3:  OK  cd  /pci@1f,0/ebus@c/eeprom@1,0    
    注意不同的eeprom版本输出的eeprom路径名会不同,请以屏幕显示为准。
step4:OK .properties          【有些版本可能为.attributes】
    找到address值fff58000
step5: OK  fff58000  >physical
step6: OK  showstack
step7: OK  2000  memmap
step8: OK  1fd0+
step9: OK  30 dump
注意看附图中的输出结果,从fff55fd8开始各位的含义如下:

字节 地址 内容
0 fff55fd8 总为 01 - format/version number
1 fff55fd9 hostid的第一个字节【机器类型】
2-7 fff55fda~f ethernet address 
8-b fff55fe0~3 生产日期,通常为0,不一定是真实日期
c fff55fe4 hostid的第二字节
d fff55fe5 hostid的第三字节
e fff55fe6 hostid的第四字节
f fff55fe7 IDPROM checksum - bitwise xor of bytes 0-e

Step10: OK 80 fff55fd9 c!          
【第一个字节一般不推荐修改,如果一定要改,好像也是没有问题的。】
step11: OK cf fff55fe4  c!
step12: OK 7a fff55fe5  c!
step13: OK fe fff55fe6  c!
step14: OK  01 80 xor
step15: OK  00 xor
step16: OK  03 xor
【从fff55fd8开始向后作xor,直到fff55fe6处作完为止,假设输出结果为f6,见下一步的输出为f6。注意上图中的hostid的第二、三、四字节的值在作xor时要用新的值cf、7a、fe】
next:   OK  fe xor  
OK  f6
next:   OK f6 fff55fe7 c!
next:   OK  banner
查看修改正确后可以输入boot重新引导,如果banner显示的结果有错,有两种方法恢复出厂设置,一是用stop+n组合键恢复,如果stop+n无效,则在OK状态下输入set-defaults即可。
  上面的示例没有修改Ethernet address,用户也可以根据需要修改,修改对应字节即可。
 
2、 用mkp命令修改
有些机器可以用mkp修改,但在blade系列机器中就不支持mkp了【OBP 4.X之后的版本】。
用mkp修改IDPROM信息,命令格式为:
<数值><第几字节>mkp 
如修改hostid为57c0ffee,ethernet 地址为08:00:20:c0:ff:ee 
OK 1 0 mkp    
OK real-machine-type 1 mkp 
OK 8 2 mkp 
OK 0 3 mkp 
OK 20 4 mkp 
OK c0 5 mkp 
OK ff 6 mkp 
OK ee 7 mkp 
OK 0 8 mkp 
OK 0 9 mkp 
OK 0 a mkp 
OK 0 b mkp 
OK c0 c mkp 
OK ff d mkp 
OK ee e mkp 
OK 0 f 0 do i idprom@ xor loop f mkp 
OK reboot 

如果不改hostid的第一个字节,也可以直接尝试用下面的步骤修改hodtid。
OK c0 c mkp
OK ff d mkp
OK ee e mkp
OK 0 f 0 do i idprom@ xor loop f mkp
OK update-system-idprom 
OK boot

二、临时修改法:
此种方法用于eeprom版本不支持mkp命令,用show-devs命令也找不到eeprom路径的机器上,比如blade2000。其原理是在操作系统启动后修改操作系统设备文件中的有关hostid的信息【/dev/ksyms和/dev/mem文件】,是欺骗solaris的,并没有改变eeprom中的值。所以修改后在机器reboot时提示的hostid仍是原来的hostid,进入系统后输入hostid命令显示的才是新的hostid值。
具体做法如下:
step1:用系统中的计算器将你要改的83188869转换成10进制的(比如转换后是2199423081,对应的ASCII码是32313939343233303831); 
step2:然后在/etc/rc2.d/S20sysetup文件尾加入下段【也可以自己建一个以S20开头命名的文件】,修改前将copy一个备份文件bak_S20sysetup: 
#为C编译器临时修改hostid。Richard Shen,2003/08/24。
adb -w -k /dev/ksyms /dev/mem <<END>/dev/null
hw_serial/W 0x32313939 
hw_serial+4/W 0x34323330
hw_serial+8/W 0x38310000
END
step3:#sh S20sysetup 
step4:#hostid  【看看改过来了没】 
注意:这样作可能会有严重的后果,机器可能会出现白屏,显示一堆乱码,这种情况尤其会出现在用户输入错误字符的时候。系统重启后会陷于死等状态,这时需要用stop+a进入OK状态,用boot –s命令重启机器,然后在提示输入root密码后将bak_S20sysetup覆盖S20sysetup文件,再用init 6重启即可恢复。
也可以将命令写在一个c文件中,用户可以参考网上的一个文件hid_solaris2.c:
#include <stdio.h>
main(argc,argv)
int argc;
char *argv[];
{
    unsigned int hid;
    int i;
    char obuf[15];
    for (i=0; i<15; i++)
        obuf[i] = '\0';

    if (argc != 2) {
        fprintf(stderr, "usage: %s hostid\n",argv[0]);
        exit(1);
    }
    sscanf(argv[1],"%08x",&hid);
    sprintf(obuf,"%u", hid);  /* should this be %010u ? */

    printf("#!/bin/sh\n");
    printf("# this script sets the hostid to %08x\n",hid);
    printf("adb -w -k /dev/ksyms /dev/mem <<END\n");
    printf("hw_serial/W 0x");
    for (i=0; i<4; i++)
        printf("%02x", obuf[i]);
    printf("\n");
    printf("hw_serial+4/W 0x");
    for (; i<8; i++)
        printf("%02x", obuf[i]);
    printf("\n");
    printf("hw_serial+8/W 0x");
    for (; i<12; i++)
        printf("%02x", obuf[i]);
    printf("\n");
    printf("END\n");
return(0);
}
详情请下载hid-1.7.4研究。


附一个forte6的license:
SERVER FZ27 83188869 1726
DAEMON sunwlicd /etc/opt/licenses/sunwlicd /etc/opt/licenses/daemon_options
INCREMENT workshop.dbx.sparc sunwlicd 6.000 01-jan-0 1 C056D1563E0E5F9445F4 VENDOR_STRING="0"
INCREMENT workshop.c.sparc sunwlicd 6.000 01-jan-0 1 C09641169B155EDF09E2 VENDOR_STRING="0"
INCREMENT workshop.clearcase/" target="_blank" >cc.sparc sunwlicd 6.000 01-jan-0 1 E026212652888E8981D8 VENDOR_STRING="0"
INCREMENT workshop.f77.sparc sunwlicd 6.000 01-jan-0 1 20564176100A9F0D125C VENDOR_STRING="0"
INCREMENT workshop.f90.sparc sunwlicd 6.000 01-jan-0 1 60A6D196920A31DE754C VENDOR_STRING="0"
INCREMENT workshop.visu.sparc sunwlicd 6.000 01-jan-0 1 4086417697680A6FF724 VENDOR_STRING="0"
INCREMENT workshop.tools.sparc sunwlicd 6.000 01-jan-0 1 A0267136826913D6174B VENDOR_STRING="0"
INCREMENT workshop.teamware.sparc sunwlicd 6.000 01-jan-0 1 F0C6215621E7240D8F19 VENDOR_STRING="0"
INCREMENT workshop.mpmt.sparc sunwlicd 6.000 01-jan-0 1 A08661664484AF0CD04D VENDOR_STRING="0"     


[color=blue:e151b253fa]谨以此贴怀念远走深圳的毛建民先生,是他和徐先生一道开创了我所修改hostid的新局面.^_^.
感谢本论坛的ice先生,还有diag等等热心朋友.[/color:e151b253fa]
I Love ChinaUnix.net.











 Richard_Shen 回复于:2003-08-24 15:47:37












 晨雨 回复于:2003-08-24 19:31:13
有forte c++6  for x86的license没???

 diag 回复于:2003-08-24 20:03:00
上面的lic 也是学习用的。。只有一个用户。

 Richard_Shen 回复于:2003-08-24 20:51:09
sorry,没有x86版的。

 南非蜘蛛 回复于:2003-08-24 21:44:42
网上有forte c++6 for x86的算号程序,找找吧

 烈火青 回复于:2003-08-25 09:25:16


 Richard_Shen 回复于:2003-08-25 20:27:57
[quote:2580c38550="diag"]上面的lic 也是学习用的。。只有一个用户。[/quote:2580c38550]     

其实一台机器一个用户的license就够了,我们局域网上十几台blade150全是一个hostid,够用了吧?

 lqy009 回复于:2003-08-26 10:01:21
非常好,找到了以前想找的东西。

 akai_feng 回复于:2003-08-26 10:24:18
[quote:07be9b7a45="Richard_Shen"]    

其实一台机器一个用户的license就够了,我们局域网上十几台blade150全是一个hostid,够用了吧?[/quote:07be9b7a45]     

够牛,难道不会有冲突吗?

 diag 回复于:2003-08-26 12:25:42
不会。IP 不样。。

SET LICENSE—也SET 自己机器上的。。

 ultraJerry 回复于:2003-08-31 19:54:33
用楼主的临时修改法,在sun Blade2000上通过,爽,感谢楼主提供了一篇好文章。
   我感觉临时修改法用起来比较安全,一般情况下就足够用了,为什么非要永久更该呢,小弟不才,请高手指点。。。。。。

 ewebboy 回复于:2003-08-31 23:57:27
不要永久修改这样这好!
如果你只安装一个商业软件!
其它软件怎么办?

 whycugb 回复于:2003-09-01 09:35:14
对呀,是不是安装一个爱国版商业软件,都要改一次hostid, 这样安装第二个软件,第一个软件还好使吗!!

 Richard_Shen 回复于:2003-09-05 19:44:37
[quote:dbb3b00c5f="ewebboy"]不要永久修改这样这好!
如果你只安装一个商业软件!
其它软件怎么办?[/quote:dbb3b00c5f]     



    先要搞清楚,临时修改的原理就是这是进操作系统后修改那两个文件/dev/mem和/dev/ksym,这也是系统取hostid的入口,所以,对任何应用软件都是有效的。
    只是在系统初起时提示的是本来的hostid,其他情况下都是新的hostid,放心改吧。

 raja 回复于:2003-09-06 00:33:00
呵呵,以前有个小工具

 boywhocools 回复于:2003-09-07 19:47:51
请问楼主,能否给小弟一个workshop6的安装盘或文件?或请提供一个ftp 地址下载,好吗?我想很多同志都在找。boywhocools@163.com
谢谢!

原文转自:http://www.ltesting.net