首先,这不是教学贴,而是我整个过程的一个记录。当然我会将所有步骤详细记录下来,如果有需要的朋友,看看可以,少走弯路。再一个,确实折腾出来很有成就感,也算对自己折腾一个星期的交代吧。
首先,说一下原始需求。我在某宝购买了一台联想M73 Tiny,想作为软路由使用,购买的配置是带CPU+内存+硬盘版本,CPU i3-4160T,内存8x2 DDR3L 1600,硬盘 120G SATA SSD,没有无线网卡。主机只有一个千兆网口,Intel I217-V,作为一个主路由器(我没准备做旁路由),没有2个网口是无法完成的,这个机器自带一个MINI-PCIE口,所以tb又购买了一块Intel I210 的MINI-PCIE网卡,定制的短线安装到这个主机刚好合适。(链接就不放了 ,有推销嫌疑)
事先已经做过预习了,联想机器,有白名单网卡限制。什么意思呢,一句话总结,就是非联想指定的网卡,不管无线网卡还是有线网卡,插入后开机BIOS会报错,无法进入操作系统。我也基本预习了,绕过白名单的方法,其实就是用联想官方BIOS刷新工具,修改主机编号 或者 主机型号,使其在自检时报错,从而可以让BIOS从出厂设置方式启动,在白名单检查未通过时仍可以启动操作系统,达到使用的目的。
这里简要说一下绕过步骤,
1、首先,先进入自己BIOS查看当前版本号,还有主机编号+主机型号,记录下来;
2、升级BIOS到官方最新版本(非必须),我是强迫症,别问,问就是升到最新;
联想M73 Tiny (10AX,10AY)BIOS下载链接:https://support.lenovo.com/us/en/downloads/ds038325-flash-bios-update-thinkcentre-m73-tiny-10ax-10ay
补充:我是用的Windows版本(Operating System Version)的刷新工具,需要USB或者ISO的也有,看自己喜好
3、一键刷到最新BIOS,完成整个启动过程,再次进入操作系统,进入到之前解压BIOS的目录,打开命令行,使用 wflash2.exe /sn:INVALID ,将主机编号(序列号)修改成这个可以出发失效,从而实现工厂启动模式,可以在有非白名单网卡时也能进入操作系统。
说到这里,很多人都明白了,网上大部分教程都是教你如何绕过这个检测。但是,作为一个强迫症资深患者,这个出厂启动方式,我无法忍受。为什么?
1、BIOS启动顺序,只能是出厂预设顺序了,1、网卡启动、2、USB设备、3、硬盘
而且网卡启动会PXE Agent获取半天,找不到启动镜像,再跳过,双网卡启用后这个步骤会重复2次,如果不手工Ctrl+C跳过,大概需要20秒多,然后再找USB,再找硬盘,如果USB插了有启动引导的盘,又从U盘启动了,总之一句话,就是出厂启动方式不能按你自己设置的启动顺序来了,时间等的旧
2、这个就关乎与强迫症本身了,就是不完美,就是不能忍,没了。
于是,想到了修改BIOS,添加白名单的方法了。如果对于上面出厂启动方式能接受的朋友,下面可以不用看了,费时间哈,最后结果都是网卡能用。有强迫症,想完美的朋友,来喝口茶继续看下面。
我也是google了很久,找到一个帖子,详细按照帖子来的,说白了就是纯翻译+实践
需要准备的东西,最关键的是 CH341A 编程器一个,另外需要一个编程器夹子,因为这个BIOS芯片是焊接在主板上的,取下来太麻烦,烧写夹就搞定了,不用拆芯片,如图

好了,其他需要的素材基本都是从现有硬件去获取了,我稍微列一下:
1、板载网卡的VendorID,DevID,这个从资源管理器可以查 V=8086,D=153B

2、新加网卡的VendorID和DevID,V=8086,D=1533

