千家信息网

RHEL7/CentOS7 pxe+kickstart自动化

发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并
千家信息网最后更新 2025年02月19日RHEL7/CentOS7 pxe+kickstart自动化


PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/win7/win8,linux等。

1. 系统环境介绍

虚拟机软件:VirtualBox

虚拟机网络连接方式:仅主机(Host-Only)网络

服务端操作系统:CentOS 7

配置服务:DHCP+TFTP+FTP(也可以使用HTTP、NFS等)

完成目标:搭建pxe环境,结合kickstart响应文件,完成CentOS 7系统的自动化安装。

1.1 服务器及引导文件介绍

  • 主要文件

    系统安装时,由引导文件加载内核文件后才可以看到系统安装界面。

    • pxelinux.0 - 系统引导文件

    • vmlinuz、initrd.img - 内核文件

  • DHCP 服务器

    为客户端提供必要的网络信息,如IP、netmask、gateway、dns等,并向客户端提供引导文件(pxelinux.0)的位置及TFTP服务器地址等。

  • TFTP 服务器

    主要为客户端提供内核文件和引导文件。

  • FTP 服务器

    为客户端提供kickstart响应文件和系统镜像文件。

pxe系统安装时,首先由dhcp服务器向客户端提供IP、引导文件位置、tftp地址等信息,客户端获取相关信息后,通过TFTP下载引导文件和内核文件,引导系统启动,并通过ftp服务器下载系统安装过程中所需的各项软件包和kickstart响应文件。

kickstart响应文件主要用来自动设置时区、密码、系统分区、软件包选择等信息。

1.2 服务端详细环境

详细系统环境为:

[root@pxe1 ~]# uname -aLinux pxe1 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux[root@pxe1 ~]# [root@pxe1 ~]# hostnamectl   Static hostname: pxe1         Icon name: computer-vm           Chassis: vm        Machine ID: 18ef8dea83044565b82bf6bed368cdab           Boot ID: 9beedf23c4e14016a0a458ddcd9c487b    Virtualization: kvm  Operating System: CentOS Linux 7 (Core)       CPE OS Name: cpe:/o:centos:centos:7            Kernel: Linux 3.10.0-514.el7.x86_64      Architecture: x86-64[root@pxe1 ~]# cat /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.56.14 pxe1    [root@pxe1 yum.repos.d]# ifconfig enp0s3: flags=4163  mtu 1500        inet 192.168.56.14  netmask 255.255.255.0  broadcast 192.168.56.255        inet6 fe80::a00:27ff:fe43:c11d  prefixlen 64  scopeid 0x20        ether 08:00:27:43:c1:1d  txqueuelen 1000  (Ethernet)        RX packets 1441  bytes 121057 (118.2 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 928  bytes 98905 (96.5 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0...

1.3 服务端初始环境准备

关闭SELinux和防火墙:

# 为了后续配置方便,首先关闭系统SELinux和防火墙# 关闭SELinux,修改文件使SELINUX=disabled[root@pxe1 ~]# vim /etc/selinux/config # This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:#     enforcing - SELinux security policy is enforced.#     permissive - SELinux prints warnings instead of enforcing.#     disabled - No SELinux policy is loaded.SELINUX=disabled# SELINUXTYPE= can take one of three two values:#     targeted - Targeted processes are protected,#     minimum - Modification of targeted policy. Only selected processes are protected. #     mls - Multi Level Security protection.SELINUXTYPE=targeted#重启系统后配置生效,查看SELinux的状态。[root@pxe1 ~]# sestatus SELinux status:                 disabled#关闭防火墙[root@pxe1 ~]# systemctl stop firewalld[root@pxe1 ~]# systemctl disable firewalld[root@pxe1 ~]# systemctl status firewalld● firewalld.service - firewalld - dynamic firewall daemon   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)   Active: inactive (dead)     Docs: man:firewalld(1)

1.4 客户端环境准备

