热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PXE+Kickstart无人值守安装系统

PXE+Kickstart无人值守安装系统一、介绍二、原理三、安装部署PXE+kickstart四、安装TFTP五、安装DHCP六、生成kickstart(ks.cfg)文件七、安装HTT

PXE+Kickstart无人值守安装系统
一、介绍
二、原理
三、安装部署PXE+kickstart
四、安装TFTP
五、安装DHCP
六、生成kickstart(ks.cfg)文件
七、安装HTTP
八、虚拟机测试自动安装

一、介绍

CentOS的安装方法挺多,最常见的有光盘、Kickstart无人值守安装、U盘安装及ISO硬盘安装等。如果现在让你安装100台服务器,甚至更多台服务器,你会用什么办法安装呢,用光盘?这样要损坏多少张光盘呢,价格也不菲,U盘安装?一台一台接,很累好不好,用kickstart无人值守安装的方法,可以在内网批量安装新服务器系统,这种方法极大地简化了用光盘重复安装的过程,极大地提高了工作效率。

二、原理

1.什么是PXE

(1)PXE不是一种安装方式,而是一种引导方式(2)PXE(Pre-boot Execution Environment)协议可以使计算机通过网络启动(3)采用C/S结构

wKiom1j4KpLx8CBAAACtSxB_1Xs587.png-wh_50

2.PXE的工作过程

(1)PXE Client向DHCP发送请求  PXE Client从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP协议发送一个广播请求,向本网络中的DHCP服务器索取IP。(2)DHCP服务器提供信息  DHCP服务器收到客户端的请求,验证是否是合法的PXE Client的请求,验证通过它将给客户端一个提供相应,  这个提供相应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。(3)PXE客户端请求下载启动文件  客户端收到服务器的回应后,会回应一个帧,以请求传送启动所需文件。这些文件包括:pxelinux.0、pxelinux.cfg/default、initrd.img等文件。(4)Boot Server响应客户端请求并传送文件  当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答,用以决定启动参数。  BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。  default文件下载完成后,会根据该文件中定义的引导顺序,启动Liunx安装程序的引导内核。(5)请求下载自动应答文件   客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么介质来安装linux   如果通过网络安装(NFS.FTP.HTTP),则会在这个时候初始化网络,并定位安装源位置。   接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。(6)将ks.cfg文件下载回来后,通过该文件找到OS Server,并安装该文件的配置请求下载安装过程需要的软件包。   OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。

补充信息,这里图文并茂介绍PXE工作流程

http://www.zyops.com/autoinstall-kickstart

三、部署安装PXE+Kickstart

1.系统环境准备

[root@pxe ~]# uname -a#这是一台桌面GUN的Linux,可能你问为什么要用桌面呢,后面要用到啦Linux pxe 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux[root@pxe ~]# uname -mx86_64#64位系统[root@pxe ~]# cat /etc/redhat-release CentOS release 6.6 (Final)#版本是6.6[root@pxe ~]# getenforce Disabled#禁用selinux[root@pxe ~]# /etc/init.d/iptables stop#关闭防火墙[root@pxe ~]# ifconfig eth0 | sed -n '2p' | awk  '{print $2}' | awk -F ":" '{print $2}'192.168.16.100#这台机器的IP地址

注意:虚拟机环境网卡采用NAT模式,不要使用桥接模式,把VMware的NAT模式的DHCP服务也关闭

2.创建用于存放镜像里面的内容目录

[root@pxe ~]# mkdir -p /data/sys

3.挂载镜像到mnt目录下,再将系统镜像里边的内容拷贝到共享目录/data/sys中去

