Chinaunix首页 | 论坛 | 博客
  • 博客访问: 148283
  • 博文数量: 31
  • 博客积分: 2075
  • 博客等级: 大尉
  • 技术积分: 340
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-29 10:06
文章分类

全部博文(31)

文章存档

2017年(3)

2014年(1)

2013年(1)

2011年(9)

2010年(14)

2009年(3)

我的朋友

分类: LINUX

2010-12-22 19:12:37

Platform Introduction:
Linux :Red Hat Enterprise Linux AS release 4 (Nahant Update 4)
VirtualBox:VirtualBox-3.2-3.2.12_68302_rhel4-1.i386.rpm
HMC : HMC_Recovery_V7R3.1.0  (HMC 7.3.1)
 
网上介绍如何在Linux上安装VirtualBox的文章比比皆是,故此处不再赘述.
 
VirtualBox 中创建VM 、安装 guest OS时指定对应的ISO文件...等相关操作一般都在X window下进行.
而我们的server一般是不接显示终端的.可以通过配置Linux上的VNCserver服务解决(方法可参考本
blog内的Linux VNCserver Configuration一文).从而用远程GUI的方式进行操作
 
这里主要谈一下安装过程中所遇到的问题,供大家参考
 
【1、】安装VirtualBox的rpm包时出问题,日志报错:
Makefile:127: *** Error: unable to find the sources of your current Linux kernel
. Specify KERN_DIR= and run Make again。
网上提示说有两种方法:
a、升级内核
b、安装与当前kernel版本吻合的kernel-devel包.
   由于内核是kernel:2.6.9-42.EL 所以 安装 kernel-devel-2.6.9-42.EL.i686.rpm
   可以配置yum来安装相关的devel包前提是必须指定好yum源,否则搜索不到对应kernel版本的devel包.
   装了也不顶用. 可以手工down一下. 不要担心,devel包一般不会有太复杂的依赖关系.一般直接rpm安装就ok
 
这里采取后一种方法,网上很多都提到升级内核后遇到比较多的问题.
 
安装完成后find一下vboxdrv 文件,不一定是在/etc/init.d/目录下.
找到后用绝对路径/../../vboxdrv setup ,该命令结合已安装的kernel-devel包重新编译vboxdrv模块. 编译完成后一般会自动加载,可以lsmod看一下是否加载成功. 若没有,手工modprobe一下。
 
然后/../../vboxdrv status 看状态应该是:
VirtualBox kernel modules (vboxdrv, vboxnetflt and vboxnetadp) are loaded
最后直接VirtualBox启动
 
【2、】安装HMC 7.3.1
在VirtualBox中创建VM,设定从CD/DVD-ROM启动并指定HMC的ISO文件位置后启动vm安装HMC
报错:UNSUPPORTED HARDWARE,原因在于HMC的操作系统内部对硬件做了限制。网上有朋友说采用
较高版本的HMC不会有这个问题,此处没安装所以不确认。
解决办法有2个
第一,修改虚拟机的BIOS信息
第二,修改HMC安装介质的代码
在VirtualBox中创建的VM的BIOS文件是一个以vm名称命名的xml文件(例如vm名称为abc,则bios文件为/root/.VirtualBox/Machines/HMC_V7/"abc.xml")。正如solaris下一样,不要直接去vi.
这个文件会被系统自动修改,每次手工vi修改后,启动虚拟机,报UNSURPPORTED HARDWARE,再去检查配置文件时,发现又会被自动改回去。
网上有说对于7.3.4版本的HMC可以在该xml文件中‘Extradata和/Extradata之间添加如下两行可以解决



用命令添加如下:
/usr/bin/VBoxManage setextradata "HMC_V7" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "IBM CORPORATION"

/usr/bin/VBoxManage setextradata "HMC_V7" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemProduct" "7042CR4"

实践事实证明没用,因为此处安装的是7.3.1而不是7.3.4,起初以为是第二行末尾HMC ROM DMI code的value值不对,改成7310CR3后依然不行

于是采用第二种,修改HMC代码,简要步骤为
1、mount -t iso960 HMC_Recovery_V7R3.4.0_1.iso ‘挂载点’ -o loop挂上安装镜像后,gunzip isolinux 目录下的initrd.gz
2、再次mount解压出来的initrd文件(该文件是使用gzip压缩的ext2文件系统镜像)
   mount -o loop initrd ‘挂载点’
