pxe装机dhcp获取不到_关于PXE服务器环境搭建流程中遇到的问题及解决方法

环境准备中遇到的问题

首先需要将系统镜像挂载到 /mnt:

#mount /dev/sdd2 /mnt/usb_disk 将U盘挂载

#cp rhel-server-7.6-x86_64-dvd.iso /home 系统镜像拷到本地

#mount -o loop rhel-server-7.6-x86_64-dvd.iso /mnt

问题:ifconfig命令未找到

解决:#cd /sbin 查看此目录下是否有ifconfig,若没有,则需要安装

安装:#sudo yum install net-tools

问题:vim命令未找到

解决:#rpm -qa |grep vim

vim-enhanced-7.0.109-7.el5

vim-minimal-7.0.109-7.el5

vim-common-7.0.109-7.el5

若缺少上面任意一条(如vim-enhanced-7.0.109-7.el5),则执行

#yum -y install vim-enhanced来安装

若三条都没返回,则执行

#yum -y install vim*

问题:如何根据ifconfig显示网口名定位服务器上网口位置

#ethtool -p enp24s0

问题:解决yum源配置

#cd /etc/yum.repos.d

#vim base.repo

[base]

name=redhat

gpgcheck=0

enabled=1

:wq

#yum clean all

#yum makecache

#yum -y install

若有Python版本问题,查看解释器路径:

#whereis python

#/usr/lib/python2.6 /usr/lib64/python2.7

#vim /usr/bin/yum

#! /usr/bin/python 改为 #! /usr/bin/python2.7

#yum -y install

PXE引导的步骤:

1、开机后选择网络启动,client端向server端的dhcpd发起获取IP地址的dhcp请求。

2、server端分配IP后,dhcpd会同时根据其配置文件,通过TFTP协议发送引导文件给client端,即bootloader。

3、对于传统Legacy BIOS,一般使用syslinux提供的pxelinux.0来引导。对于EFI BIOS,需要使用efi文件引导,一般可使用Grub2。为实现UEFI SecureBoot,大多数Linux使用shim.efi嵌套调用grub.efi来引导。

4、传统Legacy BIOS引导,在pxelinux.0引导后,它会请求并加载server端tftpboot目录中,与pxelinux.0同目录下的pxelinux.cfg目录里的default文件,这个文件就是syslinux的引导配置文件,相当于grub2的grub.cfg。

5、EFI BIOS引导,在shim.efi嵌套引导了grubx64.efi之后,它会请求grubx64.efi同目录下的grub.cfg配置文件,同时加载显示引导菜单。而对于RHEL6来说,它并不支持SecureBoot,所以必须要使用grub-efi 0.97来引导,一般是BOOTX64.efi,同时它会请求同目录下的efidefault配置文件,加载并显示引导菜单。

6、在pxelinux.0/grub加载了引导配置之后,就可以选择引导项安装了,引导项必须要包含内核以及initrd,还可以包含其它的一些引导选项,比如键盘、语言、远程repo、kickstart配置文件等等。

7、内核和initrd加载之后,就可以进到安装界面正常安装了。

一、[首先将]找两台服务器,将两台服务器的IPMI端口同时连接到同一交换机,方便PC端管理:

1、将IPMI的IP adress改为动态分配,目的是让三台机器的IP在同一网段;

2、进入BIOS,Server Mgmt——Configuration address source [DHCP]

Server Mgmt——Configuration address source [DynamicBmcDhcp]

保存重启,进入BIOS,BMC Network Configuration下的Station IP adress为交换机分配的IP;

PC端登录Client 和Server的BMC IP,管理界面。

二、开始搭建,Server端使用redhat7.3系统:rhel-server-7.3-x86_64-dvd.iso,通过Legacy模式安装

1、首先找一块Server端的网卡,用作dhcpd,给Client分配IP;

#cd /etc/sysconfig/network-scripts

#vim ifcfg-enp24s0

TYPE=Ehernet

DEVICE=enp24s0

BOOTPROTO=static

IPADDR=1.1.1.2

NETMASK=255.255.255.0

