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,一经查实,立即删除!

相关文章

DB天气app冲刺二阶段第七天

又冲刺了一个礼拜了 今天收获应该算是不小了 虽然进度上来说还是一点也没前进 但是找到了好几个突破口 明天继续 今天先不多说了困了。。转载于:https://www.cnblogs.com/gaih/p/4550612.html

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

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

判断一个js对象,是否具有某个属性

一个对象,想必我们关注的最多的应该是它上面的属性有哪些吧。那么,怎么判断一个对象是否具有某个属性呢? 1 /*下面是一个对比,看看在判断是否包括一个键上面,Object结构和Set结构的写法不同。*/2 // 对象的写法3 …

JAVA如何代码静态检查术语_Sonar代码静态检查规则-JAVA篇(二)

最近又搜罗整理了一些代码扫描规则,今天继续把这些扫描规则分享给老铁们,以后想学一些开发规则了,直接打开学一学就好了。不多说,直接上干货!规则五、".equals()" should not be used to test the values of…

【每日scrum】NO.5

进入冲刺第五天,软件的界面设计成为主打,收集学校的很多美图是我们组的任务; 问题在于软件已很难有很大的改进,大方向也都是变不了的转载于:https://www.cnblogs.com/wantong/p/4553003.html

Python Dataframe转List

1 from pandas import read_csv2 3 dataframe read_csv(rurl, nrows 86400, usecols [0,], enginepython)4 #nrows:读取行数,usecols[n,]:仅读取第n列,usecols[a,b,c]:读取a、b、c列5 dataset dataframe.values6 7 List []8 for k in dataset: 9 …

使用/proc/meminfo文件查看内存状态信息

在Linux下可以使用/proc/meminfo文件查看操作系统内存的使用状态# cat /proc/meminfo MemTotal: 16333852 kB MemFree: 1633564 kB Buffers: 212448 kB Cached: 4422808 kB SwapCached: 0 kB Active: 10343096 kB Inactiv…

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"…

php输出数据过大,PHPExcel导出数据量过大处理

转:ASP.NET MVC3 Model验证总结http://www.wyjexplorer.cn/Post/2012/8/3/model-validation-in-aspnet-mvc3 ASP.NET MVC3中的Model是自验证的,这是通 ...C++ 我想这样用(六)嗯,上一篇已经介绍了面向过程编程的语法知识,接下来是最后的…

计算球面上经纬度坐标方法比较

计算球面上的两点(坐标为经纬度)之间的距离可以直接通过公式计算得到,也可以先将经纬度坐标转化为墨卡托投影坐标来,然后用平面中两点之间的距离公式来计算。 在网上找了一些代码,然后简单进行了测试,发现前者精度更高: 资料来源&…

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

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

Docker - Docker中搭建MySQL主从

1.pull完centos7纯净版的镜像后,创建容器,然后将宿主机上下载的MySQL文件 (MySQL下载地址:http://mysql.mirror.kangaroot.net/Downloads/) 拷贝到Docker容器中。 1) 抓取centos7纯净版镜像# docker pull registry.cn-hangzhou.aliyuncs.com/…

java 上传远程图片,java上传图片到另一台服务器上,怎么解决

Java codepublic String upload(String dir, FormFile formFile) throws Exception {Date date new Date();//取欲上传的文件的名字和长度String fname formFile.getFileName();//将上传时间加入文件名int i fname.indexOf(".");String name String.valueOf(date…

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命令…

读取不同位置的配置文件

在开发和测试环境中&#xff0c;很容易混淆如何获取不同位置的配置文件。为了避免重复造轮子&#xff0c;在此记录一下自己的解决方案&#xff1a; 可以提出如下设想&#xff1a; 1、在开发环境下&#xff0c;读取resources下的config.properties文件    2、在生产环境下&a…

spring+log4j

Log4j是Apache的一个开放源代码项目&#xff0c;通过使用Log4j&#xff0c;我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等&#xff1b;我们也可以控制每一条日志的输出格式&#xff1b;通过定义每一条…