PXE无人值守安装服务器

文章目录

    • PXE
    • kickdtart
    • 准备内容
    • 配置基本环境
      • 搭建本地yum源
      • 安装ftp服务以及开机服务,设置开机自启动
      • 安装tftp,修改tftp配置文件及开启服务
          • 启动xinetd服务,查看端口是否开启
      • 安装dhcp,修改配置文件及开启服务
    • 配置使用PXE启动所需相关文件
      • 准备tftp需要共享出去的文件
      • 修改default,指定安装操作系统的方式和ks.cfg文件路径
      • 将光盘挂在到pub目录下,并更改源位置
      • 安装system-config-kickstart软件包
      • 将ks.cfg复制进pub目录
    • 关闭selinux以及防火墙
    • 无人安装系统

PXE

什么是PXE?

严格来说,PXE 并不是一种安装方式,而是一种引导的方式。
进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC)
即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。

协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,
当计算机引导时,BIOS 把 PXE client 调入内存执行,
由 PXE client 将放置在远端的文件通过网络下载到本地运行。

运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。
DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,
由于是给 PXE client 分配 IP 地址,
所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。

此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。
PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

kickdtart

什么是kickdtart?

KickStart是一种无人职守安装方式。
KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg的文件;

在其后的安装过程中(不只局限于生成KickStart安装文件的机器)
当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件
当找到合适的参数时,就采用找到的参数,
当没有找到合适的参数时,才需要安装者手工干预。

这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,
安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。
等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

首先 我们要知道BIOS引导顺序为硬盘(在前)、网络(在后)
我们不必要更改BIOS引导顺序,只需要设置快速启动为网络就行

准备内容

执行 PXE + KickStart安装需要准备内容:

  • DHCP 服务器用来给客户机分配IP;
  • TFTP 服务器用来存放PXE的相关文件,比如:系统引导文件;
  • FTP 服务器用来存放系统安装文件;
  • KickStart所生成的ks.cfg配置文件;
  • 带有一个 PXE 支持网卡的将安装的主机;

配置基本环境

搭建本地yum源

[root@server222 yum.repos.d]# cat bendi.repo
[bendi]
name=///mnt/cdrom
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
[root@server222 yum.repos.d]# tail -n 1 /etc/fstab
/dev/cdrom      /mnt/cdrom      iso9660                 defaults        0 0
[root@server222 yum.repos.d]# mount -a
[root@server222 yum.repos.d]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  4.7G   13G   28% /
devtmpfs                devtmpfs  977M     0  977M    0% /dev
tmpfs                   tmpfs     993M     0  993M    0% /dev/shm
tmpfs                   tmpfs     993M  9.0M  984M    1% /run
tmpfs                   tmpfs     993M     0  993M    0% /sys/fs/cgroup
/dev/sr0                iso9660   4.3G  4.3G     0  100% /mnt/cdrom
/dev/sda1               xfs      1014M  161M  854M   16% /boot
tmpfs                   tmpfs     199M   24K  199M    1% /run/user/0

安装ftp服务以及开机服务,设置开机自启动

[root@server222 yum.repos.d]# yum install vsftpd -y
·····过程省略·······
[root@server222 yum.repos.d]# systemctl start vsftpd
[root@server222 yum.repos.d]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

安装tftp,修改tftp配置文件及开启服务

[root@server222 yum.repos.d]# yum install tftp tftp-server xinetd -y
·····过程省略······
# 配置tftp服务器:
[root@server222 yum.repos.d]# vim /etc/xinetd.d/tftp
# 将13行以及14行改为一下内容
 13         server_args             = -s /tftpboot
 14         disable                 = no
[root@server222 yum.repos.d]#  mkdir /tftpboot

server_args = -s /tftpboot 表示服务器默认的目录是/tftpboot

启动xinetd服务,查看端口是否开启
[root@server222 yum.repos.d]# systemctl  start xinetd
[root@server222 yum.repos.d]# lsof -i :69
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xinetd  3220 root    5u  IPv4  38515      0t0  UDP *:tftp

若没有lsof这个命令,就安装,命令:yum install lsof -y

安装dhcp,修改配置文件及开启服务

[root@server222 yum.repos.d]# yum install dhcp -y
# 配置DHCP服务
[root@server222 yum.repos.d]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y

给DHCP服务添加一张VMNET4网卡,IP设置为192.168.1.10

PXE无人值守安装服务器_第1张图片

PXE无人值守安装服务器_第2张图片

[root@server222 yum.repos.d]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:42:82:3a brd ff:ff:ff:ff:ff:ff
    inet 192.168.176.222/24 brd 192.168.176.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::1bd0:d77:f2c2:6f3/64 scope link
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:3a:c5:62 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:3a:c5:62 brd ff:ff:ff:ff:ff:ff
6: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:42:82:44 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::e149:fe60:a92f:1d60/64 scope link
       valid_lft forever preferred_lft forever

此时就会发现ens37这个网卡,下面来给此网卡配一个IP

[root@server222 yum.repos.d]# ifconfig ens37 192.168.1.10/24

下面就可以更改配置文件

[root@server222 yum.repos.d]# cd /etc/dhcp/
[root@server222 dhcp]# ls
dhclient.d  dhclient-exit-hooks.d  dhcpd6.conf  dhcpd.conf  scripts
[root@server222 dhcp]# > dhcpd.conf
[root@server222 dhcp]# vim dhcpd.conf
[root@server222 dhcp]# cat dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200; # 地址池
  option domain-name-servers 192.168.1.1; # dns
  option domain-name "internal.example.org"; # 域名
  option routers 192.168.1.1; # 默认网关
  option broadcast-address 192.168.1.255; # 广播地址
  default-lease-time 600; # 默认租约期限
  max-lease-time 7200; # 最大租约期限
  next-server 192.168.1.10; # 下一跳
  filename "pxelinux.0"; # 定义pxe
}

