Chinaunix首页 | 论坛 | 博客
  • 博客访问: 186775
  • 博文数量: 41
  • 博客积分: 2222
  • 博客等级: 大尉
  • 技术积分: 435
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-10 11:19
文章分类

全部博文(41)

文章存档

2011年(5)

2010年(36)

我的朋友

分类: LINUX

2010-08-03 12:34:29

在HP LH6000上安装RHEL5之一
   最近为了学习Linux,在一台比较老的服务器上安装Red Hat Enterprise Linux V5 ,遇到一些问题,经几番折腾终于搞定,相关问题记录在此。
 
(我安装时Loading aic7xxx driver成功,但找不到硬盘,因此我直接使用第四步,在主机的BIOS中设置NetRAID卡为Enable LVD SCSI,然后进行安装就可以了)
以下内容是参考:http://hrjin.blog.163.com/ 放在这里供学习之用。
 
一、服务器的基本配置
服务器是HP LH6000,2个Intel Pentium III Xeon 700,1G内存,4个18G的Ultra3 SCSI 10000rpm的硬盘,集成2个SCSI控制器。其中一个双通道 Ultra2 SCSI HP NetRAID 控制器,带 32MB 高速缓存(可扩充至 128MB),可选的电池备份;一个单通道 Ultra Wide SCSI 控制器。
关于SCSI的简单发展历程参见这里。
持信息。
二、问题开始于aic7xxx驱动
用RHEL4的第1张安装光盘引导,在第一个命令输入界面直接按回车,到了Loading aic7xxx driver的界面一直下不去,但是没有死机,Ctrl+Alt+Del可以重启机器;Ctrl+Alt+F1~F4可以切换显示。
重启机器,在第一个命令输入界面使用linux noprobe命令,即不自动检测设备的安装模式来安装,之后手动选择加载aic7xxx_old驱动也是同样症状。
三、机器的SCSI配置,进一步尝试
根据机器启动时的自检信息、主机BIOS内的信息、SCSI配置工具信息(两块卡分别是系统启动时按Ctrl+A进入和Ctrl+M进入配置工具),单通道SCSI卡使用的是Adapter aic7880芯片,SE(Single Ended) SCSI。双通道的那块使用的是AMI的芯片(AMI的存储控制器部门后来被LSI收购),可以提供RAID功能(HP称之为NetRAID),也可以在主机BIOS中禁用RAID功能,只作为LVD(低电压差分)SCSI控制器,也就是Ultra2 SCSI控制器使用。由于aic7880那块卡上没有挂接硬盘,所有硬盘都接在双通道卡的chanel 0上,因此怀疑是由于没接硬盘导致Loading aic7xxx driver失败,在BIOS中禁用这块卡后再做安装尝试。由于禁用了第一块SCSI卡,系统不会再去加载aic7xxx驱动。第二块卡默认使用的RAID方式,如果不打linux noprobe命令而直接安装,会自动加载megaraid_mbox驱动,并报告找不到device(没找到硬盘),继续
下去会在分区时报告没有硬盘;如果使用linux noprobe命令来安装,则手工加载任何驱动都没用,可以选择加载sym53c8xx驱动(注:Symbios公司是被LSI收购的一个公司,因此sym53c8xx也被LSI用于AMI的芯片),但是由于sym53c8xx是SCSI驱动而不是RAID驱动,因此虽然可以继续下去,但是在分区时还是报告没有硬盘。至此,要么找到合适的合适的RAID驱动,要么禁用RAID方式,只用SCSI,否则安装无法继续。
四、禁用NetRAID,只用SCSI 
在主机的BIOS中设置NetRAID卡为Enable LVD SCSI,只用SCSI。该卡的信息在系统自检时没有任何显示,也不能像使用NetRAID时那样用Ctrl+M进入配置工具,重启系统自检时通过Ctrl+C可以查看相应信息。
光盘引导后能识别出SCSI卡,自动去加载sym53c8xx驱动,但是与之前的aic7xxx一样,一直进行不下去。如使用linux noprobe命令,则需手动去加载驱动,也进行不下去。
之后尝试了在主机BIOS中进行各种设置,尤其是中断方面的设置,都解决不了问题。
五、引入acpi=off及noapic
后根据网上搜索到的信息,尝试在光盘引导后的第一个输入界面使用linux noprobe acpi=off noapic命令进行安装,这样系统不会
自动加载sym53c8xx驱动,可以手动选择加载之。到了后面要求分区的时候,可以发现有6个硬盘(sda~sdf),看来Linux安装程序是
识别出了这块SCSI卡。
这里简单介绍一下acpi和apic。ACPI是Advanced Configuration and Power Interface的缩写,意思是“高级配置与电源接口”,是
英特尔、微软和东芝共同开发的一种电源管理标准。APIC是Advanced Programmable Interrupt Controller的缩写,即高级程序中断
控制器。有人认为使用acpi=off noapic选项可以解决很多问题,不仅限于Linux和HP的服务器。
根据后来的验证,本例中使用linux acpi=off即可继续,noapic和noprobe不是必需的。
六、关于分区的要求
分区时要注意的是/boot不能位于LVM上,若不遵守在安装过程中会有提示。
在本例中/boot还必须放在第一个物理硬盘上,也就是sda上,因为从硬盘启动一般默认是机器上的第一个硬盘,放在sda上是不会错
的。有的机器可以设置从第几个物理硬盘启动,那么/boot就可以放在任意一个物理硬盘上并在BIOS中进行设置即可。但是LH6000的
BIOS中没有设置各个物理硬盘启动优先级的选项(可能是由于LH6000默认启用的是NetRAID方式,所以BIOS中就不提供这种功能了)
,因此应该把/boot放在第一个物理硬盘上,就是那块双通道控制卡的chanel 0上的device 0的位置,从服务器外观上看就是前面板
右侧最下方的那块硬盘(默认情况,如果重新设置过LH6000的SCSI设备连线则另当别论)。
另外,NetRAID的配置工具中也没有设置逻辑硬盘(对操作系统来说是物理硬盘)启动优先级的选项,这样看来就算使用NetRAID方式
,也是要把/boot放在sda,即RAID的logical disk 0上的。
 