在VirtualBox中新建linux虚拟机:

  • 名称:随便填写

  • 类型:linux

  • 版本:Red Hat(64-bit)

  • 虚拟硬盘:

    现在创建虚拟硬盘,注意分配足够的硬盘大小,避免因硬盘空间不足造成安装失败。我这里选择20G,动态分配。

  • 开机启动顺序:网络启动排第一位。

    设置方法:选中新建虚拟机,设置--系统--主板--启动顺序--设置网络为第一位

  • 网络:仅主机(Host-Only)网络

    设置方法:选中新建虚拟机,设置--网络--网卡1--启用网络连接--连接方式:Host-Only

2. 配置yum源

这里主要介绍使用系统光盘配置本地yum源的方法。

首先挂载系统光盘:

在虚拟机右下角单击光盘图标,选择需要挂载的系统镜像文件。

创建yum源配置文件:

# 首先将光盘挂载到/mnt目录下[root@pxe1 ~]# umount /dev/cdrom -l [root@pxe1 ~]# mount /dev/cdrom /mnt/mount: /dev/sr0 is write-protected, mounting read-only#创建yum配置文件[root@pxe1 ~]# cd /etc/yum.repos.d/[root@pxe1 yum.repos.d]# lsCentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Sources.repo  CentOS-fasttrack.repoCentOS-CR.repo    CentOS-Media.repo      CentOS-Vault.repo#避免系统中的repo文件影响,首先将其备份[root@pxe1 yum.repos.d]# mkdir bak[root@pxe1 yum.repos.d]# mv *.repo bak/[root@pxe1 yum.repos.d]# lsbak[root@pxe1 yum.repos.d]# vim my.repo[development]          <--注意:这里一定要写developmentname=my-centos7-dvdbaseurl=file:///mntenabled=1gpgcheck=0

注意:my.repo文件中第一行[development],中括号中建议填写development,填写其他内容会导致后面system-config-kickstart命令生成kickstart文件文件时,出现以下问题:

由于下载软件包信息失败,软件包选择被禁止

创建yum缓存:

[root@pxe1 yum.repos.d]# yum clean allFailed to set locale, defaulting to CLoaded plugins: fastestmirror, langpacksCleaning repos: developmentCleaning up everything[root@pxe1 yum.repos.d]# yum makecacheFailed to set locale, defaulting to CLoaded plugins: fastestmirror, langpacksdevelopment                                                  | 3.6 kB  00:00:00     (1/4): development/filelists_db                              | 3.0 MB  00:00:00     (2/4): development/group_gz                                  | 155 kB  00:00:00     (3/4): development/other_db                                  | 1.3 MB  00:00:00     (4/4): development/primary_db                                | 3.0 MB  00:00:00     Determining fastest mirrorsMetadata Cache Created

3. DHCP服务器配置

dhcp为客户端提供必要的网络信息,如IP、netmask、gateway、dns等,并向客户端提供引导文件(pxelinux.0)的位置及TFTP服务器地址等。

3.1 安装dhcp软件包

[root@pxe1 yum.repos.d]# yum install -y dhcp...Installed:  dhcp.x86_64 12:4.2.5-47.el7.centos                                                                                     Complete!

3.2 修改dhcp配置文件

dhcp配置文件位置:/etc/dhcp/dhcpd.conf

[root@pxe1 yum.repos.d]# cat /etc/dhcp/dhcpd.conf ## DHCP Server Configuration file.#   see /usr/share/doc/dhcp*/dhcpd.conf.example#   see dhcpd.conf(5) man pagesubnet 192.168.56.0 netmask 255.255.255.0 {  range 192.168.56.10 192.168.56.20;  filename "pxelinux.0";  next-server 192.168.56.14;}# subnet 192.168.56.0 netmask 255.255.255.0 服务端IP网段及掩码# range 192.168.56.10 192.168.56.20; dhcp分发的地址范围,最好将本机IP包含在内。# filename "pxelinux.0"; 指定引导文件位置,这里是TFTP根目录下的pxelinux.0。#  next-server 192.168.56.14; TFTP服务器地址。

3.3 启动dhcp服务

