Linux上基于网络自动化安装系统(CentOS6.5+DHCP+TFTP+PXE)
一、前言
安装系统常用的方式就是,光驱安装,U盘安装,但是这种手动安装方法效率都很低,而且出错概率大。
现在网卡速率也都基本1000M,所以网络安装就显得更简单,把管理员从重复、繁琐的安装操作中解放出来。
当然,这只是一个局域网内的实验配置,生产环境会有更专业的解决方案,但是这个原理都是一样的。
二、原理
本次实验用到的协议和技术有:
DHCP: Dynamic Host Configuration Protocol 动态主机配置协议
TFTP: Trivial File Transfer Protocol 小文件传输协议
PXE: Preboot Execution Environment远程引导技术
上图告诉我们本次网络安装中DHCP,TFTP,PXE的关系和启动的过程,本次实验DHCP和TFTP是在同一台服务器。
详细流程如下:
如图:
1. Target client向DHCP服务器发送DHCP请求
首先,client端的网卡一定要支持PXE,并且将client的BIOS设置成网络启动为第一顺序,然后PXE BootROM会以UDP协议发送一个广播请求DISCOVER,向网络中的DHCP服务器索取IP地址等信息。
2. DHCP收到广播,并发送广播包回应Client一个OFFER,意义为我可以给你提供ip信息
3. Client收到DHCP的OFFER后,继续发送广播包,向DHCP服务发起REQUEST
4. DHCP服务器收到REQUEST后,验证是否来自合法的PXE Client请求,通过验证后,会响应给client提供:IP地址,pxelinux启动程序位置(TFTP),以及配置文件所在位置
5. Client向TFTP服务器请求下载启动文件,文件包括:
pxelinux.0, vmlinuz, initrd.img, pxelinux.cfg/default, pxelinux.cfg/list
6. TFTP服务器收到请求后,启动TFTP并开始传送启动文件
当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM 由 TFTP 通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,系统会下载并读取pxelinux.cfg/list文件,操作人员需要安装list中列出的系统进行选择,启动对应选择的Linux系统并安装程序的引导内核。
三、实验思路
1. 前提条件:
Client机器必须支持PXE启动
Client机器,DHCP,TFTP必须在同一个局域网内
要安装的系统需要有对pxeboot的支持
2. 方案数据:
预安装系统:
CentOS6.6
DHCP服务器(TFTP服务器)信息:
IP:192.168.100.200
OS: CentOS6.6
Client机器信息:
MAC: 00:0c:29:c1:3a:ab
ip: 192.168.100.222 (可以在DHCP配置中预留)
四、实验具体操作步骤
1. DHCP服务的配置
1) 安装dhco服务器包:
#yum -y install dhcp
2) 编辑dhcp配置文件:
a. 可以通过rpm -ql dhcp来查看配置文件的sample,这样编辑起来更容易些:
#rpm -ql dhcp
查到样例在这里 /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
#复制dhcpd.confg.sample到/etc/dhcp/dhcpd.conf
#cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf
b. 编辑dhcpd.conf
#vim /etc/dhcp/dhcpd.conf
option domain-name "richie.com";
option domain-name-servers 8.8.8.8;
default-lease-time 86400;
max-lease-time 100000;
log-facility local7;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.201 192.168.100.222;
#option routers 192.168.100.200;
next-server 192.168.100.200; # TFTP服务器的IP(这里就是本机的IP)
filename "pxelinux.0";
}
重点注意 next-server 和 filename参数,这里分别指定了TFTP服务器的位置和启动文件的名称
c. 启动DHCP服务
启动之前,应该检测下配置文件是否有错误,可以用以下命令:
#service dhcpd configtest
如果提示
#Syntax: OK
那就没问题,继续启动DHCP服务
#service dhcpd restart
2. TFTP服务器配置
1) 安装tftp服务包
#yum -y install tftp-server
#TFTP的配置文件位于 /etc/xinetd.d/tftp
2)启动tftp服务
由于tftp是瞬时守护进程,依赖于xinetd来监听,所以启动tftp,必须要重启xinetd来是让配置生效
#启动tftp两种方式:
a. 修改tftp配置文件中disable=no
#vim /etc/xinetd.d/tftp #disable=no
b. 用chkconfig命令
#chkconfig tftp on
注意,两种方式任选其一都可以实现,但是必须要重启xinetd,命令如下:
#service xinetd restart
查看udp 69端口是否监听
# ss -unl | grep :69
3) 准备启动文件
a. 启动镜像文件pxelinux.0的准备
获取这个文件,需要安装syslinux包,然后将pxelinux.0复制到/var/lib/tftpboot目录
#yum -y install syslinux #cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
b. 提供引导内核等文件
同时在/var/lib/tftpboot目录下创建pxelinux.cfg目录
挂载系统光盘,假设位置为/media/cdrom/
# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ # cp /media/cdrom/isolinux/{splash.jpg,vesamenu.c32,boot.msg} /var/lib/tftpboot # mkdir /var/lib/tftpboot/pxelinux.cfg/ # cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
3. 提供安装源
这里我们基于http来提供,挂载CentOS安装光盘镜像
a. 安装http服务
# yum -y install httpd
# mkdir -pv /var/www/html/centos/6/x84_64
用/6/x86_64这种结构,以后便于用变量来引用这个地址
# mount --bind /media/cdrom /var/www/html/centos/6/x84_64
--bind可以绑定两个挂载地址
然后我们就可以用 在ks.cfg指定安装源为 http://192.168.100.200/centos/6/x86_64
4. 提供ks.cfg
这里不详细提供如何配置ks.cfg, 这个是kickstart的脚本。可以使用system-config-kickstart工具来创建
ok,基本ok,附图来欣赏下,启动成功的样子吧~~
这个tftp的信息会一闪而过,大家就当是了解下过程吧
在这个menu状态,按ESC可以进入boot命令行,可以继续键入boot option来指定ks脚本啊,配置ip信息等好多内容,具体的option可以参考redhat的installation guide文档很详细的。
本次实验就到这里, 谢谢大家的关注!
本文出自 “Richier” 博客,转载请与作者联系!