ONBOOT=yes

实际操作图:

3df7fb71d8225a5e4942ac4e380635a2.png 2、关闭防火墙及清空策略

#systemctl stop firewalld.service

#systemctl disable firewalld.service

#iptables -F

#iptables -L -n

3、为防止操作过程中缺少相应的安装包,将redhat7.3系统镜像拷贝到系统下,并挂载到本机

#cp rhel-server-7.3-x86_64-dvd.iso /mnt

#mkdir /mnt/rhel7

#mount -o loop rhel-server-7.3-x86_64-dvd.iso /mnt/rhel7

4、Server端安装软件包

#yum install xinetd tftp tftp-server dhcp syslinux

#rpm -qa xinetd tftp tftp-server dhcp syslinux

#yum install xinetd tftp tftp-server dhcp syslinux

5、配置好Server网卡的IP,网段即DHCP服务器的网段,编辑dhcpd.conf文件

#cd /etc/dhcp/

#vim dhcpd.conf

option architecture-type code 93 = unsigned integer 16;

subnet 192.168.3.0 netmask 255.255.255.0

{

range 192.168.3.10 192.168.3.20;

option routers 192.168.3.3;

next-server 192.168.3.3;

class "pxeclients" {

match if substring

(option vendor-class-identifier, 0, 9) = "PXEClient";

if option architecture-type = 00:07 or option architecture-type = 00:09 {

# EFI BIOS

filename "images/shim.efi";

# filename "images/BOOTX64.efi";

} else {

# Legacy non-EFI BIOS

filename "pxelinux.0";

}

}

}

实际操作图:

6、dhcp根据配置文件,通过tftp发送引导文件给Client,将引导文件全部放入tftpboot文件包下:

pxelinux启动(tftp):配置文件

#mkdir -p /var/lib/tftpboot/pxelinux.cfg #用于存放系统镜像里的default引导文件

#mkdir -p /var/lib/tftpboot/images/rhel7 #用于存放系统镜像里的initrd.img和vmlinuz文件

#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot #对于传统的LegacyBIOS一般用syslinux提供的pxelinux.0引导

#cp /mnt/rhel7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #pxelinux.0引导后,请求加载server端tftpboot目录中,与pxelinux.0同目录下的pxelinux.cfg目录里的default文件,这个文件就是syslinux的引导配置文件,相当于grub2的grub.cfg。

#cp /mnt/rhel7/isolinux/boot.msg /mnt/rhel7/isolinux/vesamenu.c32 /var/lib/tftpboot #pxelinux.0/grub加载了引导配置后,就可以选择引导项安装,引导项必须要包含内核以及initrd等

#cp /mnt/rhel7/isolinux/vmlinuz /mnt/rhel7/isolinux/initrd.img /var/lib/tftpboot/images/rhel7/

#touch /var/lib/tftpboot/images/gurb.cfg #为实现UEFI Secureboot,大多数Linux使用shim.efi嵌套调用gurb.cfg来引导

#touch /var/lib/tftpboot/images/efidefault #BOOTX64.efi引导的同时会请求同目录下的efidefault配置文件,加载并显示引导菜单

#cp /mnt/rhel7/EFI/BOOT/BOOTX64.EFI /var/lib/tftpboot/images/ #RHEL6来说,它不支持SecureBoot,所以必须要使用gurb-efi 0.97来引导,一般是BOOTX64.efi

#cp /boot/efi/EFI/redhat/shim.efi /var/lib/tftpboot/images/ #为实现UEFI SecureBoot,大多数Linux使用shim.efi嵌套调用gurb.efi来引导

#cp /boot/efi/EFI/redhat/grubx64.efi /var/lib/tftpboot/images/ #EFI BIOS引导,在shim.efi嵌套引导了grubx64.efi之后,它会请求grubx64.efi同目录下的grub.cfg配置文件,同时加载显示引导菜单

若当前server不是RHEL7的EFI模式安装,则需从RHEL7光盘中提取shim.efi和gurbx64.cfg

