PXE解决uefi安装centos6黑屏问题
解决pxe安装centos6黑屏
author: 铁乐与猫
date:2021.12.10
背景
主板:supermicr SBI-4129P-T3N
System InformationManufacturer: SupermicroProduct Name: SBI-4129P-T3NVersion: 123456789Serial Number: S264322X9905439UUID: 00000000-0000-0000-0000-AC1F6BC67D0EWake-up Type: Power SwitchSKU Number: 096615D9Family: SMC B11
安装系统后可通过dmidecode
命令查到。
这台主板支持的centos6系统是6.9-6.10.
centos7的话则是7.3-7.x。
最开始尝试用pxe的kickstart的方式安装centos6.10,无论是传统方式或uefi方式的引导都失败了,uefi的直接一直黑屏。
传统方式的则是安装完后识别不出磁盘。
最终解决方案如下。
主板配置
首先是主板方面有两个要点:
参考:https://www.intel.cn/content/www/cn/zh/support/articles/000038349/server-products/server-boards.html
1)Boot mode = UEFI
启动模式设为uefi,包括网卡设置等。
2)Video BIOS = Legacy
这是主要的难点之一,之前的尝试就有被坑到了,一般只会尝试统一都用uefi。
注意这个显卡不能关掉,不然ipmiview的远程画面就进不回去了。
这里主要看pci上的显卡配置,如:
高级配置中的PCI配置:PCIe/PCI/PnP Configuration > Onboard Video OPROM 设置成Legacy
pxe grub.cfg 引导菜单
这里因为没有找到官网可查询,是在网上搜索了许多例子,实际尝试了n多遍才试出来的,当然可能不是最优解,之后还会再尝试。
gun倒是有个比较可靠的手册可参考:https://www.gnu.org/software/grub/manual/grub/grub.html#Commands
可以认为是官方手册了,但因为要配合到pxe和kickstart(后面统一简略称为ks)来使用,有些参数实际上还可能有偏差。
这里直接给出最后尝试能成功引导的例子之一:(试错n遍那些就不贴出来了,都是泪)
menuentry 'Install UEFI CentOS 6.10 sda-boot sdb-data for ks 8ub01/02' --class fedora --class gnu-linux --class gnu --class os {linux (tftp)/networkboot/centos6.10/vmlinuz ip=dhcp ks=ftp://<ftp用户>:<ftp用户passwd>@<ftp服务器ip>/ks/centos6_10_ftp_sdaboot_sdbdata_uefi.cfg inst.repo=ftp://<ftp用户>:<ftp用户passwd>@<ftp服务器ip>/centos6.10 nomodeset inst.xdriver=vesa inst.resolution=1024x768 selinux=0 inst.loglevel=debug net.ifnames=0initrd (tftp)/networkboot/centos6.10/initrd.img
}
主要是在linux vmlinuz后加上内核引导参数:
nomodeset inst.xdriver=vesa inst.resolution=1024x768 selinux=0 inst.loglevel=debug
其中这里的inst.xdriver等写法是参考了以下链接:https://forums.centos.org/viewtopic.php?t=72400
最新优化版本如下:
发现主要是linuxefi和initrdefi改成linux和initrd就能适用和手动的一样的参数:
menuentry 'Install UEFI CentOS 6.10 sda-boot sdb-data for ks 8ub01/02 test2' --class fedora --class gnu-linux --class gnu --class os {linux (tftp)/networkboot/centos6.10/vmlinuz ip=dhcp ks=ftp://<ftp用户>:<ftp用户passwd>@<ftp服务器ip>/ks/centos6_10_ftp_sdaboot_sdbdata_uefi.cfg inst.repo=ftp://<ftp用户>:<ftp用户passwd>@<ftp服务器ip>/centos6.10 nomodeset blacklist=ast xdriver=vesa brokenmodules=ast net.ifnames=0 initrd (tftp)/networkboot/centos6.10/initrd.img
}
但同样很坑且要注意的是黑屏会长达近30秒后才开始有正常装系统的画面出现。应该是跳过了闪烁的过度所以需要有耐心。
可以同样用到以下参数:
nomodeset blacklist=ast xdriver=vesa brokenmodules=ast
ks文件
ks文件中也要对grub.conf做一些修改防止重启完后黑屏进不了系统,最主要添加的如下:
bootloader --location=mbr --driveorder=sda --append="nomodeset crashkernel=auto rhgb quiet xdriver=vesa brokenmodules=ast"
其中 --append
中加入了nomodset xdrive=vesa brokenmodules=ast
这里就和手动时加的内核是一样的了。
装完系统后,就能在/etc/grub.cfg中体现出来,例:
[root@localhost ~]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,1)
# kernel /boot/vmlinuz-version ro root=/dev/sda2
# initrd /boot/initrd-[generic-]version.img
#boot=/dev/sda1
device (hd0) HD(1,100,c800,3449037f-4749-42ec-bc04-5b9ec3fe0639)
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-754.el6.x86_64)root (hd0,1)kernel /boot/vmlinuz-2.6.32-754.el6.x86_64 ro root=UUID=d50429d1-1c90-486c-908f-acf421760730 nomodeset rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us nomodeset crashkernel=auto rhgb quiet xdriver=vesa brokenmodules=ast LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rhgb quietinitrd /boot/initramfs-2.6.32-754.el6.x86_64.img
操作实例:
前面三步都准备好了之后就可以开始在ipmiview中操作了。
特别要注意的一点:
引导菜单选中后按回车后需要等待将近或超过30秒黑屏之后,pxe才刷新出开始安装的画面,故这里也需要耐心。
进入pxe的uefi引导菜单
选择带Install UEFI CentOS 6.10 sda-boot sdb-data for ks 8ub01/02
的引导菜单。
引导菜单按e进行编辑上面所说的内核参数。
回车并耐心等待近30秒
回车(或在编辑界面的就按ctrl-x开始),这一步其实是最考验耐心,猜测是原本有的过渡画面因为禁用了加载显卡驱动后没有了。
可优化的选择网卡界面
由于引导菜单中没有额外指定使用哪个网卡进行安装,所以会报出下面的让你选择网卡的界面,要想自动选择的话,后续会进行多建几个分别不同网卡进行安装系统的引导菜单就可省略此步骤了。
例:出现以上的界面时,因为我们进pxe的时候是mac地址0e结尾的,所以这次选择eth0即可。
接下来如果没有踩坑(ks文件正确的话)就是全程全自动不再有交互的了。
其它开始创建分区等全自动不需要交互的就不贴出来了。
原理
intel最新的内核己将视频模式设置移到内核中。因此,视频卡上所有硬件、特定时钟速率和寄存器的编程均发生在内核,而不是服务器启动时的驱动程序。这使得高分辨率引导屏幕和从启动到登录屏幕的无闪烁过渡成为可能。遗憾的是,在某些卡上这不能正常工作,最终出现黑屏。添加"nomodeset"参数会指示内核在驱动程序加载之前不要加载视频驱动程序,而是使用 BIOS 模式。
参考
intel官方给出的bug修复方案(也是针对手动的):https://www.intel.cn/content/www/cn/zh/support/articles/000038349/server-products/server-boards.html
相关文章:

