PXE简介

PXE,全名Pre-boot Execution Environment,预启动执行环境;
通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
由Intel和Systemsoft公司于1999年9月20日公布的技术;
Client/Server的工作模式;
PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;
PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)。

PXE的工作流程:

实验环境:

虚拟机:VMware® Workstation 15 Pro

均使用NAT连接   网段为192.168.1.0/24

!! 使用支持PXE的网卡

!!关闭软件自带的DHCP服务

PXE 服务器 ---- Centos 7.4

IP地址:192.168.1.1/24

网关: 192.168.1.254

版本如下

!!由于涉及到主机间不同基于不同协议的通信,所以为了避免不必要的麻烦,我们选择关闭防火墙以及selinux。如下

[root@localhost ~]# systemctl stop firewalld         //关闭防火墙
[root@localhost ~]# setenforce //临时关闭Selinux,重启失效

一、部署DHCP

安装以下:

[root@localhost ~]#yum install dhcp -y

  1、复制模板

  

  2、编辑配置文件

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
//从47行开始编辑
subnet 192.168.1.0 netmask 255.255.255.0 { //修改网段和掩码
range 192.168.1.210 192.168.1.215; //分配地址池
option domain-name-servers 192.168.1.1; //指定dns服务器
# option domain-name "internal.example.org"; //注释此行
option routers 192.168.1.254; //指定网关
option broadcast-address 192.168.1.255; //广播地址
default-lease-time ;
max-lease-time ;
next-server 192.168.1.1; //指定下一跳---TFTP
filename "pxelinux.0"; //指定去下载一个pxelinux.0文件
}

    3、重启DHCP并开启自启动

