PXE_Kickstart_无人值守自动化安装系统

文章目录

  • [1. PXE](#1. PXE)
  • [2. 配置服务参数](#2. 配置服务参数)
    • [2.1 tftp服务配置](#2.1 tftp服务配置)
    • [2.2 dhcp服务配置](#2.2 dhcp服务配置)
    • [2.3 http服务配置](#2.3 http服务配置)
  • [3. 配置PXE环境](#3. 配置PXE环境)
    • [3.1 网络引导文件pxelinux.0](#3.1 网络引导文件pxelinux.0)
    • [3.2 挂载镜像文件](#3.2 挂载镜像文件)
    • [3.3 创建配置文件default](#3.3 创建配置文件default)
    • [3.4 复制镜像文件和驱动文件](#3.4 复制镜像文件和驱动文件)
    • [3.5 修改default文件](#3.5 修改default文件)
    • [3.6 配置ks.cfg文件](#3.6 配置ks.cfg文件)
  • [4. PXE客户端](#4. PXE客户端)
    • [4.1 创建虚拟机,不放镜像](#4.1 创建虚拟机,不放镜像)
  • [5. 踩坑记录](#5. 踩坑记录)
    • [1. PXE-E53:No boot filename received](#1. PXE-E53:No boot filename received)
    • [2. Failed to load ldlinux.c32](#2. Failed to load ldlinux.c32)
    • [3. warning :/dev/root does not exist](#3. warning :/dev/root does not exist)
    • [4. http服务异常-Forbidden](#4. http服务异常-Forbidden)
    • [5. pxe客户机安装一半卡住了-软件源未设置](#5. pxe客户机安装一半卡住了-软件源未设置)
    • [6. pxe客户机安装系统到最后了,但是不自动重启系统](#6. pxe客户机安装系统到最后了,但是不自动重启系统)
    • [7. 客户机已禁用cpu](#7. 客户机已禁用cpu)

1. PXE

PXE:Pre-boot Execution Environment,预启动执行环境。

  • PXE是Client/Server模式的。

2. 配置服务参数

  • 关闭vmnet8的dhcp服务
  • 下载相关软件:yum install syslinux tftp-server dhcp httpd
  • 把防火墙关闭
  • 配置好yum源

2.1 tftp服务配置

  • tftp的配置文件:/etc/xinetd.d/tftp
json 复制代码
service tftp
{
        socket_type             = dgram
        protocol                = udp	# 依赖于udp协议
        wait                    = no	# 非阻塞模式;tftp一次可连接多个用户
        user                    = root	# 服务进程以root用户运行
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot	# 用户访问的目录
        disable                 = no	# 启用服务
        per_source              = 11	# 最大连接数
        cps                     = 100 2
        flags                   = IPv4
}
  • 启动该服务

    shell 复制代码
    [root@oldboy99 ~]# systemctl start tftp.service 
    [root@oldboy99 ~]# systemctl status tftp.service 
    ● tftp.service - Tftp Server
       Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; vendor preset: disabled)
       Active: active (running) since Wed 2025-04-30 09:12:55 CST; 6s ago
         Docs: man:in.tftpd
     Main PID: 30669 (in.tftpd)
        Tasks: 1
       Memory: 96.0K
       CGroup: /system.slice/tftp.service
               └─30669 /usr/sbin/in.tftpd -s /var/lib/tftpboot
    
    4月 30 09:12:55 oldboy99 systemd[1]: Started Tftp Server.

2.2 dhcp服务配置

  • dhcp的配置文件:/etc/dhcp/dhcpd.conf
json 复制代码
subnet 10.0.0.0 netmask 255.255.255.0{	# 子网配置参数

option subnet-mask 255.255.255.0;	# 子网掩码

option domain-name-servers 10.0.0.203;	# dns服务器地址

range dynamic-bootp 10.0.0.100 10.0.0.200;	# 地址池范围

default-lease-time 21600;

max-lease-time 43200;

next-server 10.0.0.203;	# tftp服务器地址

#leagcy启动方式引导文件

filename "pxelinux.0";	# 通过BIOS引导启动时的文件名
}
  • 启动该服务

    shell 复制代码
    [root@oldboy99 ~]# systemctl start dhcpd.service 
    [root@oldboy99 ~]# systemctl status dhcpd.service 
    ● dhcpd.service - DHCPv4 Server Daemon
       Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
       Active: active (running) since Wed 2025-04-30 14:12:20 CST; 5s ago
         Docs: man:dhcpd(8)
               man:dhcpd.conf(5)

2.3 http服务配置

  • httpd的配置文件:/etc/httpd/conf/httpd.conf

  • 启动该服务

    shell 复制代码
    [root@oldboy99 ~]# systemctl start httpd.service 
    [root@oldboy99 ~]# systemctl status httpd.service 
    ● httpd.service - The Apache HTTP Server
       Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
       Active: active (running) since Wed 2025-04-30 14:13:36 CST; 9s ago
         Docs: man:httpd.service(8)

3. 配置PXE环境

3.1 网络引导文件pxelinux.0

  • 该文件不在本地,只能通过软件包下载
shell 复制代码
# 查找该文件存在于哪个软件包
[root@oldboy99-Kylin-pxeServer ~]# yum provides "*/pxelinux.0"
上次元数据过期检查:2:42:40 前,执行于 2025年05月10日 星期六 18时53分35秒。
syslinux-nonlinux-6.04-10.ky10.noarch : syslinux modules which aren't run from linux
仓库        :ks10-adv-os
匹配来源:
文件名    :/usr/share/syslinux/pxelinux.0

syslinux-nonlinux-6.04-14.ky10.noarch : syslinux modules which aren't run from linux
仓库        :@System
匹配来源:
文件名    :/usr/share/syslinux/pxelinux.0
......
[root@oldboy99-Kylin-pxeServer ~]# yum install -y syslinux
上次元数据过期检查:2:44:16 前,执行于 2025年05月10日 星期六 18时53分35秒。
软件包 syslinux-6.04-14.ky10.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
  • 该文件存在于 /usr/share/syslinux/pxelinux.0目录下
  • 将该文件移动到tftp的文件目录下:/var/lib/tftpboot

3.2 挂载镜像文件

点击设置,挂载kylin系统的镜像文件

最后vm右下角的CD图标有绿点表示挂载成功!

  • 镜像文件一般在/dev/cdrom下,将其挂载到http协议的文件目录下
  • 可以先创建个系统名的文件夹
shell 复制代码
[root@oldboy99-Kylin-pxeServer /var/www/html/kylin]# mount /dev/cdrom ./
mount: /var/www/html/kylin: WARNING: source write-protected, mounted read-only.
[root@oldboy99-Kylin-pxeServer /var/www/html/kylin]# cd ..
[root@oldboy99-Kylin-pxeServer /var/www/html]# ll ./kylin/
总用量 544
dr-xr-xr-x 3 root root   2048  3月 15  2023 EFI
dr-xr-xr-x 3 root root   2048  3月 15  2023 images
dr-xr-xr-x 2 root root   2048  3月 15  2023 isolinux
dr-xr-xr-x 5 root root   2048  3月 24  2023 kylin-sm-package
-r--r--r-- 1 root root    441  3月 31  2023 LICENSE
dr-xr-xr-x 2 root root   2048  3月 15  2023 manual
dr-xr-xr-x 2 root root 538624  3月 24  2023 Packages
dr-xr-xr-x 2 root root   4096  3月 24  2023 repodata
-r--r--r-- 1 root root   2883  3月 31  2023 TRANS.TBL
  • 通过网页查看一下

3.3 创建配置文件default

  • 需要在tftp的文件根目录(/var/lib/tftpboot)下创建目录:pxelinux.cfg
  • default文件就是网络引导文件需要的配置文件,只要是系统启动后选择的系统菜单,该文件在镜像中也有。
  • [root@oldboy99-Kylin-pxeServer /var/lib/tftpboot/pxelinux.cfg]# cp /var/www/html/kylin/isolinux/isolinux.cfg ./default
  • 注意路径

3.4 复制镜像文件和驱动文件

  • [root@oldboy99-Kylin-pxeServer /var/lib/tftpboot]# cp /var/www/html/kylin/isolinux/* ./
  • [root@oldboy99-Kylin-pxeServer /var/lib/tftpboot]# mkdir kylin
  • [root@oldboy99-Kylin-pxeServer /var/lib/tftpboot]# cp /var/www/html/kylin/images/pxeboot/{vmlinuz,initrd.img} ./kylin/
  • 最后效果:

3.5 修改default文件

  • 直接复制上面的 label linux模板,再修改
  • label的名字不能冲突
  • menu default只能有一个

3.6 配置ks.cfg文件

  • Kickstart的作用就是生成ks.cfg文件,使系统在安装时能自动选择选项或配置参数。
  • Kickstart只能在图形化界面中操作
  • 用户家目录下有个文件:anaconda-ks.cfg,同ks.cfg的原理相同,是记录了安装系统时选择的种种参数。
  • 直接修改该文件即可:
  • 注释行:#cdrom
  • 新增行:url --url="http://10.0.0.203/kylin"
  • 在文件最后一行增加:reboot

4. PXE客户端

4.1 创建虚拟机,不放镜像

  • 内存设置大些,否则会报错。
  • 进入菜单选择界面时可以看自己设置的系统名称
  • 自动化安装系统,无需手动干预,一会再来看看就行。

5. 踩坑记录

1. PXE-E53:No boot filename received

  • 找不到网络引导文件:pxelinux.0
  • 多半是dhcp的配置文件或tftp未启动造成的
  • 之前多次打开dhcp的配置文件,造成了小故障
  • 按照(2)所写的删除该文件即可
  • 果然是配置文件异常,将#号去掉
  • 修改文件后要重启服务

2. Failed to load ldlinux.c32

  • 系统找到网络引导文件后,还需要配置文件
  • 将镜像文件中isolinux/*所有文件复制到该目录即可

3. warning :/dev/root does not exist

  • 系统准备安装系统了,但是找不到镜像文件
  • 在default文件中配置镜像文件的地址

4. http服务异常-Forbidden

  • http的目录下文件权限较少

5. pxe客户机安装一半卡住了-软件源未设置

  • 在ks.cfg文件中指定镜像地址即可,镜像文件中有所需安装包

6. pxe客户机安装系统到最后了,但是不自动重启系统

  • 直接在ks.cfg文件最后添加reboot

7. 客户机已禁用cpu

  • pxe客户机内容至少4g
相关推荐
啟明起鸣几秒前
【Nginx 网关开发】上手 Nginx,简简单单启动一个静态 html 页面
运维·c语言·前端·nginx·html
小生不才yz3 分钟前
shell编程 - 数据流指南
linux
lisanmengmeng9 分钟前
添加ceph节点
linux·服务器·ceph
Tinyundg12 分钟前
Linux系统分区
linux·运维·服务器
要做一个小太阳15 分钟前
华为Atlas 900 A3 SuperPoD 超节点网络架构
运维·服务器·网络·华为·架构
江畔何人初20 分钟前
service发现
linux·运维·云原生
life码农26 分钟前
Linux系统清空文件内容的几种方法
linux·运维·chrome
zbguolei31 分钟前
虚拟机安装Ubuntu后无法登录
linux·运维·ubuntu
UP_Continue34 分钟前
Linux--基础IO
linux·运维·服务器
驱动探索者38 分钟前
linux hwspinlock 学习
linux·运维·学习