#cp /mnt/rhel7/Packages/gurb2-efi-2.02-0.44.el7.x86_64.rpm /tmp/

#cp /mnt/rhel7/Packages/shim-0.9-2.el7.x86_64.rpm /tmp/

#rpm2cpio /tmp/gurb2-efi-2.02-0.44.el7.x86_64.rpm | cpio -dimv

#rpm2cpio /tmp/shim-0.9-2.el7.x86_64.rpm | cpio -dimv

#cp /tmp/boot/efi/EFI/redhat/shim.efi /var/lib/tftpboot/images/

#cp /tmp/boot/efi/EFI/redhat/gurbx64.efi /var/lib/tftpboot/images/

#tree /var/lib/tftpboot

实际操作图:

7、编辑xinted的tftp配置文件,使tftp server生效

#vim /etc/xinted.d/tftp

将disable = yes 改成disable = no,保存并退出

实际操作图:

8、将RHEL安装光盘的挂载目录使用NFS export出去

#vim /etc/exports

/mnt/rhel7 *(ro)

/mnt/ *(ro)

实际操作图:

9、重启必须的服务

#systemctl restart dhcpd

#systemctl restart xinetd

#systemctl restart nfs

#systemctl status dhcpd #同时查看xinetd和nfs,是否为active

10、对于Legacy BIOS模式PXE引导安装,client端通过DHCP获取到地址后,会通过TFTP协议get pxelinux.0这个引导文件,然后继续get pxelinux.cfg目录下的default文件,加载之后显示引导菜单,下面为/pxelinux.cfg/default引导配置文件的详例,原配置基础上在 menu end前添加下面label即可:

#vim /var/lib/tftpboot/pxelinux.cfg/default

label rhel7+pxe

menu label ^Install RHEL7.3 via PXE+Kickstart

menu default

kernel images/rhel7/vmlinuz

append initrd=images/rhel7/initrd.img inst.repo=nfs:192.168.3.3:/mnt/rhel7/

实际操作图:

上述为PXE+NFS引导手动安装,若想使用Kickstart全自动安装,则需对上述配置做修改:

#vim /var/lib/tftpboot/pxelinux.cfg/default

label rhel7+pxe

menu label ^Install RHEL7.3 via PXE+Kickstart

menu default

kernel images/rhel7/vmlinuz

append initrd=images/rhel7/initrd.img inst.ks=nfs:192.168.3.3:/mnt/rhel7/

11、对于EFI模式下的RHEL7 PXE引导,需dhcpd.conf指定filename "images/shim.efi",以支持UEFI SecureBoot。通过TFTP把shim.efi加载后会继续嵌套加载引导通目录下的gurbx64.efi,然后gurb会获取同目录下的grub.cfg以显示引导菜单。下面为/var/lib/tftpboot/images/gurb.cfg配置详例:

#vim /var/lib/tftpboot/images/gurb.cfg

menuentry 'Install RHEL 7.3 via [UEFI] PXE+Kickstart' {

linuxefi images/rhel7/vmlinuz inst.repo=nfs:192.168.3.3:/mnt/rhel7/ #切记等号两边无空格

initrdefi images/rhel7/initrd.img

}

实际操作图:

若想使用Kickstart全自动安装RHEL7,可参考

#vim /var/lib/tftpboot/images/gurb.cfg

menuentry 'Install RHEL 7.3 via [UEFI] PXE+Kickstart' {

linuxefi images/rhel7/vmlinuz inst.ks=nfs:192.168.3.3:/mnt/rhel7/

initrdefi images/rhel7/initrd.img

}

对于redhat6的系统安装,需要

12、对于EFI模式下RHEL6 PXE引导,需要dhcpd.conf指定filename "image/BOOTX64.efi",它其实是grub 0.97。通过TFTP加载了BOOTX64.efi之后它会继续加载同目录下的efidefault引导配置文件,并显示引导菜单。下面为/var/lib/tftpboot/images/efidefault配置详例:

#vim /var/lib/tftpboot/images/efidefault

default=0

timeout=3

title Install RHEL 6.8 via [UEFI] PXE+Kickstart

