如何通过pxe+kickstart实现无人值守安装系统详解

一、PXE介绍

1.1 什么是PXE

  • PXE,全面Pre-boot Execution Environmrnt,预启动执行环节;
  • 通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
  • 由inter和systemsoft公司与1999年9月20日公布的技术;
  • C/S的工作模式;
  • PXE客户端会调用网际协议(IP)、数据报协议(UDP)、动态主机配置协议(DHCP)、简文件传输协议(TFTP)等网络协议。
  • PXE客户端是指机器在PXE启动过程中的角色。一个PXE客户端可以使一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(电脑的网卡)

1.2 PXE工作示意图

在这里插入图片描述
在这里插入图片描述

1.3 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 Server发送针对本机的配置信息文件(在TFTP服务的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作
  5. Client向TFTP发送linux内核请求信息,TFTP收到消息之后将内核文件发送给Client
  6. Client向TFTP根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
  7. Client启动linux内核
  8. Client下载安装源文件,读取自动化安装脚本
    注意:如果要是PEX远程安装操作系统,网卡必须支持PEX(即网卡包含TFTP的客户端)

二、准备部署环境

下面以vmw虚拟机环境实现部署

主机名称IP地址
server192.168.10.10
client暂未分配

2.1 编辑虚拟网络编辑器

在这里插入图片描述

关闭虚拟机自带的DHCP服务

在这里插入图片描述

2.2 挂载光盘镜像并配置本地yum

[root@server ~]# mount /dev/sr0 /media/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
[root@server ~]# cat /etc/yum.repos.d/local.repo 
[centos]
name=centos
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1

三、开始部署PXE+KS

本次实验采用HTTP提供内核文件,当然也可以采用FTP/NFS,只要修改传输方式和路径即可,下面会说明。

3.1 安装DHCP服务

[root@server ~]# yum install -y dhcp

3.2 配置dhcp

允许BOOT引到程序协议,让局域网内暂时没有操作提醒的主机也能获取到静态IP地址,
加载引到驱动文件pexlinux.0,让客户端获取到IP地址后主动获取引到驱动文件,
自行进入安装过程。

[root@server ~]# vim /etc/dhcp/dhcpd.conf 

allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
        option subnet-mask      255.255.255.0;
        option domain-name-servers  192.168.10.10;
        range dynamic-bootp 192.168.10.100 192.168.10.200;
        default-lease-time      21600;
        max-lease-time          43200;
        next-server             192.168.10.10; #这个就是TFTP地址
        filename                "pxelinux.0"; #从tftp根目录获取bootloader文件
}

重启DHCP服务
[root@server ~]# systemctl restart dhcpd

3.3 安装TFTP服务

TFTP作为一种基于UDP协议的简单文件传输协议,不需要用户认证即可获取到所需的文件资
源。因此下面配置TFTP服务,为客户端主机提供引导及驱动文件。当客户端有了基本的驱动
程序之后,再通过httpd服务将完整的光盘镜像文件传输过去。

[root@server ~]# yum install -y tftp-server

TFTP是一种非常精简的文件传输服务程序,它的运行和关闭都是由xinetd网络守护进程服
务来管理的。Xinetd服务会同时监听系统的多个端口,然后根据用户请求的端口号调取相对
应的服务程序来响应请求。开启TFTP服务,只需在xinetd服务的配置文件中将disable参
数改成no就可以了。

由于centos系统中未安装xinetd包,需要手动去安装。
[root@server ~]# yum install -y xinetd

3.4 配置TFTP

[root@server ~]# vim /etc/xinetd.d/tftp 

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot  #<-tftp的目录
        disable                 = no #<-开启tftp改为no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

TFTP是由xinetd网络守护进程所管理的,所以修改完之后,要重启的是xinetd
[root@server ~]# systemctl restart xinetd
TFTP服务默认使用的是UDP协议,占用端口为69,所以要通过firewall防火墙写入允许策略。

[root@server ~]# firewall-cmd --permanent --add-port=69/udp
[root@server ~]# firewall-cmd --reload

3.5 配置SYSlinux服务

Syslinux是一个用于提供引导加载的服务。
[root@server ~]# yum install  -y syslinux
需要把syslinux提供的引导文件复制到TFTP服务的默认目录中,这样客户端主机就能顺利
的获取到引导文件。在centos7系统光盘中也有需要调取的引导文件。

[root@server ~]# cd /var/lib/tftpboot/
[root@server tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@server tftpboot]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
[root@server tftpboot]# cp /media/cdrom/isolinux/{vesament.c32,boot.msg} .

然后在TFTP目录中新建一个pexlinux.cfg目录,将系统光盘中的开机选项菜单复制到该目录中,并命名为default。

[root@server tftpboot]# mkdir pxelinux.cfg
[root@server tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default 
默认的开机菜单中有两个选项,一个是安装系统,一个是对安装介质进行检验。本次实验要
求是无人值守安装系统,编辑default文件,将default参数改为linux,将默认的光盘镜
像安装方式修改成http方式(也可以使用ftp/nfs方式只需在64行修改即可),并指定光盘镜像的获取地址以及kickstart应答文件的获取
路径:

[root@server tftpboot]# vim pxelinux.cfg/default 
   1 default linux
   64 append initrd=initrd.img inst.repo=http://192.168.10.10/iso #<-内核启动选项需要加载的文件
ks=http://192.168.10.10/pub/ks.cfg quiet #<-ks存放的路径

3.6 配置httpd服务

本次实验选择光盘镜像是通过HTTP协议传输,因此要用httpd服务。

[root@server ~]# yum install -y httpd
[root@server ~]# systemctl start httpd

在防火墙写入策略
[root@server ~]# firewall-cmd --permanent --add-service=http
[root@server ~]# firewall-cmd --reload
将已经挂载的光盘镜像拷贝到http服务的工作目录中:

[root@server ~]# mkdir /var/www/html/iso
[root@server ~]# cp -r /media/cdrom/* /var/www/html/iso/

拷贝完成后,可通过浏览器访问查看:
在这里插入图片描述

3.7 创建ks应答文件

KickStart应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调用这个应答文件的内容,从而实现了无人值守安装系统。将root目录下的anaconda-ks.cfg应答文件复制到http服务的工作目录中,并授权。

[root@server ~]# mkdir /var/www/html/pub
[root@server ~]# cp ~/anaconda-ks.cfg /var/www/html/pub/ks.cfg 
[root@server ~]# chmod +r /var/www/html/pub/ks.cfg 

通过浏览器访问测试:
在这里插入图片描述

然后将光盘镜像安装方式修改成http协议,填写http服务器的IP地址、时区修改为上海、
磁盘选项设置为清空并初始化磁盘。

[root@server ~]# vim /var/www/html/pub/ks.cfg 
  6 url --url=http://192.168.10.10/iso
  25 timezone Asia/Shanghai --isUtc
  30 clearpart --all --initlabel

四、开始自动部署客户机

新建一个虚拟机,选择稍后安装操作系统
在这里插入图片描述
将网络适配器设置为仅主机模式
在这里插入图片描述

4.1 启动虚拟机

在这里插入图片描述
等待加载完毕后,会自动安装操作系统
在这里插入图片描述
安装成功后,只需手动点击reboot重启即可
在这里插入图片描述

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想敲代码的运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值