Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1013074
  • 博文数量: 132
  • 博客积分: 14065
  • 博客等级: 上将
  • 技术积分: 1270
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-06 16:08
文章分类

全部博文(132)

文章存档

2009年(2)

2008年(58)

2007年(14)

2006年(58)

我的朋友

分类: LINUX

2007-09-07 13:56:48

公司有一台DELL PowerEdge SC1425,配置如下
处理器:      Intel Xeon 主频(MHz)  2800
内存:        ECC DDR2 SDRAM 1G
SCSI控制器:  Ultra320 SCSI
硬盘:         74GB*2
网卡:        1000M网卡*2
 
 
    昨天用它安装了最新的VMware ESX Server 3.0.2 52542,遇到的些许挫折一一解决,下面是过程记录。
在BIOS中将两块硬盘做成了RAID0(没有使用RAID卡),开机从光盘启动后按照提示进行安装,突然出现Warning,No hard drive have been found ...最初以为是做了RAID的缘故,重启,打散RAID0,再安装时问题依旧,还好vmware的waring下还有一个...Would you like to select drivers now,选择了yes将驱动列表中的驱动一一试过,当选择Adeptec Aic79xx SCSI...(aic79xx)时认出了光盘,欣喜万分后再次重启,重做RAID0,再次安装时加载驱动aic79xx,结果认出的还是两块单硬盘,不认RAID,只好再次重启打散RAID重装,还好加载驱动aic79xx后的安装很顺利。
 
    重启后见到了久违的GRUB界面,不幸系统无法正常启动,停留在一个buzybox的shell下,初步判断还是SCSI硬盘驱动问题,又分别尝试了debug mode和troubleshooting mode启动,troubleshooting mode可以正常识别硬盘顺利启动,遂决定修改启动是用的内存映像文件(.img文件)手动添加SCSI硬盘驱动,过程如下:
 
[root@vmware boot]# ls -l /boot
-rw-r--r--    1 root     root      5732715 Sep  7 12:50 initrd-2.4.21-47.0.1.ELvmnix.img
(这个就是我们要修改的文件)
-rw-r--r--    1 root     root       217408 Sep  7 11:29 initrd-2.4.21-47.0.1.ELvmnix.img-sc
 
将要用到的文件拷贝到/tmp目录下
[root@vmware boot]# cp /boot/initrd-2.4.21-47.0.1.ELvmnix.img /tmp
[root@vmware boot]# cp /boot/initrd-2.4.21-47.0.1.ELvmnix.img-sc /tmp
[root@vmware boot]# cd /tmp
 
用file命令查看一下文件类型,可以看出两个文件都是gzip压缩文件
[root@vmware tmp]# file initrd-2.4.21-47.0.1.ELvmnix.img
initrd-2.4.21-47.0.1.ELvmnix.img: gzip compressed data, from Unix, max compression
[root@vmware tmp]# file initrd-2.4.21-47.0.1.ELvmnix.img-sc
initrd-2.4.21-47.0.1.ELvmnix.img-sc: gzip compressed data, from Unix, max compression

解压缩
[root@vmware tmp]# gzip -dc initrd-2.4.21-47.0.1.ELvmnix.img >initrd.img
[root@vmware tmp]# gzip -dc initrd-2.4.21-47.0.1.ELvmnix.img-sc >initrd-sc.img
[root@vmware tmp]# file initrd.img
initrd.img: Linux rev 1.0 ext2 filesystem data
[root@vmware tmp]# file initrd-sc.img
initrd-sc.img: Linux rev 1.0 ext2 filesystem data

创建用来临时挂载.img的目录
[root@vmware tmp]# mkdir img imgsc

挂载.img文件到临时目录,默认的挂载就有rw选项,可读写挂载。
[root@vmware tmp]# mount -o loop initrd.img img
[root@vmware tmp]# mount -o loop initrd-sc.img imgsc/

将troubleshooting mode中的模块拷贝到正常模式启动用的映像中
[root@vmware lib]# cd /tmp/img/lib
[root@vmware lib]# cp ../../imgsc/lib/* .
[root@vmware lib]# cd ..

进入img目录,修改启动脚本linuxrc
[root@vmware img]# vi linuxrc


将linuxrc的内容改成:

#!/bin/ash
echo "Mounting /proc filesystem"
mount -t proc /proc /proc
echo "Loading aic79xx.o module"
insmod /lib/aic79xx.o
echo "Loading adma100.o module"
insmod /lib/adma100.o
echo "Loading pdc202xx_old.o module"
insmod /lib/pdc202xx_old.o
echo "Loading sc1200.o module"
insmod /lib/sc1200.o
echo "Loading triflex.o module"
insmod /lib/triflex.o
grep -q "failshell" /proc/cmdline
if [ $? -eq 0 ]; then
   export failshell="init/shellrc"
fi
$failshell
for f in 1.vmkernel 40.vmkdrivers 100.rootfs; do
   /init/$f
   if [ $? -eq 0 ]; then
      echo "$f succeeded."
   else
      echo "$f failed."
      $failshell
   fi
done
# Root must have been mounted at this point.
/bin/umount /initrd/proc
#!/bin/nash
 
主要就是加驱动insmod的那部分,反正驱动都copy了就全加上了(后来我又尝试了一次只加识别硬盘需要的aic79xx.o系统也是不能启动,所以都加上不算多余,呵呵)
 
修改完后卸载img
[root@vmware lib]# cd ..
[root@vmware tmp]# umount img
 
重新压缩initrd.img
[root@vmware tmp]# gzip initrd.img
[root@vmware tmp]# ls initrd*
initrd-2.4.21-47.0.1.ELvmnix.img  initrd-2.4.21-47.0.1.ELvmnix.img-sc  initrd.img.gz  initrd-sc.img
 
备份initrd-2.4.21-47.0.1.ELvmnix.img后将我们修改好的.img放到/boot目录下
[root@vmware tmp]# mv /boot/initrd-2.4.21-47.0.1.ELvmnix.img /boot/initrd-2.4.21-47.0.1.ELvmnix.img.bak
[root@vmware tmp]# cp initrd.img.gz /boot/initrd-2.4.21-47.0.1.ELvmnix.img
 
大功告成,重新启动后顺利进入esx系统,开始 ESX Server 测试之旅。
 
补充知识:
  initrd----boot loader initialized RAM disk(全称)
  是一种启动Linux系统的方式,前流行的Linux版本一般都采用模块化的内核,这种方式可以在不重新编译构建内核的情形下增加功能模块,initrd*.img就是RAM disk的映象,默认用gzip压缩过节省空间,可以解开修改,添加在内核启动时需要加载的自定义内核模块。

 
阅读(3301) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~