当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/191788.html

相关文章:

  • Feign 调用为何POST不支持同时传入多个SpringQueryMap对象,但是GET方法就支持?
  • RISC-V 特权级架构
  • 目录启示:PHP 与命名空间的声明
  • D. Divide and Equalize--Codeforces Round 903 (Div. 3)
  • 保姆式教程:MAC安装Android studio(包括安装JDK,Android SDK),解决gradle下载慢的问题
  • Ps:选区的布尔运算
  • PyTorch 深度学习之卷积神经网络(基础篇)Basic CNN(九)
  • torch实现Gated PixelCNN
  • 破局「二次创业」:合思的新解法
  • 第五章:TCP和UDP基本原理
  • 算法:动态规划的入门理解
  • 最新版nacos 2.2.3服务注册与发现版本依赖问题
  • 2023年中国合同能源管理行业研究报告
  • php以半小时为单位,输出指定的时间范围
  • Electron应用的 asar 打包 解压
  • 蓝桥等考Python组别十七级003
  • Redis概述和与SpringBoot的整合
  • Python 中的 round() 函数:实现精确的数值舍入操作
  • 在springboot中如何开启Bean数据校验
  • 【C语言好题系列三】
  • ElasticSearch搜索引擎:常用的存储mapping配置项 与 doc_values详细介绍
  • [Spring]事务的传播机制
  • linux下,如何查看一个文件的哈希值md5以及sha264
  • Java类加载过程
  • 人脸活体检测技术的应用,有效避免人脸识别容易被攻击的缺陷
  • 大数据发展史
  • 有关范数的学习笔记
  • 如何通过MES系统提高生产计划效率?
  • 持续提升信息安全运维保障服务能力,天玑科技助力企业快速实现数字化转型
  • 【PostgreSQL启动,停止命令(重启)】