2015/04/05 PXE网络装机

回复 收藏

一、什么是PXE?

      PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术, 工作于Client/Server的网络模式, 只想hi工作站通过网络从远程服务器下载镜像, 并由此支持通过网络启动操作系统, 在启动过程中, 终端要求服务器分配IP地址, 在用TFTP(Trivial file transfer protocol)或MTFTP(Multicast Trivial File Transfer Protocol)协议卸载一个启动软件包到本机内存中执行, 这个启动软件包完成终端基本软件设置, 从而引导预先安装服务器中的操作系统. PXE可以引导多种操作系统, 如: Windows 95/98/2000/windows 2008/xp/win 7/win8;
二、系统环境
       IP 地址: 192.168.15.11
      操作系统:  Centos 6.6x86

      主  机 名:  PXE
1.png
  

三、操作步骤
     1. 配置静态IP地址、修改主机名;
[root@PXE ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0           #修改eth0网卡;
DEVICE=eth0
HWADDR=00:0C:29:5B:40:E0
TYPE=Ethernet
UUID=9315dbdf-ae02-4814-af4c-00e29504e82d
ONBOOT=yes                                                            #开机启动网卡;
NM_CONTROLLED=yes
BOOTPROTO=static                                                  #设置为静态模式;
IPADDR=192.168.15.11                                             #设置IP地址;
NETMASK=255.255.255.0                                         #设置子网掩码;
GATEWAY=192.168.5.2                                             #设置网关;
DNS1=114.114.114.114                                           #设置DNS;

[root@PXE ~]# vim /etc/sysconfig/network              #修改主机名;
NETWORKING=yes
HOSTNAME=PXE                    

[root@PXE ~]# service network restart                      #重启网络服务;

     2. 搭建本地yum源 (插上系统光盘);  (这一步,有同学有错误,大家还可以参考 http://www.apelearn.com/study_v2/chapter12.html#id2)
[root@PXE ~]# mount /dev/cdrom /media/                            #挂载系统光盘;
[root@PXE ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base                                            #仓库名称;
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra         
baseurl=file:///media                                                               #修改光盘挂载点;
gpgcheck=1                                                                            #是否检查GPG,一种秘钥方式签名;
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6     #GPG公钥存放位置;

[root@PXE ~]# yum -y clean all                                                #清除yum缓存;

     3. 安装PXE所需服务;
dhcp:              主机配置协议, 给客户端提供IP地址;
tftp-server:     tftp服务器端, 提供系统安装所需文件;
xinetd:            tftp服务超级守护进程, 用于唤醒tftp服务;
httpd:            基于http服务提供安装源;
syslinux:         提供pxelinux.0文件, 此文件用于引导系统, 相当于bootloader;
[root@PXE ~]# yum -y install dhcp tftp-server xinetd syslinux httpd


     4. 配置dhcp服务;
dhcp服务的配置文件默认是/etc/dhcp/dhcpd.conf, 但此文件默认是没任何配置的, 此服务提供了一个参考文件/usr/share/doc/dhcp*/dhcpd.conf.sample,复制此文件覆盖原配置文件, 直接修改即可。

2.png


[root@PXE ~]# vim /etc/dhcp/dhcpd.conf                      #dhcp服务配置
====================================================
subnet 192.168.15.0 netmask 255.255.255.0 {                 #提供dhcp服务的网段;
  range 192.168.15.20 192.168.15.30;                               #地址池;
  option domain-name "internal.example.org";                #分配dns域;

  option routers 192.168.15.11;                                         #网关;
  next-server 192.168.15.11;                                              #tftp服务器地址;
  filename "pxelinux.0";                                                     #PXE引导文件;
  default-lease-time 600;                                                  #默认租约时长;
  max-lease-time 7200;                                                    #最大租约时长;

option domain-name-servers 192.168.15.11;                 #分配dns地址;
}
====================================================
[root@PXE ~]# service dhcpd configtest                         #测试配置dhcp语法是否有误;
Syntax: OK

[root@PXE ~]# service dhcpd start                                  #启动dhcp服务;
Starting dhcpd: [  OK  ]

[root@PXE ~]# chkconfig dhcpd on                                #将dhcp服务设置开启自启;

    5. 配置tftp服务;
xinetd是tftp的超级守护进程, 即tftp是xinetd的子服务, 修改配置文件, 确保tftp服务没有被禁用
[root@PXE ~]# vim /etc/xinetd.d/tftp

3.png


[root@PXE ~]# service xinetd start                                   #启动xinetd服务;
Starting xinetd: [  OK  ]
[root@PXE ~]# chkconfig tftp on                                     #将tftp服务设置为开机自启;


     6. 提供引导内核等文件 (将光盘中PXE所需文件复制到/var/lib/tftpboot);
[root@PXE ~]# cp /media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/   
[root@PXE ~]# cd /media/isolinux/
[root@PXE isolinux]# cp boot.msg /var/lib/tftpboot/
[root@PXE isolinux]# cp splash.jpg /var/lib/tftpboot/
[root@PXE isolinux]# cp vesamenu.c32 /var/lib/tftpboot/

[root@PXE isolinux]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@PXE isolinux]# cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@PXE isolinux]# ls /var/lib/tftpboot/
boot.msg  initrd.img  splash.jpg  vesamenu.c32  vmlinuz
提供PXE工作环境
[root@PXE isolinux]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
提供安装源
[root@PXE ~]# mkdir /var/www/html/yum
[root@PXE ~]# mount --bind /media/ /var/www/html/yum/
[root@PXE ~]# service httpd start
[root@PXE ~]# chkconfig httpd on
提供kickstart文件
kickstart文件可以自己创建(需安装system-config-kickstart.noarch工具), 也可以复制系统文件直接修改。
这里我们就不演示创建过程了, 直接复制文件修改(此文件/root/anaconda-ks.cfg)
[root@PXE ~]# cp anaconda-ks.cfg /var/www/html/ks.cfg
[root@PXE ~]# chmod +r /var/www/html/ks.cfg
[root@PXE ~]# vim /var/www/html/ks.cfg

================添加以下两项, 目标指向安装源===================
url --url=http://192.168.15.11/yum
repo --name="Centos" --baseurl=http://192.168.15.11/yum --cost=100

====================================================
为了启动时能够加载kickstart文件, 还需要修改/var/lib/tftpboot/pxelinux.cfg/default文件, 添加ks文件的位置。

[root@PXE ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
====================================================
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.15.11/ks.cfg               #指定ks文件;

====================================================


     7. 关闭iptables、selinux防火墙;
[root@PXE ~]# iptables -F
[root@PXE ~]# iptables -X
[root@PXE ~]# service iptables stop
[root@PXE ~]# vim /etc/sysconfig/selinux
SELINUX=disabled

四、测试
     1. 将客户机设置为网卡启动

4.png


     2. 开机启动引导

5.png


     3. 引导成功开始安装各种包;

6.png



如有错误, 请大家指正。
51博客:http://chenxiaojian.blog.51cto.com


1.png 5.png
2015-04-05 01:23 举报
已邀请:
0

kismyl2014

赞同来自:

感谢分享经验,就是我发现了一个小问题,PXE主机的网络配置里面的网关应该不对.
0

田埂上的梦

赞同来自:

kismyl2014 发表于 2015-4-5 20:55
感谢分享经验,就是我发现了一个小问题,PXE主机的网络配置里面的网关应该不对.

网关是多少
0

田埂上的梦

赞同来自:

kismyl2014 发表于 2015-4-5 20:55
感谢分享经验,就是我发现了一个小问题,PXE主机的网络配置里面的网关应该不对.

网关是多少
0

gjc159357

赞同来自:

192.168.15.2?
0

田埂上的梦

赞同来自:


我虚拟机用的nat上网,网关是192.168.15.2
0

summer123

赞同来自:

这个必须是两台真机吗?可以用虚拟机来做吗?
0

wsw13640218682

赞同来自:

本帖最后由 wsw13640218682 于 2015-12-18 13:26 编辑

你的网关不是192.168.15.2吗?怎么是你的Pxe的ip192.168.15.11
0

迷城

赞同来自:

  很好,实用
0

starry

赞同来自:

类似bootp
0

于冬

赞同来自:

曾用过cobbler 但仅限于使用 ,个人觉得cobbler好用 希望铭哥日后整个出来 便于大家学习 谢咯
0

于冬

赞同来自:

GATEWAY=192.168.5.2               说的是这块吧
0

先生好

赞同来自:


网关也可以是192.168.15.11,只要在同一网段就可以。
0

先生好

赞同来自:

很清晰,很容易看懂,适合新手{:4_98:}
0

孔雀东南飞

赞同来自:

谢谢楼主,成功了!!!
0

熊润楚

赞同来自:

为什么我的客户机开机过后是这样的界面,不能继续安装
0

君君

赞同来自:

QQ截图20160620171752.png

帮看下为什么我的变成这样啦?
0

fishboy84

赞同来自:

正式环境,DHCP在windows上,PXE必须和DHCP在同一台服务器吗?
0

我是传奇

赞同来自:

windows 用过  至于linux嘛  没用过
0

helu89

赞同来自:

学习了
0

jinwucui

赞同来自:

明白了,原来是这么个意思{:4_91:}
0

u20043921

赞同来自:

本帖最后由 u20043921 于 2016-8-20 21:21 编辑

请大家注意,在进行到vim /var/www/html/ks.cfg这一步的时候,记得把ks.cfg里面本来带有的那一条repo注释掉,不然会出错,启动安装程序之后会在第一条repo里面优先寻找安装源。。。
没注释的出错截图如下:
0

davidbeham

赞同来自:

PXE网络克隆装linux,学习了一下,没测试,具体生产环境用到,再实验吧

0

飘过

赞同来自:

学习

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: