实现原理:将手动安装的所有详细步骤记录到一个文件中,然后有一种软件通过
PXE是预启动环境,通过网络接口启动计算机,不依赖本地存储设备,(如硬盘)或者本地已安装的操作系统,为C/S工模式,PXE客户端会调用网际协议-IP,用户数据报协议-UDP,动态主机设定协议-DHCP,小型文件传输协议-TFTP
1. PXE客户端向DHCP服务器发送UDP广播请求ip地址
2. DHCP服务端提供相应信息
这个响应信息包含客户端分配的IP地址,pxelinux启动程序(TFTP服务器的)位置,以及配置文件
3. PXE客户端向TFTP服务器请求下载启动文件
客户端收到服务端的回应后,会回应一个帧,以请求传送启动所需要的文件,这些启动文件包括:pxelinux.0 pxelinux.cfg/default vmlinuz initrd.img等文件
4. TFTP响应并传送文件
当服务器端收到客户端的请求后,他们之间将有更多信息在客户端与服务端之间作应答,用以决定启动参数,bttorom由tftp通讯协议从boot server下载启动安装程序所必须的文件,default下载完成后,会根据该文件中定义的引导顺序,启动安装
5. PXE向http服务器请求自动应答文件
客户端通过pxrlinux.cfg/default文件成功的引导linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装系统,如果是网络安装,则会在这个时候初始化网络,并定位安装位置,接着会读取default文件中指定的自动应答文件,ks,cfg所在位置,根据该文件位置请求下载该文件
6. 客户端安装操作系统
将ks.cfg文件下载回来后,通过该文件找到os server并按照指定该我就按的配置请求下载安装过程中需要的软件包,os server和客户端建立连接后将开始传输软件包
是一种无人值守的安装方式,工作原理是在安装过程中记录人工干预填写的各种参数,并生成以个名为ks.cfg的文件,如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适参数,就采用,如果没有找到,便会弹出对话框提示手动安装,所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载,ks.cfg文件,
集中和简化了通过网络安装操作系统需要使用到的DHCP和TFTP和DNS服务的配置,cobbler不仅有一个命令行界面,还有web界面,大大降低了使用者的入门水平
[root@centos-7 ~]# yum install -y dhcp
cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.100 172.16.1.199; 可以分配的其实ip和结束ip
option subnet-mask 255.255.255.0; 设定子网掩码
default-lease-time 21600;
max-lease-time 43200;
next-server 172.16.1.201; 告知客户端tftp服务器的ip
filename "/pxelinux.0"; 告知客户端从tftp服务端的根目录下载pxelinux.0文件
}
EOF
[root@centos-7 ~]# systemctl start dhcpd
[root@centos-7 ~]# ss -lntup |grep 67
udp UNCONN 0 0 *:67 *:* users:(("dhcpd",pid=15565,fd=7)) 查看67端口存在即可
[root@centos-7 ~]# yum -y install tftp-server
[root@centos-7 ~]# systemctl start tftp.socket
syslinux是一个功能强大的引导加载程序,而且兼容各种介质,它还是一个小型的linxu操作系统个,它的目的是简化首次安装linux时间,并建立修护或其他特殊用途的启动盘,如果没有找到pxelinux.0这个文件,可以安装一下
[root@centos-7 ~]# yum -y install syslinux
[root@centos-7 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@centos-7 ~]# ll /var/lib/tftpboot/
total 28
-rw-r--r-- 1 root root 26764 Mar 12 14:56 pxelinux.0
[root@centos-7 ~]# mkdir -p /var/www/html/CentOS7
[root@centos-7 ~]# mount /dev/cdrom /var/www/html/CentOS7
复制启动菜单程序文件
[root@centos-7 ~]# cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/
[root@centos-7 ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
[root@centos-7 ~]# cp /var/www/html/CentOS7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@centos-7 ~]# yum -y install httpd
[root@centos-7 ~]# systemctl start httpd.service
[root@centos-7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
append initrd=initrd.img inst.repo=http://172.16.1.201/CentOS7/
[root@Cobbler ~]# tar xfP ks_config_for_CentOS7.tar_\(1\).gz
[root@centos-7 ~]# vim /var/www/html/ks_config/CentOS7-ks.cfg
[root@centos-7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
#Kickstart Configurator for CentOS 7.x
lang en_US
keyboard us
timezone Asia/Shanghai
rootpw 123456
text
install
url --url=http://172.16.1.201/CentOS-7.2/
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /boot --fstype xfs --size 1024 --ondisk sda
part swap --size 1024 --ondisk sda
part / --fstype xfs --size 1 --grow --ondisk sda
auth --useshadow --enablemd5
network --bootproto=static --device=eth0 --onboot=on --ip=10.0.0.52 --netmask=255.255.255.0 --gateway=10.0.0.254 --nameserver=10.0.0.254 --hostname=CentOS111
network --bootproto=static --device=eth1 --onboot=on --ip=172.16.1.52 --netmask=255.255.255.0
reboot
firewall --disabled
selinux --disabled
skipx
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%end
原文地址:http://blog.51cto.com/13520772/2087759