PXE+Kickstart 批量装机 无人值守装机

发表于 2023-05-10  587 次阅读


作者:Scanz

更新版本:V1(20180403初版,待更新格式)

----------------------------------------------

传统装机的局限性

       服务器本机没有光驱?

       因测试需要,经常要安装新的操作系统?

       为一批服务器安装操作系统?

网络装机的优势

       规模化:同时装配多台主机

       自动化:装系统、配置各种服务

       远程实现:不需要光盘、U盘等物理安装介质

什么是PXE网络

       PXE,Pre-boot eXecution Environment

             预启动执行环境,在执行操作系统之前运行

             可用于远程安装、构建无盘工作站

       工作模式

             PXE client集成在网卡ROM中

             当计算机引导时,BIOS把PXE client调入内存执行,

             获取PXE server配置、显示菜单、根据用户选择将远程操作系统下载到本机运行

PXE组件及过程分析

       需要那些服务?

             DHCP,分配IP地址、定位引导程序(指定找谁下载系统启动和初始化文件next-server pxelinux.0 tftp-server(UDP))

             DNS服务,为客户机分配主机名

             TFTP服务,提供引导程序下载

             FTP服务(或HTTP/NFS),提供yum安装源

       客户机应具备的条件

             网卡ROM必须支持PXE协议

             主板支持网络启动

整体配置思路

       装机条件准备

             准备安装源(FTP方式YUM库)

             启动DNS服务(可选)

             启用DHCP服务

                    next-server TFTP服务地址;              

                    filname"引导文件名";

       PXE引导配置

             启用TFTP服务,提供装机用的内核、初始化文件

             提供PXE引导程序、配置启动菜单

客户端        网卡支持PXE

客户端 选择网卡启动

 PEX发送

       DHCP 分配IP 告知BootServer并ftp

/*

[root@svr5 ~]# yum search pxelinux

已加载插件:product-id, security, subscription-manager

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

============================== Matched: pxelinux ===============================

syslinux.x86_64 : Simple kernel loader which boots from a FAT filesystem

*/

server端:

       配置IP yum仓库

       yum -y install dhcp tftp-server bind bind-chroot xinetd vsftpd|httpd

       vim/etc/dhcp/dhcpd.conf

       see "/usr/share/doc/xxx/"

----------------------------------------------无人值守安装------------------------------------------

什么是kickstart技术

       无人值守/自动应答

             预先提供应答文件,定义好各种安装设置

             免去交互过程,实现全自动化安装

             添加%post脚本,可执行安装后的各种配置

应答文件从那来

       两种方法

             /root/anaconda-ks.cfg      找一台客户机获取应答文件模板

             system-config-kickstart    安装工具创建新的应答文件

       生成应答文件的客户机、YUM库的版本应该与待安装系统一致

       修改后部署到PXE服务器的 /var/ftp/ks-el6.cfg

       确保客户机可成功下载ftp://xxx/ks-el6.cfg

创建安装RHEL6系统的应答文件:

1. 找一台支持图形桌面的RHEL6的计算机

2. 安装system-config-kickstart

3. 整理YUM仓库设置(只保留RHEL6库、禁用其他库)

4. 启动system-config-kickstart,建立新的应答文件

PXE必须具备条件

DHCP and TFTP Server

PXE Server

PXE 安装包,配置文件

BIOS支持

NIC支持

PXE介绍

               PXE:名词解释为预启动执行环境,他是基于TCP/IP、DHCP、TFTP等Internet协议之上的扩展网络协议,是一种新技术,PXE技术提供的从网络启动的功能

DHCP工作原理

               DHCP 允许您通过本地网络上的DHCP服务器IP地址数据库为客户端动态指派IP地址;

TFTP介绍安装

               Tftp全称为Trivial File Transfer Protocol,中文名叫简单文件传输协议。大家可以从它的名称上看出,它适合传送“简单”的文件。与FTP不同的是,它使用的是UDP的69端口,因此它可以穿越许多防火墙。不过它也有缺点,比如传送不可靠、没有密码验证等

               如果你的Server上没有安装TFTP,那么需要如下文件:tftp-server-0.32-4rpm

               DHCP and TFTP Server > PXE Server > Client

               DHCP and TFTP Server > PXE Server > Client

               DHCP and TFTP Server > Client

               DHCP and TFTP Server > Client

PXE实现方法

               Liunx环境

               Windows环境