root (nd)

kernel /rhel6/vmlinuz repo=nfs:192.168.3.3:/mnt/rhel6/ ip=dhcp lang=en keymap=us

initrd /rhel6/initrd.img

实际操作图:

若想使用Kickstart全自动安装RHEL7,可参考

default=0

timeout=3

title Install RHEL 6.8 via [UEFI] PXE+Kickstart

root (nd)

kernel /rhel6/vmlinuz ks=nfs:192.168.3.3:/mnt/rhel6/ ip=dhcp lang=en keymap=us

initrd /rhel6/initrd.img

13、启动Client端机器,使之和server端网络能通。正常情况下,Client端应该能获取到IP地址,并根据TFTP获取到相应的引导文件,引导到RHEL默认的安装界面,或通过kickstart自动开始安装。

14、若整个过程中有问题,可查看server端的日志,/var/log/messages,dhcpd每次给PXE分配地址、tftp发送文件给Client端,以及Client端挂载NFS的目录,都会在这个文件里有记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一小时包教会 —— webpack 入门指南

什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX)、coffee、样式(含less/sass)、图片等都作为模块来使用和处理。 我们可以直接使用 require(XXX) 的…

java 简单图片浏览器_Java实现简单的图片浏览器

第一次写博客,不喜勿喷。最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下。学校的教程是用Swing来做界面的,所以这里也用这个来讲。首先要做个大概的界面出来,eclipse有一个很好用的…

60. Spring Boot写后感【从零开始学Spring Boot】

从2016年4月15日到2016年7月20日经历长达3个月的时间,【从零开始学习Spring Boot】系列就要告一段落了。国内的各种资源都比较乱或者是copy 来copy去的,错了也不加以修正下,导致通过百度找到的资源可能都是错误的,正是由于这么一种…

五角星

import turtle turtle.setup(600,400,0,0) turtle.bgcolor(red) turtle.color(yellow) turtle.fillcolor(yellow) turtle.begin_fill() for i in range(5):turtle.forward(200)turtle.right(144) turtle.end_fill()turtle.done()转载于:https://www.cnblogs.com/Paris-YY/p/900…

java customerservlet_顾客管理系统java+servlet

