linux部署pxe+kickstart批量安装linux操作系统实施方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux部署pxe+kickstart批量安装linux操作系统实施方案相关的知识,希望对你有一定的参考价值。

一、PXE 简介

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服 务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

严格来说,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 上下载所需的文件了。

二、PXE的工作过程:

1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP(第一次获取ip),前提是BIOS开启pxe功能,本地网卡支持pxe功能;

2. DHCP 服务器返回分配给客户机的IP(第二次) 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;

3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;

4. PXE Client 取得pxelinux.0 文件后之执行该文件;

5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;

6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;

详细工作流程,请参考下面这幅图:

技术分享

三、Kickstart 简介

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

四、执行kickstart安装步骤

kickstart 安装可以使用本地光盘,本地硬盘驱动器,或通过 NFS,FTP,HTTP 来执行.
要使用 kickstart,必须:
1.创建一个kickstart文件.
2.创建有kickstart文件的引导介质或者使这个文件在网络上可用.
3.筹备安装树.
4.开始kickstart安装.

流程图如下:

技术分享


五、实验准备

物理机:redhat 6.4图形化

IP:10.0.0.1/16

实验环境:VMware Workstation 10

系统平台:redhat 6.4(最小化)

网络模式:NAT模式

DHCP / TFTP / FTP IP:10.0.0.2/16

所有服务器均支持PXE网络启动

实现目的:通过配置Kickstart服务器,全自动批量安装部署Linux系统

软硬件配置:网卡要支持pxe启动,操作系统也要支持pxe启动,另外有ftp服务器用于存储操作系统的安装文件,dhcp服务器用于分配ip。


六、具体部署步骤

1.关闭防火墙和selinux

[[email protected] ~]# yum -y install dhcp* tftp* vsftpd* syslinux

2.安装完毕检查包组

[[email protected] /]# rpm -qa | grep dhcp
dhcp-4.1.1-34.P1.el6.x86_64
dhcp-common-4.1.1-34.P1.el6.x86_64
[[email protected] /]# rpm -qa | grep vsftp
vsftpd-2.2.2-11.el6.x86_64
[[email protected] /]# rpm -qa | grep xinetd
xinetd-2.3.14-38.el6.x86_64

3.安装dhcp服务器

DHCP.conf介绍:

ddns-update-style interim:这个是动态获取IP地址啦。必须放在第一项哇。
ignore client-updates:服务端与客户端传输相关
Subnet:获取IP段,要配置正确。
Routers:是路由地址
Range:dhcp分配IP段。
next-server:是tftp地址。
Allow booting bootp:放行传输和协议。

4.具体步骤

[[email protected] /]# cp -rf /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

[[email protected] /]# vim /etc/dhcp/dhcpd.conf 

    subnet 10.0.0.0 netmask 255.255.0.0 {
      range dynamic-bootp 10.0.0.100 10.0.0.200; --->此部分代表该DHCP服务器支持PXE
      next-server 10.0.0.2;
      filename "pxelinux.0";       -->最基本的启动文件 //指向的是tftp-server的根目录
      option domain-name-servers 10.0.0.2;
      option domain-name "baidu.com";
      #这两条是DNS,如果没有DNS就不要写,环境不支持反解,写着个安装起来会很慢
      
      default-lease-time 600;
      max-lease-time 7200;
    }

5.启动服务

[[email protected] /]# service dhcpd start
Starting dhcpd:                                            [  OK  ]
[[email protected] /]# service dhcpd status
dhcpd (pid  3490) is running...
[[email protected] /]# chkconfig dhcpd on

6.检查syslinux包组

[[email protected] /]# rpm -ql syslinux| grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[[email protected] /]#

7.安装并配置pxelinux.cfg文件

[[email protected] /]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
提供引导菜单所需的文件(从RHEL6光盘上的isolinux目录中找)
[[email protected] cdrom]# cp -rf isolinux/* /var/lib/tftpboot/
[[email protected] cdrom]# ls /var/lib/tftpboot/
boot.cat  grub.conf   isolinux.bin  memtest     splash.jpg  vesamenu.c32
boot.msg  initrd.img  isolinux.cfg  pxelinux.0  TRANS.TBL   vmlinuz
[[email protected] cdrom]# 
[[email protected] tftpboot]# pwd
/var/lib/tftpboot
[[email protected] tftpboot]# mkdir pxelinux.cfg
[[email protected] tftpboot]# cp isolinux.cfg pxelinux.cfg/default
[[email protected] tftpboot]# 

