总结之:CentOS 6.5基于DHCP的PXE自动化安装系统详解

简介:

前言
   如果要给很多台客户端主机安装操作系统,要是每一台都拿张安装光盘一台一台主机的去装系统、那就台不现实了、在生产环境中也不会被允许的、要实现为多台主机自动安装操作系统、那我们怎么实现自动化安装呢、这就要来讲讲PXE了,PXE就是为这种给多台主机自动化安装操作系统而生的,那接下来我们就来基于DHCP完成自动化为多台主机安装操作系统。

正文
   要实现自动安装之前先确保几个包已经安装好了:
   1、DHCP:动态主机配置协议、他是使用UDP协议工作的
   2、tfpt-server:这个是服务器端提供需要的安装的包
   3、xinetd:这个是唤醒tftp这个服务的服务
   4、syslinux:这个程序包是提供pxelinux.0
   5、准备安装树、就是要安装的各种rpm包、安装光盘应该提供

   这几个包需要安装好

基本原理及工作流程:
   首先,在客户端主机的网卡要支持网络引导,当开机时网卡就会激活当中的程序,自行通过网络向DHCP请求IP地址,并配置在自己的网卡上。
   其次,DHCP服务器回应给我们的主机,分配了IP地址,掩码什么的,再让DHCP服务器告诉我们的客户端主机tftp服务器在什么位置。
   接着,客户端主机就去请求tftp服务器,当然,这里的DHCP服务器和tftp服务器可以是同一台,也可以不是同一台,看情况而定。
   而后,tftp服务器就会给客户端主机提供一个pxe的文件、这个文件就是pxelinux.0,他相当于我们的bootloader、而这个文件是由syslinux这个程序包提供的。
   再则,客户端主机利用tftp服务器提供的pxelinux.0这个文件,再次尝试到tftp服务器上获取内核,因为要启动安装就要启用引导内核。
   之后,当引导内核启动后,客户端主机通过改名后的default(由pxelinux.0改名而来)文件成功的引导Linux安装内核后,通过httpd服务获取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
   最后,将ks.cfg文件下载回来后,通过该文件找到ks.cfg文件的配置请求下载安装过程所需要的软件包,这样就可以实现生动化安装了。


自动化安装过程实现:

   安装DHCP和httpd服务、没安装有就得安装、安装有了就不用再装了、这步就不多说了:
   # yum -y install dhcp

   安装好dhcp之后、就去配置dhcp服务里的一些参数了、能让dhcp服务告诉客户端主机tftp服务器在什么位置,用net-server IP设定、还要设定文件名为pxelinux.0、这些设定可以放在全局、也可以放在某个子网中,复制/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample文件替换原配置文件/etc/dhcp/dhcpd.conf、然后编辑/etc/dhcp/dhcpd.conf
   # cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
   # vim /etc/dhcp/dhcpd.conf
   wKioL1McLA_y0VeKAAEDzgZq2vU463.jpg


   配置完成后,启动DHCP服务,并将它设为开机自启动、也重启一下dhcp服务
   # /etc/init.d/dhcpd start
   # service dhcpd restart
   wKiom1McLGayrJtJAABT5iaOsBM106.jpg


   安装tftp服务、但由于tftp服务由xinetd服务管理并由xinetd来唤醒的、所以也要安装xinetd服务、tftp-server是服务器端要安装的、tftp是客户端要安装的。
   # yum -y install tftp-server
   # yum -y install xinetd

   看一下安装完后生成的文件、有几个我们需要关注一下的:

   wKioL1McLHPBUzb2AAFFaQfKhYs242.jpg
   

   然后启动这两个服务:
   # service xinetd restart
   # chkconfig tftp on
   wKiom1McLMXgnAaaAABOwDWzjTw112.jpg
   

   在这里我们应该挂载我们的安装光盘、我这里的安装光盘已经挂载好了:
   首先在/media下创建一个cdrom目录、然后再挂载
   # mkdir cdrom
   # mount -r /dev/cdrom/ /media/cdrom
   wKiom1McLV6RwYMYAADQ0BdODnU929.jpg


   现在我们从刚挂载的光盘中开始复制内核文件以及init等一些文件到/tftp/lib/tftpboot目录下:
   # cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
   # cp /media/cdrom/isolinux/boot.msg /var/lib/tftpboot/
   # cp /media/cdrom/isolinux/splash.jpg /var/lib/tftpboot/
   # cp /media/cdrom/isolinux/vesamenu.c32 /var/lib/tftpboot/

   wKioL1McLWmR4gnXAAGqGdpEWjM752.jpg


   还要复制一个叫pxelinux.0这个文件、这个文件是由syslinux提供的、要安装这个程序包才会有这个文件,那我们就装吧!
   # yum -y install syslinux

   安装好了之后就复制这个文件吧:
   # cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

   在这里pxelinux.0取代了isolinux、他工作时要依赖的配置文件叫isolinux.cfg,虽然pxelinux.0取代了isolinux、但是依然需要一个配置文件、这样我们就复制isolinux.cfg到/var/lib/tftpboot/pxelinux.cfg/目录下、这里pxelinux.cfg目录要我们事先创建好、同时复制过来的配置文件要改名为default:
   # mkdir pxelinux.cfg
   # cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
   wKioL1McLaTiTMvHAADEE2QuRaA028.jpg


   到这里我们还没有完成、他还不能让我们的系统自动化安装,因为我们还没有ks自动应答文件,也没有安装树、在安装时必须提供所依赖的各种rpm包,我们知道HTTP可以向外提供安装树、那就用到我们的httpd了、我这里已经安装好了httpd服务了、如果没有就得安装哦,httpd的服务路径在/var/www/htmp下、这时我们可以绑定我们之前挂载好的光盘到这里来、这样不就有安装树了么,当然在html下创建个目录会好点,这里我们创建成centos:
   # mkdir /var/www/html/centos6.5
   # mount --bind /media/cdrom/ /var/www/html/centos6.5/

   wKiom1McLf7yoXsLAAFvIIHuYHM956.jpg


   绑定后还得要启用我们的httpd服务呢、别忘记了、而后查看一个有没有80端口:
   # service httpd start
   # ss -tnl

   这样子文件共享服务就设定OK了,可以用:http://本机服务器IP地址/centos6.5、这样就可以访问得到了,安装树就这样OK了。

   而后我们就开始复制Kickstart文件了,这个文件在/root/目录下,叫anaconda-ks.cfg、我们把他复制到/var/www/html/下,改名为ks.cfg
   # cp /root/anaconda-ks.cfg /var/www/html/ks.cfg

   由于这个文件只有管理员可以访问、复制过来之后要给个可读的权限他:
   # chmod +r /var/www/html/ks.cfg

   再编辑一个这个ks.cfg里面的配置跟我们设定好的一致、要不然找不到文件路径:
   vim /var/www/html/ks.cfg    

   wKiom1McLtaBDWk1AABh4f2jN4s122.jpg

   wKioL1McLr-ADlOmAACV6yRRPvk194.jpg    

   改好了保存退出!

   怎么让启动时加载kickstartk呢、那就要在/var/lib/tftpboot/pxelinux.cfg/defaule文件的label为linux下的append后面补上 ks=http://172.16.251.127/ks.cfg

   编辑/var/lib/tftpboot/pxelinux.cfg/defaule
   # vim /var/lib/tftpboot/pxelinux.cfg/default
   wKiom1McLnHQB9oPAAEN6M6W4QI003.jpg
   改好后:w!强行写入、退出即可


   好了、到这里我们算是配置好了我们的自动化安装环境了、那就创建一个虚拟机来试一下吧、看一下我们的自动化安装界面可以启动了没有呀!