[root@server222 dhcp]#

此处配置完,先不启动DHCP ,等所有的软件安装好,最后来启动。

配置使用PXE启动所需相关文件

[root@server222 dhcp]# yum install system-config-kickstart syslinux -y

准备tftp需要共享出去的文件

[root@server222 dhcp]# cd /tftpboot/
[root@server222 tftpboot]# mkdir pxelinux.cfg
[root@server222 tftpboot]# ls
pxelinux.cfg
[root@server222 tftpboot]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/
[root@server222 tftpboot]# cp /mnt/cdrom/images/pxeboot/initrd.img /tftpboot/
[root@server222 tftpboot]# cp /mnt/cdrom/images/pxeboot/vmlinuz /tftpboot/
[root@server222 tftpboot]# cp /mnt/cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

/usr/share/syslinux/pxelinux.0 开机启动引导文件
/mnt/cdrom/images/pxeboot/initrd.img 内核初始化文件(在镜像里面)
/mnt/cdrom/images/pxeboot/vmlinuz 内核初始化文件
/mnt/cdrom/isolinux/isolinux.cfg 开机引导文件

修改default,指定安装操作系统的方式和ks.cfg文件路径

[root@server222 tftpboot]# vim /tftpboot/pxelinux.cfg/default
 1 default linux    # 指定默认入口名称
 64 append initrd=initrd.img inst.repo=ftp://192.168.1.10/pub inst.ks=ftp://192.168.1.10/ks.cfg # 通过ftp服务器方式来访问kickstart文件
[root@server222 tftpboot]#
[root@server222 tftpboot]# chmod 644 /tftpboot/pxelinux.cfg/default

将光盘挂在到pub目录下,并更改源位置

[root@server222 tftpboot]# mount /dev/cdrom /var/ftp/pub/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server222 tftpboot]# vim /etc/fstab
[root@server222 tftpboot]# tail -n 1 /etc/fstab
/dev/cdrom      /var/ftp/pub    iso9660                 defaults        0 0
[root@server222 tftpboot]# 
[root@server222 tftpboot]# vim /etc/yum.repos.d/bendi.repo
[root@server222 tftpboot]# cat /etc/yum.repos.d/bendi.repo
[development]       # 此处要改成development
name=///mnt/cdrom
baseurl=file:///var/ftp/pub
enabled=1
gpgcheck=0
[root@server222 tftpboot]# 
[root@server222 tftpboot]# umount /mnt/cdrom/
[root@server222 tftpboot]# mount -a
[root@server222 tftpboot]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  4.8G   13G   28% /
devtmpfs                devtmpfs  977M     0  977M    0% /dev
tmpfs                   tmpfs     993M     0  993M    0% /dev/shm
tmpfs                   tmpfs     993M  9.0M  984M    1% /run
tmpfs                   tmpfs     993M     0  993M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  161M  854M   16% /boot
tmpfs                   tmpfs     199M   20K  199M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /var/ftp/pub
[root@server222 tftpboot]# 

确保/etc/yum.repos.d/目录下仅仅只有一个配置文件

安装system-config-kickstart软件包

[root@server222 tftpboot]# system-config-kickstart

如果报出一下错误,请在图形界面中打开终端进行再次输入命令,因为文本界面弹不出来一个界面
Could not open display because no X server is running.
Try running ‘system-config-kickstart --help’ for a list of options.

PXE无人值守安装服务器_第3张图片

可将默认语言改为简体中文

PXE无人值守安装服务器_第4张图片

PXE无人值守安装服务器_第5张图片

PXE无人值守安装服务器_第6张图片

网络配置以及防火墙配置可以先不用配置,默认自动分配IP

PXE无人值守安装服务器_第7张图片

PXE无人值守安装服务器_第8张图片

PXE无人值守安装服务器_第9张图片

PXE无人值守安装服务器_第10张图片

PXE无人值守安装服务器_第11张图片

PXE无人值守安装服务器_第12张图片

PXE无人值守安装服务器_第13张图片

PXE无人值守安装服务器_第14张图片

脚本文件

rm -rf /etc/yum.repos.d/*
echo '[rhel-source]
name=Red Hat Enterprise Linux
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0' > /etc/yum.repos.d/rhel7.repo

ctrl + s 保存并退出

PXE无人值守安装服务器_第15张图片

将ks.cfg复制进pub目录

ks.cfg就是无人值守安装时要用的Kickstart文件

[root@server222 pub]# cd
[root@server222 ~]# ls
anaconda-ks.cfg       ks.cfg  模板  图片  下载  桌面
initial-setup-ks.cfg  公共    视频  文档  音乐
[root@server222 ~]# cp ks.cfg /var/ftp/
[root@server222 ~]# systemctl restart vsftpd
[root@server222 ~]# systemctl start dhcpd
[root@server222 ~]# systemctl enable vsftpd
[root@server222 ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.

关闭selinux以及防火墙

[root@server222 ~]# vim /etc/selinux/config
[root@server222 ~]# awk -F '=' 'NR==7 {print $2}' /etc/selinux/config
disabled
[root@server222 ~]# systemctl stop firewalld.service
[root@server222 ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

无人安装系统

如果是服务器,请忽略这步创建虚拟机

PXE无人值守安装服务器_第16张图片

创建虚拟机的步骤不再演示,只演示重要部分

此处网卡需要vmnet4,另外硬盘最好单个文件,给30GB
PXE无人值守安装服务器_第17张图片

开始识别tftp,然后装系统
PXE无人值守安装服务器_第18张图片

PXE无人值守安装服务器_第19张图片

你可能感兴趣的:(Linux)