GrandOB

PXE批量安装服务器

PXE

PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。

pxe是通过网卡引导启动

1.实现的硬件条件

1.BIOS支持

2.网卡支持(现在基本都已支持)

3.需要在bios中开启开关,服务器一般没打开(bmc界面里打开)

4.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置;网卡自带DHCP功能 dhcp 指明分配的ip地址

vsftpd tftp

5.服务器通过 tftp服务(简单文件传输协议)来提供系统内核和引导镜像的下载 udp()协议 网卡自带这个功能(不支持其他的远程共享服务)

自带的站点(/var/lib/tftp?) initrd.img(驱动) vmlinuz(内核) pxelinux.cfg/default(引导文件) pxelinux.0(小型的grub程序) tftp 指明?

系统安装过程

  • 加载boot loader

Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境

  • 加载启动安装菜单
  • 加载内核和initrd系统(文件才能使用文件)
  • 加载根系统
  • 运行anaconda的安装向导

Linux安装光盘的安装相关文件

在系统光盘的isolinux目录下有和安装相关的文件

  • boot.cat: 相当于grub的第一阶段
  • isolinux.bin:光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目
  • isolinux.cfg:启动菜单的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件
  • vesamenu.c32:是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单
  • memtest:内存检测程序
  • splash.png:光盘启动菜单界面的背景图
  • vmlinuz:是内核映像
  • initrd.img:ramfs文件(精简版的linux系统,文件系统驱动等)

实现过程

1.网卡需要查找相关的dhcp服务器(获取地址时间)

2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)

3.网卡使用tftp客户端吧引导程序加载到内存中来

4.bios执行引导程序

5.引导程序会去TFTP去查找配置文件

6.根据配置文件去引导安装系统

7.系统安装过程

建立PXE服务器

下载所需的服务软件

[root@rule ~]# yum install -y dhcp vsftpd tftp-server.x86_64 syslinux

配置DHCP服务器

[root@rule ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y

[root@rule ~]# vim /etc/dhcp/dhcpd.conf
 30 # This is a very basic subnet declaration.
 31 
 32 subnet 172.16.87.0 netmask 255.255.255.0 {
 33   range 172.16.87.100 172.16.87.200;
 34   option routers 172.16.87.40;
 35   next-sever 172.16.87.40; ----指明DHCP服务器的地址
 36   filename "pxelinux.0"; ----指明所需下载的文件
 37 }
 

 [root@rule ~]# systemctl restart dhcpd

配置tftp服务器

[root@rule ~]# vim /etc/xinetd.d/tftp

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no ----默认为yes改为no,启用tftp
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
~                                                                                        
~                               

在tftp的家目录中存放配置文件

[root@rule ~]# cd /var/lib/tftpboot/ ----共享文件的存放位置
[root@rule tftpboot]# mount /dev/sr0 /mnt ----从镜像文件中获取配置文件
mount: /dev/sr0 写保护,将以只读方式挂载
[root@rule tftpboot]# cd /mnt
[root@rule mnt]# ls
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@rule mnt]# cd isolinux/
[root@rule isolinux]# ls
boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz
boot.msg  initrd.img  isolinux.cfg  splash.png  vesamenu.c32
[root@rule isolinux]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@rule isolinux]# cd /var/lib/tftpboot/
[root@rule tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@rule tftpboot]# ls
initrd.img  pxelinux.0  vmlinuz
[root@rule tftpboot]# cd pxelinux.cfg/
[root@rule pxelinux.cfg]# vim default ----配置文件特定命名
default linux
timeout 600

label linux
        kernel vmlinuz
        append initrd=initrd.img method=ftp://172.16.87.40/centos7  ks=ftp://172.16.87.40/ks.cfg

label linux text
        kernel vmlinuz
        append text initrd =initrd.img method=ftp://172.16.87.40/centos7

label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://172.16.87.40/centos7
        
