网络环境:

PXE服务器的大致安装流程:

1. DHCP服务器搭建

安装DHCP服务器

yum install dhcp-server     # 安装dhcp服务器

编辑服务器配置文件。

# file:/etc/dhcpd/dhcpd.conf

subnet 10.0.1.0 netmask 255.255.255.0 { # 指定网段
    range 10.0.1.100 10.0.1.200;        # 指定地址池
    max-lease-time 120;                 # 指定最长租约时间
    default-lease-time 120;             # 指定最短租约时间
    next-server 10.0.1.1;               # 指定TFTP服务器地址
    filename "pxelinux.0";              # 指定需要加载的启动文件。
}

启动服务,并配置防火墙

systemctl start dhcpd
systemctl enable dhcpd
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload

2. TFTP服务器搭建

安装直接启动tftp服务器即可

yum install tftp-server    # 安装tftp服务器
# 启动服务
systemctl start tftp
systemctl enable tftp
# 配置防火墙
firewall-cmd --add-service=tftp --permanent
firewall-cmd --reload

3. FTP服务器搭建

yum install vsftpd     # 安装ftp服务器

配置vsftpd的配置文件

# file: /etc/vsftpd/vsftpd.conf

anonymous_enable=YES    # 允许匿名用户登入
local_enable=NO         # 拒绝本地用户登入
pasv_enable=YES         # 指定启用被动连接模式。
pasv_min_port=30000     # 指定被动连接的最小端口号
pasv_max_port=40000     # 指定被动连接的最大端口号
write_enable=NO         # 禁止写入
listen=YES              # 指定为daemon模式启动,并且监听在IPv4端口上。
dual_log_enable=YES     # 开启日志记录,以方便排查问题。

配置启动服务

systemctl start vsftpd
systemctl enable vsftpd
# 配置防火墙
firewall-cmd --add-service=ftp --permanent
firewall-cmd --add-port=30000-40000/tcp --permanent
firewall-cmd --reload
# 配置SELinux Bool值
setsebool ftpd_connect_all_unreserved on -P

4. 文件部署

PXE引导文件部署

PXE的引导程序在syslinux包中,这里直接安装即可。

yum install syslinux    # 安装syslinux
# 注意,这里会依赖安装 syslinux-nonlinux,实际上所需要的文件在 syslinux-nonlinux 包中。

将PXE的引导程序部署到TFTP服务器中。