Linux PXE installation process

               1.Download PXE rpm package and configure file ,as below;

                              pxe-0.1-31.99.7.3.i386.rpm

                              pxe-1.4.2.tar.gz

               2.Copy the RPM and configure file to a temp

                              pxe-0.1-31.99.7.3.i386.rpm

                              pxe-1.4.2.tar.gz

                              pxeconf.tgz

               3.Installation PXE run the command as below

                              rpm -ivh pxe-0.1-31.99.7.3.i386.rpm

               4.Tar the pxeconfig.tgz file from the temp

                              tar zxvf pxeconfig.tgz

                              tftpboot/X86PC/UNDI/pxelinux/pxelinux.cfg/default

               5.Below is pre-install pxe state

                              cd tftpboot/

                              cd tftpboot/X86PC/UNDI

               6.Below is after install the pxe state

                              cd tftpboot/X86PC/UNDI/pxelinux/

               7.Copy the all tar file to root boot directory

                              cp * / -rf

                              cd /tftpboot/X86PC/UNDI/pxelinux/

               8.Copy Linux boot file and kernel to pxelinux

                              pwd ../pxelinux/

                              cp initrd.img u332/

                              cp vmlinuz u32/

                              vim pxelinux.cfg/defaul

               9.Edit the configure file

                              vim pxelinux.cfg/defaul

                                             default linux

                                             prompt 1

                                             timeout 600

                                             display boot.msg

                                             F1 boot.msg

                                             F2 options.msg

                                             F3 general.msg

                                             F4 param.msg

                                             F5 rescue.msg

                                             F7 snake.msg

                                             label linux

                                                            kerner vmlinuz

                                                            append initrd=initrd.img

                                             label u332

                                                            kerner u332/vmlinuz

                                                            append initrd=u332/initrd.img ks=http://10.141.38.88/ks/ks.cfg

配置TFTP Server

               vim /etc/xinetd.d/tftp

                              disable = no                                      开机自启

                              server_args = -s /tftpboot             根目录

启动服务及禁用防火墙

               启动TFTP服务:

                              service xinerd restart

               启动PXE服务:

                              service pxe restart

               禁用防火墙:

                              service iptables stop

                              service ip6tables stop

               重新启动服务器时自动禁用防火墙:

                              chkconfig iptabls off

                              chkconfig ip6tables off

远程启动PXE

               启动Client,确保BIOS设置正确

               确保LAN ROM 支持 PXE

               在BIOS自检时按F12从这个Network引导,实现远程安装或启动

               执行Pxelinux.0

               调用配置PXE文件

启动PXE所需文件介绍

               pxelinux.0为bootstrap文件,负责系统的引导和启动,

               Bootstrap文件pxelinux.0放置在/tftpboot中。Linux内核以及Linux根文件系统也放置在/tftpboot。pxelinux.0在执行过程中,要读配置文件。

               所有配置文件都放在/tftpboot/X86PC/UNDI/pxelinux/pxelinux.cfg/目录下

安装Linux所需要引导文件

               Vmlinuz

               Linitrd.img

               以上两个Linux启动文件可通过RedHat第一张光盘/images/pxeboot/下可找到

实验拓扑:

                                                            rh6_node1

-----CentOS6.7(private1)----------(private1)

                                                            rh6_node2

实验一:案例环境准备:

KVM虚拟化服务器,真机或高配虚拟机(内存>4G)

主机名:kvmsvr.tarena.com

分区示例:

        /boot  200MB、SWAP 8GB、/  100GB、

       操作系统:CentOS 6.5  ==> 关闭 iptables 防火墙、关闭SELinux机制,进图形桌面

                                           ==> 关闭 NetworkManager 服务

[root@kvmsvr ~]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=kvmsvr.tarena.com

[root@kvmsvr ~]# hostname kvmsvr.tarena.com

[root@kvmsvr ~]# grep kvmsvr /etc/hosts

192.168.4.1     kvmsvr.tarena.com           

[root@kvmsvr ~]# iptables -F                     //清除iptables防火墙

[root@kvmsvr ~]# service iptables save

[root@kvmsvr ~]# vim /etc/sysconfig/selinux  //关闭Selinux

...

SELINUX=disabled

...

[root@kvmsvr ~]# setenforce 0

[root@kvmsvr ~]# getenforce

Disabled

实验二:基于CentOS 6.5构建KVM服务器平台

安装KVM虚拟化条件:

首先CPU要支持虚拟化(Intel是vmx,AMD是svm)

[root@kvmsvr ~]# egrep '(vmx|svm)' --color /proc/cpuinfo

确保BIOS里开启VT

Intel(R) Virtualization Tech [Enabled]

[root@kvmsvr ~]# yum repolist

[root@kvmsvr ~]# echo $LANG

[root@kvmsvr ~]# LANG=en

安装 KVM 虚拟化相关软件、启用服务

[root@kvmsvr ~]# yum -y groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools"

//不要用/etc/init.d/libvirtd start

[root@kvmsvr ~]# service libvirtd restart  

[root@kvmsvr ~]# chkconfig libvirtd on

建议:把vmnet1的ip修改为192.168.5.1

[root@kvmsvr ~]# ifconfig vmnet1

[root@kvmsvr ~]# virt-manager                 //调出kvm控制台

实验三:添加virbr1隔离接口

[root@kvmsvr ~]# service NetworkManager stop

[root@kvmsvr ~]# chkconfig NetworkManager off

