Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1858043
  • 博文数量: 473
  • 博客积分: 13997
  • 博客等级: 上将
  • 技术积分: 5953
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-22 11:52
文章分类

全部博文(473)

文章存档

2014年(8)

2013年(38)

2012年(95)

2011年(181)

2010年(151)

分类: LINUX

2010-03-04 13:14:08

1.PXE介绍

       PXE
Pre-boot eXcutition Environment的缩写,Intel开发的通过网络远程引导系统的技术。

除了软盘、光盘、U盘等,我们有了新的选择。更吸引人的地方是,可以做无盘工作站,想想以前学

校的机房,呵呵。

要想使用PXE引导系统,客户端首先需要BIOS支持,有个网络启动的选项。集成网卡的机器一般都有

,独立网卡需要有个引导ROM插在网卡上,里面存放的是PXE客户端程序。

服务器端需要配置DHCP服务,TFTP服务,放置客户机引导文件

工作方式:

PXE
服务器以广播方式送出自己的地址;
DHCP
服务器动态分配网络中的IP地址;
客户端启动,读取bootrom里的pxe代码,获得动态IP地址,请求dhcp服务器配置60号选项;
客户端连接服务器用TFTP或者MTFTP协议下载启动软件包并在内存中执行;
客户端以实模式(Real Mode)运行终端操作系统。

简单原理介绍:无光软驱服务器通过PXE网卡启动,从dhcp服务器获取IP 通过tftp 取到pxelinux配置文件,按配置文件进行启动centos 文件进行引导系统安装。

2.环境说明
     本文测试环境及用到的软件
  Server: centos 5.4  dhcp nfs tftp  ip:192.168.1.132 (此IP只需要与服务器网卡相连,不管是什么都可以) feedom.net

3.安装配置过程及基本讲解
  安装相应的软件:yum -y install dhcp* nfs* tftp*

     1)tftp的文件配置  放置的位置为:/etc/xinetd.d/tftp
  service tftp
  {
  disable                   = no            #默认是yes 改为no
  socket_type           = dgram
  protocol                 = udp


  wait                      = yes
  user                     = root
  server                 = /usr/sbin/in.tftpd
  server_args       =  -s /tftpboot  //相关的选项可以查看tftp的配置文件说明
  per_source              = 11
  cps                     = 100 2
  flags                   = IPv4
  } 
  重启xinetd服务: /etc/init.d/xinetd restart
  查看tftp 是否启动:# chkconfig --list |grep tftp 
  tftp:           on

  2)配置nfs
  mount -o loop /iso/CentOS-5.4-i386-bin.iso /mnt #挂载的镜像文件,也可以挂载光驱
  echo "/tftpboot *(ro,sync)" > /etc/exports
  echo "/mnt *(ro,sync)" > /etc/exports   #此二步设置共享的目录
  exportfs -a   #使配置生效
  /etc/init.d/portmap start  &&/etc/init.d/nfs start    #重启服务
  Showmount -e localhost  #看查共享的目录
  Export list for localhost:
  /mnt      *
  /tftpboot *

  3)配置dhcp
  直接copy配置
  [code]# more /etc/dhcpd.conf中国网管联盟

  ddns-update-style interim;
  ignore client-updates;
  allow booting;
  allow bootp;
  subnet 192.168.1.0 netmask 255.255.255.0 {

  option routers 192.168.1.132;
  option subnet-mask 255.255.255.0;
  option domain-name-servers 192.168.1.132;   #本地IP
  option time-offset -18000; # Eastern Standard Time
  range dynamic-bootp 192.168.1.12 192.168.1.254;  #要分区的IP
  default-lease-time 21600;
  max-lease-time 43200;
  # Group the PXE bootable hosts together
  # PXE-specific configuration directives...
  next-server 192.168.1.132;
  filename "/pxelinux.0";   #方便查找配置文件
  } 

  /etc/init.d/dhcpd start  启动服务

 4)配置pxe所需要的文件
  Mkdir /tftpboot/pxelinux.cfg
  cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
  cp /mnt/isolinux/vmlinuz /tftpboot/
  cp /mnt/isolinux/initrd.img /tftpboot/

