1 安装debian

  安装debian,从网上下载最新的debian CD镜像,我用的5.07,刻成盘,在服务器上安装,服务器有时候很多错误(比如发现不了硬盘,读光驱不行等等,我都郁闷死了,这几天装机比这20年装的都多。只能把硬盘放到别的服务器安装好了换回来),有时候还有网卡驱动(网卡比较老把)debian没有,只能自己用U盘拷贝,在安装的时候最好不要先安装好驱动,这样在后面apt自动配置的时候会花很长时间。另外,在安装好以后,最好先重启一次。注:我安装好关机后我就把硬盘换到另一个服务器,结果启不起来,师兄说重启会写一些东西进去的。

  配置网络,如果开始网卡没启动的话配置完了也不能上网,我就用万能的方法:重启系统。如果安装时候选则配的话,现在只要配置ip什么的就行了

  配置ip,vim /etc/network/interfaces,配置如下:

  auto eth0
  iface eth0 inet static
  address 192.168.5.202
  netmask 255.255.255.0
  gateway 192.168.5.1

  意思都明白吧,启用设备eth0,然后使用静态ip(因为实验室是静态ip),如果是动态的就可以配置成iface eth0 inet dhcp 就可以了。

  然后配置DNS :vim /etc/resolv.conf

  配置如下:nameserver 202.112.128.50
       nameserver 202.112.128.51

  配置好以后就需要重启网卡/etc/init.d/networking restart,如果出现Reconfiguring network interfaces...done.就说明eth0配置并重启成功。如果没有就需要检查错误了,其中看网络接口有没有插网线是用命令mii-tool,如果显示它no link说明没插网线。这里可以使用ifconfig来查看已启用的网络设备,用ifconfig -a查看存在的网络设备,有时候是不一样哦,比如有双网卡,eth0和eth1,但是eth1没有启用,在ifconfig命令下查看不到的。现在可以ping www.baidu.com查看外网如何

  然后配置源列表 vim /etc/apt/sources.list,下面是我的源列表

    deb http://debian.cn99.com/debian/ stable main non-free contrib(这个是cn99的源,比较好,速度比较快)
    #deb http://archive.debian.org/debian/ etch contrib main non-free(这个是美国的,主要在debian 4即etch版本有些软件cn99不再维护了,所以会用这个源)前面加“#"是注释掉这个源,使用的时候要去掉哦~

  配置好源以后需要更新一下,apt-get update,更新一下源列表。

  然后安装ssh,远程登录吗,谁也不愿意在机房守着,apt-get install ssh。安装好以后就回实验室远程登陆吧。

2 安装debian package:

  1. [gcc,gawk,libc6-dev,libncurses5-dev,libssl-dev,libx11-dev,gettext,python2.5-dev,zlib1g-dev]   都用apt-get install安装
  2. 安装dev86 http://homepage.ntlworld.com/robert.debath/dev86/Dev86src-0.16.17.tar.gz
  3. 下载后,cd soft.tar.gz所在的目录;tar -xzvf soft.tar.gz //一般会生成一个soft,然后cd soft,再make install
  4. 注意,安装bridge-utils,xvnc4viewer,以后讲解不安装产生的错误。 如果没有这些软件。可以用apt-cache search vnc |more来查找软件,其中apt-cache search 是查找软件,more是一页页的看,可以用apt-cache search vnc |grep viewer,其中grep表示搜索的软件名字中还包括viewer

3安装双机xen

  就是我们的系统,代码是xen修改的。先安装svn客户端

title Xen 3.2.0 from source

root (hd0,0)

kernel /boot/xen-3.2.0.gz hap gdb=com1                 (这个是编译生成的一个内核,其中hap代表页面扩展)

module /boot/vmlinuz-2.6.18-6-xen-686 root=/dev/sda1 ro   (这个是Domain 0的东东啦)

module /boot/initrd.img-2.6.18-6-xen-686                 (Domain 0的img)

然后设置 default         2  , default是默认启动的内核,这里是2,是因为我的这个内核在第3个,0代表是第1个

好,然后reboot就可以成功了 ,reboot之后,uname -a查看使用的是哪个内核

4启动双机xen

   有主节点和从节点,主节点安装vncserver(具体软件名是vnc4server),命令vncserver启动vnc,然后vncserver -kill :1(kill后面必须有空格)杀掉vnc进程,然后修改配置文件vim ~/.vnc/xstartup,在最后一行加上一句 gnome-session &(如果桌面是kde环境的 就用 startkde &,“&”表示在后台运行),然后修改hvm配置文件,主从节点是不一样的,主要是镜像吧,主节点是我们的guest os镜像,其中有5处需要改正,当时我有一处搞错了,然后好几天系统都起不来,哎,傻啊~

  然后xend start启动守护进程,有时会报错,发现缺少bridge-utils这个软件包,安装上就可以了,然后在vnc里面xm create hvm就可以了,就启动成功了,如果看启动日志可以cat /var/log/xen/qemu-dm-xx.log就行了(其中xx代表你启动第几次啦,可以看文件),如果跟踪启动过程就用tail -f /va/og/xen/qemu-dm-xx.log。