后面的安装过程一切正常,按安装完成后的提示重启机器,只等Linux启动界面出现。至此,似乎一切都已搞定。
在HP LH6000上安装RHEL4之二Linux 2008-11-08 17:14:37 阅读32 评论0 字号:大中小 .
上一篇中记录到RHEL4安装完成,按提示重起机器。接下来,新的问题出现了,系统启动不了!从输出信息上看机器似乎没有从硬盘
去启动。
一、检查机器的BIOS设置
试了一下光盘可以启动。进入主机的BIOS设置界面,反复检查启动顺序设置,没有发现问题。如上一篇中所记,其中没有设置从具体
哪一个硬盘启动的选项,倒是有一个选项是关于硬盘启动的不可更改的项,似乎名字是hard card,说明了硬盘启动不是直接找硬盘
而是要找到控制卡的。由此怀疑要么是机器没找到SCSI控制卡进而没找到可用于启动的硬盘,要么是找到了硬盘但硬盘上的引导部分
有问题。
二、检查sda的主引导扇区,Linux的引导程序grub
接着就检查硬盘的引导扇区。用光盘启动后,在第一个命令输入界面键入linux rescue acpi=off,手工选择加载sym53c8xx驱动。会
提示是否mount已安装系统的文件系统,选择“
是”,会把安装好的系统的根文件系统 mount到/mnt/sysimage,这说明进入linux后是可以找到那些硬盘的。Ctrl+Alt+F1或者
Ctrl+Alt+F2在shell 下使用fdisk -l命令也可以清楚地看到sda~sdf六个硬盘。
那么,是不是sda上的引导扇区有问题呢?下面进行检查。
chroot /mnt/sysimage #切换安装好的系统的根目录为当前根目录
dd if=/dev/sda of=/bootinfo.bin bs=512 count=1 #读取sda上的主引导扇区的内容到文件/bootinfo.bin,一个扇区有512个字节

使用od -x /bootinfo.bin命令以16进制方式查看/bootinfo.bin文件的内容,分区活动标志80和分区表结束标志55aa都正常。把其他
装有RHEL4的机器上的主引导扇区内容与之比较,除因分区状况不同而使得分区表部分有所区别外,MBR部分没有区别。说明主引导扇
区没问题。
为保险起见,决定重写MBR。RHEL4使用的引导程序是GRUB(GRand Unified Bootloader)
查看/boot/grub/grub.conf文件(也就是menu.lst文件)
文件内容如下
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LVroot
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux AS (2.6.9-22.ELsmp)
        root (hd0,0)
        kernel /vmlinuz-2.6.9-22.ELsmp ro root=/dev/VolGroup00/LVroot rhgb quiet
        initrd /initrd-2.6.9-22.ELsmp.img