[root@pxe1 yum.repos.d]# systemctl restart dhcpd[root@pxe1 yum.repos.d]# systemctl enable dhcpdCreated symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.[root@pxe1 yum.repos.d]# systemctl status dhcpd● dhcpd.service - DHCPv4 Server Daemon   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)   Active: active (running) since Thu 2017-05-25 11:00:26 CST; 26s ago     Docs: man:dhcpd(8)           man:dhcpd.conf(5) Main PID: 11849 (dhcpd)   Status: "Dispatching packets..."   CGroup: /system.slice/dhcpd.service           └─11849 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pidMay 25 11:00:26 pxe1 dhcpd[11849]: No subnet declaration for virbr0 (192.168.122.1).May 25 11:00:26 pxe1 dhcpd[11849]: ** Ignoring requests on virbr0.  If this is not whatMay 25 11:00:26 pxe1 dhcpd[11849]:    you want, please write a subnet declarationMay 25 11:00:26 pxe1 dhcpd[11849]:    in your dhcpd.conf file for the network segmentMay 25 11:00:26 pxe1 dhcpd[11849]:    to which interface virbr0 is attached. **May 25 11:00:26 pxe1 dhcpd[11849]: May 25 11:00:26 pxe1 dhcpd[11849]: Listening on LPF/enp0s3/08:00:27:43:c1:1d/192.168.56.0/24May 25 11:00:26 pxe1 dhcpd[11849]: Sending on   LPF/enp0s3/08:00:27:43:c1:1d/192.168.56.0/24May 25 11:00:26 pxe1 dhcpd[11849]: Sending on   Socket/fallback/fallback-netMay 25 11:00:26 pxe1 systemd[1]: Started DHCPv4 Server Daemon.[root@pxe1 yum.repos.d]# netstat -nulp | grep dhcpudp        0      0 0.0.0.0:67              0.0.0.0:*                           11849/dhcpd      udp        0      0 0.0.0.0:16465           0.0.0.0:*                           11849/dhcpd      udp6       0      0 :::31651                :::*                                11849/dhcpd

注意:如果启动dhcp服务报错,请查看/var/log/messages日志,会有明显的错误提示,多数是配置文件格式或内容错误造成的。

3.4 验证DHCP服务配置

dhcp服务器配置完成后,便可启动之前准备的客户端虚拟机查看是否可以获取到IP地址,能正常获取IP则说明配置正常,如下:

至此,dhcp服务器配置完成。

4. TFTP服务器配置

TFTP服务器主要为客户端提供内核文件和引导文件。

4.1 安装TFTP服务器

安装方法:

[root@pxe1 /]# yum install -y tftp-server...Installed:  tftp-server.x86_64 0:5.2-13.el7                                                                                                    Complete!# 安装tftp命令,可用来测试TFTP服务能否正常运行[root@pxe1 /]# yum install -y tftp

4.2 启动TFTP服务器

# 编辑配置文件/etc/xinetd.d/tftp [root@pxe1 /]# vim /etc/xinetd.d/tftp disable                 = no   <--将yes修改为no

启动tftp服务:

# 首先确保tftp.socket正常[root@pxe1 /]# systemctl start tftp.socket[root@pxe1 /]# systemctl enable tftp.socketCreated symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.[root@pxe1 /]# systemctl status tftp.socket● tftp.socket - Tftp Server Activation Socket   Loaded: loaded (/usr/lib/systemd/system/tftp.socket; enabled; vendor preset: disabled)   Active: active (listening) since 四 2017-05-25 14:57:33 CST; 1h 0min ago   Listen: [::]:69 (Datagram)5月 25 14:57:33 pxe1 systemd[1]: Listening on Tftp Server Activation Socket.5月 25 14:57:33 pxe1 systemd[1]: Starting Tftp Server Activation Socket.# 然后启动tftp.service[root@pxe1 ~]# systemctl restart tftp.service[root@pxe1 ~]# systemctl enable tftp.serviceCreated symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.[root@pxe1 ~]# systemctl status tftp.service● tftp.service - Tftp Server   Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; vendor preset: disabled)   Active: active (running) since 四 2017-05-25 14:57:33 CST; 20s ago     Docs: man:in.tftpd Main PID: 14621 (in.tftpd)   CGroup: /system.slice/tftp.service           └─14621 /usr/sbin/in.tftpd -s /var/lib/tftpboot5月 25 14:57:33 pxe1 systemd[1]: Started Tftp Server.5月 25 14:57:33 pxe1 systemd[1]: Starting Tftp Server...

