C03S05-PLinux网络之自动装机

一、PXE和Kickstart

1. PXE概述

PXE( Preboot execution Environment,预启动执行环境 )是一种允许计算机通过网络安装操作系统的技术。PXE也是C/S架构,允许客户端通过网络从服务端下载引导镜像,并加载安装文件或整个操作系统。

2. PXE优点

  1. 规模化:同时装配多台服务器,通常是20~30台。
  2. 自动化:系统安装和服务器配置不需要人工干预。
  3. 远程实现:不需要光盘、U盘等设备。

3. PXE的安装条件

  1. 客户端:网卡支持PXE协议、DHCP服务和FTP服务。设备支持网络引导。
  2. 服务端:拥有DHCP服务、FTP服务、PXE引导程序、系统镜像等。

4. PXE四大文件

  1. initrd.img: 系统启动镜像文件。
  2. vmlinuz:系统的内核文件。
  3. pxelinux.0:PXE的引导程序。
  4. default:引导程序的配置文件。

5. PXE的实现原理

  1. 客户端启动后,通过网络启动进入PXE引导。
  2. 客户端会先向服务端请求分配IP地址等网络信息。
  3. 客户端得到IP地址之后,通过FTP与服务端通信,获取PXE的相关文件。然后启动系统内核,安装系统。

6. Kickstart无人值守安装

Kickstart是一种自动化安装工具,在安装Linux操作系统时,通过一个配置文件来实现自动化安装,包括系统语言、网络配置、磁盘分区、软件包选择和用户创建等。

Kickstart和PXE的区别:

  • PXE是网络启动的机制,而Kickstart是自动化安装的脚本。
  • PXE负责系统的启动过程,而Kickstart负责系统的安装过程。
  • PXE不关心安装内容,它只负责加载启动所需的文件。Kickstart则包含了安装操作系统所需的详细配置。也就是说,PXE用于启动计算机,加载系统所需的文件;而Kickstart文件则在启动后被加载,以指导安装程序自动完成安装。

二、构建自动装机服务

1. 环境准备

  1. 安装DHCP服务、FTP服务、PXE引导程序、Kickstart等相关的软件包。

    bash 复制代码
    yum -y install tftp-server dhcp vsftpd syslinux system-config-kickstart
  2. 关闭防火墙和安全防护。

    bash 复制代码
    # 关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    
    # 关闭安全防护
    setenforce 0 # 临时关闭
    # 永久关闭
    vi /etc/selinux/config
    # 修改配置文件,关闭selinux
    SELINUX=disabled

2. 配置DHCP服务

  1. 复制DHCP的配置模板文件,替换DHCP默认配置文件。

    bash 复制代码
    cp -f /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

    在CentOS系统中,可以使用 rpm -ql 软件包 来查看软件包安装后各个文件的位置。

  2. 编辑配置文件dpcpd.conf,在文中写入以下内容。

    shell 复制代码
    ddns-update-style none;
    next-server 192.168.1.5;
    filename "pxelinux.0";
    
    subnet 192.168.1.0 netmask 255.255.255.0 {
      range 192.168.1.11 192.168.1.60;
      option routers 192.168.1.5;
    }
    • ddns-update-style none:不使用DDNS更新。
    • next-server 192.168.1.5:设置下一个服务器的IP地址。在PXE启动过程中,DHCP服务器会告诉客户端从哪个服务器下载系统启动所所需要的文件。
    • filename "pxelinux.0":指定了客户端应该下载的启动文件的名称。在PXE启动过程中,这个文件会被下载并执行,以启动操作系统的安装过程。
    • subnet 192.168.1.0 netmask 255.255.255.0:定义一个子网网段。
    • range 192.168.1.11 192.168.1.60:DHCP服务器可分配的IP范围。
    • option routers 192.168.1.5:设置默认的网关。在PXE中通常是设置为服务端的IP地址。
  3. 保持配置文件后,重启DHCP服务,并设置开机自启动。

    bash 复制代码
    systemctl restart dhcpd
    systemctl enable dhcpd

3. 配置TFTP服务

  1. 修改TFTP服务的配置文件/etc/xinetd.d/tftp,修改内容如下。

    shell 复制代码
    wait                = no
    disable             = no
    • wait:多个客户端连接时,是否等待。yes表示等待,也就是只能一台一台地连接服务端;no表示不等待,也就是允许多台客户端同时连接服务端。
    • disable:是否禁用服务。yes表示禁用,no表示启用。
  2. 保存配置文件后,重启TFTP服务,并设置开机自启动。

    bash 复制代码
    systemctl restart tftp
    systemctl enable tftp

4. 配置系统文件

  1. 挂载系统镜像。

    bash 复制代码
    mkdir /mnt/sr0
    echo "/dev/sr0 /mnt/sr0 iso9660 defaults 0 0" >> /etc/fstab
    mount -a
  2. 复制Linux系统内核文件和初始化镜像文件到TFTP服务的根目录下。

    bash 复制代码
    cd /mnt/sr0/images/pxeboot
    cp vmlinuz /var/lib/tftpboot
    cp initrd.img /var/lib/tftpboot
    • /var/lib/tftpboot/ 是Linux系统中用于TFTP服务的默认目录,也是根目录。在PXE中,用于存放需要传输的相关文件。

