请参考

http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html

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

严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。

PXE的工作过程:

1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;

2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;

3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;

4. PXE Client 取得pxelinux.0 文件后之执行该文件;

5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;

6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;

详细工作流程,请参考下面这幅图:

kickstart自动化安装_kickstart

 什么是Kickstart

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。

PXE+Kickstart 无人值守安装操作系统完整过程如下:

kickstart自动化安装_kickstart_02


1 安装dhcp  tftp

a 安装

[root@bogon common]# yum -y install dhcp* tftp*

tftp非独立启动的进程,独立启动就是有自己的进程

非独立启动服务就是要借助于其它的进程,依赖于/etc/init.d/xinetd

/etc/init.d/xinetd  -管理非独立启动服务

[root@bogon common]# vi /etc/xinetd.d/tftp

disable = no   //修改为no

就是启动了tftp

b 启动

 Centos7.2中没有xinetd

[root@bogon common]# yum -y install xinetd

[root@bogon init.d]# service xinetd start

2 TFTP+PXE配置

a 要实现远程安装系统,首先需要在TFTPBOOT目录指定相关PXE内核模块及相关参数。

配置步骤如下:

查看

[root@bogon init.d]# more /etc/xinetd.d/tftp

server_args = -s /var/lib/tftpboot

链接到根目录下:

[root@bogon init.d]# ln -s /var/lib/tftpboot /

[root@bogon init.d]# cd /tftpboot/

[root@bogon tftpboot]# pwd

/tftpboo

b 挂载光盘

[root@bogon tftpboot]# mount /dev/cdrom /mnt

mount: /dev/sr0 写保护,将以只读方式挂载

[root@bogon tftpboot]# df -h

文件系统                 容量  已用  可用 已用% 挂载点

/dev/mapper/centos-root   18G  3.1G   15G   18% /

devtmpfs                 479M     0  479M    0% /dev

tmpfs                    489M     0  489M    0% /dev/shm

tmpfs                    489M  6.8M  483M    2% /run

tmpfs                    489M     0  489M    0% /sys/fs/cgroup

/dev/sda1                497M  125M  373M   25% /boot

tmpfs                     98M     0   98M    0% /run/user/0

/dev/sr0                 3.4G  3.4G     0  100% /mnt

c 找到pxlinux.0 服务端引导文件

[root@bogon tftpboot]# find / -name pxelinux.0

[root@bogon tftpboot]# yum -y install syslinux syslinux-devel  //找不到yum安装一下

[root@bogon tftpboot]# find / -name pxelinux.0

/usr/share/syslinux/pxelinux.0

[root@bogon tftpboot]# cp /usr/share/syslinux/pxelinux.0 .    //将此文件copy到tftpboot目录下

[root@bogon tftpboot]# ls

pxelinux.0

[root@bogon tftpboot]# pwd

/tftpboot

[root@bogon tftpboot]# cp /mnt/p_w_picpaths/pxeboot/vmlinuz .     

[root@bogon tftpboot]# cp /mnt/p_w_picpaths/pxeboot/initrd.img .

//拷贝内核至tftpboot目录下,系统开机会查找这两个文件

[root@bogon tftpboot]# mkdir pxelinux.cfg

[root@bogon tftpboot]# cd pxelinux.cfg/

[root@bogon pxelinux.cfg]# pwd

/tftpboot/pxelinux.cfg

[root@bogon pxelinux.cfg]# cp /mnt/isolinux/isolinux.cfg default

[root@bogon pxelinux.cfg]# ls

default

//为菜单引导文件,拷贝isolinux.cfg配置文件重命名,系统安装的时候会根据这个文件的配置启动相应的选项。

注:为了方便,未使用它们的default文件,自己创建,如下

[root@bogon pxelinux.cfg]# more default 

default linux

prompt 1

timeout 10

display boot.msg

#######

label linux

kernel vmlinuz

append ks=nfs:192.168.57.132:/data/centosinstall/ks.cfg  ksdevice=eth0 initrd=initrd.

img     //注意修改本机ip和共享目录

########

label text

kernel vmlinuz

append initrd=initrd.img text

label ks

kernel vmlinuz

append ks initrd=initrd.img

label local

localboot 1

label memtest86

kernel memtest

append –

d 新建centosinstall并将镜像的所有文件都拷贝到这个目录下,并用nfs方式共享这个文件,供远程客户端来访问

[root@bogon data]# mkdir centosinstall

[root@bogon data]# cd centosinstall/

[root@bogon centosinstall]# pwd

/data/centosinstall

[root@bogon centosinstall]# cp /mnt/* . -a

[root@bogon centosinstall]# more /etc/exports   //共享这个文件

/data/centosinstall  *(insecure,rw,sync)

[root@bogon centosinstall]# service nfs restart

Redirecting to /bin/systemctl restart  nfs.service

e ks.cfg文件定义

[root@bogon centosinstall]# pwd

/data/centosinstall

[root@bogon centosinstall]# more ks.cfg 

# Kickstart file automatically generated by anaconda.

install

text

nfs --server=192.168.57.132 --dir=/data/centosinstall

key --skip

lang zh_CN.UTF-8

keyboard us

network --device eth0 --bootproto=dhcp --noipv6

rootpw 123456

firewall --disabled

authconfig --enableshadow --enablemd5

selinux --disabled

timezone Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="rhgb quiet"

clearpart --all --initlabel

part /boot --fstype ext3 --size=200

part swap --size=4000

part / --fstype ext3 --size=80000

part /data --fstype ext3 --size=200 --grow

reboot

%packages

@base

@core

@chinese-support

[root@bogon centosinstall]# chmod 777 ks.cfg


PS:ks.cfg名字的由来,anaconda-ks.cfg本机系统配置文件,记录系统的安装过程,如果不知道怎么写,仿照

[root@bogon centosinstall]# cd /root/

[root@bogon ~]# ll anaconda-ks.cfg 

-rw-------. 1 root root 958 9月  22 17:08 anaconda-ks.cfg


3 dhcp配置

dhcpd.conf文件

[root@bogon centosinstall]# more /etc/dhcp/dhcpd.conf     

ddns-update-style interim;

ignore client-updates;   //忽略更新

next-server 192.168.57.132;  //告知dns服务器ip

filename "pxelinux.0";   //查找pxelinux.0这个文件

allow booting;           //允许启动

allow bootp;

subnet 192.168.57.0 netmask 255.255.255.0 {

# --- default gateway

option routers          192.168.57.1;

option subnet-mask      255.255.255.0;

range dynamic-bootp 192.168.57.100 192.168.57.200;  //注意要在同一个网段

default-lease-time 21600; 

        max-lease-time 43200;

}


到这就算配置完毕了

注意:selinux和防火墙要关掉