PXE解决uefi安装centos6黑屏问题
解决pxe安装centos6黑屏 author: 铁乐与猫 date:2021.12.10 背景 主板:supermicr SBI-4129P-T3N System InformationManufacturer: SupermicroProduct Name: SBI-4129P-T3NVersion: 123456789Serial Number: S264322X9905439UUID: 00000000-0000-0000-0000-AC1…...

Feign 调用为何POST不支持同时传入多个SpringQueryMap对象,但是GET方法就支持?
Feign 调用为何POST不支持同时传入多个SpringQueryMap对象,但是GET方法就支持? 1.1 问题背景1.2 原因分析1.3 修复方案1.3.1 修复方案一 切换使用GET方法,可以试用多个SpringQueryMap注解 (测试实际不行)1.3.2 修复方案…...

RISC-V 特权级架构
特权级别 级别的数值越大,特权级越高,掌控硬件的能力越强,在CPU硬件层面,M模式必须存在,其它模式可以不存在 执行环境调用 ecall ,这是一种很特殊的陷入类的指令, 相邻两特权级软件之间的接口正…...

目录启示:PHP 与命名空间的声明
文章目录 参考环境命名空间概念版本支持影响范围 全局命名空间概念魔术常量 \_\_NAMESPACE\_\_声明全局命名空间 声明命名空间为空间命名命名规则核心命名空间 子命名空间的声明在同一文件中定义多个命名空间无括号命名空间声明有括号命名空间声明禁止混合使用推荐使用有括号命…...

