一名菜鸟学习编程技术,记录所学知识并分享给大家,希望大家多多支持。
文章目录
- 环境需求分析
- 环境实现原理
- 什么是PXE?
- PXE工作过程:
- 什么是Kickstart?
- 关键配置命令
- 环境准备:
- 关闭防火墙
- 查看防火墙状态
- 防火墙设置开机不启动
- 设置selinux为关闭状态
- 查看设置情况
- 清空防火墙规则
- 设置PXE服务器ip地址
- 修改网络配置文件
- 修改域名解析文件
- 创建仓库并选择阿里镜像源
- 安装PXE软件和其他工具:
- 安装软件和工具
- 通过rpm查看安装的服务的文件生成 找到主配置文件
- 启动dhcpd服务
- 验证dhcpd服务是否成功启动(UDP的67端口)
- 查看以及配置tftp服务
- 对配置文件进行修改
- 启动tftp服务并查看服务是否正常
- 配置http服务 提供ks文件 提供安装源访问路径
- 配置PXE的启动镜像和文件系统等:
- 准备pxelinux.0文件
- 将pxelinux.0文件存放到tftp共享路径下
- 将menu.v32(启动菜单的样式文件)存放到tftp共享路径下
- 准备安装镜像文件,挂载到/mnt下
- 拷贝镜像文件中的相关启动文件到tftp的共享目录,系统安装时,需要引导,引导需要最小文件系统以及最小内核
- 将pxeboot下的所有文件拷贝到tftp共享路径
- 在tftp共享路径下需要差UN构建一个启动配置文件夹,并设置一个本系统自带的启动配置文件到该目录下(启动配置文件在tftp的共享路径下,名称为pxelinux.cfg/default)
- 修改default文件
- 查看default文件的权限、修改其权限以及树形结构图
- 创建ks文件(图形界面方式,配置的文件如图)
- 准备ks文件和安装源
- 测试tftp和http
- 环境实现效果图
环境需求分析
平台:VMware® Workstation 12 Pro或以上版本;
操作系统:Red Hat Enterprise Linux 6.5或以上(CentOS7);
网络环境:NAT(或者桥接),自行规划ip地址,建议使用dhcp默认配置文件中的地址;
系统环境:firewalld(iptables)off、selinuxoff、防火墙规则清空。
环境实现原理
原理和概念
什么是PXE?
PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
PXE:实际上通过提供网络安装操作系统的前期准备工作。只是用来引导安装。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 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,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了,从而实现引导的功能。
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** 方式之一进行安装;
详细工作流程,请参考下面这幅图:
什么是Kickstart?
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
PXE+Kickstart 无人值守安装操作系统完整过程如下:
关键配置命令
环境准备:
CentOS 7:关闭防火墙、设置selinux为关闭状态,清空防火墙规则
关闭防火墙
[root@WW0129 ~]# systemctl stop firewalld
查看防火墙状态
[root@WW0129 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 一 2020-05-25 04:35:53 CST; 8s ago
Docs: man:firewalld(1)
Process: 839 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 839 (code=exited, status=0/SUCCESS)
防火墙设置开机不启动
[root@WW0129 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
设置selinux为关闭状态
[root@WW0129 ~]# sed -i 's/enforcing/permissive/' /etc/selinux/config
[root@WW0129 ~]# setenforce 0
查看设置情况
[root@WW0129 ~]# getenforce
Permissive
清空防火墙规则
[root@WW0129 ~]# iptables -F
[root@WW0129 ~]# iptables -X
[root@WW0129 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
设置PXE服务器ip地址
(选择NAT网络连接模式,该模式自带DHCP服务,为了不影响综合创作效果,关闭虚拟机NAT模式的DHCP服务器(win10系统)
),点击图中的虚拟网络编辑器。
选中NAT模式,按照图中配置即可!
修改网络配置文件
[root@WW0129 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
1 TYPE=Ethernet
2 PROXY_METHOD=none
3 BROWSER_ONLY=no
4 BOOTPROTO=static
5 DEFROUTE=yes
6 IPV4_FAILURE_FATAL=no
7 IPADDR=192.168.153.100
8 NETMASK=255.255.255.0
9 GATEMASK=192.168.153.30
10 #IPV6INIT=yes
11 #IPV6_AUTOCONF=yes
12 #IPV6_DEFROUTE=yes
13 #IPV6_FAILURE_FATAL=no
14 #IPV6_ADDR_GEN_MODE=stable-privacy
15 NAME=ens33
16 #UUID=0b12abf7-7beb-4949-a615-d0ebf80afb73
17 DEVICE=ens33
18 ONBOOT=yes
[root@WW0129 ~]# systemctl restart network
[root@WW0129 ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.153.100 netmask 255.255.255.0 broadcast 192.168.153.255
inet6 fe80::20c:29ff:feb6:709d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b6:70:9d txqueuelen 1000 (Ethernet)
RX packets 231 bytes 42450 (41.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 4220 (4.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
修改域名解析文件
[root@WW0129 ~]# echo 'nameserver 192.168.1.1' >> /etc/resolv.conf
[root@WW0129 ~]# ping www.baidu.com
PING www.a.shifen.com (36.152.44.95) 56(84) bytes of data.
64 bytes from localhost (36.152.44.95): icmp_seq=1 ttl=128 time=32.4 ms
64 bytes from localhost (36.152.44.95): icmp_seq=2 ttl=128 time=35.7 ms
64 bytes from localhost (36.152.44.95): icmp_seq=3 ttl=128 time=35.4 ms
创建仓库并选择阿里镜像源
[root@WW0129 ~]# mkdir /yumrepo
[root@WW0129 ~]# mv /etc/yum.repos.ddhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@WW0129 ~]# vim /etc/dhcp/dhcpd.conf
以上设置了网络路由,添加的53和54行表示DHCP服务器提供了ip地址之外,还提供了一个文件路径名称。
启动dhcpd服务
[root@WW0129 ~]# systemctl start dhcpd
[root@WW0129 ~]# systemctl status dhcpd.service
验证dhcpd服务是否成功启动(UDP的67端口)
[root@WW0129 ~]# ss -tlunp | grep 67
查看以及配置tftp服务
[root@WW0129 ~]# rpm -ql tftp-server
对配置文件进行修改
[root@WW0129 ~]# vim /etc/xinetd.d/tftp
启动tftp服务并查看服务是否正常
[root@WW0129 ~]# systemctl start xinetd.service
[root@WW0129 ~]# ss -tlunp | grep 69
配置http服务 提供ks文件 提供安装源访问路径
①删除的文件代表着http服务可能拥有默认首页,欢迎页,为了提供安装源的②下载或者ks文件的下载,所以此文件删除;
③对应httpd服务还需要在它的工作路径下创建一个存放安装镜像的目录;
④启动httpd服务并查看服务是否正常
[root@WW0129 ~]# rm -rf /etc/httpd/conf.d/welcome.conf
[root@WW0129 ~]# mkdir /var/www/html/centos6
[root@WW0129 ~]# systemctl start httpd.service
[root@WW0129 ~]# ss -tlunp | grep 80
配置PXE的启动镜像和文件系统等:
准备相关文件:启动镜像,启动文件系统,boottloader菜单,pxelinux.0文件,安装镜像。
准备pxelinux.0文件
[root@WW0129 ~]# rpm -ql syslinux | grep pxe
/usr/share/doc/syslinux-4.05/pxelinux.txt
/usr/share/syslinux/gpxecmd.c32
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/gpxelinuxk.0
/usr/share/syslinux/pxechain.com
/usr/share/syslinux/pxelinux.0
将pxelinux.0文件存放到tftp共享路径下
[root@WW0129 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
将menu.v32(启动菜单的样式文件)存放到tftp共享路径下
[root@WW0129 ~]# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
准备安装镜像文件,挂载到/mnt下
打开SSH远程连接工具,将CentOS-6.10传输到虚拟机的桌面
回到虚拟机中,将该镜像文件挂载到/mnt下
[root@WW0129 home]# cd /home/index/桌面/
[root@WW0129 桌面]# ls
CentOS-6.10-x86_64-minimal.iso
[root@WW0129 桌面]# mount -o loop CentOS-6.10-x86_64-minimal.iso /mnt/
mount: /dev/loop0 写保护,将以只读方式挂载
拷贝镜像文件中的相关启动文件到tftp的共享目录,系统安装时,需要引导,引导需要最小文件系统以及最小内核
[root@WW0129 桌面]# ls /mnt/images/pxeboot/
initrd.img TRANS.TBL vmlinuz
将pxeboot下的所有文件拷贝到tftp共享路径
[root@WW0129 桌面]# cp /mnt/images/pxeboot/* /var/lib/tftpboot/
在tftp共享路径下需要差UN构建一个启动配置文件夹,并设置一个本系统自带的启动配置文件到该目录下(启动配置文件在tftp的共享路径下,名称为pxelinux.cfg/default)
[root@WW0129 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@WW0129 ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改default文件
[root@WW0129 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.10!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
menu label Install CentOS6 on ^PXE
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.153.100/centos6.cfg
label vesa
说明:ks=http:192.168.153.100 表示一个路径,自动安装的配置文件,后续创建 ,这个文件是通过之前安装的httpd服务提供下载
查看default文件的权限、修改其权限以及树形结构图
[root@WW0129 ~]# ll /var/lib/tftpboot/pxelinux.cfg/default
-r--r--r--. 1 root root 943 5月 25 21:03 /var/lib/tftpboot/pxelinux.cfg/default
[root@WW0129 ~]# chmod 777 /var/lib/tftpboot/pxelinux.cfg/default
[root@WW0129 ~]# ll /var/lib/tftpboot/pxelinux.cfg/default
-rwxrwxrwx. 1 root root 943 5月 25 21:03 /var/lib/tftpboot/pxelinux.cfg/default
[root@WW0129 ~]# tree /var/lib/tftpboot/
[root@WW0129 ~]# rm -rf /var/lib/tftpboot/TRANS.TBL
[root@WW0129 ~]# rm -rf /var/lib/tftpboot/passwd
创建ks文件(图形界面方式,配置的文件如图)
[root@WW0129 ~]# system-config-kickstart
[root@WW0129 ~]# vim centos6.cfg
查看在文件中是否存在一个centos6.cfg的文件
index@WW0129 ~]$ ls /var/www/html/
centos6
准备ks文件和安装源
(将生成好的自动安装的ks文件放到httpd工作路径下),挂载镜像文件到httpd工作路径下的centos6下
[root@WW0129 ~]# ls
anaconda-ks.cfg centos6.cfg initial-setup-ks.cfg
[root@WW0129 ~]# cp centos6.cfg /var/www/html/
cp:是否覆盖"/var/www/html/centos6.cfg"? yes
[root@WW0129 ~]# cd /home/index/桌面/
[root@WW0129 桌面]# mount -o loop CentOS-6.10-x86_64-minimal.iso /var/www/html/centos6
mount: /dev/loop1 写保护,将以只读方式挂载
测试tftp和http
[root@WW0129 桌面]# cd ~
[root@WW0129 ~]# curl --head http://192.168.153.100/centos6.cfg
[root@WW0129 ~]# curl --head http://192.168.153.100/centos6/GPL
如下图则表示测试成功
此时可以打开我们的浏览器,输入虚拟机配置的ipaddr地址来查看centos的相关文件
环境实现效果图
请尊重原创,虽然网上很多相关教程,但是细心看总有不同的地方,转载请带原文地址,谢谢!