一名菜鸟学习编程技术,记录所学知识并给大家,希望大家多多支持。 平台:VMware® Workstation 12 Pro或以上版本; 原理和概念 PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。 Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。 (选择NAT网络连接模式,该模式自带DHCP服务,为了不影响综合创作效果,关闭虚拟机NAT模式的DHCP服务器(win10系统) 选中NAT模式,按照图中配置即可! 以上操作步骤的实现表明已经成功搭建并配置了本项目的环境条件和文件设置,那么接下来的操作将是安装PXE工作环境所需要的软件和工具。 以上设置了网络路由,添加的53和54行表示DHCP服务器提供了ip地址之外,还提供了一个文件路径名称。 ①删除的文件代表着http服务可能拥有默认首页,欢迎页,为了提供安装源的②下载或者ks文件的下载,所以此文件删除; 打开SSH远程连接工具,将CentOS-6.10传输到虚拟机的桌面 回到虚拟机中,将该镜像文件挂载到/mnt下 说明:ks=http:192.168.153.100 表示一个路径,自动安装的配置文件,后续创建 ,这个文件是通过之前安装的httpd服务提供下载 查看在文件中是否存在一个centos6.cfg的文件 (将生成好的自动安装的ks文件放到httpd工作路径下),挂载镜像文件到httpd工作路径下的centos6下 如下图则表示测试成功 此时可以打开我们的浏览器,输入虚拟机配置的ipaddr地址来查看centos的相关文件文章目录
环境需求分析
操作系统:Red Hat Enterprise Linux 6.5或以上(CentOS7);
网络环境:NAT(或者桥接),自行规划ip地址,建议使用dhcp默认配置文件中的地址;
系统环境:firewalld(iptables)off、selinuxoff、防火墙规则清空。环境实现原理
什么是PXE?
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工作过程:
详细工作流程,请参考下面这幅图:
什么是Kickstart?
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地址
),点击图中的虚拟网络编辑器。
修改网络配置文件
[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.d/* /yumrepo [root@WW0129 ~]# yum repolist
安装PXE软件和其他工具:
安装相关服务:dhcp tftp* xinetd httpd *kickstart tree syslinux。
安装软件和工具
[root@WW0129 ~]# yum install -y dhcp tftp* xinetd httpd *kickstart tree syslinux
通过rpm查看安装的服务的文件生成 找到主配置文件
[root@WW0129 ~]# rpm -ql dhcp [root@WW0129 ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes [root@WW0129 ~]# vim /etc/dhcp/dhcpd.conf
启动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文件 提供安装源访问路径
③对应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下
[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=https://192.168.153.100/centos6.cfg label vesa
查看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
index@WW0129 ~]$ ls /var/www/html/ centos6
准备ks文件和安装源
[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 https://192.168.153.100/centos6.cfg [root@WW0129 ~]# curl --head https://192.168.153.100/centos6/GPL
环境实现效果图
请尊重原创,虽然网上很多相关教程,但是细心看总有不同的地方,转载请带原文地址,谢谢!
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算