[root@rule pxelinux.cfg]# mkdir /var/ftp/centos7 ----在vsftpd服务器家目录下创建可提供安装包的文件夹
[root@rule pxelinux.cfg]# mount /dev/sr0  /var/ftp/centos7 ----进行挂载
mount: /dev/sr0 写保护,将以只读方式挂载
[root@rule pxelinux.cfg]# cd ..
[root@rule tftpboot]# tree
.
├── initrd.img ----提供小型Linux系统
├── pxelinux.0 ----提供引导文件
├── pxelinux.cfg
│   └── default ----配置文件
└── vmlinuz ----镜像内核

1 directory, 4 files

[root@rule tftpboot]# systemctl restart dhcpd tftp.socket vsftpd ----启用所有的服务

准备kickstart应答文件

安装图形化工具
[root@rule tftpboot]# yum install system-config-kickstart -y
已加载插件:fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 system-config-kickstart.noarch.0.2.9.7-1.el7 将被 安装
--> 正在处理依赖关系 system-config-keyboard >= 1.3.1,它被软件包 system-config-kickstart-2.9.7-1.el7.noarch 需要
--> 正在处理依赖关系 system-config-language,它被软件包 system-config-kickstart-2.9.7-1.el7.noarch 需要
--> 正在处理依赖关系 system-config-date,它被软件包 system-config-kickstart-2.9.7-1.el7.noarch 需要
--> 正在检查事务
---> 软件包 system-config-date.noarch.0.1.10.6-3.el7.centos 将被 安装
--> 正在处理依赖关系 system-config-date-docs,它被软件包 system-config-date-1.10.6-3.el7.centos.noarch 需要
--> 正在处理依赖关系 gnome-python2-canvas,它被软件包 system-config-date-1.10.6-3.el7.centos.noarch 需要
---> 软件包 system-config-keyboard.noarch.0.1.4.0-5.el7 将被 安装
--> 正在处理依赖关系 system-config-keyboard-base = 1.4.0-5.el7,它被软件包 system-config-keyboard-1.4.0-5.el7.noarch 需要
---> 软件包 system-config-language.noarch.0.1.4.0-9.el7 将被 安装
--> 正在处理依赖关系 usermode-gtk,它被软件包 system-config-language-1.4.0-9.el7.noarch 需要
--> 正在检查事务
---> 软件包 gnome-python2-canvas.x86_64.0.2.28.1-14.el7 将被 安装
--> 正在处理依赖关系 gnome-python2(x86-64) = 2.28.1-14.el7,它被软件包 gnome-python2-canvas-2.28.1-14.el7.x86_64 需要
--> 正在处理依赖关系 libgnomecanvas(x86-64) >= 2.8.0,它被软件包 gnome-python2-canvas-2.28.1-14.el7.x86_64 需要
--> 正在处理依赖关系 libgnomecanvas-2.so.0()(64bit),它被软件包 gnome-python2-canvas-2.28.1-14.el7.x86_64 需要
--> 正在处理依赖关系 libart_lgpl_2.so.2()(64bit),它被软件包 gnome-python2-canvas-2.28.1-14.el7.x86_64 需要
---> 软件包 system-config-date-docs.noarch.0.1.0.11-4.el7 将被 安装
--> 正在处理依赖关系 rarian-compat,它被软件包 system-config-date-docs-1.0.11-4.el7.noarch 需要
---> 软件包 system-config-keyboard-base.noarch.0.1.4.0-5.el7 将被 安装
---> 软件包 usermode-gtk.x86_64.0.1.111-6.el7 将被 安装
--> 正在处理依赖关系 usermode = 1.111-6.el7,它被软件包 usermode-gtk-1.111-6.el7.x86_64 需要
--> 正在检查事务
---> 软件包 gnome-python2.x86_64.0.2.28.1-14.el7 将被 安装
---> 软件包 libart_lgpl.x86_64.0.2.3.21-10.el7 将被 安装
---> 软件包 libgnomecanvas.x86_64.0.2.30.3-8.el7 将被 安装
---> 软件包 rarian-compat.x86_64.0.0.8.1-11.el7 将被 安装
--> 正在处理依赖关系 rarian = 0.8.1-11.el7,它被软件包 rarian-compat-0.8.1-11.el7.x86_64 需要
--> 正在处理依赖关系 rarian,它被软件包 rarian-compat-0.8.1-11.el7.x86_64 需要
--> 正在处理依赖关系 librarian.so.0()(64bit),它被软件包 rarian-compat-0.8.1-11.el7.x86_64 需要
---> 软件包 usermode.x86_64.0.1.111-5.el7 将被 升级
---> 软件包 usermode.x86_64.0.1.111-6.el7 将被 更新
--> 正在检查事务
---> 软件包 rarian.x86_64.0.0.8.1-11.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=========================================================================================
 Package                          架构        版本                        源        大小