3、修改initrd中opt/hmc/bin/目录下的Install文件
该脚本中有如下一段:
case "$VPDINFO" in
            8837*) busybox tar -xf /opt/hsc/data/7310CR3.tar ;; # Next 3 entries for megamouth support
            8676*) busybox tar -xf /opt/hsc/data/7310CR2.tar ;;
            7978*) busybox tar -xf /opt/hsc/data/7310CR4.tar ;;
            7042C06) busybox tar -xf /opt/hsc/data/7042C06.tar ;; # 7042 also used by other platforms
            7042CR4) busybox tar -xf /opt/hsc/data/7042CR4.tar ;;

其中VPDINFO就是关于机器型号的环境变量, 如果VPDINFO不在下面的列表中, 则HMC Linux安装程序给出出错信息. 在case语句前添加

export VPDINFO="7042CR4"(这里可以是上面以73打头的任何一个取值)

即可欺骗HMC Linux安装程序.

4、修改好后, 将initrd文件卸载并用gzip压缩, 生成initrd.gz文件.
然后将修改的initrd.gz文件替换光盘中原有的文件,方法如下:
由于源文件(iso) mount上来后是无法直接编辑的,不管我们怎么mount,就算用上rw选项,挂载起来以后修改ISO中的内容还是会提示”Read-only files system”。这是因为Linux内核的iso9660文件系统实现就是只读的,它实现的file_operations中就没有write。
我们可以用mkisofs从新制作一个iso变相的来做到,以上面用的HMC_Recovery_V7R3.4.0_1.iso文件为例,假设在mount -o loop后将文件全拷到了新建的/tmp/new目录中,完成文件的修改,之后执行:
$ mkisofs -J -R -V -v -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o HMC_Recovery_V7R3.4.0_1.iso /tmp/new
这样就会在/tmp/abc目录下生成HMC_Recovery_V7R3.4.0_1.iso,需要注意的是isolinux是相对于/tmp/abc的相对路径,不能用绝对路径

5、设置VM,指定CD/DVD-ROM装载新生成的ISO文件安装。
 
【3、】安装完HMC后,启动不了图形界面。
报:init: Id "cons" respawning too fast: disabled for 5 minutes ; 字符界面隔几秒周期性刷新.
 
回显:locallogin, 用户:hsroot  密码:abc123 登陆后, 再su - 到root,密码:passw0rd
 
若刷新频率太快无法login进root shell,重启VM,开机时按上下方向键(千万不要按左右,至于为什么,按下就知道了),就可以看到hmc的引导项了,在hmc上按下e,进入引导编辑界面,移动选项到

kernel /boot/bzImage ro root=/dev/hda2 clock......

上,按下e,这样就进入编辑模式了,按向左方向键,一直到kernel /boot/bzImage ro root=的ro这里,在ro后面加上数字1,变成这样:

kernel /boot/bzImage ro 1 root=/dev/hda2 clock......

并按下回车,返回引导选择界面,在kernel /boot/bzImage ro 1 root=/dev/hda2 clock......上按下b,进入用户模式,就可以使用命令行了。
 
[解决办法:]   需要替换XF86ConfiggetHMCVPD 这两个文件
 
这两个文件可以
  两个url中下载,
文件名:pserieshmc.zip 。其中包含的initrd.gz 由于此文前面已修改过,此处不涉及
 
网上有朋友提到可以用RedHat或别的Linux系统的安装盘(也可以在虚拟环境下配合对应的iso文件)启动到rescure模式(启动过程中要配置网络). 系统chroot /mnt/sysimage后,可到/mnt/sysimage中找到XF86Config文件,通过网络将其复制到目的主机的/etc/X11/目录下.
实践证明通过这种方式提取的XF86Config和HMC系统中原有的XF86Config文件完全一样,所以这样做并没什么意义.
 
具体实施如下:
 
1、先将这个压缩文件解压,用其中的XF86ConfiggetHMCVPD 这两个文件在linux下制作成iso(方法:mkisofs -o "目标文件名.iso"  "两个源文件[中间空格隔开]"). 然后VirtualBox中指定创建的VM的CD/DVD-ROM装载此源
 