[[email protected] tftpboot]# ls
boot.cat   initrd.img    memtest       splash.jpg    vmlinuz
boot.msg   isolinux.bin  pxelinux.0    TRANS.TBL
grub.conf  isolinux.cfg  pxelinux.cfg  vesamenu.c32
[[email protected] tftpboot]# mkdir rhel6
[[email protected] tftpboot]# cp vmlinuz initrd.img rhel6/
[[email protected] tftpboot]# ls rhel6/
initrd.img  vmlinuz
[[email protected] tftpboot]# 
[[email protected] tftpboot]# vim pxelinux.cfg/default
label linux
  menu label ^Install RHEL6 <manual>
  menu default
  kernel rhel6/vmlinuz             #kernel 参数指定要启动的内核。
  append initrd=rhel6/initrd.img   #append 指定追加给内核的参数,能够在grub 里使用的追加
  给内核的参数,在这里也都可以使用。
注:如果是要安装多版本镜像源就在tftpboot下每个版本创建一个目录,并在default下指定不同的位置。

8.配置xinetd服务

TFTP配置文件介绍:

Default:用在于tftp建立传输入协议后会去tftpboot里找文件,啥都找不着之后就会找default。

tftp-server :这个是用来传送引导文件的,

Initrd.img/vmlinux: 看用来安装前的一些工作。但tftp是用来传输这些文件的协议。

9.具体步骤:

[[email protected] tftpboot]# vi /etc/xinetd.d/tftp 
service tftp
{
        disable = no
        socket_type             = dgram
        protocol               = udp
        wait                 = yes
        user                 = root
        server                = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        per_source               = 11
        cps                  = 100 2
        flags                 = IPv4
}

10.启动服务:

[[email protected] tftpboot]# chkconfig xinetd on
[[email protected] tftpboot]# umount /mnt/cdrom/
[[email protected] tftpboot]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[[email protected]  tftpboot]#  cp -rf /mnt/cdrom/* /var/ftp/pub/
[[email protected] tftpboot]# service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[[email protected] tftpboot]# chkconfig vsftpd on
[[email protected] tftpboot]#
访问ftp里是否有镜像源,如果有则尝试安装,如果能安到安装软件包界面,则pxe安装成功。

11.网络结构:

如图为网络安装环境的一个原理示意,安装环境由一个局域网和连接到该局域网的启动服务器、安装服务器和待安装客户端,其中启动服务器和安装服务器可以部署在同一台物理机上。

服务相关作用:

Dhcpd: 分发IP地址。

Tftpd: 分发启动文件安装。

vsftpd:分发系统文件安装。


1.安装kickstart


1.在10.0.0.1服务器上创建kickstart文件

[[email protected] ~]# yum -y install system-config-kickstart
以下选项必选:
 基本配置密码 重新引导系统 文本安装
 安装方法 ftp 
 分区 清除主引导记录
 网络配置添加
 禁用防火墙

2.配置最小化安装文件内容

[[email protected] ~]# vim /root/ks.cfg  找到packages部分添加@core,最小化安装
%packages
@core 
%end
reboot

3.将做好的ks.cfg文件放到pxe服务器内

[[email protected] ~]# scp /root/ks.cfg [email protected]:/var/ftp/pub
[email protected]‘s password: 
ks.cfg                                        100%  975     1.0KB/s   00:00    
[[email protected] ~]# 
[[email protected] /]# vim /var/lib/tftpboot/pxelinux.cfg/default 
label linux
  menu label ^Install RHEL6 <manual>
  menu default
  kernel rhel6/vmlinuz ks=  #告诉系统,从哪里获取ks.cfg文件 
  append initrd=rhel6/initrd.img

kickstart到此安装完毕。

注:如果安装失败,则是服务没起或是生成kickstart有问题,需要重启生成,到此本次实验完满完成。



本文出自 “子非鱼” 博客,请务必保留此出处http://5323197.blog.51cto.com/5313197/1786744

以上是关于linux部署pxe+kickstart批量安装linux操作系统实施方案的主要内容,如果未能解决你的问题,请参考以下文章

linux部署pxe+kickstart批量安装linux操作系统实施方案

PXE装机linux(服务器的批量部署)

利用pxe dhcp tfcp http kickstart实现批量部署linux系统

PXE配置Kickstart实现高效批量安装——实现无人值守自动安装

Centos7 实战Kickstart 批量系统部署

自动化部署操作系统-Kickstart+PXE自动部署