cp -r /usr/share/syslinux/* /var/lib/tftpboot/
mkdir /usr/share/syslinux/pxelinux.cfg

编写PXE引导的配置文件.
注:以下这个文件我是直接从 CentOS8 中的镜像复制过来并修改的文件。

# file:/var/lib/tftpboot/pxelinux.cfg/default

default centos8/vesamenu.c32
timeout 600

display centos8/boot.msg

# Clear the screen when exiting the menu, instead of leaving the menu displayed.
# For vesamenu, this means the graphical background is still displayed without
# the menu itself for as long as the screen remains in graphics mode.
menu clear
menu background centos8/splash.png
menu title CentOS Linux 8.0.1905
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13

# Border Area
menu color border * #00000000 #00000000 none

# Selected item
menu color sel 0 #ffffffff #00000000 none

# Title bar
menu color title 0 #ff7ba3d0 #00000000 none

# Press [Tab] message
menu color tabmsg 0 #ff3a6496 #00000000 none

# Unselected menu item
menu color unsel 0 #84b8ffff #00000000 none

# Selected hotkey
menu color hotsel 0 #84b8ffff #00000000 none

# Unselected hotkey
menu color hotkey 0 #ffffffff #00000000 none

# Help text
menu color help 0 #ffffffff #00000000 none

# A scrollbar of some type? Not sure.
menu color scrollbar 0 #ffffffff #ff355594 none

# Timeout msg
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none

# Command prompt text
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 none

# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.

menu tabmsg Press Tab for full configuration options on menu items.

menu separator # insert an empty line
menu separator # insert an empty line
# 最重要的就是以下的label段了,这个才是真正的引导选项。
label linux
  menu label Install CentOS Linux 8.0.1905 by ^Manual
  menu default        # 默认将启用这个label,如果有需求可以将此标签移动到以下任意一个中。
  kernel centos8/vmlinuz
  append initrd=centos8/initrd.img inst.repo=ftp://10.0.1.1/media

label vnc
  menu label install CentOS Linux 8.0.1905 by ^Vnc
  kernel centos8/vmlinuz
  append initrd=centos8/initrd.img inst.repo=ftp://10.0.1.1/media inst.vnc inst.vncconnect=10.0.1.254

label kickstart
  menu label install CentOS Linux 8.0.1905 by ^KickStart
  kernel centos8/vmlinuz
  append initrd=centos8/initrd.img inst.repo=ftp://10.0.1.1/media inst.ks=ftp://10.0.1.1/ks.cfg

内核文件部署

现在开始部署内核文件。

mount /dev/cdrom /media/
mkdir /var/lib/tftpboot/centos8/
for i in boot.msg  initrd.img  splash.png  vesamenu.c32  vmlinuz; do
    cp /media/isolinux/$i /var/lib/tftpboot/centos8/
done
# 注:最重要的文件就是 initrd.img 和 vmlinuz 文件了,其他文件并不是必要文件。
# 这些文件都是根据 /var/lib/tftpboot/pxelinux.cfg/default 中需要的文件来进行配置的。

/var/lib/tftpboot 中的文件权限配置

# 配置SELinux
yum install policycoreutils-python-utils # 安装SELinux的管理工具
semanage fcontext  -m -t tftpdir_t '/var/lib/tftpboot(/.*)?'    #去除tftp目录的写入权限。
restorecon -R /var/lib/tftpboot/
# 由于修改了tftp服务器的工作目录的SELinux,以下选项可能需要开启。
setsebool  tftp_home_dir on -P

镜像部署

mkdir /var/ftp/media
mount /dev/cdrom /var/ftp/media/
# 配置SELinux,以允许vsftpd读取 iso 中的文件。
setsebool ftpd_full_access on -P

编写挂载配置文件,使其永久生效

# file: /etc/fstab

……
/dev/cdrom          /var/ftp/media  iso9660 ro  0 0

kickstart 文件编写

# file:/var/ftp/ks.cfg

ignoredisk --only-use=sda    # 忽略磁盘
autopart --type=lvm    # 自动划分分区为LVM格式。
clearpart --drives=sda --initlabel    # 请求磁盘,并且自动初始化
graphical        # 图形化安装,这里可以改成文本化安装 text
url --url ftp://10.0.1.1/media    # 指定镜像URL路径
keyboard --vckeymap=cn --xlayouts='cn'    # 指定键盘格式
lang zh_CN.UTF-8        # 指定操作系统语言格式
network  --bootproto=dhcp --device=ens33 --onboot=yes --ipv6=no    # 配置网卡信息
network  --hostname=localhost.localdomain
rootpw --iscrypted $6$vWrO/QvhTZdsiSOe$eodg5O1KrdqZbxenHfqbBtz0eULiVWK8.YEV8ZFrgREroZD.pf6vB3LSh5.kaCH5QXXFhIOvIWOI04R52iTP//
# 密码可以通过 openssl passwd -6 -salt `openssl rand -hex 4` ,这个命令生成。这里的密码为 123456
firstboot --enable
skipx    # 跳过图形化配置
services --enabled="chronyd"
timezone Asia/Shanghai    # 设置上海时区
%packages    # 指定安装包,这里选择的是最小化安装,同时还安装了 kdump 工具。
@minimal-environment
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

5. 测试可用

注: 这里需要强调一点,用于测试的虚拟机内存大小一点要大于等于2G,否则无法正常安装操作系统!!!!!!

这里主要就试一下VNC的操作系统安装方法是否可用。
VNC的使用方法适合在机房等无法使用显示器,但是还需要手动配置安装的场景。
需要软件:https://www.realvnc.com/en/connect/download/viewer/
在软件安装完成后,以监听模式打开VNC Viewer,这里会直接会脱离当前终端,在后台运行。

能在后台程序里面找到VNC Viewer的图标,那么就表明以及在监听模式下打开该程序了。

这个时候再来测试。
注意,在/var/lib/tftpboot/pxelinux.cfg/defaultlabel vnc中的inet.vncconnect选项一定要指向本机才能正常开启连接。
这里选择第二个install CentOS Linux 8.0.1905 by Vnc,在加载完成所有文件后,就会尝试连接本地的VNC Viewer程序。

当启动到这一步的时候,就表明本机以及建立VNC连接了。

这个时候就可以进行自定义的操作系统安装了。

本文经「原本」原创认证,作者乾坤盘,访问yuanben.io查询【3P98SYXE】获取授权信息。

最后修改:2020 年 01 月 22 日 09 : 03 PM
如果觉得我的文章对你有用,请随意赞赏
或者点击网页中小广告,你的鼓励都将成为我写作的动力