首先我先搭好网页的框架先写一个登陆的html,名字是login.html1)在js中跳转页面的方法,我这里用的是get提交,只传递了一个name。function mylogin() {var usernamedocument.getElementById("name").value;window.location.href"…

mysql给root开启远程访问权限,修改root密码

1.MySql-Server 出于安全方面考虑只允许本机(localhost, 127.0.0.1)来连接访问. 这对于 Web-Server 与 MySql-Server 都在同一台服务器上的网站架构来说是没有问题的. 但随着网站流量的增加, 后期服务器架构可能会将 Web-Server 与 MySql-Server 分别放在独立的服务器上, 以便得…

Qt_Window@Qt Command Prompt从命令行创建工程

#include <QApplication> #include <QLabel>int main(int argc, char *argv[]) {QApplication app(argc, argv);QLabel *label new QLabel("Hello Qt!");label->show();return app.exec(); }第1 行和第2 行包含了两个类的定义&#xff1a;QApplicat…

linux中的守护进程

一、守护进程守护进程&#xff0c;也叫精灵进程&#xff08;daemon&#xff09;它和普通后台进程的区别在于以下三点1、守护进程自成会话&#xff0c;而普通后台进程则不一定2、守护进程不受终端的控制3、守护进程就是后台进程&#xff0c;而后台进程不同于守护进程用ps axj命令…

mysql主从复制 lvs+ keepalived

2019独角兽企业重金招聘Python工程师标准>>> 一、环境 Master&#xff08;主机A&#xff09;&#xff1a;192.168.1.1 Slave&#xff08;主机B&#xff09; &#xff1a;192.168.1.2 W-VIP&#xff08;写入&#xff09; &#xff1a;192.168.1.3 R-VIP&#xff…

php 逗号编码,php有几种编码

当前 mbstring 模块支持以下的字符编码。这些字符编码中的任意一个都能指定到 mbstring 函数中的 encoding 参数。该 PHP 扩展支持的字符编码有以下几种&#xff1a;UCS-4*UCS-4BE (推荐学习&#xff1a;PHP视频教程)UCS-4LE*UCS-2UCS-2BEUCS-2LEUTF-32*UTF-32BE*UTF-32LE*UTF-…

jmeter命令行运行-分布式测试

秒秒开心jmeter命令行运行-分布式测试 上一篇文章我们说到了jmeter命令行运行但是是单节点下的&#xff0c; jmeter底层用java开发&#xff0c;耗内存、cpu&#xff0c;如果项目要求大并发去压测服务端的话&#xff0c;jmeter单节点难以完成大并发的请求&#xff0c;这时就需要…

ambari 自定义组件安装

借鉴&#xff1a;http://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari3/index.htmlAmbari 在启动的时候&#xff0c;会扫描 resource 目录下 Stack 下面的 service 配置。也就是每个 Service 的 metainfo.xml&#xff0c;同时会将这些配置信息放在自己的数据…

android 双向滑动 seekbar

实现原理&#xff1a;1、自定义View&#xff0c;在onDraw(Canvas canvas)中&#xff0c;画出2个Drawable滑动块&#xff0c;2个Drawable滑动条&#xff0c;2个Paint&#xff08;text&#xff09;2、监听onTouchEvent()事件&#xff0c;修改滑块和滑动条的坐标&#xff0c;调用i…

java开发区块链只需150行代码

本文目的是通过java实战开发教程理解区块链是什么。将通过实战入门学习&#xff0c;用Java自学开发一个很基本的区块链&#xff0c;并在此基础上能扩展如web框架应用等。这个基本的java区块链也实现简单的工作量证明系统。本文用一个java例子,演示了开发一个区块链应用的过程,涉…

按钮长按

2019独角兽企业重金招聘Python工程师标准>>> 用update来实现定时 //长按处理update: function (delta) {cc.log("update "delta);this.totalTimedelta;if(this.totalTime>TOUCH_LONG_TIMER_INVOKE){this.stopTimer();this.invokeTouchLong();}},stop…

Git-如何将已存在的项目提交到git

1.首先在码云或者github上创建一个不带README.md的项目&#xff0c;然后复制远程库的地址&#xff08;下面以码云为例&#xff09;&#xff1a;   2.进入本地已存在的项目目录&#xff1a;house    touch README.md //新建说明文件 git init //在当前项目目录中生成本地git…

ggplot2 theme相关设置—文本调整

在geom设置和scale设置之后&#xff0c;要想把图画的漂亮&#xff0c;theme设置是比不可少的 在theme 设置中element_text()是一项很重要的内容 element_text(family NULL, face NULL, colour NULL, size NULL, hjust NULL, vjust NULL, angle NULL, lineheight NULL) …

window10 mysql5.7 解压版 安装

1. 解压mysql-5.7.11-winx64.zip 到某文件夹&#xff0c; 如C:\DevelopCommon\mysql-5.7.11-winx64。 2. 配置环境变量 变量名 &#xff1a; MYSQL_HOME 变量值 &#xff1a; C:\DevelopCommon\mysql-5.7.11-winx64 -------------- 变量名 &#xff1a; Path 变量值 &#xff…

java zero copy 实现,关于Zero Copy

概述很多web应用都会有大量的静态文件。我们通常是从硬盘读取这些静态文件&#xff0c;并将完全相同的文件数据写到response socket。这样的操作需要较少的CPU&#xff0c;但是效率有些低&#xff0c;它需要经过如下的过程&#xff1a;kernel从硬盘读取数据&#xff0c;越过ker…

Java量与变量的区别

2019独角兽企业重金招聘Python工程师标准>>> 常量&#xff1a;其值不变即为常量。 语法&#xff1a; 数据类型 常量名 值; double PI 3.14;    备注&#xff1a; 一般默认常量名大写。 变量与常量之间关系(量间关系) 先来一个简单的实例&#xff0c;好了解 Java…