引言
這樣的BIOS論壇上就有得下載,為什么要自己搞那么高風險的事情呢?只要是出于兩方面的考慮:一方面,某些機型的MOD BIOS論壇上沒得下載,就好像我的R61i 8943機型;另一方面,論壇上下載的MOD BIOS很難全面跟得上官方更新速度。從年初開始我一直在關注R61i 8943A18 15寸普屏機型解除1802、1804和“白清單”限制的BIOS,并通過多種方式聯系國內、外的高手,但到前兩天為止都還沒有此機型的MOD BIOS放出來。
參考forum.thinkpads.com論壇里Zender網友發表的修改BIOS資料后,決定自己動手。經過這兩天日日夜夜的折騰,于今天上午終于完成了對R61i 8943機型BIOS的修改,并在我的機子上測試通過。給機子升級的聯想拆機Intel WiFi Link 5100 AGN無線網卡工作完美,無須絕緣第20腳,開機無1802報錯,硬件無線開關和Fn F5組合鍵,無線指示燈全部工作正常。
可行性研究
ThinkPad筆記本電腦自從T43起更改了BIOS對無線網卡檢測機制,再也不能像之前的機型那簡單“跳過”處理來解決非認證網卡使用的問題。經Zender網友的研究發現:新機型,例如我的R61i,BIOS里面對無線網卡檢測代碼存放在BIOSCODE區域的B.05模塊里面。B.05模塊的無線網卡相關內容包括兩方面主要內容:1、認證的無線網卡數據,即我們所說的“白清單”或者“whitelist”;2、無線網卡檢測過程及檢測結果數據的傳送。由此可以看出實現對非認證無線網卡的使用可以從三方面入一手:
1、把非認證的無線網卡數據加入到B.05模塊中,但此方法不太實際,非認證的無線網卡實在太多了,對用戶來說用哪張無線網卡就加那張卡的數據入去也不容易操作;
2、修改B.05模塊中對無線網卡檢測過程,這個方法看上去不錯,但實際操作起來也有非常大的困難,主要因為不同此檢測過程不同,而且要修改多處,例如R61i 8943就要修改50多處;
3、更改無線網卡檢測結果,在B.05模塊對無線網卡檢測后,無論其檢測結果如何都把其檢測的結果更改為“是”。所以第三個方法最好,只要更改一處理論上就可以實現對所有非認證的無線網卡的正常使用。
B.05模塊對無線網卡的檢測首先檢測miniPCI-E插槽有沒有無線網卡,如果檢測到有無線網卡就讀取無線網卡的硬件數據。然后拿這個讀取得來的數據在“白清單”查找,查找的結果存放某個狀態寄存器里面。此狀態寄存器被清除(即清0),表示miniPCI-E插槽上沒有無線網卡或者無線網卡是通過認證的;此狀態寄存器被設置(即置1),表示此無線網卡非認證的,同時給無線網卡第20腳發送一個無線傳輸關閉的信號(“radio disable”)。只要在B.05模塊對無線網卡的檢測后,人為再將這個狀態寄存器清0一次即可。
實現過程設計
在總結forum.thinkpads.com論壇Zender和本論壇cayman網友的經驗,并作了一些簡化后得出如下實現過程:
1、獲得ThinkPad BIOS的鏡像文件。利用官方網站的BIOS升級文件包中WinPhlash.exe程序通過對BIOS進行備份便可以獲得BIOS鏡像文件。
2、從BIOS鏡像文件中提取BIOSCODE區域的B.05模塊。運行phnxdeco.exe后,生成的phoenix_.B5便是BIOSCODE區域的B.05模塊。
3、通過修改phoenix_.B5文件實現在B.05模塊對無線網卡的檢測后將狀態寄存器清0。此過程由phnxpatch.exe完成。
4、把修改后的phoenix_.B5壓縮文件成B.05模塊。prepare.exe實現對phoenix_.B5壓縮。
5、把修改后的B.05模塊放回BIOS鏡像文件中的BIOSCODE區域。此過程由phnxmod.exe完成。
6、更新修改后的BIOS鏡像文件校驗碼。此過程由phnxcksm.exe完成。
7、把修改后的BIOS鏡像文件刷回ThinkPad中。再次利用WinPhlash.exe刷新BIOS。
詳細實現過程
先到ThinkPad官方網站上下載對應最新的BIOS硬盤版升級程序,按官方說明更新BIOS。下載本貼的附件,解壓后會成生一個名為bios_mod的文件夾,里面包含修改所需的程序。此過程都在此文件夾里面完成。然后開始修改BIOS。
1、獲得ThinkPad BIOS鏡像文件。
首先找到官方的BIOS升級程序所在的文件夾,一般在C:/DRIVERS/FLASH里面。然后運行WinPhlash.exe程序,并設置為只備份BIOS的操作模式,填入BIOS備份文件名:bios.bak,點擊“Browes”按鈕找到程序所在的文件夾里面擴展名FL1的BIOS文件,然后點擊右下角的“Backup BIOS”按鈕進行備份BIOS。程序運行完成后,便會在程序所在文件夾里生成一個名為bios.bak的BIOS鏡像文件。把這個bios.bak文件復制到bios_mod的文件夾里面。
2、從BIOS鏡像文件中提取BIOSCODE區域的B.05模塊。
打開命令行窗口,并進入到名為bios_mod的文件夾中。
輸入命令:phnxdeco bios.bak -x
回車運行。運行完畢后會在bios_mod文件夾中生成幾十個文件。在生成的文件中找到名為:phoenix_.B5的文件,并復制到此目錄下名為:models的文件夾里面。然后把那些生成的多余的文件刪除,以防出錯。
3、修改phoenix_.B5文件
在命令行窗口里面輸入命令:phnxpatch patches models
回車運行。程序運行完畢后會在models文件夾中生成名為:phoenix_.B5.patched文件。
此過程不能在Windows Vista下操作。
4、把修改后的phoenix_.B5文件壓縮成B.05模塊
把models文件夾中:
phoenix_.B5文件重命名為:old.b5
phoenix_.B5.patched文件重命名為:new.b5
把models文件夾中old.B5和new.B5兩文件復制到bios_mod文件夾中。
在命令行窗口里面輸入命令:prepare old.txt
回車運行。
在命令行窗口里面輸入命令:prepare new.txt
回車運行。
兩次命令運行完畢后生成4個文件:OLD.LOG、OLD.MOD、NEW.LOG、NEW.MOD,其中OLD.MOD和NEW.MOD將在后面的操作過程中會用到。
查看OLD.MOD和NEW.MOD兩文件的大小是否一樣,如果大小不一樣就要用HEX工具把NEW.MOD文件的最后增減“00”,直到與OLD.MOD一樣大小為止,否則將無法進行下一步的工作。我的例子中,NEW.MOD文件比OLD.MOD小了7個字節,所以要在其最后增加7個“00”使兩文件大小一樣。
5、把修改后名為NEW.MOD文件放回到BIOS鏡像文件:bios.bak中
在命令行窗口里面輸入命令:phnxmod bios.bak OLD.MOD NEW.MOD
回車運行。
6、更新修改后的BIOS鏡像文件校驗碼 在命令行窗口里面輸入命令:phnxcksm bios.bak
回車運行。運行完畢后,把bios.bak文件重命名為:bios.rom
7、把修改后的BIOS鏡像文件bios.rom刷回ThinkPad BIOS中
把bios_mod文件夾中名為:bios.rom的修改后的BIOS鏡像文件復制到官方BIOS升級程序所在的文件夾,一般在C:/DRIVERS/FLASH里面。然后在此文件中運行WinPhlash.exe程序把修改后的BIOS鏡像文件bios.rom刷回ThinkPad。
測試結果
修改BIOS后的R61i用聯想拆機的Intel WiFi Link 5100 AGN無線網卡工作完美,無須絕緣第20腳,開機無1802報錯,硬件無線開關和Fn F5組合鍵工作正常,無線指示燈工作正常。
總結
單從結果上看似乎已經是很久很之前的事情了,別人早就做過??墒呛芏嗍虑閯e人都做的,看似很容易,如果沒有親身實驗,始終是沒辦體驗到那過程的艱辛和樂趣。經過此次動手不但學會了如何修改ThinkPad的BIOS來解除1802、1804和“白清單”限制,同時在前人的基礎上對操作過程作了優化,減少了修改過程中兩個步驟:解壓縮擴展名為FL1的官方BIOS文件和壓縮修改后BIOS鏡像文件成為FL1文件,并使操作過程更簡單一些,全新過程直接在windows XP下實現。
注:
1、附件中部分文件和程序由forum.thinkpads.com論壇里Zender網友提供,版權為Zender網友所有。
2、未經本人同意不得轉載。
補充:
1、phnxdeco.exe程序無法支持大于2M的BIOS鏡像文件,附件的phnxsplit.exe程序則可以,使用方法差不多。例如:X200的BIOS鏡像文件為8M,則要用phnxsplit.exe來提取BIOS模塊,并生成文件。
2、不同機型BIOSCODE中對無線網卡檢測及“白清單”代碼存放的模塊不同。但一定在由phnxsplit.exe程序生成以名為:BIOSCODExx.ROM的文件中,或者由phnxdeco.exe生成以名為:phoenix_.Bx文件中。
只要把這些文件,全部復制入models文件夾中即可。當運行phnxpatch程序后,models文件夾中生成以patched為擴展名為破解后的文件。
例如X200的最新的3.03BIOS鏡像為8M,只能用phnxsplit.exe來提取BIOS模塊。運行phnxpatch后在models文件夾中生成了BIOSCODE06.rom.patched,表明X200的最新的3.03BIOS的BIOSCODE中對無線網卡檢測及“白清單”代碼存放的模塊為BIOSCODE06。此時只要對BIOSCODE06處理即可,其它可以不理。
3、再把文件BIOSCODE06.rom重命名為:old.b5
件BIOSCODE06.rom.patched重命名為:new.b5
然后繼續其它步驟即可。
新聞熱點
疑難解答