5配置镜像

   我用的是已经存在的镜像,所以就不必制作镜像了,这里讲一下QEMU,先apt-get install qemu,关于qemu可以看看Qemu安装使用手册中文版,网上一搜遍地都是。这里只涉及到它的网络配置。如果想让镜像能够联网的话,需要配置tap,这里推荐两个博客http://tagche.blog.51cto.com/649757/278314,http: //www.linuxsir.org/bbs/showthread.php?t=185418,看明白基本就懂了,不过我在这总结一下自己的心得。

  启动tap/tun模块
  使用TAP方式的前提是host的内核支持TAP/TUN。现在的linux发行版一般都通过内核模块的方式支持TAP/TUN。如果host存在 /dev/net/tun 设备文件,则说明它支持TAP/TUP,不支持的请网上搜,有解决方法。然后查看tun模块是否启动,lsmod |grep tun,一般是没有加载的,然后到这个目录下cd /lib/modules/<kernel-release>/kernel/drivers/net/ ,ls -lt tun*,发现有tun.ko模块,然后加载就可以了,insmod tun.ko,然后这个模块就启动了。

  然后编写QEMU的 tap初始化脚本,QEMU的tap 初始化脚本默认是/etc/qemu-ifup,内容很简单,就是

  #!/bin/sh
  sudo -p "Password for $0:" /sbin/ifconfig $1 192.168.1.2                                (注意一下这里的ip配置)

  然后为/etc/qemu-ifup增加可执行权限,chmod 755 qemu-ifup 就行,权限意义自己去了解,然后qemu挂在镜像启动

  qemu -hdc disk_szl.img -net nic -net tap

  -hdc是指定硬盘,使用文件disk_szl.img作为硬盘2(即hdc)的镜像,但是qemu默认的是hda,所以要指定一下,-net nic是创建一个网卡,-net tap是使用tap网络接口

  启动以后配置网络,先ifconfig -a看看启动的是哪个网络设备,一般是eth0,先前我犯了个比较2的错误,一直配置eth0,它一直报错没有eth0,我就想难道没有启动qemu模拟网卡?然后重挂载了好几次镜像,还是一样,充分发挥了NLP的“重复旧的做法,只会得到旧的结果”,然后ifconfig -a才发现它启动的是eth67,虽然很纳闷它为何是67,但的确是,然后很郁闷的配置了。配置ip  ifconfig eth0 192.168.1.3 netmask 255.255.255.0    添加网关 route add default gw 192.168.1.2  以我的经验,在没有ifup和ifdown文件的情况下,可以先ifconfig eth0 down,配置好ip和路由后,再ifconfig eth0 up,这样就能暂时性的使用网络,来拷贝ifup和ifdown    (用ifconfig命令设置网络,要求它的IP与host的tap网口的IP(即在上个步骤里qemu-ifup文件中设置的IP即 192.168.1.2)处于同一网段,但是有一点要注意,不能与你的host的ip网段一样。例如,我的电脑是192.168.5.101,然后你 tap接口配置成5网段,恭喜你,肯定启不起来)好,现在ping  192.168.1.2能ping通了,这样就可以拷贝文件了,主要是拷贝一些benchmark吗,哈哈,差不多到这里要结束了。但是,我发现,测试 unixbench的时候它需要time这个软件包,然后我只能再次配置外网,用apt-get install安装了

  虚拟机与互联网通信:
  1.开启主机路由功能 (就是让虚拟机通过主机这个伪路由连接外网啦~,明白吧)
  2.设定iptables,使主机成为一台nat server

  这些都是在host主机配置的,记住,不是虚拟机镜像啦~
  1. debian:~# echo 1 >/proc/sys/net/ipv4/ip_forward 这样就主机就具有了路由功能
  2. debian:~# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
  这条规则意思是将来自192.168.1.0/24封包的来源ip伪装成eth0的ip,实现虚拟机与互联网通信。

  so easy吧,意思就是主机作为路由,然后所有来自虚拟机网段的信息都经过主机这个路由来连接互联网。

  到这可以了吗,当然不是,主机是配置好了,但是虚拟机它不知道它该把信息发到哪啊。什么,你觉得它就这一个接口就会把信息发到这个接口,拜托,做过网络实验课吗,配置过路由和交换机吗,额,貌似北航特色,算了

  恩,现在在虚拟机镜像上配置,其实就是加一条网关,让它知道把信息通过这条网关往外发。咱们的局域网不也是要通过网关吗。 route add default gw 192.168.1.2 eth0 (注:别忘记最后这个eth0哦),这里的这个网关ip就是host上面的那个配置脚本里面的ip,也就是host主机tap接口的ip啦,这样就可以了。 ok,ping www.baidu.com成功。

  ok,下次搞定了那些benchmark再接着写