您好,欢迎访问本站博客! 登录 后台管理
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
  • 七兮网络的资源,如有侵权请联系站长七兮删除!

利用PXE自动化安装centos7(批量安装centos7)

运维知识 七兮 2019-09-23 6742 次浏览 0个评论
0

前言

  PXE的功能及原理。大概解释一下意思就是:


启动计算机的时候如果没有插入U盘以及光驱等介质的话,boot启动项是有一个从PXE启动的选项,如果都没有则会从pxe启动。

PXE上的DHCP客户端会向DHCP服务器,申请IP地址,DHCP服务器分配一个IP址地给它,同时DHCP服务器还会告诉客户端配置文件名称以及TFTP服务器的地址,让PXE客户端去下载。

配置文件(一般是pxelinux.0)告诉PXE客户端系统的安装启动项是在pxelinux.cfg目录下面的default这个文件里。

PXE下载并依据配置文件的内容下载启动必须的文件,并通过kickstart.cfg 配置文件开始安装系统(七兮网络

环境准备

  这里我提前安装了一台centos7,来当服务器。


服务器需要安装:

dhcp服务:用来给刚开机的客户端分配ip地址以及告知配置文件和tftp服务器的IP地址。

tftp服务:用来给客户端提供所需配置文件的下载路径。

httpd/vsftpd服务:两者选一即可,用来让客户端下载镜像。

xinetd服务:用来接管tftp服务,来做一些策略。

syslinux: 需要从这里来拷贝pxelinux.0等文件。

总之一条命令:


[root@localhost tftpboot]# yum install dhcpd tftp-server httpd syslinux xinetd -y
#其中httpd可换成vsftpd,我这里就用httpd做了,就不安装vsftpd了

服务器需要的配置:

关闭防火墙

关闭防火墙

systemctl stop firewalld.service     
      #关闭防火墙
      systemctl disable firewalld.service  
      #取消防火墙开机自启动
      setenforce 0     
      #临时关闭防火墙
      getenforce       
      #获取防火墙状态
      把/etc/selinux/config 里的SELINUX=enforcing 改成 SELINUX=disabled 
      #来永久关闭selinux
      #centos 7 现在使用firewalld.service代替iptables,并且使用systemctl来管理比较方便#



配置静态ip

    因为dhcp服务器需要,所以需要把服务器更改成静态ip

  [root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens37
      TYPE="Ethernet"
      PROXY_METHOD="none"
      BROWSER_ONLY="no"
      BOOTPROTO="static"
      DEFROUTE="yes"
      IPV4_FAILURE_FATAL="no"
      IPADDR=192.168.2.1
      NETMASK=255.255.255.0
      NAME="ens37"
      DEVICE="ens37"
      ONBOOT="yes"
    #我这里是第二块网卡。
    #然后ifdown ens37;ifup ens37  来使网卡生效。
    #通过ip a来查看是否成功

配置dhcp服务

[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
    #把dhcp 样例文件拷贝到文件夹里做修改,核心内容如下:
    subnet 192.168.2.0 netmask 255.255.255.0 {
     range 192.168.2.10 192.168.2.100;
     option routers 192.168.2.1;
     option subnet-mask 255.255.255.0;
     default-lease-time 600;
     max-lease-time 7200;
     next-server 192.168.2.1;    #告诉客户端pxelinux.0从哪里下载
     filename "pxelinux.0";      #告诉客户端有个配置文件可以下载
     #然后重启服务systemctl restart dhcpd
     #开机自启动服务 systemctl enable dhcpd(后面不再一一重复)
     }


挂载镜像

mkdir /var/www/html/media  
    mount /dev/sr0 /var/www/html/media

    也可以把镜像所有文件复制进这个目录里,看自己选择

    这只是临时挂载点,如果需要开机自动的话,需要写fstab文件

    这里就不说这么多了七兮网络

配置tftp目录和服务

1)首先配置一下tftp的文件目录
    mkdir /tftpboot
    mkdir /tftpboot/pxelinux.cfg
    cp /usr/share/syslinux/pxelinux.0 /tftpboot/
    cp /usr/share/syslinux/chain.c32 /tftpboot/
    cp /usr/share/syslinux/mboot.c32 /tftpboot/
    cp /usr/share/syslinux/memdisk /tftpboot/
    cp /usr/share/syslinux/menu.c32 /tftpboot/
    cp /var/www/html/media/images/pxeboot/vmlinuz /tftpboot/
    cp /var/www/html/media/images/pxeboot/initrd.img /tftpboot/
    cp /var/www/html/media/isolinux/isolinux.cfg  /tftpboot/pxelinux.cfg/default
    最后文件的目录结构是
    /tftpboot/
    ├── boot.msg
    ├── chain.c32
    ├── initrd.img
    ├── mboot.c32
    ├── memdisk
    ├── menu.c32
    ├── pxelinux.0
    ├── pxelinux.cfg
    │   └── default
    └── vmlinuz
  2)配置tftp服务使用xinetd托管,更改内容我用#号注释
    vi /etc/xinetd.d/tftp 内容如下
      service tftp
      {
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot #更改tftp目录
        disable                 = no   #启动服务
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
      }
    然后 systemctl stop tftp.socket  关闭tftp
    使用xinetd打开tftp  systemctl restart xinetd.service


配置tftp目录里pxelinux.cfg/default的文件内容

[root@localhost ~]# vi //tftpboot/pxelinux.cfg/default
default menu.c32     
#首先这里需要改成menu.c32 从isolinux拷贝的文件配置默认是vesamenu.c32
timeout 100
prompt 0
menu title PXE MENU
label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.2.1/centos7.cfg
  # 这里需要写http里的.cfg 的路径,可以自己检查是否能打开


上面是我找到简单的一个配置,注意#号

七兮网络

配置http文件,及kickstart.cfg(文件名没有特殊要求,上下一致即可,我这里写的是centos7.cfg)配置文件内容。

  获取这个文件有两种方式,一种是从安装好的系统复制, 一种是使用图形页面获取,在linux中用yum安装system-config-kickstart就行了(但是需要现有系统安装了桌面,我这边是最小化安装的,没有桌面),选项也有些限制(比如分区不能使用lvm),这里就不演示了。

首先来看下http 目录结构

[root@localhost ~]# cp /root/anaconda-ks.cfg /var/www/html/centos7.cfg
[root@localhost ~]# tree -L 2 /var/www/html/
/var/www/html/
├── centos7.cfg   #这里是配置文件
├── index.html
└── media
    ├── CentOS_BuildTag
    ├── EFI
    ├── EULA
    ├── GPL
    ├── images
    ├── isolinux
    ├── LiveOS
    ├── Packages
    ├── repodata
    ├── RPM-GPG-KEY-CentOS-7
    ├── RPM-GPG-KEY-CentOS-Testing-7
    └── TRANS.TBL


**查看copy过来的文件**


#version=DEVEL
# System authorization information
install  
#(1)添加  告知安装程序,这是一次全新安装,而不是升级upgrade
text      
#(2)添加  使用text文本安装方式
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
# cdrom (3)这里需要注释
url --url="http://192.168.2.1/media"
# (4)配置镜像所在位置
# Use graphical install
# graphical  (5)这里需要注释
# Run the Setup Agent on first boot
firstboot --disable
# (6) 关闭自启动
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network  --bootproto=dhcp --device=link --activate
#(7) 配置网卡为自动获取
network  --hostname=localhost.localdomain
# Root password  设置root密码 
rootpw 123456 
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
#(8) BootLoader 更改为如上
# Partition clearing information
zerombr
clearpart --all --initlabel
reboot 
#(9) 清空分区信息,然后设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机。
# Disk partitioning information (设置分区)
part pv.311 --fstype="lvmpv" --ondisk=sda --size=50175
part /boot --fstype="xfs" --ondisk=sda --size=1024
volgroup centos --pesize=4096 pv.311
logvol /  --fstype="xfs" --grow --maxsize=51200 --size=1024 --name=root --vgname=centos
logvol swap  --fstype="swap" --size=3968 --name=swap --vgname=centos
%packages  #要安装的软件包,不做配置的话,是按照你当前系统的配置
@^minimal
@core
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
%post   #可选,安装完成后要执行的脚本


最后通过工具检查配置文件是否正确


 yum install system-config-kickstart
 ksvalidator /var/www/html/centos7.cfg

注意:

如果开机未获取到IP地址,请检查启动项,以及dhcp服务


如果出现 vesamenu.c32 notfound 请检查pxelinux.cfg/default 配置文件的第一行,是否更改为menu.c32

七兮网络

如果出现

PXE-T01:File not found

请检查tftp是否配置好


[root@localhost ~]# ss  -nul | grep 69
UNCONN   0    0      *:69      *:*

检查端口。或检查配tftp目录七兮网络

如果出现

dracut-initqueue timeout

/dev/root does not exist

请检查tftp里配置文件



本文来自 七兮网络 转载请注明;

本文地址:http://qxhut.cn/?id=99。

已有 6742 位网友参与,快来吐槽:

发表评论

验证码

本站会员尊享VIP特权,现在就加入我们吧!登录注册
登录
用户名
密码
注册
用户名
密码
确认密码
邮箱
验证码
找回密码
用户名
邮箱
※ 重置链接将发送到邮箱
请先 登录 再评论,若不是会员请先 注册