5. 配置PXE引导文件

  1. 复制PXE引导程序文件到TFTP根目录下。

    bash 复制代码
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

6. 配置系统镜像

  1. 将系统的镜像文件复制到VSFTP服务的根目录下。

    bash 复制代码
    mkdir /var/ftp/centos7
    cp -rf /mnt/sr0/* /var/ftp/centos7/
    • 在PXE中,VSFTP用于传输系统的安装镜像文件,而TFTP适用于传输内核文件等小型文件。
  2. 重启VSFTP服务,并设置开机自启动。

    bash 复制代码
    systemctl restart vsftpd
    systemctl enable vsftpd

7. 配置引导文件

  1. 编辑引导配置文件/var/lib/tftpboot/pxelinux.cfg/default,在文件中写入以下内容。

    bash 复制代码
    default auto
    prompt 0
    
    label auto
    kernel vmlinuz
    append initrd=initrd.img method=ftp://192.168.1.5/centos7
    
    label linux text
    kernel vmlinuz
    append text initrd=initrd.img method=ftp://192.168.1.5/centos7
    
    label linux rescue
    kernel vmlinuz
    append rescue initrd=initrd.img method=ftp://192.168.1.5/centos7
    • method:配置系统镜像的地址,也就是存放在VSFTP根目录下的镜像所在路径。

8. 配置Kickstart

  1. 通过图形化界面的"应用程序"-->"系统工具"-->"Kickstart" 打开Kickstart可视化界面。

  2. 基本配置:

    将默认语言设为"中文(简体)",时区设为"Asia/Shanghai",根据需求设置root密码,高级配置中勾选"安装后重启"。

    • 这里设置了root密码,在自动装机的时候就不需要再手动设置密码。
  3. 安装方法:

    选择FTP,FTP服务器中写入VSFTP服务所在主机的IP:ftp://192.168.1.5,FTP目录是镜像文件所在目录:centos7。

  4. 引导装载程序选项:

    "安装类型":安装新引导装载程序

    "安装选项":在主引导记录(MBR)中安装引导装载程序

  5. 分区信息:

    主引导记录:清除主引导记录

    分区:删除所有现存分区

    磁盘标签:初始化磁盘标签

    布局:选择添加分区

    挂载点:/boot,文件系统类型:xfs,固定大小:500M;

    挂载点:可不选,文件系统类型:swap,固定大小:4096M;

    挂载点:/home,文件系统类型:xfs,固定大小:4096M;

    挂载点:/,文件系统类型:xfs,使用磁盘上全部未使用空间。

    • 主要这里的swap大小最好是装机主机内存的2倍大小。
  6. 网络配置:

    添加网络设备"ens33"

    网络类型设为"DHCP"

  7. 防火墙配置:

    禁用 SELinux、禁用防火墙

  8. 其他配置根据需求进行设置。

  9. 保存配置,将ks.cfg文件保存在VSFTP服务的根目录下。

  10. 编辑引导配置文件default,添加Kickstart的引导参数,基本格式如下。

    shell 复制代码
    label auto								
    kernel vmlinuz
    append initrd=initrd.img method=ftp://192.168.1.5/centos7 ks=ftp://192.168.1.5/ks.cfg
  11. 除此之外,还可以在ks.cfg文件里写入以下内容,相当于在Kickstart可视化界面中配置"预安装脚本"。这样自动安装系统时就不要手动选择安装的软件。下面配置的是基本可视化界面软件,以及一些基本软件包。

    shell 复制代码
    %packages
    @base
    @core
    @desktop-debugging
    @dial-up
    @directory-client
    @fonts
    @gnome-desktop
    @guest-desktop-agents
    @input-methods
    @internet-browser
    @java-platform
    @multimedia
    @network-file-system-client
    @print-client
    @x11
    binutils
    chrony
    ftp
    gcc
    kernel-devel
    kexec-tools
    make
    open-vm-tools
    patch
    python
    %end
相关推荐
独行soc4 小时前
2025年渗透测试面试题总结-264(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮
t198751284 小时前
在Ubuntu 22.04系统上安装libimobiledevice
linux·运维·ubuntu
skywalk81634 小时前
linux安装Code Server 以便Comate IDE和CodeBuddy等都可以远程连上来
linux·运维·服务器·vscode·comate
AKAMAI5 小时前
从客户端自适应码率流媒体迁移到服务端自适应码率流媒体
人工智能·云计算
晚风吹人醒.5 小时前
缓存中间件Redis安装及功能演示、企业案例
linux·数据库·redis·ubuntu·缓存·中间件
REDcker5 小时前
tcpdump 网络数据包分析工具完整教程
网络·测试工具·tcpdump
Hard but lovely5 小时前
linux: pthread库的使用和理解
linux
若汝棋茗6 小时前
在网络密林中传递轻盈信使 —— TouchSocket 的 UdpSession 探秘
网络
嵌入式-小王6 小时前
每天掌握一个网络协议----ICMP
网络·网络协议·ping
麦麦鸡腿堡6 小时前
Java_网络编程_InetAddress类与Socket类
java·服务器·网络