=========================================================================================
正在安装:
 system-config-kickstart          noarch      2.9.7-1.el7                 ali      348 k
为依赖而安装:
 gnome-python2                    x86_64      2.28.1-14.el7               ali       47 k
 gnome-python2-canvas             x86_64      2.28.1-14.el7               ali       34 k
 libart_lgpl                      x86_64      2.3.21-10.el7               ali       67 k
 libgnomecanvas                   x86_64      2.30.3-8.el7                ali      226 k
 rarian                           x86_64      0.8.1-11.el7                ali       98 k
 rarian-compat                    x86_64      0.8.1-11.el7                ali       66 k
 system-config-date               noarch      1.10.6-3.el7.centos         ali      591 k
 system-config-date-docs          noarch      1.0.11-4.el7                ali      527 k
 system-config-keyboard           noarch      1.4.0-5.el7                 ali       33 k
 system-config-keyboard-base      noarch      1.4.0-5.el7                 ali      103 k
 system-config-language           noarch      1.4.0-9.el7                 ali      133 k
 usermode-gtk                     x86_64      1.111-6.el7                 ali      110 k
为依赖而更新:
 usermode                         x86_64      1.111-6.el7                 ali      193 k

事务概要
=========================================================================================
安装  1 软件包 (+12 依赖软件包)
升级           (  1 依赖软件包)

总下载量:2.5 M
Downloading packages:
No Presto metadata available for ali
(1/14): gnome-python2-canvas-2.28.1-14.el7.x86_64.rpm             |  34 kB  00:00:00     
(2/14): libart_lgpl-2.3.21-10.el7.x86_64.rpm                      |  67 kB  00:00:00     
(3/14): gnome-python2-2.28.1-14.el7.x86_64.rpm                    |  47 kB  00:00:00     
(4/14): rarian-0.8.1-11.el7.x86_64.rpm                            |  98 kB  00:00:00     
(5/14): libgnomecanvas-2.30.3-8.el7.x86_64.rpm                    | 226 kB  00:00:00     
(6/14): rarian-compat-0.8.1-11.el7.x86_64.rpm                     |  66 kB  00:00:00     
(7/14): system-config-date-1.10.6-3.el7.centos.noarch.rpm         | 591 kB  00:00:00     
(8/14): system-config-keyboard-1.4.0-5.el7.noarch.rpm             |  33 kB  00:00:00     
(9/14): system-config-keyboard-base-1.4.0-5.el7.noarch.rpm        | 103 kB  00:00:00     
(10/14): system-config-date-docs-1.0.11-4.el7.noarch.rpm          | 527 kB  00:00:00     
(11/14): system-config-language-1.4.0-9.el7.noarch.rpm            | 133 kB  00:00:00     
(12/14): system-config-kickstart-2.9.7-1.el7.noarch.rpm           | 348 kB  00:00:00     
(13/14): usermode-gtk-1.111-6.el7.x86_64.rpm                      | 110 kB  00:00:00     
(14/14): usermode-1.111-6.el7.x86_64.rpm                          | 193 kB  00:00:00     
-----------------------------------------------------------------------------------------
总计                                                        885 kB/s | 2.5 MB  00:02     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : usermode-1.111-6.el7.x86_64                                         1/15 
  正在安装    : libart_lgpl-2.3.21-10.el7.x86_64                                    2/15 
  正在安装    : libgnomecanvas-2.30.3-8.el7.x86_64                                  3/15 
  正在安装    : usermode-gtk-1.111-6.el7.x86_64                                     4/15 
  正在安装    : system-config-language-1.4.0-9.el7.noarch                           5/15 
  正在安装    : gnome-python2-2.28.1-14.el7.x86_64                                  6/15 
  正在安装    : gnome-python2-canvas-2.28.1-14.el7.x86_64                           7/15 
  正在安装    : rarian-0.8.1-11.el7.x86_64                                          8/15 
  正在安装    : rarian-compat-0.8.1-11.el7.x86_64                                   9/15 
  正在安装    : system-config-date-docs-1.0.11-4.el7.noarch                        10/15 
  正在安装    : system-config-date-1.10.6-3.el7.centos.noarch                      11/15 
  正在安装    : system-config-keyboard-base-1.4.0-5.el7.noarch                     12/15 
  正在安装    : system-config-keyboard-1.4.0-5.el7.noarch                          13/15 
  正在安装    : system-config-kickstart-2.9.7-1.el7.noarch                         14/15 
  清理        : usermode-1.111-5.el7.x86_64                                        15/15 
  验证中      : libgnomecanvas-2.30.3-8.el7.x86_64                                  1/15 
  验证中      : system-config-keyboard-base-1.4.0-5.el7.noarch                      2/15 
  验证中      : system-config-date-docs-1.0.11-4.el7.noarch                         3/15 
  验证中      : system-config-language-1.4.0-9.el7.noarch                           4/15 
  验证中      : system-config-date-1.10.6-3.el7.centos.noarch                       5/15 
  验证中      : system-config-keyboard-1.4.0-5.el7.noarch                           6/15 
  验证中      : system-config-kickstart-2.9.7-1.el7.noarch                          7/15 
  验证中      : gnome-python2-canvas-2.28.1-14.el7.x86_64                           8/15 
  验证中      : rarian-compat-0.8.1-11.el7.x86_64                                   9/15 
  验证中      : rarian-0.8.1-11.el7.x86_64                                         10/15 
  验证中      : usermode-gtk-1.111-6.el7.x86_64                                    11/15 
  验证中      : libart_lgpl-2.3.21-10.el7.x86_64                                   12/15 
  验证中      : usermode-1.111-6.el7.x86_64                                        13/15 
  验证中      : gnome-python2-2.28.1-14.el7.x86_64                                 14/15 
  验证中      : usermode-1.111-5.el7.x86_64                                        15/15 

