PXE解决uefi安装centos6黑屏问题

解决pxe安装centos6黑屏

author: 铁乐与猫

date:2021.12.10

背景

主板:supermicr SBI-4129P-T3N

System Information
	Manufacturer: Supermicro
	Product Name: SBI-4129P-T3N
	Version: 123456789
	Serial Number: S264322X9905439
	UUID: 00000000-0000-0000-0000-AC1F6BC67D0E
	Wake-up Type: Power Switch
	SKU Number: 096615D9
	Family: SMC B11

安装系统后可通过dmidecode命令查到。

这台主板支持的centos6系统是6.9-6.10.

centos7的话则是7.3-7.x。

PXE解决uefi安装centos6黑屏问题_第1张图片

最开始尝试用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=0
  initrd (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 quiet
	initrd /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解决uefi安装centos6黑屏问题_第2张图片

例:出现以上的界面时,因为我们进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)