4、测试

       首先要关闭防火墙

       #service iptables stop

       其次检测69端口是否开启

       #netstat -nlp | grep udp

       udp        0      0 0.0.0.0:33593               0.0.0.0:*                               1455/rpc.statd      

      udp        0      0 0.0.0.0:41666               0.0.0.0:*                               1250/avahi-daemon:  

      udp        0      0 0.0.0.0:68                  0.0.0.0:*                               1459/dhclient       

      udp        0      0 0.0.0.0:69                  0.0.0.0:*                               1530/xinetd 

      安装的过程中首先在BIOS中设置成从网络启动,然后在boot界面输入linux

      之后选择NFS安装系统即可。

  5.相关的配置脚本 

        #!/bin/sh


       ROOT=`whoami`


       if [ $# -lt 1 ]; then

      echo "Please enter the iso file and the mount directory"

      echo "like xx.sh Fedora12.iso /mnt"

      exit 1

     fi


      #mount the iso file

      umount $2


      if mount -o loop $1 $2 ; then   # find a good place to mount the iso file

            echo "mount the os file"

     else

            echo "Can not mount the os file!"

            exit 1

    fi


    #make a directory to export the install files

    if [ $ROOT != "root" ]; then

echo "You are not root!"

exit 1

   fi


   if [ ! -e /tftpboot ]; then

echo "make the tftpboot"

mkdir /tftpboot

  fi


  if [ ! -e /tftpboot/pxelinux.cfg ]; then

echo "make the /tftpboot/pxelinux.cfg"

        mkdir /tftpboot/pxelinux.cfg

  fi


    file1="/usr/lib/syslinux/pxelinux.0"

   file2="/$2/isolinux/vmlinuz"

   file3="/$2/isolinux/initrd.img"

   file4="/$2/isolinux/isolinux.cfg"


  #copy the files 

   for i in $file1 $file2 $file3

   do


        if [ -e $i ] ; then

                cp $i /tftpboot/

        else

                echo "$i does not exist!"

        fi

  done


  if [ -e $file4 ] ; then

        cp -f $file4 /tftpboot/pxelinux.cfg/default

  else

        echo "$file4 does not exist!"

  fi


  #export the directories

  echo "/tftpboot *(ro,sync)" > /etc/exports

  echo "$2 *(ro,sync)" >> /etc/exports

  exportfs -a

  showmount -e localhost


  #start all service and prepare for the network install

  /etc/rc.d/init.d/dhcpd restart

  /etc/init.d/portmap restart

  /etc/init.d/nfs restart

  /etc/init.d/xinetd restart

6.总结

这个过程中可以还可以将要安装的系统换成redhat或是fedora。后续的脚本的编写还有待完善,有不足的地方也不少,最好大家能够不断的修改玩善最好了!

7.配置文件详解
  dhcpd.conf配置的有关说明:

  parameters(参数):
  ddns-update-style 配置DHCP-DNS互动更新模式
  default-lease-time 指定缺省租赁时间的长度,单位是秒
  max-lease-time 指定最大租赁时间长度,单位是秒
  hardware 指定网卡接口类型和MAC地址
  server-name 通知DHCP客户服务器名称
  get-lease-hostnames flag 检查客户端使用的IP地址
  fixed-address ip 分配给客户端一个固定的地址
  authritative 拒绝不正确的IP地址的要求 网管联盟

  declarations(声明):
  shared-network 用来告知是否一些子网络分享相同网络
  subnet 描述一个IP地址是否属于该子网
  range 起始IP 终止IP 提供动态分配IP 的范围
  host 主机名称 参考特别的主机
  group 为一组参数提供声明
  allow unknown-clients或deny unknown-client 是否动态分配IP给未知的使用者
  allow bootp或deny bootp 是否响应激活查询
  allow booting或deny booting 是否响应使用者查询
  filename 开始启动文件的名称,应用于无盘工作站
  next-server 设置服务器从引导文件中装如主机名,应用于无盘工作站

  option(选项):
  subnet-mask 为客户端设定子网掩码
  domain-name 为客户端指明DNS名字
  domain-name-servers 为客户端指明DNS服务器IP地址
  host-name 为客户端指定主机名称
  routers 为客户端设定默认网关
  broadcast-address 为客户端设定广播地址
  ntp-server 为客户端设定网络时间服务器IP地址
  time-offset 为客户端设定和格林威治时间的偏移时间,单位是秒。


  

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