没有问题
grub #运行grub
root (hd0,0) #注意root命令后的空格,设置第一个硬盘(这里用hd0表示,而不是sda)的第一个分区为当前目录
setup (hd0) #注意setup命令后的空格,把引导程序写到第一个硬盘的主引导扇区的MBR中
exit #退出grub
其实也可以不运行grub,直接使用grub-install /dev/sda命令来更新MBR。之后使用命令exit退出当前的根目录,把根目录切回去,
再输入一遍exit重起机器。
可是问题依旧,这样就只能是机器启动时寻找SCSI控制器的问题了。
三、机器启动时没找到SCSI控制器
似乎是机器根本没有从那块禁用了NetRAID功能的SCSI卡上去启动,或者是没考虑单纯SCSI方式,非用NetRAID不可。又或者SCSI硬盘
启动的功能设置在了aic7880卡上?这个有待求证。目前清楚的是,主机加电自检过程没找到卡。
结合上一篇中提到的连HP的800电话技术支持工程师都不确定能否在主机自检后进入使用AMI芯片的那块SCSI卡的配置工具的情况,很
可能HP真的没有考虑用这块卡上的单纯SCSI方式来启动。
把机器下架,开机箱进行硬件设置过于麻烦,而且也不易一定能解决问题,只有再回到NetRAID上。上一篇中提到的要注意硬盘顺序
并非废话,如能使用SCSI的话还是应遵守的。
在HP LH6000上安装RHEL4之三Linux 2008-11-13 17:34:54 阅读77 评论0 字号:大中小 .
在主机BIOS中重新启用NetRAID。之前已经尝试过使用NetRAID的安装,如默认设置,安装程序会自动load megaraid_mbox,并报告找
不到硬盘。
一、RHEL4不支持LH6000的NetRAID卡
在网上搜索相关信息,了解到HP LH6000上安装RHEL4时不能自动加载RAID卡驱动的原因是新的Linux核心自带的驱动megaraid_mbox去
掉了对一些较老的RAID卡的支持,相关信息在RHEL4 Update1的Release Note中有所表述。似乎RedHat和硬件厂商不应该这样放弃对
老设备的支持,据说Fedora4也是这样,但是Fedora5又把老的megaraid驱动加进来了。对于RHEL4必须找到可用的驱动并手工加载才
能在LH6000上安装下去。
二、HP提供的驱动只支持较老的Linux核心
在HP网站上下载NetRAID for Linux驱动,使用dd nud-71r7 /dev/fd0命令把文件写到软盘,按说明在安装时mount软驱,运行其中的
安装命令,但是报告此驱动只能用于2.2.16-22的核心,而检测到的系统核心是2.6的,因此不可用。
三、自己编译驱动并安装
在网上找到一篇比较详细的在装好的RHEL4系统下编译legacy megaraid驱动并应用的文章,地址是:
http://www.tuxyturvy.com/blog/index.php?/archives/4-Installing-RHEL4-on-Systems-with-Legacy-Megaraid-Drivers.html
此文中还提供了驱动源文件的下载:
照此文描述进行尝试
1、编译驱动
需要有一台安装好RHEL4的机器,其配置不需要与LH6000相同,使用了一台单CPU的PC机,下载的驱动在这台机器上编译。
# mkdir /usr/src/megaraid
把下载的压缩文件拷贝到megaraid目录
# cd /usr/src/megaraid
# tar jxvfp /usr/src/megaraid/megaraid2.tar.bz2
使用以下命令编译驱动,机器上必须安装有kernel-devel程序包
# make -C /lib/modules/2.6.9-22.EL/build SUBDIRS=/usr/src/megaraid modules
编译过程中会报一些警告,事后证明没有问题,可以不理会。
在/usr/src/megaraid目录下会生成文件megaraid.ko,把此文件拷贝到软盘中。注意软盘要事先格式化为ext2/3格式的,可以执行
mke2fs /dev/fd0
2、手工加载megaraid驱动安装系统
使用光盘引导机器后,使用linux noprobe acpi=off noapic进行安装,当出现提示没有发现硬盘驱动器时,Ctrl+Alt+F2切换到
shell界面手工从软盘加载megaraid驱动。
# mkdir /mnt/floppy
# mount /dev/fd0 /mnt/floppy
使用insmod命令安装驱动
# insmod /mnt/floppy/megaraid.ko
之后使用lsmod命令查看驱动模块已加载。后面的安装一切顺利。
3、修改initrd
到了安装完成,提示重启机器的时候先不要重起,因为系统启动的时候用到initrd,需要把megaraid驱动加到启动img里去。
Ctrl-Alt-F2切换到shell界面
把软盘上的驱动文件拷贝到系统中
cp /mnt/floppy/megaraid.ko /mnt/sysimage/lib/modules/2.6.9-22.EL/kernel/drivers/scsi
改变当前的根文件系统
chroot /mnt/sysimage
编辑/etc/modprobe.conf文件,指定模块的别名
vi /etc/modprobe.conf
确定有一行alias scsi_hostadapter megaraid
修改initrd文件
cd /boot
cp initrd-2.6.9-22.ELsmp.img initrd-2.6.9-22.ELsmp.img.bak #备份原来的文件
mkinitrd initrd-2.6.9-22.ELsmp.img.new 2.6.9-22.ELsmp      #新建initrd文件
cp initrd-2.6.9-22.ELsmp.img.new initrd-2.6.9-22.ELsmp.img
把根文件系统切回去
exit
Alt-F7切回到安装的GUI,按提示重启机器,有上一次不能启动的先例,到这里为止还不能说安装已经成功。
.在HP LH6000上安装RHEL4之四Linux 2008-11-13 17:40:59 阅读54 评论0 字号:大中小 .
重启系统出现问题,报Kernel panic - not syncing: Attempted to kill init!的严重错误。
根据屏幕打印的信息可以看出还是megaraid的驱动加载错误,什么原因?在安装过程中这个驱动是可以被加载且正常发挥作用的,为
何装好后就不行了呢?想起那篇文章中有提示“ If your installing on an SMP section you'll need to boot up the UP
system, compile the source driver again for the SMP kernel, install the module, recreate the initrd for the SMP
kernel, and reboot again.”,看来是驱动不对,需要smp(对称式多处理器)的驱动。
试着在单cpu的pc上安装了kernel-smp-devel软件包,用
make -C /lib/modules/2.6.9-22.ELsmp/build SUBDIRS=/usr/src/megaraid-smp modules
编译smp驱动后拿到LH6000上,光盘启动后不能手工加载该驱动,报不匹配的错误,难道单CPU的机器编译的smp驱动是不可用的吗?
由于这一次的光盘启动安装,无意中发现grub.conf文件中多了一项,变成了:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LVroot
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux AS (2.6.9-22.ELsmp)
        root (hd0,0)
        kernel /vmlinuz-2.6.9-22.ELsmp ro root=/dev/VolGroup00/LVroot acpi=off noapic rhgb quiet
        initrd /initrd-2.6.9-22.ELsmp.img