3、联想官方指定支持的网卡,任意一款就行,见官方PDF :https://download.lenovo.com/parts/ThinkCentre/m73_tiny_20151112.pdf
我选择的是 ADAPTER里面的博通网卡,BCM4352 w/BT combo这个型号
通过下面的网址,可以查到这个网卡的 VendorID和DevID ,V=14E4,D=43B1
3.1、https://devicehunt.com/
3.2、https://pci-ids.ucw.cz/read/PC ,两个都可以,第一个界面要好一点,BCM的博通,都是14E4,Intel都是8086,然后通过网卡型号可以确定DevID
4、现在我们有3个硬件编码了,旧卡,新卡,白名单卡,这样简称一下吧。
5、接下来需要几个软件,分别是 UEFITool0.21.5(用于修改UEFI类型的BIOS,我用的一个老版本,Github上有新版,但是原始英文帖子推荐老版本所以我还是用的老版本),HxD(16进制编辑器),CH341A驱动及配合的烧写软件,我这里用的AsProgrammer_2.1.0.13,另外要需要一个WinMD5,用来检验文件是否完全一致
6、说一下接下来的步骤,一会直接按照步骤来
说明:因为联想这个机型使用的BIOS是UEFI类型的,所以需要用UEFITool来解开内容结构
第一步,提取现有BIOS,备份,备份,备份!重要事情说三遍
第二步,UEFITool提取白名单部分二进制文件
第三步,用HxD打开这个白名单部分,修改其中一个用不上的白名单卡,用自己新卡的信息去替换,保存
第四步,将HxD保存的部分,替换回整体BIOS的那部分,保存
第五步,刷入修改后的BIOS,点一支烟(非必须),开机看结果
7、详细操作说明,有图
7.1 m73关机,拔掉电源线、拆掉硬盘,拆掉BIOS电池
7.2 确定BIOS芯片位置,这里借一张M93的图,我自己只拍了芯片型号,忘记拍芯片位置了,M93的BIOS芯片有2颗,M73只有1颗,另一个位置是空焊


7.3 上夹子,这个我就说说吧,图没拍。注意事项有几个,1,注意芯片1脚的位置,就是芯片上圆形凹槽这个脚,对准CH341A的25芯片这个槽位的1号脚,CH341A上面有标准,哪个是1号脚,哪个是25芯片槽位,还有一个是24芯片槽位我们这里用不上。夹子红线对准1号脚,对齐,夹稳,有点耐心哈,慢工出细活。
7.4 夹子确定夹好之后,插入编程器,先点击别芯片型号设置,输入芯片型号(上图25L6473E)可以唯一确定芯片,然后点击读取,如果夹好没问题,正常情况就会读取BIOS内容了

7.5 读取完成后,保存为 old_1.bin,再次点读取,完成后另存一个old_2.bin,这里我建议至少读取2次,闭环夹子接触不好等其他情况,导致读取的BIOS文件不完整。
7.6 使用WinMD5,检查两次读取的文件是否一致,如果不一致,建议重新夹,重新读,指导读取出来的多次都是一样的文件
7.7 再次复制一个备份文件来修改,这里用old_3.bin来。然后用UEFITool打开这个文件

7.8 搜索这个 GUID:CEC0D748-7232-413B-BDC6-2ED84F5338BC,然后双击结果定位(我这里搜索出来是唯一1个)

7.9 展开这个下级的 Compressed section -》PE32 image section,右键 Extract Body,另存成一个二进制文件,这里取名 old_whitelist.bin
7.10 HxD打开这个文件,搜索 16进制 ,搜板载网卡,前面取得的 V=8086:D=153B,这里就搜 86803B15,在这附近看看数据的结构,看明白白名单的结构

这里花时间说说,可以看到很多支持的网卡就在这里,比如 86803B15,就是我们板载网卡8086:153B,后面还有类似的,8086:153A,8086:0888,还有下面BCM4352的型号,14E4:43B1,这里就表示为 E414, B143,按照这个规则,我修改了 0888这个为我新卡的ID,因为都是Intel的,我少写一个字节,我的网卡是8086:1533,写入就应该是,8680:3315
如图

7.11 保存为 new_whitelist.bin,关闭HxD,回到刚才的UEFITool
7.12 还是在刚才的节点 PE32那个位置,右键,Replace Body,选择new_whiltelist.bin,另存成新bios,newbios.bin
7.13 回到As Programmer,选择打开文件,选这个新bios文件,点击擦除,先将芯片数据擦掉,然后点击编程,写入新bios
7.14 取下夹子,装回电池,恢复sata硬盘,开机测试吧!另外,如果之前用 wflash2.exe /sn:设置过序列号的,把序列号写回来,这个可是能直接激活Win10的好东西啊。。。。。
整个过程记录完毕,完结撒花!