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
相关推荐
一袋米扛几楼9830 分钟前
【密码学】CrypTool2 工具是什么?
服务器·网络·密码学
林姜泽樾3 小时前
Linux入门第十二章,创建用户、用户组、主组附加组等相关知识详解
linux·运维·服务器·centos
xiaokangzhe4 小时前
Linux系统安全
linux·运维·系统安全
feng一样的男子4 小时前
NFS 扩展属性 (xattr) 提示操作不支持解决方案
linux·go
南棱笑笑生4 小时前
20260310在瑞芯微原厂RK3576的Android14查看系统休眠时间
服务器·网络·数据库·rockchip
yy55274 小时前
LNAMP 网络架构与部署
网络·架构
Highcharts.js5 小时前
Highcharts React v4.2.1 正式发布:更自然的React开发体验,更清晰的数据处理
linux·运维·javascript·ubuntu·react.js·数据可视化·highcharts
Godspeed Zhao5 小时前
现代智能汽车系统——CAN网络2
网络·汽车
c++之路6 小时前
Linux网络协议与编程基础:TCP/IP协议族全解析
linux·网络协议·tcp/ip
爱丽_6 小时前
Docker 从原理到项目落地(镜像 / 容器 / 网络 / 卷 / Dockerfile)
网络·docker·容器