Linux网络服务--使用PXE进行网络装机牛逼的很(PXE远程安装与kickstart无人值守安装)

前言

要建立 PXE网络安装环境他需PXE (Pre-boot Execution Environment,预启动执行环境),他是由Inter公司开发的网络引导技术,工作在Client/server 环境,允许客户机通过网络从远程服务器下载引导镜像并结合Kickstart来实现无人值守自动安装。
内容有些多请耐心学习。

一:部署PXE远程安装服务

1.1:PXE批量部署的优点

  • 规模化:同时装配多台服务器

  • 自动化:安装系统、配置各种服务

  • 远程实现:不需要光盘、U盘等安装介质

mark

安装速度取决于网络的带宽

1.2关于PXE网络

1.21:PXE,(Pre-boot eXcution Environment)

  • 预启动执行环境,在操作系统之前运行

  • 可用于远程安装,构建无盘工作站

1.22:服务端

  • 运行DHCP服务,用来分配地址,定位引导程序

  • 引导程序:微代码,存放在TFTP服务器中

  • 运行TFTP服务器,提供引导程序下载

  • TFTP服务器时UDP协议,端口号69

  • 镜像文件存放在:vsftpd,TCP协议,端口号20,21

1.23:客户端

  • 网卡支持PXE协议

  • 主板支持网络启动

  • 获得IP后第一件事是获取引导程序,根据引导的指向安装系统

1.3:PXE的工作过程

  • PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP

  • DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上)

  • PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件

  • PXE Client 取得pxelinux.0 文件后之执行该文件

  • 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统

  • 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装

二:配置PXE装机服务器

2.1:基本部署过程

  • 准备Centos 7 安装源
  • 配置DHCP服务,用来分配地址、指出引导程序位置
  • 配置TFTP服务,用来提供内核、引导程序
  • 配置启动菜单

2.2:TFTP服务及引导文件

  • 安装tftp-server软件包,启用tftp服务
  • 准备内核文件vmlinuz
  • 准备初始化镜像initrd.img
  • 准备引导程序文件pxelinux.0 (引导程序文件pxelinux.0依赖于syslinux程序,需要先安装syslinux程序)
  • 还有一个是tftp的默认配置文件需要修改 /etc/xinetd.d/tftp

2.3:实验步骤

实验环境

使用VMware软件中centos 7系统

打开一台centos 7 (裸金属设置 未设置系统)

1:添加一块网卡,设置仅主机模式,主网卡设置安装服务端去连接裸机,另一块用来下载软件包

mark