4.3 导入必要文件

需要导入TFTP服务器的主要文件有:

  • 引导文件 - pxelinux.0

  • 内核文件:vmlinuz initrd.img

  • 引导菜单:isolinux.cfg -- 开机后选择启动项的菜单文件

4.3.1 导入引导文件

引导文件pxelinux.0由软件包syslinux生成,首先要安装syslinux软件包:

[root@pxe1 ~]# yum install -y syslinux# 将pxelinux.0拷贝至TFTP根目录下[root@pxe1 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
4.3.2 导入内核及菜单文件

内核文件:vmlinuz initrd.img,一般存在于系统光盘的pxeboot目录下:

[root@pxe1 syslinux]# cd /mnt/images/pxeboot/[root@pxe1 pxeboot]# lsinitrd.img  TRANS.TBL  vmlinuz

但是我们可以发现,在isolinux目录下也有相同的内容,同时,还包括引导菜单(isolinux.cfg)及其启动时用到的文件:

isolinux.cfg - 引导菜单配置文件

vesamenu.c32 - 系统自带的两种窗口模块之一

boot.msg - 窗口提示信息文件,提示信息在菜单出现前出现,显示时间较短,可以添加些艺术字之类的信息。

splash.png - 窗口背景图片

因此,我们可以从系统光盘的images/pxeboot/目录下复制内核文件,也可以从isolinux下复制,为了方便起见,这里从isolinux目录下复制,可以只复制我们需要的文件,如:

isolinux.cfg vesamenu.c32 boot.msg splash.png

也可以将isolinux目录下的文件全部复制到TFTP根目录/var/lib/tftpboot

[root@pxe1 /]# cp -rf /mnt/isolinux/* /var/lib/tftpboot/

然后准备pxe引导菜单:

[root@pxe1 /]# mkdir /var/lib/tftpboot/pxelinux.cfg[root@pxe1 /]# mv /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default[root@pxe1 /]# cd /var/lib/tftpboot/pxelinux.cfg[root@pxe1 pxelinux.cfg]# lsdefault

修改引导菜单选项:

[root@pxe1 pxelinux.cfg]# vim /var/lib/tftpboot/pxelinux.cfg/default # 首先修改菜单等待时间timeout 600 <--菜单显示等待时间,单位为1/10秒,默认等待60秒。#修改菜单等待时间为60,即等待6秒,若无操作则进入默认菜单;timeout 600# 然后修改显示菜单# -----------------------------------------------------------------# 找到文件中的以下部分label linux  menu label ^Install CentOS Linux 7  kernel vmlinuz  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quietlabel check  menu label Test this ^media & install CentOS Linux 7  menu default  kernel vmlinuz  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet# 将其修改为label linux  menu label ^Install CentOS Linux 7 by kickstart  menu default  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.ks=ftp://192.168.56.14/ks.cfglabel linux 2  menu label ^Install CentOS Linux 7 by vnc  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.vnc inst.vncpassword=passwordlabel linux 3  menu label ^Install CentOS Linux 7 by vnc -listen  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.vnc inst.vncconnect=192.168.56.1  # 本文中其他内容无需进行修改,有兴趣可自己尝试修改其他选项进行测试。

4.4 验证TFTP服务

4.4.1 验证TFTP服务配置

下面来验证TFTP服务配置是否正确:

[root@pxe1 kk]# ls /var/lib/tftpboot/boot.cat  grub.conf   isolinux.bin  pxelinux.0    splash.png  vesamenu.c32boot.msg  initrd.img  memtest       pxelinux.cfg  TRANS.TBL   vmlinuz[root@pxe1 kk]# [root@pxe1 kk]# tftp 192.168.56.14tftp> get boot.msgtftp> quit[root@pxe1 kk]# [root@pxe1 kk]# lsboot.msg# 成功get到boot.msg文件,说明TFTP服务正常。
4.4.2 验证菜单及引导文件配置

启动之前准备的客户端虚拟机查看是否可以正常显示引导菜单,是否可以正常获取initrd.img和vmlinuz内核文件。

若配置正常,会看到之前配置的引导菜单出现:

