linux 搭建kickstart 无人值守安装详解

一、概念
1.1 PXE
PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像(引导程序,如mbr),并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
1.2 PXE的工作过程:

  1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
  2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
  3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;
  4. PXE Client 取得pxelinux.0 文件后之执行该文件;
  5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;
  6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;
    详细工作流程,请参考下面这幅图:

这里写图片描述
1.3 Kickstart
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
Syslinux是一个功能强大的引导加载程序,而且兼容各种介质。他的目的是简化首次安装linux的时间,并建立修护或其他特殊用途的启动盘。它的安装很简单,一旦安装好syslinux之后,syslinux启动盘就可以引导各种基于DOS的工具,以及MS-OS/windows或者其他操作系统,不仅采用BIOS结构的主板,而且从6.0版本也开始支持采用EFI结构的新型主板。
Xinetd已经取代了inetd,并且提供了访问控制、加强的日志和资源管理功能,已经成了Red Hat 7 和 Mandrake 7.2的Internet标准超级守护进程。

  • 支持对tcp、udp、RPC服务(但是当前对RPC的支持不够稳定)
  • 基于时间段的访问控制
  • 功能完备的log功能,即可以记录连接成功也可以记录连接失败的行为
  • 能有效的防止DoS攻击(Denial of Services)
  • 能限制同时运行的同一类型的服务器数目
  • 能限制启动的所有服务器数目
  • 能限制log文件大小
  • 将某个服务绑定在特定的系统接口上,从而能实现只允许私有网络访问某项服务
  • 能实现作为其他系统的代理。如果和ip伪装结合可以实现对内部私有网络的访问
    它最大的缺点是对RPC支持的不稳定性,但是可以启动protmap,与xinetd共存来解决这个问题。
    xinetd用括号括起的、扩展了的语法取代了inetd中的通用的行。另外,还添加了日志和访问控制功能。 虽然inetd可以使用Venema的 tcp_wrappers软件(tcpd) 控制 TCP 的连接,但是你不能用它来控制 UDP 连接。此外,inetd对RPC(portmapper)类型的服务也处理不好。另外,虽然使用 inetd 你可以控制连接速度 ( 通过给wait或是no wait 变量附加一个数值,例如nowait.1表示每隔一秒钟一个实例),你不能控制实例的最大数。这能导致进程表攻击(例如,一个有效的拒绝服务攻击)。通过使用xinetd,我们可以防止Dos。
    xinetd 对所有的服务都进行纪录,日志保存到文件 /var/adm/xinetd.log中,并且使用配置文件/etc/xinetd.conf。
    开机—>bios自检—>MBR(硬盘的主引导记录)
    PXE+Kickstart 无人值守安装操作系统完整过程如下:
    这里写图片描述

二、步骤
服务机大概步骤

  1. 配置DHCP服务,为客户机创建ip
  2. 配置TFTP服务器,允许任何数量的客户端连接同时进行
  3. 准备引导的相关文件
  4. 安装镜像
  5. 创建ks应答文件

服务器需要安装的软件

yum install dhcp xinetd tftp-server vsftpd syslinux system-config-kickstart

2.1服务器配置 ip 192.168.142.200
2.1 .1DHCP服务配置
1)安装dhcp软件

[root@localhost ~]# yum install dhcp –y

2)修改dhcp服务配置文件/etc/dhcp/dhcpd.conf

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
指定引导文件
filename "pxelinux.0";
指定引导文件服务器
next-server 192.168.142.200;
声明网段和掩码
subnet 192.168.142.0 netmask 255.255.255.0 {
指定网关
        option routers 192.168.142.1;
指定掩码
        option subnet-mask 255.255.255.0;
指定dns
        option domain-name-servers 114.114.114.114;
指定地址池范围
        range dynamic-bootp 192.168.142.200 192.168.142.250;
默认租约
        default-lease-time 60;
最大租约
        max-lease-time 60;
}

3)起服务dhcpd ,检查状态

  [root@localhost ~]# systemctl restart dhcpd
  [root@localhost ~]# systemctl status dhcpd

2.1.2配置TFTP服务器
1)安装软件xinetd 和tftp-server

[root@localhost ~]# yum install xinetd.x86_64 tftp-server.x86_64 -y 

2)修改tftp配置文件/etc/xinetd.d/tftp

[root@localhost ~]# vim /etc/xinetd.d/tftp
修改tftp配置文件
server_args             = -s /tftpboot
开启服务开关
disable                 = no

修改后的文件内容如下

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

3)启动服务tftp

并查看服务状态

[root@mail ~]# systemctl restart tftp
[root@mail ~]# systemctl status tftp

在7.0系统中如果服务无法启动,使用以下命令进行启动

systemctl start tftp.socket

检查服务端口状态

[root@mail ~]# lsof -i:69

4)启动xinetd服务,并检查状态

[root@mail ~]# systemctl restart xinetd
[root@mail ~]# systemctl status xinetd

2.1.3准备引导的相关文件*

1)创建网络引导配置文件目录/tftpboot/pxelinux.cfg

