一、PXE Server and Client在VMware实现的可行性
很多人都问到关于VMware虚拟机和真实主机、VMware中两台虚拟机之间通信的问题,其实它不是一件困难的事情,只要能理解VMware的网络模型就行。在VMware中配置的PXE Server之所以能够给Client 分配IP,就是因为VMware中两台虚拟机之间可以相互通信。其实这两台虚拟机和真实主机也是可以相互通信的。
先说一下VMware的几个虚拟设备:
VMnet0:用于虚拟桥接网络下的虚拟交换机
VMnet1:用于虚拟Host-Only网络下的虚拟交换机
VMnet8:用于虚拟NAT网络下的虚拟交换机
VMware Network Adepter VMnet1:Host用于与Host-Only虚拟网络进行通信的虚拟网卡
VMware Network Adepter VMnet8:Host用于与NAT虚拟网络进行通信的虚拟网卡
下面详细介绍一下VMware的三种网络结构:
1.桥接网络(Bridged Networking)
桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位(虚拟网卡既不是Adepter VMnet1也不是Adepter VMnet8)。下面是桥接网络拓扑图:
那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机。所以两个网卡的IP地址也要设置为同一网段。
2.NAT模式
在NAT网络中,会用到VMware Network Adepter VMnet8虚拟网卡,主机上的VMware Network Adepter VMnet8虚拟网卡被直接连接到VMnet8虚拟交换机上与虚拟网卡进行通信。
下面是NAT网络模式的拓扑图:
VMware Network Adepter VMnet8虚拟网卡的作用仅限于和VMnet8网段进行通信,它不给VMnet8网段提供路由功能,所以虚拟机虚拟一个NAT服务器,使虚拟网卡可以连接到Internet。在这种情况下,我们就可以使用端口映射功能,让访问主机80端口的请求映射到虚拟机的80端口上。
VMware Network Adepter VMnet8虚拟网卡的IP地址是在安装VMware时由系统指定生成的,我们不要修改这个数值,否则会使主机和虚拟机无法通信。
3.Host-Only模式
在Host-Only模式下,虚拟网络是一个全封闭的网络,它唯一能够访问的就是主机。其实Host-Only网络和NAT网络很相似,不同的地方就是Host-Only网络没有NAT服务,所以虚拟网络不能连接到Internet。主机和虚拟机之间的通信是通过 VMware Network Adepter VMnet1虚拟网卡来实现的。下面是Host-Only模式的拓扑图:
同NAT一样,VMware Network Adepter VMnet1虚拟网卡的IP地址也是VMware系统指定的,同时生成的虚拟DHCP 服务器和虚拟网卡的IP地址位于同一网段,但和物理网卡的IP地址不在同一网段。
二、配置环境
1、VMware.Workstation.5.5
2、一台装了Windows XP的pc
3、启动VMware,新建虚拟机,安装RHEL5.3,安装跳过安装序列号的输入,直接选择服务器模式就可以了,不用订制
4、将安装好的RHEL5.3的IP设置成静态IP:192.168.1.1,mask:255.255.255.0,其他可以不管。
三、PXE Server and Client在VMware实现过程
1、配置DHCP服务
1)安装dhcp,挂载光盘到/mnt
#mount /dev/cdrom /mnt
#cd /mnt/Server
#rpm -ivh dhcp-3.0.5-13.el5.i386.rpm
2)修改dhcpd.conf
# vi /etc/dhcpd.conf
修改或添加内容为以下:
ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
class "pxeclients"{
match if substring(option vendor-class-identifier,0,9) = "PXEClient";
filename "RHEL5/pxelinux.0";
next-server 192.168.1.1;
}
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option time-offset -18000; # Eastern Standard Time
range dynamic-bootp 192.168.1.130 192.168.1.140;
default-lease-time 21600;
max-lease-time 43200;
}
2、配置TFTP
1)安装
# rpm -ivh tftp-0.42-3.1.i386.rpm
# rpm -ivh tftp-server-0.42-3.1.i386.rpm(如果是默认装的服务器版本,此包已经安装了)
编辑tftp配置文件
# vi /etc/xinetd.d/tftp
将disable=yes改成disable=no
2)启动tftp服务
# chkconfig tftp on
# service xinetd restart
3、配置vsftp,先安装vsftp
#rpm -ivh vsftpd-2.0.5-12.e15.i386.rpm
启动服务
#service vsftpd start
4、配置nfs
# mkdir /export
# mkdir /export/ks
# vi /etc/exports
添加以下内容:
/export *(ro,sync)
/export/ks *(rw,sync)
保存后启动nfs服务
# service portmap start
# service nfs start
将rhel-5-server-i386-dvd.iso拷贝到/export目录中,作为安装介质。
将root目录下的安装配置文件anaconda-ks.cfg拷贝到/export/ks下
# mv anaconda-ks.cfg /export/ks/ks.cfg
4、配置启动文件
# mkdir /tftpboot/RHEL5
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/RHEL5/
# mkdir /tftpboot/RHEL5/pxelinux.cfg
# cp /mnt/isolinux/isolinux.cfg /tftpboot/RHEL5/pxelinux.cfg/default
# cp /mnt/images/pxeboot/initrd.img /tftpboot/RHEL5/
# cp /mnt/images/pxeboot/vmlinuz /tftpboot/RHEL5/
# cp /mnt/isolinux/*.msg /tftpboot/RHEL5/
# cp /mnt/isolinux/splash.lss /tftpboot/RHEL5
# service xinetd restart
# service vsftpd restart
# service dhcpd restart
5、准备安装文件
新建一个用户,用来连接ftp装系统时使用
#useradd ftpuser
#passwd ftpuser(按照提示创建密码)
在用户ftp目录下新建一个文件夹,用来放安装文件。
#mkdir /home/ftpuser/i386
将安装文件拷贝到i386目录下
#cp -R /mnt/* /home/ftpuser/i386/
四、在新建虚拟机上进行安装
OK,理论上现在就可以试试效果了,新建一个虚拟机,启动时按F12,ip是获得了,可是引导映像没找到,为什么呢?这里还有关键的一步就是关闭防火墙和selinux,把他们都disable了,再试试。开始了。。。。。。哈哈
当然这个只是简单的模拟一下,没有加入ks的无人职守的东西,以后继续试验吧。贴几个图吧,呵呵。
在这里选择可以选择ftp方式或者nfs方式安装,先用ftp方式吧。
在这里选择手动配置ip,因为由于虚拟机的限制,这个地方如果用dhcp的话老是出问题。虽然通过配置网络连接可以解决,不过没太大的必要。
在这里输入的ip要和192.168.1.1在同一个网段,这样才能找到它的ftp。
如上输入ftp服务器的ip,还有放安装文件的目录,这个目录要绝对路径,否则找不到。并勾选Use non-anonymous ftp。
在这里输入刚才建立的用户名ftpuser和你设定的密码。
剩下的就和光盘文本安装没什么区别了,呵呵。
刚才用的是ftp方式安装,如果用nfs方式的话,将更简单,也更爽一点。因为用nfs方式将启动图形界面安装。
在这选择nfs image方式
这里同样选择手动输入ip
使用FTP或HTTP的缺点是必须把光盘镜像解开,使用软件包的格式。而NFS则直接可使用光盘镜像,这样比较快。
五、加入kickstart的功能的PXE Server
安装kickstart
# rpm -ivh pykickstart-0.43.1-1.el5.noarch.rpm
# rpm -ivh system-config-kickstart-2.6.19.6-1.el5.noarch.rpm
启动kickstart
# system-config-kickstart
启动后界面如下
将每一下都设置好后,将配置文件保存为/export/ks/ks.cfg。
修改ks.cfg的属性,让client可以访问。
#chmod 644 /export/ks/ks.cfg
修改/tftpboot/RHEL5/pxelinux.cfg/default
#vi /tftpboot/RHEL5/pxelinux.cfg/default
在最后加上下面的文字
label autoinstall
kernel vmlinuz
append ks=nfs:192.168.1.1:/export/ks/ks.cfg initrd=initrd.img devfs=nomount
ramdisk_size=16384
修改boot.msg
# vi /tftpboot/RHEL5/boog.msg
其中黑色部分是添加的文字。
好了,这样启动后就可以按照你设置的配置文件开始自动装系统了。
在这里输入autoinstall,接下来的事情就是无人值守的了,呵呵。