[root@pxe ~]# mount /dev/cdrom /mnt/mount: block device /dev/sr0 is write-protected, mounting read-only[root@pxe ~]# ll /mnt/total 712-r--r--r--. 2 test test     14 Oct 24  2014 CentOS_BuildTagdr-xr-xr-x. 3 test test   2048 Oct 24  2014 EFI-r--r--r--. 2 test test    212 Nov 28  2013 EULA-r--r--r--. 2 test test  18009 Nov 28  2013 GPLdr-xr-xr-x. 3 test test   2048 Oct 24  2014 imagesdr-xr-xr-x. 2 test test   2048 Oct 24  2014 isolinuxdr-xr-xr-x. 2 test test 686080 Oct 24  2014 Packages-r--r--r--. 2 test test   1354 Oct 20  2014 RELEASE-NOTES-en-US.htmldr-xr-xr-x. 2 test test   4096 Oct 24  2014 repodata-r--r--r--. 2 test test   1706 Nov 28  2013 RPM-GPG-KEY-CentOS-6-r--r--r--. 2 test test   1730 Nov 28  2013 RPM-GPG-KEY-CentOS-Debug-6-r--r--r--. 2 test test   1730 Nov 28  2013 RPM-GPG-KEY-CentOS-Security-6-r--r--r--. 2 test test   1734 Nov 28  2013 RPM-GPG-KEY-CentOS-Testing-6-r--r--r--. 1 test test   3380 Oct 24  2014 TRANS.TBL[root@pxe ~]# cp -a /mnt/* /data/sys/

四、安装TFTP

在安装PXE过程中,客户端通过TFTP协议从TFTP服务器下载引导文件并执行,因此,需要配置TFTP服务器和PXE的引导配置完成这个过程

1.安装tftp和xinetd

[root@pxe ~]# yum install tftp-server.x86_64 xinetd.x86_64 -y[root@pxe ~]# rpm -qa tftp-server xinetdxinetd-2.3.14-40.el6.x86_64tftp-server-0.49-8.el6.x86_64

2.配置tftp服务

TFTP服务使用Xinetd服务管理,编辑/etc/xinetd.d/tftp,将文件中disable的参数由yes改为no[root@pxe ~]# 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        per_source              = 11        cps                     = 100 2        flags                   = IPv4}

3.启动xinetd,并且设置开机自启动

[root@pxe ~]# /etc/init.d/xinetd startStarting xinetd:                                           [  OK  ][root@pxe ~]# chkconfig --level 3 xinetd on[root@pxe ~]# chkconfig --list xinetdxinetd         0:off1:off2:off3:on4:on5:on6:off

4.配置支持PXE引导启动程序

PXE启动映像文件由syslinux软件提供,只要安装了syslinux,就会生成一个pxelinux.0文件,将这个文件复制到TFTP默认路径即可。 syslinux是一个功能强大的引导加载程序,而且兼容各种介质,更加确切地说:syslinux是一个小型的Linux操作系统,它的目的是简化Linux的时间,并建立修护或其他特殊用途的启动盘。

[root@pxe ~]# yum install syslinux.x86_64 -y[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/[root@pxe ~]# ll /var/lib/tftpboot/total 28-rw-r--r--. 1 root root 26759 Apr 19 23:54 pxelinux.0

5.用于网络启动的内核文件

将CentOS安装光盘目录中的images/pxeboot/{vmlinuz,initrd.img}启动文件复制到某个安装目录,比如/var/lib/tftpboot/

[root@pxe ~]# cp /data/sys/images/pxeboot/vmlinuz /var/lib/tftpboot/#复制内核文件[root@pxe ~]# cp /data/sys/images/pxeboot/initrd.img /var/lib/tftpboot/#复制驱动文件root@pxe ~]# cp /data/sys/isolinux/boot.msg /var/lib/tftpboot/#复制boot.msg

6.创建pxelinx.cfg目录,复制isolinux.cfg文件到/tftpboot目录并改名default

