如何使用pxe网络批量安装Linux系统

1 PXE+DHCP+TFTP网络批量安装系统

PXE(preboot execute environment,预启动执行环境)工作于Client/Server的网络模式,支持多台服务器节点通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicasttrivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

1.1 准备条件

1.1.1关闭selinux和防火墙

systemctlstop firewalld # 关闭防火墙

systemctldisable firewalld #永久关闭firewalld

sestatus                    # 查询selinux状态

systemctlstatus firewalld      #查询防火墙状态

1.1.2配置yum源

解压系统镜像文件到root/redhat_7.2,cd /etc/yum.repo.d/,隐藏其他的repo配置文件,自定义repo文件,使用本地yum源配置文件development.repo

#more/etc/yum.repo.d/development.repo

[development]  注意:这里一定要写development,方便以后通过工具kickstart导出ks.cfg文件

name=development

baseurl=file:///root/redhat_7.2

gpgcheck=0

1.2 PXE环境配置

1.2.1 配置DHCP服务

vim /etc/dhcp/dhcpd.conf

default-lease-time 21600; 

max-lease-time 43200;

ddns-update-style none;

option routers 172.30.3.73;

option broadcast-address 172.30.3.255;

option domain-name-servers 172.30.3.73;

option subnet-mask 255.255.255.0;

subnet 172.30.3.0 netmask 255.255.255.0 {

  rangedynamic-bootp 172.30.3.1 172.30.3.253;

  optionsubnet-mask 255.255.255.0;

 next-server 172.30.3.73;

  filename"pxelinux.0";

}

/etc/init.d/dhcpd start  #启动dhcp服务

1.2.2 配置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 /install/tftpboot   重点在这里!改成这样即可

        disable = no    这里改为no

       per_source = 11

        cps= 100 2

       flags = IPv4

}

mkdir -p /install/tftpboot

chcon --reference /var/lib/tftpboot/install/tftpboot

chcon --reference /var /install

ll -dZ /install/tftpboot

/etc/init.d/xinetd restart

chkconfig xinetd on

chkconfig tftp on

netstat -tulnp | grep xinetd

1.2.3 准备启动文件

syslinux:

cp /usr/share/syslinux/menu.c32 /install/tftpboot/

cp /usr/share/syslinux/vesamenu.c32 /install/tftpboot/

cp /usr/share/syslinux/pxelinux.0 /install/tftpboot/

mkdir /install/tftpboot/pxelinux.cfg

mkdir -p /install/tftpboot/kernel/redhat_7.2

cp /root/redhat_7.2/isolinux/vmlinuz /install/tftpboot/kernel/redhat_7.2

cp /root/redhat_7.2/isolinux/initrd.img /install/tftpboot/kernel/redhat_7.2

cp /root/redhat_7.2/isolinux/isolinux.cfg /install/tftpboot/pxelinux.cfg/demo

vim /install/tftpboot/pxelinux.cfg/default

UI vesamenu.c32

TIMEOUT 300

DISPLAY ./boot.msg

MENU TITLE Welcome to VBird's PXE Server System

LABEL local

  MENU LABEL Boot from localdrive

  MENU DEFAULT

  localboot 0

LABEL network1

  MENU LABEL boot from PXEServer for Install RedHat 7.2

  kernel./kernel/redhat_7.2/vmlinuz

  appendinitrd=./kernel/redhat_7.2/initrd.img

vim /install/tftpboot/boot.msg

Welcome to Rainman's PXE Server System.

The 1st menu can let you system to hard diskmenu.

The 2nd menu can initial interactive installationstep.

1.2.4 http配置

/etc/init.d/httpd start

mkdir -p /var/www/html/install/redhat_7.2