wKioL1McL4iRtxmwAAM9FfxtfYM892.jpg

wKiom1McL6-C1ajnAAD_mHR1R74710.jpg


到这里我们来总结一下前面的步骤吧!

   1、配置DHCP服务器
        # yum -y install dhcp
        # vim /etc/dhcp/dhcpd.conf
        自定义subnet、同时配置tftp服务的信息:
        subnet {
            ...
            next-server TFTP-SERVER-IP;
            filename "pxelinux.0";
        }

        # service dhcpd restart

    2、配置tftp-server
        # yum -y install xinetd tftp-server tftp
        # chkconfig xinetd on
        # chkconfig tftp on
        # service xinetd start
        # ss -unl | grep ":69"

    3、准备安装树、也就是我们的安装包
        # mkdir /var/www/html/centos6.5
        # mount --bind /media/cdrom /var/www/html/centos6.5
        # service httpd start

    4、复制文件到tftpboot下的文件
        # yum -y install syslinux
        # cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/
        # cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}  /var/lib/tftpboot/
        # cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
        # mkdir /var/lib/tftpboot/pxelinux.cfg
        # cp /media/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

    5、提供kickstart文件
       直接从/root/anaconda-ks.cfg复制到/var/www/html目录下,注意:url及repo后的路径要修改为可用安装树的路径;         

    6、配置引导程序能自动加载此kickstart文件
        编辑/var/lib/tftpboot/pxelinux.cfg/default
        在label为linux项的append一行后附加:
            ks=http://HTTP_SERVER_IP/ks.cfg

    7、第一次测试、祝你成功!


结束

   最后啰嗦一下、做得有什么不妥或欠佳的地方还望大神多多提点,在这里先谢谢你的关注了,坚持梦想、以不懈的精神扎根linux行业。










本文转自 wei0164 51CTO博客,原文链接:http://blog.51cto.com/tanxw/1371355,如需转载请自行联系原作者
目录
相关文章
|
16天前
|
Linux 开发工具 Windows
CentOS8 64位系统 搭建内网穿透frp
【10月更文挑战第23天】本文介绍了如何在Linux系统上搭建frp内网穿透服务,并配置Windows客户端进行访问。首先,通过系统信息检查和软件下载,完成frp服务端的安装与配置。接着,在Windows客户端下载并配置frpc,实现通过域名访问内网地址。最后,通过创建systemd服务,实现frp服务的开机自动启动。
53 14
|
12天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
13天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
17天前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
19 2
|
20天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
59 3
|
21天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
36 2
|
9天前
|
存储 安全 Linux
VMware安装CentOS7
【11月更文挑战第11天】本文详细介绍了在 VMware 中安装 CentOS 7 的步骤,包括准备工作、创建虚拟机、配置虚拟机硬件和安装 CentOS 7。具体步骤涵盖下载 CentOS 7 镜像文件、安装 VMware 软件、创建和配置虚拟机硬件、启动虚拟机并进行安装设置,最终完成 CentOS 7 的安装。在安装过程中,需注意合理设置磁盘分区、软件选择和网络配置,以确保系统的性能和功能满足需求。
|
16天前
|
运维 监控 网络协议
自动化运维的魔法——打造高效、可靠的系统
【10月更文挑战第32天】在数字化时代的浪潮下,运维不再是简单的硬件维护和故障排除。它已经演变成一场关乎效率、稳定性和创新的技术革命。自动化运维,作为这场革命的核心,正引领着企业走向更加智能和高效的未来。本文将带你探索自动化运维的世界,揭示其背后的原理和实践,让你领略到自动化带来的无限可能。
24 0
|
1月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
67 4
|
1月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
54 4