[root@pxe ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg[root@pxe ~]# cp /data/sys/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

7.编辑配置default文件

[root@pxe ~]# cd /var/lib/tftpboot/pxelinux.cfg/ [root@pxe pxelinux.cfg]# chmod 644 default [root@pxe pxelinux.cfg]# vim default default linux#默认启动的是“lobeltext”中标记的内核#prompt 1#开启会显示命令行'boot: '提示符。prompt值为0时则不提示,将会直接启动'default'参数中指定的timeout 1#timeout时间是引导时等待用户手动选择的时间,设为1可直接引导,单位为1/10秒display boot.msg# 菜单背景图片、标题、颜色menu background splash.jpgmenu title Welcome to CentOS 6.6!menu color border 0 #ffffffff #00000000menu color sel 7 #ffffffff #ff000000menu color title 0 #ffffffff #00000000menu color tabmsg 0 #ffffffff #00000000menu color unsel 0 #ffffffff #00000000menu color hotsel 0 #ff000000 #ffffffffmenu color hotkey 7 #ffffffff #ff000000menu color scrollbar 0 #ffffffff #00000000label linux  menu label ^Install or upgrade an existing system  menu default  kernel vmlinuz#指定要启动的内核。同样要注意路径,默认是/var/lib/tftpboot目录  append initrd=initrd.img ks=http://192.168.16.100/ks.cfg#添加ks文件的地址

五、安装配置DHCP服务

在PXE安装过程中,PXE客户机主要通过DHCP服务获取地址,PXE引导文件名称,然后再客户端机上通过TFTP协议从TFTP服务器下载引导文件并执行,从而启动系统安装程序执行后,接着下载并安装程序启动安装。

1.安装和配置DHCP

[root@pxe ~]# yum install dhcp.x86_64 -y[root@pxe ~]# vim /etc/dhcp/dhcpd.conf ## DHCP Server Configuration file.#   see /usr/share/doc/dhcp*/dhcpd.conf.sample#   see 'man 5 dhcpd.conf'#ddns-update-style none;#不ddns更新next-server 192.168.16.100;#告知客户端tftp服务器的ip地址filename "pxelinux.0";#告知客户端从TFTP根目录下载pxelinux.0文件subnet 192.168.16.0 netmask 255.255.255.0 {#设定子网  range 192.168.16.10 192.168.16.20;#设定子网范围   option domain-name-servers 114.114.114.114;#设定DNS   option routers 192.168.16.2;#设定默认网关   default-lease-time 600;#设置默认的IP租用时间,单位为秒   max-lease-time 7200;#最大的IP租用时间,单位为秒   }log-facility local4;#记录DHCP日志

2.创建日志文件

[root@pxe ~]# vim /etc/rsyslog.conf # Save dhcpd messages also to dhcpd.loglocal4.*                                                /var/log/dhcpd.log[root@pxe ~]# touch /var/log/dhcpd.log[root@pxe ~]# chmod 600 /var/log/dhcpd.log

3.启动DHCP服务器

[root@pxe ~]# /etc/init.d/dhcpd startStarting dhcpd:                                            [  OK  ]

4.设置开机自启动

[root@pxe ~]# chkconfig dhcpd on[root@pxe ~]# chkconfig --list | grep dhcpdhcpd          0:off1:off2:on3:on4:on5:on6:off

六、生成kickstart文件

通常安装操作系统过程中,需要常常和服务器进行交互操作,为了减少这个交互过程可以使用kickstart。使用kickstart,只需先定义好一个kickstart自动应答配置文件ks.cfg,并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自动从文件中读取kickstart配置文件。

1.使用CentOS Linux提供一个图形化的kickstart配置工具

[root@pxe ~]# yum install system-config-kickstart.noarch

wKiom1j4KuriI1akAAGHTNVYN4Y472.png-wh_50

打开kickstart工具,也在图形终端打开命令行窗口键入命令system-config-kickstart打开

wKioL1j4K2PBal3gAAEU4-qDN7I520.png-wh_50

这里选择语言、时区、root密码,勾选第一个,安装系统后重启

wKiom1j4LA-B6LNeAADE_OIhLrw512.png-wh_50

选择全新安装,安装源方式为HTTP,HTTP地址和目录

wKiom1j4LGeCkG_tAADwf9btwEA486.png-wh_50

选择是引导,默认就行啦

wKiom1j4LIbTQDsBAAEZ7E-X8UY383.png-wh_50

分区信息,清除引导,移除分区,添加你需要的分区

wKioL1j4LPXzlYqxAAC5Wgw7-FE264.png-wh_50

添加网络设备,如果只有一张网卡就eth0啦

wKiom1j4LSzD1SZaAADYMOnUPcs326.png-wh_50

这里密码加密,默认就行

wKioL1j4LVHxO8_QAADJW3CKG0Y166.png-wh_50

防火墙配置,我这里是选择关闭的

wKiom1j4LYfzOYx4AAChuK7yp0g207.png-wh_50

显示配置,默认即可

wKioL1j4LfLgXP1cAAE-YDdPvBE377.png-wh_50

选择安装的软件包,根据自己情况选择哈

wKioL1j4LkGi4G5zAAE-zT9DAbk072.png-wh_50

选择左上角的File,点击Save(保存)

wKiom1j4Ls6zBI6lAAFJPxYvH2E406.png-wh_50

保存的路径/data/sys/ks.cfg,这个路径很讲究喔

查看保存后的ks.cfg文件,本应该是有三部分的,但我没有选择脚本选项,所以这里文件只有两部分,第一是键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项,第二是软件包安装

[root@pxe ~]# cat /data/sys/ks.cfg #platform=x86, AMD64, or Intel EM64T#version=DEVEL# Firewall configurationfirewall --disabled                                        #防火墙禁用# Install OS instead of upgradeinstall                                                    #表示是安装系统不是升级# Use network installationurl --url="http://192.168.16.100/"                         #告诉安装程序,到http://ip/下面找安装介质# Root passwordrootpw --iscrypted $1$ZoLiOvI6$jV67RM98I/JKaKpE6vUDz0       #root密码# System authorization informationauth  --useshadow  --passalgo=sha512# Use text mode installtext                                                        #文本安装方式firstboot --disable# System keyboard                                           #键盘类型keyboard us                    # System language                                           #系统语言lang en_US# SELinux configuration                                     #禁用selinuxselinux --disabled# Installation logging level                                #设置日志级别logging --level=info# Reboot after installation                                 #安装完系统后重启reboot# System timezone                                           #系统时区 timezone  Asia/Shanghai# Network information                                       #网络信息network  --bootproto=dhcp --device=eth0 --Onboot=on# System bootloader configurationbootloader --location=mbr                                    #系统引导相关信息# Clear the Master Boot Record              zerombr# Partition clearing information                           #清除所有分区clearpart --all --initlabel # Disk partitioning information                            #系统的三个分区part /boot --fstype="ext4" --size=200part swap --fstype="swap" --size=2048part / --asprimary --fstype="ext4" --grow --size=1%packages                                                #安装的软件包@base@compat-libraries@debugging@developmentgit%end

给予ks.cfg权限

[root@pxe ~]# chmod 777 /data/sys/ks.cfg

七.安装HTTP服务

1.检查是否安装

[root@pxe ~]# /usr/local/nginx/sbin/nginx -v#这是我编译安装好的nginxnginx version: nginx/1.12.0

2.配置nginx.conf文件

worker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    server {        listen       80;        server_name  192.168.16.100;        location / {            root   /data/sys;#这个目录是存放ks.cfg            index  index.html index.htm;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }}

3.检查语法

[root@pxe conf]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

4.启动nginx服务

[root@pxe conf]# /usr/local/nginx/sbin/nginx

八、用虚拟机测试自动化安装
  1. 用虚拟机安装一台测试机器,不用选择光盘,直接点击开机就行

    wKioL1j4NBazOnnIAABdfPHo-9w579.png-wh_50

    wKioL1j4NEbx7W2SAAANiuayjOg924.png-wh_50


     wKiom1j4NHjj6YngAAArwuBnfic767.png-wh_50

    然后就是你去吃个饭回来,就安装好啦,去吃饭啦


最后想说的是,这个自动化安装功能我超级喜欢,就好像windows AD部署利用组策略自动安装软件一样,嘻嘻,感谢51CTO这个平台,让自己学习更多知识,看到很多大牛的好文章,才能让自己进步。

本文出自 “你会更好” 博客,谢绝转载!


推荐阅读
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
author-avatar
细妹很快乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有