Bootstrap

Uefi Setup界面 相关操作

  本文主要介绍探究思路,希望可以授人以渔,以下是我整个探索过程。注意这篇文章价值8元[Doge](开玩笑)。

前言:

  当我点开EmulatorPkg的模拟器,它的加载页面和Setup依次如下图所示:

  很多人打开此模拟器,不管是Setup还是Shell底下的界面,在电脑显示中都挺小的,其实是分辨率问题,虽然我知道怎么改(网上有很多教程),但我还是想自己去搜索解决,然后把这个过程写出来,但是我只展现出找到的关键点,找出的无用信息我就不展示了

  

第一个点 : 快速进入Shell页面

1.  一开始先搜Gop Window(因为它同加载条一起出现在页面中),在EmulatorPkg.dsc中出现如下:(可以修改GOP Window为其他字符串,我将其改成David Window)

2.根据线索往下继续,继在EmulatorPkg.dsc中看一些其他数据,在Pcd即平台数据配置中,我们可以修改一些参数

如下图:

修改最下面一行为加载时间,很多时候我们按Enter直接进入Shell页面,当修改后为1后,加载时间就为1秒。如果是0,那就更快了。这样就可以快速跳过进度条了。

第二个点:启动界面的一些改变

(无意中找到这来,就以网上一些结果图为目标去自己更改)

借助着已经知道PcdPlatformBootTimeOut是什么之后,我们可以借助它去知道更多的东西。但是80和25我无论怎么改,好像界面都没什么变化,于是去code里看看。

我搜索了PcdPlatformBootTimeOut,想借此看看能改些什么

借着直觉,我在众多文件中,靠着直觉就直接找到了此文件(如下图):

点进来之后,看见Start boot option,我猜到可能是修改启动页面进度条的东西

其中Black.Raw和White.Raw的赋值是其对应的颜色。在做过几次实验后发现:

BootLogoUpdateProgress里的第一个White.Pixel对应的是 "Start boot option" 字体的颜色

第二个Black.Pixel对应  "Start boot option" 的背景

第三个White.Pixel对应的是加载条的颜色

按照我的想法,字体红色,字体背景白色,加载条蓝色,再定义一个颜色赋值上去(颜色定义可以去问AI)

如下修改:

修改的结果如下:

可以对比原图:

接着进入到BootLogoUpdateProgress函数里,目标把进度条改成连着的,而不是一段一段的。进入之后,根据注释,很容易找到修改的地方,将减BlockWidth减一去掉,或者你可以多减一些,这样进度条会变得更稀疏。

可以看到,左上角也有文字,顺手也弄一下,搜 enter Setup

以上代码,可以修改的太多了,位置、按键、颜色等,借助我们前面发现的,很容易知道,White和Black是文字和背景颜色,无非就是看谁是文字颜色,谁是背景颜色。很明显,我们可以搜对应的PrintXY,其实猜也能猜到,Black是背景色。

这个代码的Black和White的命名我就不做修改了,大家可以自己去修改,以下是我的修改,利用三原色调色,0xFF就是最大值

以下是修改后的图片

恰巧网上有logo的文章,所以也去改个logo:(这个确实稍微有难度)

上面修改的部分在PlatformBmLib.c中,所以我们也去看一下

PlatformBmLib.c中有Logo的,都可以去看看(摸索了半天,等下次更新把吧

;