[root@mail ~] mkdir -p /tftpboot/pxelinux.cfg

2)复制引导文件

[root@mail ~] cp /usr/share/syslinux/pxelinux.0 /tftpboot/

3)复制系统映像

[root@mail ~] cp /mnt/images/pxeboot/initrd.img /tftpboot/

4)复制系统内核

[root@mail ~] cp /mnt/images/pxeboot/vmlinuz /tftpboot/

5)复制引导配置文件

cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

6)变更配置文件权限

[root@mail ~] chmod 644 /tftpboot/pxelinux.cfg/default

7)修改配置文件/tftpboot/pxelinux.cfg/default

[root@localhost ~]# vim /tftpboot/pxelinux.cfg/default

修改第一行
default linux
修改第64行
append initrd=initrd.img ks=ftp://192.168.142.200/ks.cfg

2.1.4准备安装镜像(采用ftp)*
方法一: [FTP]

启动FTP服务

[root@mail ~] systemctl start vsftpd

查看FTP服务状态

[root@mail ~] systemctl status vsftpd

查看服务端口启用状态

[root@mail ~]# lsof -i:21

挂载系统镜像到共享目录

[root@mail ~] mount /dev/sr0 /var/ftp/pub/

可通过windows系统的浏览器才确认服务访问情况
这里写图片描述
方法二 :[HTTP]

安装HTTPD服务

[root@mail ~]# yum install httpd -y

复制系统安装文件到/var/www/html目录下

[root@mail ~]# cp -r /mnt/* /var/www/html/

复制KS文件到/var/www/html目录下

[root@mail ~]# ll /var/www/html/ks.cfg

启动HTTPD服务

[root@mail ~]# systemctl start httpd

检查HTTPD服务状态

[root@mail ~]# systemctl status httpd

检查HTTPD服务端口

[root@mail ~]# lsof -i:80

可通过windows系统的浏览器才确认服务访问情况

注意:需要修改default文件的ks文件路径

[root@mail ~] vi /tftpboot/pxelinux.cfg/default
64  append initrd=initrd.img ks=http://192.168.171.204/ks.cfg

注意:需要修改KS应答文件中的系统安装资源目录

[root@mail ~]# vi /var/www/html/ks.cfg 
 Use network installation
url --url="http://192.168.171.204/"

方法三:[NFS]

编辑NFS配置文件

[root@mail ~]# vi /etc/exports

配置文件内容如下:

[root@mail ~]# cat /etc/exports
/var/www/html        *(ro)

启动NFS服务

[root@mail ~]# systemctl restart nfs

检查服务状态

[root@mail ~]# systemctl status nfs

检查服务端口状态

[root@mail ~]# netstat -lntp | grep 111
[root@mail ~]# netstat -lntp | grep 2049

可通过其他linux主机进行远程挂载共享目录来测试服务启动情况

[root@qq ~]# mount -t nfs 192.168.171.204:/var/www/html /mnt

注意:需要修改default文件的ks文件路径

[root@mail ~] vi /tftpboot/pxelinux.cfg/default
64   append initrd=initrd.img ks=nfs:192.168.171.204:/var/www/html/ks.cfg

注意:需要修改KS应答文件中的系统安装资源目录

[root@mail ~]# vi /var/www/html/ks.cfg 
Use network installation
nfs --server=192.168.171.204 --dir=/var/www/html

2.1.5创建ks应答文件
1)安装system-config-kickstart.noarch

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

2)使用图形化界面创建一个ks应答文件system-config-kickstart

[root@localhost ~]# system-config-kickstart

这里写图片描述

1.基本设置
选择时区为亚洲上海
设置root密码
勾选安装后重启

2.安装方法
选择执行全新安装
FTP 输入服务器地址192.168.142.200,FTP目录为pub

3.引导装载程序选项
选择安装新引导装载程序

4.分区
添加/分区2000,/boot为200,swap 分区为2000

5.网络配置和验证
不需要改

6.防火墙配置
禁用selinux和防火墙

7.剩下的都不用改

8.选择文件保存,保存在文件系统根目录/var/pub,再保存,退出

查看

[root@localhost ~]# ll /var/ftp
[root@localhost ~]# cat /var/ftp/ks.cfg

3)重启服务dhcpd、xinetd、tftp.socket、vsftpd,关闭防火墙和selinux

[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl restart xinetd.service 
[root@localhost ~]# systemctl restart tftp.socket 
[root@localhost ~]# systemctl restart vsftpd

意关闭防火墙和selinux
[root@localhost pxelinux.cfg]# systemctl stop firewalld
[root@localhost pxelinux.cfg]# setenforce 0

2.1客户机设置
客户机和服务机是相同的模式(都是仅主机或者其它)

2.1.1新建一个客户机,最好选择40G,(不上传镜像)开机测试
1)测试

2)软件选择KDE
如果创建客户机时,虚拟机的磁盘太小,(最好是40G),图形界面创建应答文件时的分区就会没有生效,手动设置分区(INSRTALLATION DESTINATION),

3)开始安装

猜你喜欢

转载自blog.csdn.net/ningjiu9/article/details/82052859