2、进入HMC的rootshell后,mount 前一步新建的iso. 将其中的2个文件替换掉HMC系统中原有同名对应的2个,注意备份.
 
这里特别要注意,XF86Config文件原HMC系统中有2个
分别在 /etc/X11/ 和 /opt/hmc/data/ 目录下,必须要用新的XF86Config将两个都替换。
否则重启照样会报"init: Id "cons" respawning too fast: disabled for 5 minutes"
 
网上几乎千篇一律如下所述:

hmc:~ # mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-rotected, mounting read-only

hmc:~ # cd /mnt/cdrom

hmc:/mnt/cdrom # cp XF86Config /etc/X11

hmc:/mnt/cdrom # cp getHMCVPD /opt/hsc/bin

 
这种情况默认是有两个条件的
 
1、HMC_Recovery_V7R3.1.0_2.iso存在XF86ConfiggetHMCVPD 这两个文件.但本文在安装时并没有发现.
2、这里只提到了要替换/etc/X11目录下的XF86Config ,如果只替换这一个重启照样会报错. 这也是为什么网上有朋友提问,替换后依然报错的原因.
 
这里顺便提一句,如果是在windows下用vmware安装,除了替换这两个文件外,还得编辑相应vm的配置文件(一般为.vmx文件), 在最后添加以下一行: bios440.filename = "hmc.rom" 
注意hmc.rom文件的相对和绝对路径.
 
【4】网络不通
HMC与Power机器网络不通
安装完Virtulbox后会在宿主机(此处为linux server)上生成vboxnet0虚拟网卡,默认ip为192.168.56.1并同时启用DHCP server功能.
可以在VirtualBox界面中自行修改其ip、启用/禁用dhcp server功能  ; 有网友提及开启vboxnet0的dhcp网络速度会很慢,没测试,不确认。

虚拟HMC连接p机器网络不通,会有几种情况,文章结尾的3个链接可以参考,很有用。
 
这里主要谈一下vboxnet0虚拟网卡 以及 如下链接中没提及到的设置。
 
 [首先] vboxnet0说穿了就是从宿主机的网卡虚拟出来的一块网卡,HMC连接p系列机器时,网上提及一般得需要2块网卡,一块为bridge模式、hmc中设置其为open,用于内外网通信; 另一块为host-only(就是vboxnet0)、hmc中设置其为private同时启用其DHCP server功能,用于分配ip给p系列机器,要注意这里是进入hmc os中设置不是在virtualbox的界面中去enable vboxnet0为dhcp server.
              
例如本文中的宿主机只有一块网卡(eth0)连线,安装virtualbox后会生成一个vboxnet0网卡,它是由virtulbox从eth0上虚拟出来的。在hmc的shell下可以看到eth0对应宿主机的eth0,eth1就是宿主机上看到的vboxnet0. 所以这里的情况是所有网络数据都是通过宿主机eth0在传输,与此同时也就限制了所能传输的数据只能是eth0物理上所接网段的数据,  要使vboxnet0能起到dhcp server的作用,就只有2种做法:
                                                   
1、eth0、vboxnet0(即hmc中的dhcp server)、p系机器的hmc口这三个点的ip必需设置在一个网段
 
2、在virtulbox中不启用vboxnet0,在hmc中只保留宿主机的eth0并设置其为dhcp server,确保eth0和p机器的hmc口在一个网段
 
[其次]  关于虚拟出的hmc与宿主机所在网段的其它主机不能通信、与宿主机本身不能通信、与要管理的p系机器hmc口不能通信 等问题;首先在hmc中明确要与外网通信的是哪块网卡,设置其为bridge模式。解决与宿主机的通信问题后,要与外网互通,必须在hmc中设置其网关为宿主机的网关.
                                                                                                    
 
 
 
-----------------------------------------------------------------------------------------------------------------------------------------------
以上安装过程全是由网上的朋友所提供资源结合个人实践所得, 请留意平台环境(如文章开头所述)
另外说句题外话:大家有条件还是直接上IBM的硬件,这种近乎自虐的安装过程对技术上也没什么帮助.
阅读(4370) | 评论(0) | 转发(0) |
0

上一篇:Linux Time Setting

下一篇:SCSI || TAPE

给主人留下些什么吧!~~