cp –r /root/redhat_7.2/* /var/www/html/install/redhat_7.2/

/etc/init.d/httpd restart

www: http://172.30.3.73/install/

(配置到这一步了!)

准备Kickstart:

mkdir -p /var/www/html/install/kickstart

chmod 644 ks.cfg

pxeboot default:

vim /install/tftpboot/pxelinux.cfg/default

LABEL kickstart

  MENU LABEL  Boot from PXE Server for auto Install RedHat7.2

  MENU DEFAULT

  kernel./kernel/redhat_7.2/vmlinuz

appendinitrd=./kernel/redhat_7.2/initrd.imgks=http://172.30.3.73/install/kickstart/ks.cfg

1.3 制作ks.cfg文件

1.3.1导出ks.cfg文件

终端输入system-config-kickstart,从这里可以做一些安装系统前的基本配置:

选择软件包,尽量选全:

保存导出ks.cfg文件

1.3.2修改ks.cfg文件

说明:ks.cfg文件主要包括三部分:%package之前为命令段,可以设置键盘类型,语言,安装方式,密码,时区,系统分区,关闭防火墙等系统配置;%package--%end为系统所安装的软件包;%post--%end(红色方框部分)为后安装脚本,可以实现安装系统后自动配置ip和主机名等操作,相关配置文件和脚本程序serialnumlist,read_serial_config.sh见1.4节。

1.4 脚本程序-自动配置ip和主机名

通常我们在装完系统后,需要手动配置节点ip,主机名以及安装ib驱动等,接下来,我们将介绍通过识别节点序列号,实现安装操作系统后,自动进行以上配置。

1.4.1节点序列号文件

第一列为节点序列号,可通过dmidecode -t 1 | grep ‘Serial Number’查询得到,通过使用ipmitool工具使用带外批量收集2,3,4列分别该节点序列号所对应的以太网ip,IPMI管理网ip地址以及主机名。

1.4.2脚本程序文件

#more read_serial_config.sh

#!/bin/bash

if [ `whoami` != root ];then

  echo "Error:You must login as root" 1>&2

  exit -10

fi

MEING_DIR=$(readlink -f $(dirname $0))

MELIST=$MEING_DIR/serialnumlist

NUM=`dmidecode -t 1 |grep "SerialNumber"|uniq|awk '{print $3}'`

serial_ip=`cat $MELIST |awk '($1=="'$NUM'"){print $2}'`

#serial_ib_ip=`cat $MELIST |awk '($1=="'$NUM'"){print $3}'`

serial_ipmi_ip=`cat $MELIST |awk'($1=="'$NUM'") {print $3}'`

serial_hostname=`cat $MELIST |awk'($1=="'$NUM'") {print $4}'`

SET_ETH0_IP()

{

cd /etc/sysconfig/network-scripts

mv ifcfg-ens7f0 ifcfg-ens7f0.bak

cat > ifcfg-ens7f0

TYPE=Ethernet

BOOTPROTO=static

NAME=ens7f0

DEVICE=ens7f0

ONBOOT=yes

IPADDR=$serial_ip

NETMASK=255.255.255.0

GATEWAY=172.30.3.254

END

}

#SET_IB0_IP()

#{

#cd /etc/sysconfig/network-scripts

#mv ifcfg-ib0 ifcfg-ib0.bak

#cat > ifcfg-ib0

#DEVICE=ib0

#BOOTPROTO=static

#TYPE=Ethernet

#NM_CONTROLLED=no

#IPADDR=$serial_ib_ip

#NETMASK=255.255.0.0

#USERCTL=no

#IPV6INIT=no

#ONBOOT=yes

#END

#}

SET_IPMI_IP()

{

ipmitool lan set 1 ipsrc static

ipmitool lan set 1 netmask 255.255.0.0

ipmitool lan set 1 ipaddr $serial_ipmi_ip

}

SET_HOSTNAME()

{

cd /etc/

rm hostname -f

cat > hostname

$serial_hostname

END

}

SET_ETH0_IP

#SET_IB0_IP

SET_HOSTNAME

SET_IPMI_IP

1.4.3后安装脚本

有了以上serialnumlist序列号文件和read_serial_config.sh脚本程序,接下来我们在ks.cfg文件最后添加后安装脚本程序如下(见1.3.2中图片红色方框):

#vim ks.cfg

%post

mkdir -p /opt/cluster_configuration

wget -P/opt/cluster_configuration http://172.30.3.73/install/cluster_configuration/serialnumlist

wget -P/opt/cluster_configuration http://172.30.3.73/install/cluster_configuration/read_serial_config.sh

cd /opt/cluster_configuration

chmod a+x read_serial_config.sh

sh read_serial_config.sh

service network restart

service NetworkManager stop

chkconfig NetworkManager off

%end

1.5 批量安装操作系统

需要安装的机器开机,并从网络启动(对于刀片服务器,可以通过刀箱ipmi地址登录到远程管理界面,从中设置pxe网络启动),正常无人值守安装操作系统,安装过程如下:

登录服务器bmc设置从pxe启动或开机按f12,不同厂商的服务器可能开机按键不同

再或这使用ipmitool工具批量设置服务器从pxe网络启动

至此,安装完毕。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

技术瘾君子1573

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

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

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

打赏作者

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

抵扣说明:

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

余额充值