pxe远程启动过程分析

电子常识

2598人已加入

描述

  PXE是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统。

  PXE最直接的表现是,在网络环境下工作站可以省去硬盘,但又不是通常所说的无盘站的概念,因为使用该  技术的PC在网络方式下的运行速度要比有盘PC快3倍以上。当然使用PXE的PC也不是传统意义上的TERMINAL终端,因为使用了PXE的PC并不消耗服务器的CPU,RAM等资源,故服务器的硬件要求极低。

  PXE远程启动过程分析

  基本原理

  1) 什么是PXE

  PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。

  PXE协议的成功运行需要解决以下两个问题:

  既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置;

  通过什么协议下载Linux内核和根文件系统

  对于第一个问题,可以通过DHCP Server解决,由DHCP server来给PXE client分配一个IP地址,DHCP Server是用来给DHCP Client动态分配IP地址的协议,不过由于这里是给PXE Client分配IP地址,所以在配置DHCP Server时,需要增加相应的PXE特有配置。

  至于第二个问题,在PXE client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。

  这样,PXE协议运行的条件就具备了,下面我们就来看看PXE协议的工作过程。

  2) 工作过程

  PC

  在上图中,PXE client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。

  PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。

  具体配置过程如下:

  首先是安装必要的服务,DHCPD,TFTP-SERVER,NFS(一般默认就有了)

  dhcpd和tftp-server都有对应的rpm,直接安装就可以了。

  # vi /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 = -u nobody -s /tftpboot //-s 表示用/tftpboot作为tftp目录的根目录。

  per_source = 11

  cps = 100 2

  flags = IPv4

  }

  tftp是由xinted来启动的,修改完后要记得service xinetd restart

  # vi /etc/dhcpd.conf

  =============+==========+===========+============+============

  ddns-update-style interim;

  ignore client-updates;

  default-lease-time 21600;

  max-lease-time 43200;

  authourtative;

  next-server 192.168.1.103;

  subnet 192.168.1.0 netmask 255.255.255.0 {

  option routers 192.168.1.1;

  option subnet-mask 255.255.255.0;

  range 192.168.1.1 192.168.1.100;

  default-lease-time 21600;

  max-lease-time 43200;

  filename “/pxelinux.0”;

  option domain-name-servers 202.106.0.20;

  }

  这里的 pxelinux.0就是上面提到的bootstrap,上面已经指定了tftp的根目录,所以这里用相对路径。

  next-server 192.168.1.103;这句一开始我并没有加上,当要安装系统的机器启动以后,在查找pxelinux.cfg目录下的配置文件的时候,就死活找不到了。经过很长时间的等待,出现一个boot:的提示符,告诉我:can‘t load kernel image:linux,一开始以为是/tftpboot/pxelinux.cfg/default的配置文件有误,检查后没问题。

  google了半天,总算查到了一个帖子,说可能是dhcp3.0的一个bug,需要加上这个参数来指定DHCP SERVER的IP.修改配置文件加入此句后,重启dhcp,然后再重新启动客户机,这次速度大大加快,顺利通过。

  3 配置支持PXE

  # mkdir /tftpboot

  # cp /usr/lib/syslinux/pxelinux.0 /tftpboot

  把LINUX第一张安装光盘上/image/pxeboot/initrd.img和vmlinuz 以及isolinux/*.msg考到/tftpboot目录下(*.msg也可以不拷,重点是initrd.img和vmlinuz,没有内核是无法引导的)

  # cd /tftpboot

  # mkdir pxelinux.cfg

  # vi defaultdefault centos5

  prompt 1

  timeout 30

  label centos5

  kernel vmlinuz

  append ks=nfs:192.168.1.103:/root/inst/ks initrd=initrd.img devfs=nomount ramdisk_size=9216

  #append initrd=initrd.img devfs=nomount ramdisk_size=9216

  这里的ks=nfs:192.168.1.103:/root/inst/ks 文件是指定kickstart配置文件,可以在安装中不用人工干预,自动按预设的参数安装。实现安装过程的全自动。

  4 配置NFS服务

  # vi /etc/exports

  /root/inst 192.168.1.0/24(ro,sync) //这里是/root/inst 而不是/root/inst/

  # mkdir /home/iso

  拷贝安装LINUX的ISO文件到这个目录

  5 需要开启的系统服务

  /dhcpd/network/nfs/portmap/syslog/tftp/xinetd/

  service dhcpd start

  service portmap start

  service nfs start

  最后附上ks文件的内容。

  install

  nfs --server=192.168.1.103 --dir=/root/inst

  lang en_US.UTF-8

  keyboard us

  network --device eth0 --bootproto static --ip 192.168.1.220 --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 192.168.1.1

  #network --device eth0 --bootproto DHCP

  rootpw --iscrypted $1$WvFbqnpm$m94fa4AopXI/kfYOYbWMW.

  firewall --enabled --port=22:tcp

  #firewall --disabled

  authconfig --enableshadow --enablemd5

  selinux --disabled

  timezone --utc Asia/Shanghai

  bootloader --location=mbr --driveorder=sda --append=“rhgb quiet”

  clearpart --all

  zerombr yes

  clearpart --linux --initlabel

  part /boot --fstype ext2 --size=256

  part / --fstype ext3 --size=8192

  part /opt --fstype ext3 --size=8192

  part /usr --fstype ext3 --size=16384

  part swap --size=4096

  part /home --fstype ext3 --size=1 --grow

  reboot //加入这行后装完系统后可以自动重启,需要注意的是机器的启动顺序不能是网卡优先,否则会循环装系统。。。。。。。。

  %packages --resolvedeps

  @ everything

  grub

  kernel

  kernel-devel

  e2fsprogs

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分