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. RPKM FPKM TPM RSEM

    RPKM:Reads Per Kilobases Per Million Reads指的是每1百万个reads中比对到每1kb碱基外显子上的reads数 FPKM:Fragments Per Kilo ...

  2. 使用helm管理复杂kubernetes应用

    1. 查看仓库: $ helm repo list NAME URL stable https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/ch ...

  3. CF1215E Marbles

    CF1215E Marbles 传送门 思路 一道比较有意思的状压dp. 首先有一个结论,把一个序列通过交换相邻元素排序,那么交换次数的最小值就是逆序对个数. 证明:从小到大依次把元素换到最前面,那么 ...

  4. 一些精简的JavaScript代码集合

    日历 创建过去七天的数组,如果将代码中的减号换成加号,你将得到未来7天的数组集合 // 创建过去七天的数组 [...Array(7).keys()].map(days => new Date(D ...

  5. bat 文件追加

    @echo off set str1=disable_modules:set str2= - mine echo %str1% >> c:\minionecho %str2% >&g ...

  6. 【Gamma阶段】第九次Scrum Meeting

    冰多多团队-Gamma阶段第九次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 卓培锦 美化前端及编辑器界面,编辑器风格切换(添加夜间模式) UI界面手势切换 牛雅哲 添加scp工具,添加 ...

  7. “/usr/local/lib/libosipparser2.so.7: could not read symbols: Invalid operation” 异常解决

    编译c代码报错如下 /usr/bin/ld: /tmp/ccl8nBND.o: undefined reference to symbol 'osip_message_get_body' /usr/b ...

  8. TRex,一个基于DPDK的数据包发生器,测试仪

    1. introduction TRex是cisco基于Intel dpdk开发的软件程序.推荐在CentOS/RHEL 7.6, 64bits中运行,否则connectx-4网卡不可使用. 笔者在U ...

  9. Python【每日一问】20

    问: [基础题]: 企业发放的奖金根据利润提成.利润(I): 低于或等于10万元时,奖金可提10%: 高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: ...

  10. hanlp添加词典不起作用

    不起作用的原因很多,这里列举几个 这里的hanlp我虽然用的maven建立的但是要添加自定义词典,所以没有用maven引入的方式,而是下载了data+hanlp.jar文件          data ...