PXE无人值守安装Linux

@admin  May 7, 2016

一、网络(PXE)装机概述

1.传统装机的局限性
1.1需要用到固定的光驱、U盘等物理介质
1.2如果批量安装多台计算机,都用到物理介质,显然不太现实。

2.PXE装机的优点
2.1规模化:可以同时安装多台计算机,实现批量安装。
2.2自动化:完全无需人为操作,实现无人值守安装(不需要点击下一步下一步之类的交互式操作)
2.3远程实现:不再需要固定的物理介质

3.PXE概述
3.1什么是PXE网络

PXE(Pre-boot eXecution Environment):预启动执行环境
--在操作系统之前运行
--可用于远程安装,实现无盘工作站

3.2PXE工作模式

PXE client 集成在网卡的ROM里面
--当计算机引导时,BIOS吧PXE client调入内存中执行获取PXE server的配置、显示菜单,根据用户选--择将远程操作系统下载到本机运行。

3.3 PXE组件及过程分析

3.3.1

PXE需要那些服务?
--DHCP服务:给客户端分配IP地址,定位引导程序
--DNS服务:为客户端分配主机名(可选)
--TFTP服务:提供引导程序下载(因为网卡PXE只提供了TFTP客户端)
--FTP服务(或者HTTP/NFS):提供安装系统所需要的软件包(yum源)

3.3.2

客户端需要具备的条件(^-^下面两点貌似有点废话了)
--网卡ROM必须支持PXE协议(目前市面上的网卡基本都支持PXE)
--主板需要支持网络启动

4.PXE工作流程

虚线里面的服务器可以是一台也可以分开做

二、配置PXE服务器

1.配置思路

--安装所需服务(DHCP/TFTP/FTP)
--拷贝引导程序到FTP共享目录下
--拷贝启动文件到FTP共享目录下
--复制RHEL6.5光盘下的所有文件到FTP的pub目录下

2.配置并启用服务

2.1 安装配置DHCP服务

2.1.1

安装服务(记得设置开机自动启动

[root@svr5 桌面]# yum -y install dhcp
service dhcpd start  
chkconfig --levle 35 dhcpd

2.1.2

配置DHCP服务,使客户端能够获取到和PXE服务同一网段的IP地址

[root@svr5 dhcp]# vim dhcpd.conf
   ...... 
   //添加以下两行 
  next-server 192.168.4.5;   //TFTP服务器IP地址
  filename "pxelinux.0";	//网卡引导文件名

[root@svr5 dhcp]# /etc/init.d/dhcpd restart

2.2 安装配置TFTP服务

2.2.1

TFTP概述
tftp是基于xinetd运行的,所以没有xinetd的话需要安装xinetd)
监听端口:UDP 69
TFTP根目录:/var/lib/tftpboot/

[root@svr5 /]# grep tftpboot /etc/xinetd.d/tftp 
	server_args		= -s /var/lib/tftpboot

2.2.2

安装TFTP

[root@svr5 /]# yum -y install tftp-server
[root@svr5 /]# /etc/init.d/xinetd restart
[root@svr5 /]# chkconfig --level 35 xinetd on

2.2.3

修改TFTP配置文件

[root@svr5 /]# vim /etc/xinetd.d/tftp
 disable                 = no  //修改为no(yes为禁用tftp服务)

2.3安装ftp

2.3.1

安装FTP

[root@svr5 /]# yum -y install vsftpd
[root@svr5 /]# /etc/init.d/vsftpd restart
[root@svr5 /]# chkconfig --level 35 vsftpd on

注意:ftp使用匿名访问就可以了,所以这里就不许要配置其他了.

2.3.2

拷贝光盘文件到ftp的共享目录,为这里使用的是ftp的默认共享目录(/var/ftp/pub)

[root@svr5 /]# cp -r /misc/cd/* /var/ftp/pub/

