显示标签为“VMware”的博文。显示所有博文
显示标签为“VMware”的博文。显示所有博文

2012年10月11日星期四

VMware中CRUX网络环境配置

VMware中CRUX网络环境配置


最近折腾CRUX花了不少时间,也走了不少弯路,把遇到的问题记录下来,希望能够给人以帮助。

在VMware中安装完成CRUX后,一般而言是上不了网的。这是因为我们没有配置好CRUX的网络环境,也可以说我们刚刚安装好的CRUX不能适应我们的VMware环境。因此需要通过修改网络配置文件来完成。

为了确保我们的网卡驱动没有问题,我们首先使用ifconfig命令检查一下网络接口,应该会有:

    # ifconfig
    eth0      Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
              inet addr:192.168.1.100   Bcast:192.168.1.255   Mask:255.255.255.0
     ......
    lo        Link encap:Local Loopback
     ......
这说明我们的网卡驱动已经成功安装了。如果没有eth0的选项,那么说明缺少网卡驱动,需要重新配置和编译CRUX内核以添加网卡驱动。网卡驱动的选项如下:
      Devices Drivers --->
        Network device support --->
          Ethernet (10 or 100Mbit) --->
            <*>AMD PCnet32 PCI SUPPORT

相应的步骤可以参考之前的blog

确认网卡驱动没有问题之后,就可以配置相应的设置了。首先要确保在VMware里:
      VM --> Settings... --> Network Adapter --> NAT:Used to share the host's IP 
是选中的,也就是说虚拟机通过NAT的方式连接到互联网。
首先停止网络服务:
      $ sh /etc/rc.d/net stop
然后,我们参照官网的配置教程来配置CRUX虚拟机中的/etc/rc.d/net文件:
      $ vi /etc/rc.d/net
修改为以下内容即可:
  #!/bin/sh
  #
  # /etc/rc.d/net: start/stop network
  #

  case $1 in
  start)
 # loopback
 /sbin/ip addr add 127.0.0.1/8 dev lo broadcast + scope host
 /sbin/ip link set lo up
 # ethernet
 /sbin/dhcpcd -t 10 -h $HOSTNAME eth0
 ;;
  stop)
 /usr/bin/killall -q /sbin/dhcpcd
 /sbin/ip link set lo down
 /sbin/ip addr del 127.0.0.1/8 dev lo
 ;;
  restart)
 $0 stop
 $0 start
 ;;
  *)
 echo "usage: $0 [start|stop|restart]"
 ;;
  esac

  # End of file
也就是说,以DHCP的方式连接到子网中。当然,你也可以按照教程配置为固定IP地址。
最后,执行start: 
      $ sh /etc/rc.d/net start 
以启动网络,等待DHCP服务启动完成,就可以连接到互联网了。你可以使用wget命令下载内容。
如果虚拟机仍然无法访问网络,则关闭VMware,尝试在系统服务中把VMware开头的所有服务重启一遍。
如果还不能够访问,可能问题出在其他地方,爱莫能助。

VM7中CRUX 2.7的安装

 VM7中CRUX 2.7的安装

前言(废话):发现上一篇帖子还是去年11月的额,不知不觉有近一年的时间没有进行技术方面的学习了...果然搞科研的孩子伤不起啊喵~!最近又开始折腾各种配置,遇到了不少问题,尤其是在VMware中编译运行CRUX着实令人头疼...不是说过程很复杂,而是遇到了各种奇怪的问题难以解决,折腾了几个整天的时间终于有些眉目了。本文简要介绍在VM7安装CRUX以及前期配置中遇到的一些问题的解决方法。由于编译操作系统对于环境要求严格(不同环境下遇到的问题可能不同),因此不保证本文的方法能够适用于任意情况下的CRUX安装。

好吧,我们长话短说。首先VMware是必须的(我用的版本是VMware workstation7.0.0 build-203739,同学在8.0上貌似也可以),如果没有,没有...我也没有办法。CRUX选用的是2.7版,我用的是i686的版本,X86的版本也行,可以从http://crux.nu/Main/Download下载相应的iso。

先来看看俺是怎么失败的:
首先在VMware中创建虚拟机,选择自定义(custom),在系统安装选项(guest operating system installation)中选择从iso安装,并选择下载的CRUX的iso文件,系统选择Linux,Other Linux 2.6.x kernel,硬件选项除了硬盘类型改为IDE(默认是SCIS),其余全默认(虚拟机存储的路径自己决定吧),然后等待系统启动。
接下来的步骤我是按照这个教程进行的,貌似2.7的CRUX有个bug,不论你的硬盘类型是IDE还是SCSI,硬盘的设备路径都是/dev/sda(按理来说IDE的硬盘应该是/dev/hda),分区后的结果自然也不是hda1,hda2...而是sda1,sda2...自己注意一下就好。fdisk命令不懂可以自己找些教程,例如这个

另外,在fstab里面别忘了加入swap分区的内容(按照教程的内容应该加入/dev/hda2  swap swap default 0 0一行,自己根据情况修改)。lilo里面的append=quite注释掉有利于问题的发现。
经过漫长的编译和配置,总算到了激动人心的时候,reboot,系统启动,加载驱动,挂载硬盘,然后...就木有然后了...这里出现了致命错误:

   VFS: Cannot open root device 803 or unknown-block(8,3)
   Please append a corrent "root=" boot option
   kernel panic - not syncing: VFS: Unable to mount root fs on unknow-block(8,3) 


重启之后仍然不能解决问题,无解,只能咨询google了。

发现其他人也遇到了类似问题,尝试他们提供的解决方案,仍然不能解决问题...根据其他人的症状解决方法,想到可能是硬件驱动冲突问题(类似问题基本是修改硬件驱动配置解决的)。但是crux配置里面的硬件数量这么多,要怎么样找出究竟是哪个驱动有问题呢?

如果大部分驱动是没有用的,我们为什么不去除其他多余的所有驱动呢?按照这个思路,在以上提到的教程第6步
6、编译内核,安装内核文件及模块

$ cd /usr/src/linux-2.6.15.6
$ make menuconfig 
中的$ make menuconfig 命令之前,先输入以下命令:
$ make defconfig 
将编译选项恢复到默认配置,然后再按照以上提供的解决方案进行配置,其余步骤与教程相同。
终于得到了以下结果:
真是可喜可贺啊!

总结一下,需要注意的步骤如下:
  1. 在创建虚拟机时VMWare硬盘的SCSI方式选择busLogic
  2. 编译内核时一定要选上如下两个:
    Device Drivers --->
    Fusion MPT device support --->
    <*> Fusion MPT ScsiHost drivers for SPI [kernel 2.6.13] 


    SCSI low-level drivers --->
    <*>bus Logic SCSI support


    ext4文件系统默认没选上,一定要选择上,不然/boot不能mount

    将网卡编译入内核中

    Devices Drivers --->
    Network device support --->
    Ethernet (10 or 100Mbit) --->
    <*>AMD PCnet32 PCI SUPPORT 
  3. 在 $ make menuconfig 之前一定要 $ make defconfig ,否则驱动冲突
其余的按照教程操作就可以了。