PXE 实现无人值守批量安装教程

__author__: Tresser

__date__: 2017/4/9 03:50

# 此文较长, 请细心看完, 一定可以成功!!

实验环境:

主机: CentOS 6.5 x86 虚拟机

 

准备工作:

1. 本地 yum 仓库

2. DHCP 服务器

3. TFTP 服务器

4. FTP/NFS/HTTP 服务器(这里我以 NFS 服务器为例)

5. ks.cfg 文件

6.创建 pxelinux 的配置文件 

 

1. 本地仓库的搭建:

mkdir -p /var/ftp/pub/Centos6/

umount /dev/sr0

mount /dev/sr0 /mnt/cdrom

cp -avr /mnt/cdrom/* /var/ftp/pub/Centos6/

这里, 我们先创建了一个 Centos6 的目录用来作为批量安装的仓库, 之后的主机将从这里获得需要安装的软件包和相关文件

然后, 重新挂载了光盘, 将光盘里的内容全部拷贝到 Centos6 这个目录里

 

2. DHCP 服务器的搭建:

只有当客户端获得IP地址之后才能从网络安装服务器获得所需的文件, 为了给客户端分配 IP, 需要 DHCP 服务.

 

yum -y install dhcp

chkconfig dhcpd on

vi /etc/dhcp/dhcpd.conf

service dhcpd restart

这里, 先用 yum 安装好 dhcp 包, 编辑该配置文件, 我的主机 IP 是 192.168.9.101, 所以, 请确保你的子网与你的主机在同一个网段(此处即 9.0网段)

最后两句话的作用必须要写, 稍后再做说明.

 

3. TFTP 服务器的搭建:

TFTP 用来传送一些琐碎的小文件, 或网络设备配置文件以及远程启动文件, 监听 udp:69 端口

在这个安装过程中用于提供客户启动需要的 pxelinux.0  vmlinuz  initrd.img 文件


yum -y install tftp tftp-server

vi /etc/xinetd.d/tftp

chkconfig tftp on

chkconfig xinetd on

service xinetd restart

netstat -antup | grep 69

这里, 先安装好 TFTP 软件包, 由于 TFTP 依赖于 xinetd, 所以修改完配置文件后启动 xinetd 即可, 使用 netstat 命令查看主机是否有

监听 69 端口

 

4. 搭建 NFS 服务器:

yum -y install nfs-utils

vi /etc/expoprts

service nfs restart

重启后可以自己测试下 nfs 服务器是否搭建成功

mount -t nfs 192.168.9.101:/var/ftp /mnt/nfs

SELinux 可能会报错, 处理办法可参照我之前的博文, 实在不会就把 SELinux 关了吧

 

5. ks.cfg 文件的生成:

设置 kickstart 就是设置对即将安装的新系统的配置, 客户端会读取 ks.cfg文件, 根据里面的配置来安装新系统

yum -y install  pykickstart

yum -y install system-config-kickstart

system-config-kickstart (图形界面需要!)

 





点击保存之后, 将生成的文件保存到 /var/ftp 下

 

 

6. pxelinux 的配置文件:

pxe 启动引导器pxelinux.0 在 syslinux 包中,  把它拷贝到 /var/lib/tftpboot/ 下, 客户机会从此目录读取该文件

yum -y install syslinux

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

我们告诉客户端使用 vmlinuz 作为内核, 并且使用 initrd.img 作为初始的 ramdisk 镜像

cp /mnt/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/

mkdir /var/lib/tftpboot/pxelinux.cfg

cd /var/lib/tftpboot/pxelinux.cfg

cp /mnt/cdrom/isolinux/isolinux.cfg ./default

通过这个 default 文件告诉客户机从什么内核引导, 以及在引导时向内核传递的任何选项,

vi default:

*ks 选项是 redhat/centos 独有的 kickstart 安装机制, 通过这个选项从主机的nfs获取数据

 

7. 重启各项服务:

记得在 /etc/dhcp/dhcpd.conf 添加上文提过的两行内容

next-server 选项指定初始启动文件存放的主机

filename 选项指定启动时载入的初始启动文件

service dhcpd restart

service nfs restart

service xinetd restart

 

测试 PXE 网络安装服务器:

新建一个空白虚拟机:

开启之后, 进入BIOS选择 PXE 引导启动(可略过)

 

至此, PXE 网络安装服务器已经完成!

 

总结---PXE启动过程:

1. 引导系统, 在 BIOS 中设置 PXE 启动引导

2. 客户端广播并得到了一个IP地址, 以及引导文件的名称和位置

3. 客户端联系TFTP服务器, 请求该引导文件, 并得到该文件

4. 引导文件启动, 在此联系TFTP服务器, 获得 default 文件, 该文件告诉客户端如何引导

    客户端根据 default 的指示, 获得指定的内核文件 vmlinuz 和 ramdisk 镜像

5. 使用内核与 ramdisk 镜像进行 kickstart 无人值守安装 

 

 

 

 

 

posted @ 2017-04-09 14:03  tresser  阅读(363)  评论(0编辑  收藏  举报