1.虚拟系统管理器 --> 编辑 --> "Connection Details"

   单击"+"号 --> network1 --> 192.168.4.0/24

    不要启用KVM自带的DHCP

    !!!! 避免VMware Workstation的虚拟网卡的冲突

2.确认新添加的虚拟网卡

[root@kvmsvr ~]# ifconfig virbr1

...192.168.4.1

实验四:添加br0桥接接口、准备虚拟机存储

1. 建立桥接网卡 br0

[root@kvmsvr ~]# cp /etc/sysconfig/network-scripts/ifcfg-{eth0,br0}

[root@kvmsvr ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0  //调整 br0 配置

DEVICE=br0                                      //新建的连接名称

TYPE=Bridge                                     //连接类型

ONBOOT=yes

NM_CONTROLLED=no                   //不接受NetworkManager管理

BOOTPROTO=dhcp                         //参考原eth0网卡的IP地址

.. ..

[root@kvmsvr ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0  //调整 eth0 配置

DEVICE=eth0

TYPE=Ethernet

.. ..

BRIDGE=br0                                     //桥接到br0

[root@kvmsvr ~]# service network restart

[root@kvmsvr ~]# ifconfig br0

br0       Link encap:Ethernet  HWaddr 00:0C:29:F9:C9:F8 

          inet addr:172.30.6.173 Bcast:192.168.20.255  Mask:255.255.255.0

.. ..

2.准备虚拟机磁盘

    建立一个不小于40G的文件系统,挂载到 /data/

[root@kvmsvr ~]# fdisk -l /dev/sda

[root@kvmsvr ~]# fdisk -l /dev/sda |grep sda

Disk /dev/sda: 500.1 GB, 500107862016 bytes

/dev/sda1   *           1          26      204800   83  Linux

/dev/sda2              26       31897   256000000   83  Linux

/dev/sda3           31897       32917     8192000   82  Linux swap / Solaris

/dev/sda4           32917       60801   223986208+   5  Extended

/dev/sda5           32917       38139    41953660+  83  Linux

[root@kvmsvr ~]# partx -a /dev/sda

[root@kvmsvr ~]# mkfs.ext4 /dev/sda5

[root@kvmsvr ~]# mkdir /data/

[root@kvmsvr ~]# echo "/dev/sda5 /data ext4 defaults 0 0" >> /etc/fstab

[root@kvmsvr ~]# mount -a

[root@kvmsvr ~]# mkdir -p /data/images

[root@kvmsvr ~]# df -hT |grep /data

/dev/sda5                           ext4      40G  176M   38G   1% /data

[root@kvmsvr ~]# dd if=/dev/zero of=/data/images/node1.img bs=10M count=1000

.. .. //用来装第一个RHEL 6.5虚拟机

实验五:准备PXE服务器(修改一下dhcp监听接口,其他步骤略...)

服务范围:virbr1 网络

目标功能:客户机可选装RHEL6.5、CentOS6.5系统,kickstart自动应答

1.为客户机准备软件源(RHEL6.5)

1)安装并启用vsftpd服务

2)发布yum仓库配置文件,供客户机下载

2.配置dhcpd服务

1)能够为192.168.4.0/24网段的客户机分配IP地址

2)告知 TFTP 服务器相关信息

        next-server  192.168.4.1;

        filename  "pxelinux.0";

3)调整dhcpd服务的监听接口(避免影响真机网络)

[root@kvmsvr ~]# vim /etc/sysconfig/dhcpd

DHCPDARGS="virbr1 vmnet1"

[root@kvmsvr ~]# service dhcpd restart

3. 配置tftp-server

1)为PXE客户机提供启动配置、RHEL6内核及引导文件

2)提供CentOS 6.5和RHEL 6.5的kickstart应答文件

实验六:KVM虚拟机管理(virt-manager工具)

1. 运行虚拟机管理器

    !!!! 桌面环境 --> 应用程序 --> 系统工具 --> 虚拟系统管理器

    !!!! 或直接运行virt-manager命令打开

    —— 默认连接到本机的KVM服务平台进行管理

2. 新建一台虚拟机

    名称:rh6_n1

    内存:1024M

    网卡:virbr1

    磁盘:/data/images/node1.img

3. 通过PXE方式为此虚拟机安装系统

    安装过程全自动,完成后登入系统

    检查 YUM 等安装后设置是否自动配置好

    .. ..

实验七:在Host OS ssh Guest OS不需要输入密码

管理机(私钥) --> KVM服务器(公钥)

1.在物理机上创建SSH秘钥对,并部署公钥文件

[root@pxesvr ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

2.把生成的公钥上传到虚拟机里面去

[root@pxesvr ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.4.9

3.测试

[root@pxesvr ~]# ssh -X root@192.168.4.9

Last login: Tue Jan 20 15:53:18 2015 from 192.168.4.1

[root@localhost ~]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 52:54:00:D3:A2:B3 

          inet addr:192.168.4.9  Bcast:192.168.4.255  Mask:255.255.255.0

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

scanz个人博客