PXE+kickstart批量部署操作系统

一、简介

PXE,全名Pre-boot Execution Environment,预启动执行环境
通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
由Intel和Systemsoft公司于1999年9月20日公布的技术;Client/Server的工作模式;
PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;
PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)

二、PXE的工作流程

工作的流程

1. Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client。

2. Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。

3. Client执行接收到的pxelinux.0文件。

4. Client向TFTP发送针对本机的配置信息(记录在TFTP的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。

5. Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发 送给Client。

6. Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件 系统。

7. Client启动Linux内核(启动参数已经在4中的配置文件中设置好了)。

8. Client通过ftp下载镜像文件,读取autoyast自动化安装脚本。 至此,Client正式进入自动化安装模式开始安装系统直到完成

三、pxe服务器的部署

Ⅰ、系统环境准备:

为了vmware更好的实现DHCP动态地址获取,我们需要关闭vmware自身的DHCP服务。

     防火墙和selinux关闭   yum源可用   网络畅通   时间同步

Ⅱ、部署服务

下载所需软件包

yum -y install dhcp tftp tftp-server syslinux  vsftpd  xinetd

1、部署vsftpd或者httpd

 挂载镜像,方便获取到镜像文件和内核文件
mount   镜像    /mnt
cp -rf  /mnt/*  /var/ftp/pub/

2、部署dhcp服务

配置dhcp

拷贝一份模板配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

vim /etc/dhcp/dhcpd.conf

ddns-update-style interim;
ignore client-updates;
authoritative;
allow booting;
allow bootp;
allow unknown-clients;
subnet 10.0.0.0 netmask 255.255.255.0 {    指定网段和子网掩码
range 10.0.0.60 10.0.0.100;			指定网络的范围
option routers 10.0.0.130;			指定网关
next-server 10.0.0.130;				指定tftp的服务器IP地址
filename "pxelinux.0" ;				指定要访问文件
}

3、部署tftp

vim /etc/xinetd.d/tftp

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = yes						将yes改成no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

4、拷贝装机所使用的文件

创建目录
mkdir  /var/lib/tftpboot/pxelinux.cfg
mkdir /var/lib/tftpboot/netboot

拷贝启动系统所需要的内核文件和镜像文件
cp /var/ftp/pub/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/netboot/

拷贝引导文件
 cp /usr/share/syslinux/{pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /var/lib/tftpboot/

5、编辑开机菜单文件

vim    /var/lib/tftpboot/pxelinux.cfg/default

 default menu.c32
 prompt 0
 timeout 30
 MENU TITLE Togogo.net Linux Training

 LABEL centos7_x64
 MENU LABEL CentOS 7 X64 for newrain
 KERNEL /netboot/vmlinuz
 APPEND  initrd=/netboot/initrd.img inst.repo=ftp://IP地址/pub ks=ftp://IP地址/pub/ks.cfg    

6、启动服务

systemctl  enable --now dhcpd vsftpd  xinetd   
systemctl  restart dhcpd vsftpd  xinetd    tftp

四、kickstart自动部署

1、概念

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。

注意:手动编写kickstart脚本难度较大,采用我们系统自带软件包工具来制作。但是会有BUG产生,选择软件包需要手动添加

2、下载对应的软件

yum -y install pykickstart

3、创建cfg文件(自动应答文件)

vim /var/ftp/pub/ks.cfg

#platform=x86, AMD64, or Intel EM64T
 #version=DEVEL
 # Firewall configuration
 firewall --disabled
 # Install OS instead of upgrade
 install
 # Use NFS installation media
 url --url="ftp://10.20.157.100/pub/"			自行修改	
 rootpw --plaintext 123456
#root的密码设为123456
 # Use graphical install
 graphical
 firstboot disable
 # System keyboard
 keyboard us
 # System language
 lang en_US
 # SELinux configuration
 selinux disabled
 # Installation logging level
 logging level=info
# System timezone
 timezone Asia/Shanghai
 # System bootloader configuration
 bootloader location=mbr
 clearpart --all --initlabel
 part swap --asprimary --fstype="swap" --size=1024
 part /boot --fstype xfs --size=200
 part pv.01 --size=1 --grow
 volgroup rootvg01 pv.01
 logvol / --fstype xfs --name=lv01 --vgname=rootvg01 --size=1 --grow
 reboot

%packages					指定装系统时所安装的软件
 @core
 wget
 lrzsz
 unzip
 net-tools
 %end

%post
 %end

检查文件的语法格式
ksvalidator  /var/ftp/pub/ks.cfg

五、测试

配置完后就可以进行操作了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值