已安装:
  system-config-kickstart.noarch 0:2.9.7-1.el7                                           

作为依赖被安装:
  gnome-python2.x86_64 0:2.28.1-14.el7                                                   
  gnome-python2-canvas.x86_64 0:2.28.1-14.el7                                            
  libart_lgpl.x86_64 0:2.3.21-10.el7                                                     
  libgnomecanvas.x86_64 0:2.30.3-8.el7                                                   
  rarian.x86_64 0:0.8.1-11.el7                                                           
  rarian-compat.x86_64 0:0.8.1-11.el7                                                    
  system-config-date.noarch 0:1.10.6-3.el7.centos                                        
  system-config-date-docs.noarch 0:1.0.11-4.el7                                          
  system-config-keyboard.noarch 0:1.4.0-5.el7                                            
  system-config-keyboard-base.noarch 0:1.4.0-5.el7                                       
  system-config-language.noarch 0:1.4.0-9.el7                                            
  usermode-gtk.x86_64 0:1.111-6.el7                                                      

作为依赖被升级:
  usermode.x86_64 0:1.111-6.el7                                                          

完毕!
在真机中打开软件
打开软件

修改基本配置

修改语言时区不使用格林威治时间,增加密码取消加密;勾选安装后重启使用文本模式

设置安装方法

设置获取安装地址

设置引导项

选择安装新引导

配置新分区

清除主引导,配置三个分区/、/boot、swap

/boot:开机启动项

swap:交换分区

/:根主分区(使用剩余所有空间)

关闭防火墙和核心防护

不使用图形界面

设置安装后选项

增加统一UID名字的账户

保存到ftp的家目录下(/var/ftp/)

[root@rule tftpboot]# cd /var/ftp/
[root@rule ftp]# ls
centos7  ks.cfg  pub
新增服务器(内存需大于2G)

posted on 2024-05-06 18:54  OB书写  阅读(33)  评论(0编辑  收藏  举报

导航