PXE, DHCP, TFPT 实现自动化安装 CentOS
来源:互联网 发布:中文模糊匹配算法 编辑:程序博客网 时间:2024/05/29 10:58
在早期的服务器中有很多无盘工作站,就是没有硬盘的主机。没有硬盘就是没有操作系统,那么这样的主机如何开机呢?
在这种场景中,我们为那些无盘主机提供了一个共享磁盘的服务器,这些磁盘中存储着无盘主机的操作系统。当无盘主机启动时,根据网络协议去服务器的共享磁盘中读取属于自己主机的操作系统的基本文件,然后加载到本地内存中将操作系统启动起来。
但是,没有操作系统哪来的IP地址呢?没有IP地址怎么进行网络通信呢?
即使在同一个网段是根据MAC地址进行通信的,但是不能根据MAC地址去进行寻址去确定哪一台是服务器啊。我们知道,当我们需要与同一个网段中的主机进行通信时需要先广播,确定该主机的MAC地址,然后才根据MAC地址进行通信的。但是如果只有MAC地址,怎么去确定需要通信的主机的MAC地址呢?
基于这种场景,研发了一种协议,叫做bootp协议,而无盘主机的网卡是一种特殊网卡,能够在开机瞬间自我唤醒并且基于RARP协议进行广播将自己扮演成bootp的客户端与服务端进行通信,去向服务器去申请获取IP地址。bootp服务端有一个IP列表,会从这个列表中挑选一个可用的IP给客户端。当客户端拥有IP之后会从服务器端获取操作系统基本文件,加载到本地内存中,从而启动。当第一次获取之后,就会永久有效。服务器端就会将该IP地址永久分配给该客户端。
当硬盘越来越廉价之后,bootp协议就发展为dhcp协议了。
一、DHCP
DHCP协议是网络通信中的一种协议,主要作用是为客户端分配IP。
(1)DHCP协议工作原理:
租约
dhcp discover:发现dhcp服务器。当主机需要IP地址的时候就会广播,谁是dhcp服务器
dhcp offer:服务器提供IP、掩码、网关以及其他
dhcp request:客户端回复报文,表明已经选择了一个IP
在同一个局域网内,或许并不只有一台服务器,客户端会选择第一个到达网卡的服务器提供的IP,并进行检测,看是否有其他主机在使用这个IP。因为可能有其他主机通过静态配置IP地址将该IP使用。如果有主机正在使用这个IP,那么客户端就会拒绝该IP。如果一切正常,客户端才会回复报文。被选中的服务器就会将该IP从可用IP列表中删除。没有别选中的服务器就会收回自己的IP地址放入IP池中,等待下一次dhcp请求。
- dhcp ack:服务器端接收到了客户端的回复报文之后也会进行确认
续租
当客户端使用时间过去了一半的时候,就会向服务器直接发送dhcp request请求,表明想继续使用该IP:
- 如果服务器端同意请求,那么则会响应dhcp ack报文。
- 如果服务器端没有响应,那么就会在剩下时间过去一半之后再来询问,如果还没有,则会在剩下时间过去一半之后再来询问,如果还没有,则发起dhcp discover报文
- 如果服务器端响应拒绝,那么则表示dhcp的进程池被管理员修改了,里面没有该IP地址。那么客户端就会发起dhcp discover报文
(2)DHCP服务配置:
在CentOS中有两个包可以配置DHCP服务,一个是dhcp包,一个是dnsmasq,这里以 dhcp 包为例。
安装 dhcp# yum install -y dhcpdhcpd配置文件要从其他地方copy过来# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf# vim /etc/dhcp/dhcpd.conf
option domain-name "example.org"; //通常来说也没什么意义option domain-name-servers 8.8.8.8; //能够覆盖客户端的/etc/resolve.conf文件options routers 172.18.0.1 //也可以使用在这里,表示全局变量default-lease-time 600; //默认租约期限,单位是s,可以修改为一天86400max-lease-time 7200; //最大租约期限,也可以修改为一天86400subnet 172.18.0.0 netmask 255.255.0.0 { //可选的IP范围 range 172.18.0.100 172.18.0.200; options routers 172.18.0.1; //一般使用本机IP作为路由}
启动服务,并查看分配出去的IP:
# service dhcpd start查看监听端口,DHCP 监听的是 udp/67# ss -unlp查看分配出去的IP# cat /var/lib/dhcpd/dhcpd.leases
二、tftp
tftp 一个简单、小型的文件共享服务器,为什么这里要使用到 tftp 服务器呢?
网卡在制作过程中,由于受限于大小,在其中内置了一个小型的 tftp 客户端模块,以便于能够实现自动化安装。
(1)tftp 的安装:
# yum install -y tftp-server# rpm -ql tftp-server/etc/xinetd.d/tftp //由于tftp很少使用,所以由超级守护进程代为管理/usr/sbin/in.tftpd/var/lib/tftpboot //共享目录
(2)tftp 的启动:
要启动 tftpd 首先要启动超级守护进程 xinetd,并且在配置文件中将 tftpd 开启
# vim /etc/xinetd.d/tftpservice tftp{ socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no //将 disable 修改为 no per_source = 11 cps = 100 2 flags = IPv4}启动服务器# service xinetd start查看是否正常监控,tftpd 监听的是 udp/67, 而且是 xinetd 代为监听# ss -unlp
三、PXE
PXE: preboot execute environment,预引导执行环境,可以理解为它为 DHCP 与 tftp 服务提供了环境。详情请参考:PXE-维基百科
每一个计算机要启动都会去找 bootloader,然后根据 bootloader 去找到内核,不管是硬盘还是光盘,其中都包括了 bootloader 。那么根据网卡怎么去找 bootloader 呢?
pxelinux 提供了能够引导文件,其中的 pxelinux.0 就相当于 bootloader, 但是在 CentOS 中该文件由 syslinux (pxelinux 是 syslinux 的衍生产品)提供,将其中的 pxelinux.0 复制到 tftp 目录下,并由 dhcp 服务指明该文件所在位置。
而在这一过程中,tftp 服务所负责的是提供 bootloader(pxelinux.0)与开机所需要的文件与内核,dhcp 服务所负责的便是给客户端提供IP,并指明 tftp 服务的 IP 与 pxelinux.0 的位置。流程大致如下:
(1)获取 pxelinux.0 并将该文件拷贝到 tftp 服务的共享根目录
# yum install -y syslinux# ll /usr/share/syslinux/pxelinux.0 -rw-r--r-- 1 root root 26759 Oct 16 2014 /usr/share/syslinux/pxelinux.0# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
(2)配置 DHCP 服务,指明 pxelinux.0 的位置
# vim /etc/dhcp/dhcpd.confsubnet 172.18.0.0 netmask 255.255.0.0 { range 172.18.0.100 172.18.0.255; option routers 172.18.0.1; next-server 172.18.0.1; tftp 服务器的 IP,通常都是与 DHCP 在同一个服务器上面 filename "pxelinux.0"; bootloader 文件}
(3)将内核文件与其他配置文件复制到 tftp 中
挂载光盘,复制文件# mount -r /dev/cdrom /mnt/cdrom# cp /mnt/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/# cp /mnt/cdrom/isolinux/{vesamenu.c32,splash.jpg,boot.cat} /var/lib/tftpboot/如果嫌麻烦,也可以直接将光盘文件中 isolinux 目录下的所有文件全部复制到 tftp 的根目录中,但是要将grub.conf文件删除在 tftp 根目录下创建一个 pexlinux.cfg 目录,并将 /mnt/cdrom/isolinux/grub.conf 复制到该目录中并改名为 default# mkdir /var/lib/tftpboot/pxelinux.cfg# cp /mnt/cdrom/isolinux/grub.conf /var/lib/tftpboot/pxelinux.cfg/default
- PXE, DHCP, TFPT 实现自动化安装 CentOS
- CentOS 6.5基于DHCP的PXE自动化安装系统详解
- PXE+DHCP+Apache+Kickstart系统自动化安装
- CentOS 6.5自动化运维之基于DHCP和TFTP服务的PXE自动化安装centos操作系统详解
- PXE+DHCP+Apache+Kickstart自动安装CentOS
- 基于网络PXE自动化安装CentOS 7
- 网络自动安装centos{dhcp+pxe+tftp+http)
- Fedora搭建服务器,DHCP+TFTP+FTP+PXE启动安装CentOS
- kichstart+dhcp+tftp+http+pxe批量自动安装centos
- kichstart+dhcp+tftp+http+pxe批量自动安装centos
- Kickstart+PXE+DHCP+TFTP+FTP网络安装CentOS系统
- PXE+DHCP+TFTP+Cobbler 无人值守安装centos 7
- CentOS配置PXE启动 tftp+DHCP 批量安装系统
- PXE + KickStart实现全自动化系统安装
- pxe+dhcp+tftp+kickstart 实现系统自动安装
- dhcp、pxe、cobbler 程序安装
- PXE 自动化安装注意事项
- pxe网络自动化安装
- Spring MVC组件大全
- [bzoj1485][HNOI2009]有趣的数列(Catalan)
- Highcharts 6 正式发布,带来 15 种新的图表类型
- 移动 web 开发问题和优化小结
- Linux文件与目录的三种时间状态(mtime,atime,ctime)区别
- PXE, DHCP, TFPT 实现自动化安装 CentOS
- maven学习四:maven集成jetty插件发布web项目
- 三个实例演示 Java Thread Dump 日志分析
- HTML学习,随便写点东西
- [Java]递归画树
- MFC消息学习总结
- 编程的智慧
- ARC079
- Google Brain团队的研究方法是什么?