title Red Hat Enterprise Linux AS-UP (2.6.9-22.EL)
        root (hd0,0)
        kernel /vmlinuz-2.6.9-22.EL ro root=/dev/VolGroup00/LVroot acpi=off noapic rhgb quiet
        initrd /initrd-2.6.9-22.EL.img
其中的UP表示Uni-Processor,即单CPU
从此文件中可以得出2个重要信息:
1、系统从硬盘(NetRAID)启动使用的是initrd-2.6.9-22.ELsmp.img文件,但安装结束时加入到此文件的驱动是不匹配的,需要smp
驱动
2、光盘引导时加载的是非smp的核心,而我的megaraid驱动恰恰也是在一台单cpu的pc上编译的,曾分别使用
make -C /lib/modules/2.6.9-22.EL/build SUBDIRS=/usr/src/megaraid modules
make -C /lib/modules/2.6.9-22.ELsmp/build SUBDIRS=/usr/src/megaraid-smp modules
来编译非smp和smp的驱动,结果前一个可以在LH6000(2个cpu)上安装时手工加载,后一个在光盘启动手工加载时报错,至于报错的
原因不是前面所猜测的“单CPU的机器编译的smp驱动是不可用的”,而是因为光盘引导时加载的是非smp核心,可加载的驱动也应该
是非smp的。
为验证上面的想法,分别在非smp和smp的initrd文件中加入相应的megaraid驱动,2个驱动都是在安装有RHEL4的单CPU的PC上编译的
。把非smp的megaraid驱动加到initrd-2.6.9-22.EL.img中,把smp驱动加到initrd-2.6.9-22.ELsmp.img中。
修改grub.conf文件中的两行
timeout=15  #延长了启动选择菜单显示时间
#hiddenmenu #显示启动选择菜单
然后运行grub,重写MBR
grub>root (hd0,0)
grub>setup (hd0)
把修改后的grub信息写到主引导扇区去,重启后选择启动非smp的核心: Red Hat Enterprise Linux AS-UP (2.6.9-22.EL)
系统正常启动!
使用cat /proc/cpuinfo命令可以看到只打印出1个cpu的信息,系统运行在单CPU状态下。
再重启机器,选择启动smp核心:Red Hat Enterprise Linux AS (2.6.9-22.ELsmp)
系统也正常启动。
使用cat /proc/cpuinfo命令可以看到打印出2个cpu的信息。
由此也证明了机器是否单/多CPU没有关系,只要装有合适的开发包,就可以使用合适的编译参数编译non-smp和smp的驱动,可能除了
驱动其他源代码的编译也是如此。
至此,安装工作总算是完成了,过程记录有点冗长。
另,安装前在NetRAID配置工具里把Adapter的emulation type从I2O改为了Mass Storage,网上有人建议安装Linux要使用后者,但不
确定是否必须这样。
 
 

 
阅读(1777) | 评论(0) | 转发(0) |
0

上一篇:环境变量

下一篇:解决ftp 425 bad ip connecting

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