在对应的引导菜单上按TAB键会显示出该菜单项的具体配置:

Enter键后,会出现获取内核文件的界面:

最后系统提示获取ks文件失败,原因是尚未进行ftp服务器的配置:

5. kickstart文件准备

[root@pxe1 mnt]# yum install -y system-config-kickstart# 安装完成后,图形界面执行system-config-kickstart命令配置ks文件

kickstart文件配置注意事项如下:

下图中光盘挂载位置为FTP根目录下的pub目录,即/var/ftp/pub:



软件包选择界面,可以直接在这里选择,也可以拷贝服务端/root/anaconda-ks.cfg文件中%packages%end区间的内容至新文件。


其他选项请按需选择,配置完成后,保存文件,待FTP服务器配置完成后,需要将其拷贝至FTP根目录/var/ftp

然后修改生成的ks.cfg文件,在文件末尾(不要删除文件末尾的%end),添加以下内容,表示关闭kdump功能:

%addon com_redhat_kdump --disable --reserve-mb='auto'%end

至此,kickstart文件配置完成。

6. FTP服务器配置

6.1 安装FTP服务器

[root@pxe1 mnt]# yum install -y vsftpd[root@pxe1 mnt]# systemctl restart vsftpd[root@pxe1 mnt]# systemctl enable vsftpdCreated symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.[root@pxe1 mnt]# systemctl status vsftpd● vsftpd.service - Vsftpd ftp daemon   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)   Active: active (running) since 2017-05-25 16:59:12 CST; 11s ago Main PID: 16466 (vsftpd)   CGroup: /system.slice/vsftpd.service           └─16466 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf5月 25 16:59:12 pxe1 systemd[1]: Starting Vsftpd ftp daemon...5月 25 16:59:12 pxe1 systemd[1]: Started Vsftpd ftp daemon.# 安装ftp命令,用于ftp服务器验证。[root@pxe1 mnt]# yum install -y ftp

6.2 启动FTP服务器

[root@pxe1 /]# systemctl restart vsftpd[root@pxe1 /]# systemctl enable vsftpd[root@pxe1 /]# systemctl status vsftpd● vsftpd.service - Vsftpd ftp daemon   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)   Active: active (running) since 五 2017-05-26 08:28:29 CST; 15s ago Main PID: 2682 (vsftpd)   CGroup: /system.slice/vsftpd.service           └─2682 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf5月 26 08:28:28 pxe1 systemd[1]: Starting Vsftpd ftp daemon...5月 26 08:28:29 pxe1 systemd[1]: Started Vsftpd ftp daemon.

6.3 导入ks文件并挂载光盘

首先将刚才生成的kickstart文件复制到FTP跟目录下:

[root@pxe1 /]# cd /var/ftp/[root@pxe1 ftp]# lsks.cfg  pub

然后将关盘挂载至/var/ftp/pub目录下:

# 因为配置yum源时已经将光盘挂载至/mntt目录下了,现在有两种方法进行光盘挂载:# 1.将/mnt目录绑定到/var/ftp/pub目录下[root@pxe1 ~]# mount --bind /mnt/ /var/ftp/pub/[root@pxe1 ~]# ls /var/ftp/pub/CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL# 2. 先将光盘从/mnt目录卸载,然后挂载到/var/ftp/pub目录下[root@pxe1 ~]# umount /dev/cdrom[root@pxe1 ~]# mount /dev/cdrom /var/ftp/pub/

6.4 验证FTP服务器

本次配置在生成kickstart文件时,登陆用户为匿名用户anonumous,下面测试匿名用户能否正常从FTP服务器下载文件:

[root@pxe1 kk]# ls /var/ftp/ks.cfg  pub[root@pxe1 kk]# ftp 192.168.56.14Connected to 192.168.56.14 (192.168.56.14).220 (vsFTPd 3.0.2)Name (192.168.56.14:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 Entering Passive Mode (192,168,56,14,217,98).150 Here comes the directory listing.-rw-r--r--    1 0        0            1459 May 25 09:36 ks.cfgdrwxr-xr-x    8 0        0            2048 Dec 05 13:20 pub226 Directory send OK.ftp> get ks.cfglocal: ks.cfg remote: ks.cfg227 Entering Passive Mode (192,168,56,14,152,101).150 Opening BINARY mode data connection for ks.cfg (1459 bytes).226 Transfer complete.1459 bytes received in 0.0433 secs (33.68 Kbytes/sec)ftp> bye221 Goodbye.[root@pxe1 kk]# lsks.cfg