[root@shuai02 ~]# ifconfig              ##查看网卡信息  ens36是新添加网卡
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 20.0.0.88  netmask 255.255.255.0  broadcast 20.0.0.255
        inet6 fe80::20c:29ff:febd:4f59  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:bd:4f:59  txqueuelen 1000  (Ethernet)
        RX packets 14091  bytes 7604574 (7.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2897  bytes 276248 (269.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:bd:4f:63  txqueuelen 1000  (Ethernet)
        RX packets 248  bytes 74832 (73.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 94  bytes 16440 (16.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@shuai02 ~]# cd /etc/sysconfig/network-scripts/
[root@shuai02 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@shuai02 network-scripts]# vim ifcfg-ens36
##
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=staic      ##这边设置为静态
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
UUID=e5c91dc3-cda7-452d-80ae-7ce1a28cfc65            ##这边的uuid记得删掉
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.138.100      ##配置IP地址
PREFIX=24                   ##配置子网掩码
GATEWAY=192.168.138.0       ##配置网关

###查网卡信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 20.0.0.42  netmask 255.255.255.0  broadcast 20.0.0.255
        inet6 fe80::6515:657e:1007:656f  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:bd:4f:59  txqueuelen 1000  (Ethernet)
        RX packets 15709  bytes 7929074 (7.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3637  bytes 376086 (367.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:bd:4f:63  txqueuelen 1000  (Ethernet)
        RX packets 882  bytes 268140 (261.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 365  bytes 61698 (60.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@shuai02 ~]# systemctl restart network       ##重启网卡
[root@shuai02 ~]# setenforce 0                    ##关闭安全功能
[root@shuai02 ~]#  systemctl stop firewalld.service  ##关闭防火墙
##设置DHCP服务
[root@shuai02 ~]# rpm -q dhcp                    ##查看dhcp是否安装
dhcp-4.2.5-79.el7.centos.x86_64
[root@shuai02 ~]# yum install dhcp* -y	        ##没有安装就用yum安装
[root@shuai02 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@shuai02 ~]# vim /etc/dhcp/dhcpd.conf      
subnet 192.168.138.0 netmask 255.255.255.0 {
 28         range 192.168.138.20 192.168.138.10029         option routers 192.168.138.10030         option domain-name-servers 8.8.8.831         next-server 192.168.138.100;        ##指定TFTP服务器地址
 32         filename "pxelinux.0";         ##指定要下载的引导程序文件
 33 }
##设置TFTP
[root@localhost ~]# yum install tftp-server -y
完毕!
[root@localhost ~]# rpm -ql tftp-server         ##查看安装列表
/etc/xinetd.d/tftp                              ##配置文件
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot                               ##站点
[root@localhost ~]# vim /etc/xinetd.d/tftp                             ##编辑站点

mark

[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls

安装设置syslinux

[root@localhost tftpboot]# yum install syslinux -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
。。。省略
[root@localhost tftpboot]# rpm -ql syslinux | grep pxelinux.0  ##过滤pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/         ##把引导程序复制到站点
[root@localhost tftpboot]# ls       ##查看列表   启动文件已经有了
pxelinux.0
  
[root@localhost tftpboot]# yum install vsftpd -y
[root@localhost tftpboot]#  rpm -ql vsftpd 
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/lib/systemd/system-generators/vsftpd-generator
/usr/lib/systemd/system/vsftpd.service
/usr/lib/systemd/system/vsftpd.target
/usr/lib/systemd/system/vsftpd@.service
/usr/sbin/vsftpd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz
/var/ftp                           ##站点
/var/ftp/pub
...省略

[root@localhost tftpboot]# cd /var/ftp/         ##切换到目录
[root@localhost ftp]# ls
pub
[root@localhost ftp]# mkdir shuaige             ##创建挂载点
[root@localhost ftp]# ls
pub  shuaige
###进行挂载
[root@localhost ftp]# mount /dev/sr0 /var/ftp/shuaige/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  5.0G   46G   10% /
devtmpfs                devtmpfs  3.6G     0  3.6G    0% /dev
tmpfs                   tmpfs     3.6G     0  3.6G    0% /dev/shm
tmpfs                   tmpfs     3.6G   13M  3.6G    1% /run
tmpfs                   tmpfs     3.6G     0  3.6G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       242G   33M  242G    1% /home
tmpfs                   tmpfs     726M  4.0K  726M    1% /run/user/42
tmpfs                   tmpfs     726M   60K  726M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /var/ftp/shuaige

[root@localhost ftp]# cd shuaige/
[root@localhost shuaige]# ls            ##shuaige挂载点里已经有文件了
CentOS_BuildTag  images    repodata
EFI              isolinux  RPM-GPG-KEY-CentOS-7
EULA             LiveOS    RPM-GPG-KEY-CentOS-Testing-7
GPL              Packages  TRANS.TBL
[root@localhost shuaige]# ls images/pxeboot/
initrd.img  TRANS.TBL  vmlinuz
[root@localhost shuaige]# cd /images/pxeboot 
##复制初始化文件initrd.img跟内核文件到tftp的站点
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@localhost pxeboot]# ls /var/lib/tftpboot
initrd.img  pxelinux.0  vmlinuz

设置默认配置文件

[root@localhost pxeboot]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default
default auto
prompt 1

label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.138.100/shuaige


label linux text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168.138.100/shuaige


label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.138.100/shuaige
~                                                                                                                                                
[root@localhost pxelinux.cfg]# systemctl start dhcpd
[root@localhost pxelinux.cfg]# systemctl start tftp
[root@localhost pxelinux.cfg]# systemctl start vsftpd

mark

mark

三:实现Kickstart无人值守安装

##安装kickstart工具
[root@localhost pxelinux.cfg]# yum -y install system-config-kickstart

3.1:安装完毕我们打开虚拟机点击应用程序----点击kickstart

mark

3.2:选择基本配置

mark

3.3::安装方法

mark

3.4:设置引导装载程序选项

mark

3.5:设置分区信息

mark

3.6:网路配置

mark

3.7:防火墙设置

mark

3.8设置安装脚本

mark

mark

[root@localhost pxelinux.cfg]# cd /var/ftp
[root@localhost ftp]# ls
ks.cfg  pub  shuaige
[root@localhost ftp]# cd ~
[root@localhost ~]# ls
anaconda-ks.cfg       公共  视频  文档  音乐
initial-setup-ks.cfg  模板  图片  下载  桌面
[root@localhost ~]# vim anaconda-ks.cfg 

mark

[root@localhost ~]# cd /var/ftp
[root@localhost ftp]# vim ks.cfg 

mark

[root@localhost ftp]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ls
default
[root@localhost pxelinux.cfg]# vim default 

mark

##重启服务
[root@localhost pxelinux.cfg]# systemctl restart dhcpd
[root@localhost pxelinux.cfg]# systemctl restart tftp
[root@localhost pxelinux.cfg]# systemctl restart vsftpd

mark

感谢观看,希望能对你有所帮助

猜你喜欢

转载自blog.csdn.net/weixin_47151643/article/details/107454652