PXE无人值守安装服务器

关于作者

周李杰,最后一批90后,现居湖北武汉

孤独患者,懒癌中期,无脑幻想者。但却人畜无害,无需远离。

兴趣众多,然无一精通。正努力成为一个有趣的人。

1
2
> print("👆以上是不完整的我") //请我吃大餐将会了解更多
>

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源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[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服务以及开机服务,设置开机自启动

1
2
3
4
5
[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配置文件及开启服务

1
2
3
4
5
6
7
8
[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服务,查看端口是否开启
1
2
3
4
[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,修改配置文件及开启服务

1
2
3
4
[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

u9WmUs.jpg

u9WN5R.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[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

下面就可以更改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[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需要共享出去的文件

1
2
3
4
5
6
7
8
[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文件路径

1
2
3
4
5
[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目录下,并更改源位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[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软件包

1
[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.

uCkLzn.png

uCkjs0.png

uCkzZT.png

uCAKFe.png

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

uCAaFg.png

uCAwWj.png

uCADln.png

uCAsO0.png

uCAXfH.png

uCAx1A.png

uCKsd1.png

uCAz6I.png

脚本文件

1
2
3
4
5
6
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 保存并退出

uCEM7T.png

将ks.cfg复制进pub目录

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

1
2
3
4
5
6
7
8
9
10
[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以及防火墙

1
2
3
4
5
6
7
[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.

无人安装系统

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

uCe54O.png

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

此处网卡需要vmnet4,另外硬盘最好单个文件,给30GB
uCevUf.png

开始识别tftp,然后装系统
uCm8Vx.png

uCmBqI.png

至此PXE无人安装操作系统已经安装完成

打赏
  • © 2019-2020 Li Jie
  • Powered by Hexo Theme Ayer
    • PV:
    • UV:

喜欢就打赏吧~

支付宝
微信