成功get到ks.cfg文件,表示配置正常,现在可以重启客户端虚拟机测试是否可以进行自动化系统安装。

7. 自动化系统安装测试

重启客户端虚拟机,可以看到系统开始自动安装,至此,pxe+kickstart自动系统安装配置完成。



8. 引导菜单介绍

本文中配置的引导菜单default主要内容如下:

label linux  menu label ^Install CentOS Linux 7 by kickstart  menu default  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.ks=ftp://192.168.56.14/ks.cfglabel linux 2  menu label ^Install CentOS Linux 7 by vnc  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.vnc inst.vncpassword=passwordlabel linux 3  menu label ^Install CentOS Linux 7 by vnc -listen  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.vnc inst.vncconnect=192.168.56.1

在系统启动过程中,菜单依次对应如下内容:

8.1 kickstart菜单介绍

菜单一介绍:

label linux  menu label ^Install CentOS Linux 7 by kickstart  menu default  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.ks=ftp://192.168.56.14/ks.cfg# 使用kickstart自动安装# 这项菜单表示镜像文件在FTP根目录/var/ftp/pub下,kickstart文件在FTP根目录/var/ftp下。

菜单二介绍:

label linux 2  menu label ^Install CentOS Linux 7 by vnc  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.vnc inst.vncpassword=password  # 使用vnc手动安装# 该菜单表示镜像文件在FTP根目录/var/ftp/pub下,vnc密码为password,选中该菜单后,系统启动后会提示vnc登录的IP及端口,vnc连接后,便可进行手动系统安装,也可以在菜单最后指定kickstart文件位置,自动安装。

如图:

菜单三介绍:

label linux 3  menu label ^Install CentOS Linux 7 by vnc -listen  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.vnc inst.vncconnect=192.168.56.1  # 该菜单项表示使用vnc监听模式进行系统安装# 该菜单表示镜像文件在FTP根目录/var/ftp/pub下,vnc监听进程在计算机192.168.56.1上,无登录密码;# 注意:inst.vncconnect=192.168.56.1 指的是将要运行vnc客户端的计算机IP地址。

这里的192.168.56.1为我的笔记本IP,所以在启动客户端虚拟机后,只需要在笔记本上打开vnc客户端监听模式,即可自动显示安装界面。

在笔记本上打开vnc监听模式后,稍作等待,会自动连接到系统安装界面:

9. 引导菜单的其他创建方法

9.1 menu.c32菜单模块

  • vesamenu.c32 -菜单模块之一

    本文上面介绍的引导菜单就是利用vesamenu.c32生成的。

  • menu.c32 - 菜单模块之一

安装了syslinux命令包后,两种菜单模块都会在目录/usr/share/syslinux/下生成,使用menu.c32创建引导菜单时,只需要将菜单模块menu.c32及内核文件、引导文件拷贝至TFTP根目录下/var/lib/tftpboot即可。

[root@pxe1 tftpboot]# ls /var/lib/tftpboot/initrd.img  menu.c32  pxelinux.0  pxelinux.cfg  vmlinuz

菜单文件内容为:

[root@pxe1 tftpboot]# cat /var/lib/tftpboot/pxelinux.cfg/defaultdefault menu.c32 timeout 60 menu title CentOS 7 Pxe Menu label linux  menu label ^Install CentOS Linux 7 by kickstart  menu default  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.ks=ftp://192.168.56.14/ks.cfglabel linux 2  menu label ^Install CentOS Linux 7 by vnc  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.vnc inst.vncpassword=passwordlabel linux 3  menu label ^Install CentOS Linux 7 by vnc -listen  kernel vmlinuz  append initrd=initrd.img inst.repo=ftp://192.168.56.14/pub inst.vnc inst.vncconnect=192.168.56.1

菜单显示样式为:

0