[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.

二、部署TFTP

安装以下:

[root@localhost ~]# yum install tftp-server xinetd -y

  1、编辑配置文件

[root@localhost ~]# vim /etc/xinetd.d/tftp 

  2、重启TFTP并开启自启动

[root@localhost ~]# systemctl restart tftp
[root@localhost ~]# systemctl enable tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.
[root@localhost ~]# systemctl restart xinetd
[root@localhost ~]# systemctl enable xinetd

三、安装Syslinux

  安装如下:

[root@localhost ~]# yum install syslinux -y

四、部署Kickstart

  1、配置ks.cfg文件

//ks.cfg的模板在/root下的anaconda-ks.cfg文件

a、创建ks.cfg存放目录

[root@localhost ~]# mkdir /pxe

b、复制模板

[root@localhost ~]# cp /root/anaconda-ks.cfg /pxe/ks.cfg

c、编辑ks.cfg

[root@localhost ~]# vim /pxe/ks.cfg 

关键字 含义
install 告知安装程序,这是一次全新安装,而不是升级upgrade。
url --url=" " 通过FTP或HTTP从远程服务器上的安装树中安装。
url --url="http://10.0.0.7/CentOS-6.7/"
url --url ftp://<username>:<password>@<server>/<dir>
nfs 从指定的NFS服务器安装。
nfs --server=nfsserver.example.com --dir=/tmp/install-tree
text 使用文本模式安装。
lang 设置在安装过程中使用的语言以及系统的缺省语言。lang en_US.UTF-
keyboard 设置系统键盘类型。keyboard us
zerombr 清除mbr引导信息。
bootloader 系统引导相关配置。
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
--location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。
--driveorder,指定在BIOS引导顺序中居首的驱动器。
--append=,指定内核参数.要指定多个参数,使用空格分隔它们。
network 为通过网络的kickstart安装以及所安装的系统配置联网信息。
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
--bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的。
static方法要求在kickstart文件里输入所有的网络信息。
network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2
请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。
--ip=,要安装的机器的IP地址.
--gateway=,IP地址格式的默认网关.
--netmask=,安装的系统的子网掩码.
--hostname=,安装的系统的主机名.
--onboot=,是否在引导时启用该设备.
--noipv6=,禁用此设备的IPv6.
--nameserver=,配置dns解析.
timezone 设置系统时区。timezone --utc Asia/Shanghai
authconfig 系统认证信息。authconfig --enableshadow --passalgo=sha512
设置密码加密方式为sha512 启用shadow文件。
rootpw root密码
clearpart 清空分区。clearpart --all --initlabel
--all 从系统中清除所有分区,--initlable 初始化磁盘标签
part 磁盘分区。
part /boot --fstype=ext4 --asprimary --size=
part swap --size=
part / --fstype=ext4 --grow --asprimary --size=
--fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat。
--asprimary,强迫把分区分配为主分区,否则提示分区失败。
--size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。
--grow,告诉分区使用所有可用空间(若有),或使用设置的最大值。
firstboot 负责协助配置redhat一些重要的信息。
firstboot --disable
selinux 关闭selinux。selinux --disabled
firewall 关闭防火墙。firewall --disabled
logging 设置日志级别。logging --level=info
reboot 设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机。

d、给予ks.cfg可读权限

[root@localhost ~]# chmod +r /pxe/ks.cfg
[root@localhost ~]# ll /pxe/ks.cfg //列出ks.cfg的详细属性
-rw-r--r--. root root Aug : /pxe/ks.cfg

  2、复制内核文件

内核文件、虚拟根文件以及菜单文件,我们都是通过tftp服务来提供的,由于系统及版本的不同,对于一个比较复制机群来说,我们需要准备不同系统,不同版本的内核文件,initrd.img文件。菜单文件只需要一份即可。/var/lib/tftpboot/目录规划如下:

a、创建镜像下载目录

[root@localhost ~]# mkdir /pxe/cdrom

b、复制内核文件

//从挂载的光驱里面复制内核文件:     //我挂载的是mnt
[root@localhost ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
[root@localhost ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@localhost ~]# cp /mnt/isolinux/boot.msg /var/lib/tftpboot/
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

//复制syslinux的pxelinux.0
[root@localhost ~]# cp /usr/share/syslinux/pxelinux. /var/lib/tftpboot/

c、编辑应答文件

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

d、复制光驱里的文件到下载目录

[root@localhost ~]# cp -rf /mnt/* /pxe/cdrom/                  //东西很多,要复制2~3分钟左右

五、部署NFS

  1、安装NFS如下

[root@localhost ~]# yum install nfs-utils -y

  2、编辑NFS配置文件

[root@localhost ~]# vim /etc/exports

  3、重启NFS并加入自启动

 

[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

!!再次提醒,注意防火墙,会影响效果

!!要么允许要么关闭!

!!由于涉及到主机间不同基于不同协议的通信,所以为了避免不必要的麻烦,我们选择关闭防火墙以及selinux。如下

[root@localhost ~]# systemctl stop firewalld         //关闭防火墙
[root@localhost ~]# setenforce 0 //临时关闭Selinux,重启失效

六、安装虚拟机

 

开始安装!

安装完成

七、我的踩坑记录

问题1:

运行内存给的不过,Centos7.3以上的版本貌似要2G及以上才可以

解决方法:关机将运行内存调至2G即可

问题2:

无法连接到nfs服务器,nfs服务器格式错误

/var/lib/tftproot/pxelinux.cfg/default  有问题

错误原因

参数格式错误:ks=nfs:192.168.1.1/var/www/html/ks.cfg

正确格式:ks=nfs:192.168.1.1:/var/www/html/ks.cfg

一个不小心参数少打个冒号

解决方法:修改为正确格式即可

本篇文章由博客园博主[伊诺丶]原创,转载请注明出处https://www.cnblogs.com/hinaux/p/Article_2.html
否则将追究法律责任!!

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4的更多相关文章

  1. RHEL7下PXE+NFS+Kickstart无人值守安装操作系统

    RHEL7下PXE+NFS+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] name= ...

  2. kickstart 实现批量安装centos7.x系统

    1.1 安装系统的方法 l  光盘(ISO文件,光盘的镜像文件)===>>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 l  U盘:ISO镜像刻录到U盘==& ...

  3. Linux环境搭建-在虚拟机中安装Centos7.0

    最近在空闲时间学习Linux环境中各种服务的安装与配置,都属于入门级别的,这里把所有的学习过程记录下来,和大家一起分享. 我的电脑系统是win7,所以我需要在win7上安装一个虚拟机-VMware,然 ...

  4. 别人的Linux私房菜(4)安装CentOS7

    linux磁盘分区参考: 添加磁盘分区(总30G). BIOS boot 2MB 系统自定义文件系统 分区格式为主要分区 /boot 1GB  文件系统为xfs  主要分区 / 10GB 文件系统为x ...

  5. day3 自动部署安装软件到其他的机器设备上

    PS:原理是在本机创建boot.sh指向每一台主机,使用脚本命令去执行,然后就会自动安装软件 PS:boot.sh里面放着1.免密登录 2.发送每台机器install.sh 这个install.sh中 ...

  6. 我的Linux之路——windows10用WMware安装CentOS7.5 虚拟机详细步骤

    出自:https://www.jianshu.com/p/99f784d465f4 VMware简介:   VMware是一个虚拟PC的软件,可以在现有的操纵系统上虚拟出一个新的硬件环境,相当于模拟出 ...

  7. 使用PXE+NFS EFI引导安装RHEL6/7以及Kickstart安装

    PXE引导的步骤: 1.开机后选择网络启动,client端向server端的dhcpd发起获取IP地址的dhcp请求. 2.server端分配IP后,dhcpd会同时根据其配置文件,通过TFTP协议发 ...

  8. 使用PXE安装CentOS7

    1.环境 本文使用VMware 虚拟机进行实验. 点击VMware--编辑--虚拟网络编辑器,新建VMnet15,选择仅主机模式,取消勾选DHCP服务(因为这里使用自己的DHCP服务).我这里配好后是 ...

  9. 从零开始学Linux系统(三)安装CentOS-7及软件包管理操作

    推荐博文: VirtualBox安装CentOS7步骤详解: https://my.oschina.net/AaronDMC/blog/840753 如何安装CentOS7字符界面 :http://b ...

随机推荐

  1. LEDE安装zerotier 无法启动解决方法

    进入命令行模式,vi /etc/config/zerotier文件,把option enabled '0'的0改为1.

  2. java基础 static

    参考文章: 静态导包:https://blog.csdn.net/u012338954/article/details/51010337 常量池:http://blog.sina.com.cn/s/b ...

  3. 【Gamma】事后分析

    目录 [Gamma]事后分析 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结 照片 [Gamma]事后分析 设想和目标 我们的软件要解决什么问题?是否定义得很清 ...

  4. INSERT,UPDATE,DELETE时不写日志

    我们在维护数据库的过程中,可能会遇到海量数据的存储和维护,但在有的情况下,需要先试验,然后再对实际的数据进行操作,那么在试验这个过程中,我们是不需要写日志的,因为当你对海量数据操作时,产生的日志可能会 ...

  5. C# 激活主窗口

    今天同学跟我说了一个bug,虽然很简单,但还是记录一下,也好让我养成写东西的习惯. C# windows form 程序中,发生某个事件时,需要自动弹出一个窗口,提示用户,并等待用户输入进行处理. 如 ...

  6. spring Valid @Pattern 常见的验证表达式

    1 匹配首尾空格的正则表达式:(^\s*)|(\s*$)   2 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 3 只能输入数字:"^[0-9]*$". 4 只 ...

  7. GIT 安装和使用

    目录 GIT 安装和使用 一.GIT 介绍 二.GIT 安装 三.GIT 使用 1. 配置 2. 创建版本库 3. 远程仓库 4. 分支管理 5.标签管理 6. 自定义 GIT 安装和使用 一.GIT ...

  8. 通过ip查询相关网络位置信息

    结果:

  9. Go语言入门——hello world

    Go 语言源代码文件扩展名是.go. 知识点:1. go语言代码的第1行必须声明包2. 入口的go语言代码(包含main函数的代码文件)的包必须是main,否则运行go程序会显示go run: can ...

  10. spring注解@postConstruct与constructor与@Autowired的启动顺序

    本文链接:https://blog.csdn.net/zpflwy1314/article/details/80797756 @Postcontruct’在依赖注入完成后自动调用,例如要将对象a注入到 ...