D. Divide and Equalize--Codeforces Round 903 (Div. 3)
D. Divide and Equalize 题意:让一组数中的一个数除以一个因子,一个数除以一个因子,假如经过若干次操作后能够使数组所有数相等,那么输出YES,否则输出NO。 分析:乘除因子,那么实际上就是因子的…...

保姆式教程:MAC安装Android studio(包括安装JDK,Android SDK),解决gradle下载慢的问题
文章目录 参考文章安装JDK并配置环境变量安装JDK配置JDK相关的环境变量 Android studio 安装下载Android studiogradle下载慢解决方法 安装Android SDK选择jdk版本安装SDK并配置环境变量 参考文章 原文链接 原文链接 安装JDK并配置环境变量 安装JDK 下载地址 下载后双击安装…...

Ps:选区的布尔运算
选区的布尔 Boolean运算指的是选区之间的相加(并集)、相减(差集)以及相交(交集),从而形成一个新的选区。 ◆ ◆ ◆ 使用工具选项栏 在 Ps 中,几乎所有的选区工具的工具选项栏上都有…...

PyTorch 深度学习之卷积神经网络(基础篇)Basic CNN(九)
0. Revision: Fully connected Neural Network 全连接 1. Convolution Neural Network 保留空间信息 1.1 Convolution Convolution-Single Input Channel 单通道 数乘 3 input Channels 3通道 N input Channels N input Channels and M output channel M 个卷积核 1.2 conv…...

torch实现Gated PixelCNN
文章目录 PixelCNNGated PixelCNN PixelCNN import torch import torch.nn as nn import torch.nn.functional as F# Pixel CNNclass MaskConv2d(nn.Module):def __init__(self, conv_type, *args, **kwags):super().__init__()assert conv_type in (A, B)self.conv nn.Conv2…...

破局「二次创业」:合思的新解法
在新的水温下,寻找更为良性的发展正在成为企业的必答题。对此,合思给出的不仅是一份更“省”的答题方法。也更是从认知层到行动层,最后到工具层的一张授人以渔的“渔网”。 作者|思杭 编辑|皮爷 出品|产业家 今年4月初,广州…...

第五章:TCP和UDP基本原理
TCP和UDP基本原理 一、TCP/IP传输层的作用二、 端口1.范围2. 服务端3. 客户端4. 常见知名端口号4.1 TCP 80 HTTP4.2 TCP 20 21 FTP4.3 TCP 23 TELNET4.4 TCP 25 SMTP4.5 UDP 53 DNS4.6 TCP 443 HTTPS 三、 TCP原理1. TCP头部封装格式1.1 Source Port 源端口1.2 Destination Por…...

算法:动态规划的入门理解
文章目录 算法原理题目解析第n个泰波那契数列三步问题使用最小花费爬楼梯 从本篇开始总结的是动态规划的一些内容,动态规划是算法中非常重要的一个版块,因此也是学习算法中的一个重点,在学习动态规划前应当要把动态规划的基础知识学习一下 算…...

最新版nacos 2.2.3服务注册与发现版本依赖问题
最新版nacos的注册服务时配置文件写的是对的,但就是在nacos web页面无法看见服务,此时你需要注意你的依赖是否正确 spring: application:name: orderservicecloud:nacos:discovery:server-addr: 122.51.115.127:8848父工程依赖:现在最新的s…...

2023年中国合同能源管理行业研究报告
第一章 行业概况 1.1 定义及分类 合同能源管理 (Energy Performance Contracting, EPC) 是当前能源行业中一个重要的概念,它构建了一个桥梁,将节能服务公司 (Energy Management Company, EMCo) 与用能单位紧密联系在一起。通过特定的契约形式ÿ…...

php以半小时为单位,输出指定的时间范围
//可预订小时范围$hour [];for ($i$startHour*3600;$i<$endHour*3600;$i1800){//以半小时为单位输出$startHourItem date(H:i,strtotime(date(Y-m-d))$i);//小时开始$endHourItem date(H:i,strtotime(date(Y-m-d))$i1800);//当前时间再加半小时$hourItemStr $startHourI…...

Electron应用的 asar 打包 解压
前言: .asar文件是一种归档文件格式,通常用于封装Electron应用程序的资源。Electron是一个使得开发者能够使用Web技术构建跨平台桌面应用程序的框架。为了提高性能和简化部署,Electron应用程序的资源通常会被打包到一个.asar文件中。 安装 as…...

蓝桥等考Python组别十七级003
第一部分:选择题 1、Python L17 (15分) 运行下面程序,输出的结果是( )。 def func(x, y): return (x + y) // 3 print(func(7, 5)) 2468正确答案:B 2、Python L17 (15</...