4.部署网卡启动程序
4.1 syslinux工具
启动程序可以使用syslinux工具生成,也可从光盘中提取

[root@svr5 /]# yum -y install syslinux
[root@svr5 /]# cd /usr/share/syslinux/
[root@svr5 syslinux]# cp pxelinux.0 /var/lib/tftpboot/

4.2 部署安装内核和初始化镜像文件
从系统光盘中提取安装内核和初始化镜像文件

[root@svr5 isolinux]# cd /misc/cd/isolinux/
[root@svr5 isolinux]# cp * /var/lib/tftpboot/
[root@svr5 isolinux]# ll /var/lib/tftpboot/

4.3 测试TFTP服务能否下载到pxelinux.0文件

[root@svr5 桌面]# yum -y install tftp
[root@svr5 桌面]# tftp 192.168.4.5 -c get pxelinux.0
[root@svr5 桌面]# ls -lh pxelinux.0 
-rw-r--r-- 1 root root 27K 5月   7 22:27 pxelinux.0

5.为PXE配置启动菜单

5.1 创建pxe启动配置
先创建pxelinux.cfg文件夹

[root@svr5 桌面]# cd /var/lib/tftpboot/
[root@svr5 tftpboot]# mkdir pxelinux.cfg
[root@svr5 tftpboot]# cp /misc/cd/isolinux/isolinux.cfg ./pxelinux.cfg/default

5.2 修改pxe启动配置
通过 /pxelinux.cfg/default文件进入默认引导标签

default linux  //默认从那个标签引导系统
prompt 1	//是否等到用户选择
timeout 600	//进入系统的等待超时时间(十分之一秒)
label linux   //定义名为linux的标签
	kernel vmlinuz    //下载指定内核并运行
	append initrd=initrd.img   //下载指定初始文件并运行

6.pxe引导配置

6.1 启用tftp服务器,准备引导文件
网卡启动程序:pxelinux.0
内核及初始文件:vmlinuz initrd.img
6.2 建立pxe启动配置
6.2.1在TFTP目录下创建pxelinux.cfg配置目录,

[root@svr5 tftpboot]# mkdir pxelinux.cfg

6.2.2 建立默认配置default

[root@svr5 tftpboot]# cp /misc/cd/isolinux/isolinux.cfg ./pxelinux.cfg/default 

到这里为们基本上完成一大半的操作了,如果配置没有出错的话应该可以实现半自动化安装了.

soga,其实想要实现全自动无人值守的话,只需要给pxe配置一个配置文件,让他知道安装的时候的一些选项该如何选择,比如使用什么键盘、语言、时区、硬盘分区等等,也就是你手动安装操作系统的时候点的那个下一步的选择。这里我们直接写到一个文件里面交给pxe客户端来读取就可以实现全自动无人值守安装了.

7.kickstart(自动应答文件)
7.1 生成kickstart文件的方法
--手动写入
--根据/root/anaconda-ks.cfg修改
--使用system-config-kickstart工具生成

7.2 安装kickstart工具

[root@svr5 /]# yum -y install kickstart

7.3 使用kickstart工具生成自动应答文件

[root@svr5 /]# system-config-kickstart

选择"文件" 菜单 ---> 保存到 /var/ftp/ks.cfg

7.4 修改PXE启动菜单
生成应答文件后需要做最后一步,在/var/lib/tftpboot/pxelinux.cfg/default文件中引用该应答文件.

添加一行ks=ftp://192.168.4.5/ks.cfg

  append initrd=initrd.img ks=ftp://192.168.4.5/ks.cfg

三、测试PXE客户端是否正常安装

可以看到我在自动应答文件里面的配置都生效了(安装完成自动重启系统;新建一个用户stone;.....),至此,所有配置完成.终极目标完美实现.

『PS:写了差不多3个多小时,一边写一边用虚拟机实验,真心累!如果以上内容出现错误,请各位留言告知.非常感谢!』


添加新评论