Redis概述和与SpringBoot的整合
Redis是一种高性能的键值对存储数据库,它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合等。Redis具有快速、可靠、灵活和可扩展等特点,也被广泛应用于缓存、队列和排行榜等场景。 SpringBoot是一种基于Spring框架的快速开发脚手…...

Python 中的 round() 函数:实现精确的数值舍入操作
round(x, n) 函数用于对数值 x 进行舍入操作,并指定保留的小数位数为 n。它的工作原理如下: 如果 x 的小数位数小于等于 n,则直接返回 x 本身。例如,round(3.1415, 2) 将返回 3.14。 如果 x 的小数位数大于 n,则按照四…...

在springboot中如何开启Bean数据校验
①:添加JSR303规范坐标与Hibernate校验框架对应坐标 <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId> </dependency><dependency><groupId>org.hibernate.validator<…...

【C语言好题系列三】
文章目录 学习导航一. 选择题二. 编程题(力扣/牛客网)三. 总结 学习导航 一. 选择题 如下程序的运行结果是(D) char c[5]{a, b, \0, c, \0}; printf("%s", c);A: ‘a’ ‘b’ B: ab\0c\0 C: ab c D: ab 答案解析: 正…...

ElasticSearch搜索引擎:常用的存储mapping配置项 与 doc_values详细介绍
一、ES的数据存储结构: ES底层使用 Lucene 存储数据,Lucene 的索引包含以下部分: A Lucene index is made of several components: an inverted index, a bkd tree, a column store (doc values), a document store (stored fields) and te…...

[Spring]事务的传播机制
一、背景 Mysql在修改完数据后,默认会自动触发事务Commit提交。 而在我们服务的一个方法里,需要多次修改Mysql记录。 为了保证原子性,我们需要将Mysql设为手动提交,多次修改后再commit提交。 二、Spring事务 1、编程式事务管理…...

linux下,如何查看一个文件的哈希值md5以及sha264
在linux终端中,可能存在多个相似的文件,而哈希值可以唯一确定一个文件。文件的哈希值计算可以有以下两种方式,MD5和SHA256,现将两种方式罗列如下: 1、MD5 命令:$ md5sum FileName 一个文件的 MD5 是固定的…...

Java类加载过程
一、前言 我们都知道计算机的底层逻辑都是0和1的编码,当然除了现在所研究的量子计算除外。那么我们在计算机所做的一切操作,底层原理是不是都可以翻译到0和1呢。如果刨根问底的话,可以这么说,当然0和1的表示也属于逻辑门电路电的…...

人脸活体检测技术的应用,有效避免人脸识别容易被攻击的缺陷
随着软件算法和物理终端的进步,人脸识别现在越来越被广泛运用到生活的方方面面,已经成为了重要的身份验证手段,但同时也存在着自身的缺陷,目前常规人脸识别技术可以精准识别目标人像特征,并迅速返回比对结果࿰…...

大数据发展史
一、hadoop发展史 hadoop创始人Doug Cutting,主要为了实现Google类似全文搜索功能,该功能是基于Lucene框架进行优化升级,索引引擎; 2001年底Lucence成为Apache基金会的一个子项目,当时为了解决存储海量数据困难,检索海量速度慢,可以说Google是hadoop的思想之源; GFS…...

有关范数的学习笔记
向量的【范数】:模长的推广,柯西不等式_哔哩哔哩_bilibili 模长 范数 这里UP主给了说明 点赞 范数理解(0范数,1范数,2范数)_一阶范数-CSDN博客 出租车/曼哈顿范数 det()行列式 正定矩阵(Posit…...

如何通过MES系统提高生产计划效率?
导 读 ( 文/ 1730 ) 在现代制造业中,通过制造执行系统(MES)系统来提高生产计划效率是至关重要的。本文将介绍如何通过MES系统来优化生产计划,包括实时数据分析、智能排程和协同协作。通过这些关键方法,企业可以提高生产…...

持续提升信息安全运维保障服务能力,天玑科技助力企业快速实现数字化转型
近年来,以互联网、云计算、大数据、物联网为代表的新一代信息技术快速发展。给人们的生产生活方式带来方便的同时,也给信息系统的安全带来了严峻的挑战。我国信息化和信息安全保障工作的不断深入推进,以应急处理、风险评估、灾难恢复、系统测…...