Okay, dann kommt jetzt Schritt 3
Die Romsips extrahiert und das System Modul (da sind die Romsips drin) entpackt hast du ja bereits. Jetzt gehts also darum die Romsips wieder ins Bios zu bekommen. Dazu muss das System Modul mit den neuen Romsips aber a) wieder komprimiert werden, b) muss es wieder ins Bios rein und c) hat das Bios ne Checksumme die passen muss, sonst funktionierts hinterher nicht.
Um das zu bewerkstelligen brauchst du eigentlich nur CBrom (ich nutze Version 1.98, gibts hier:
Using CBROM). Allerdings ist Modbin auch sehr nützlich wenn du z.B. den Text auf dem POST Screen anpassen oder Items umherschieben oder sichtbar machen willst (ich nutze Modbin 2.01.02). Außerdem hab ich mir eine WinXP VM aufgesetzt, in der ich CBrom und Modbin nutze. Keine Ahnung ob die auch auf Win10 (64bit) laufen.
1. Wenn du das System Modul mit AWDBedit extrahiert hast, kannst du die Romsips einfach copy-pasten. Damit ist das Ersetzen schon erledigt.
2. Nun muss das System Modul wieder ins Bios. Problem dabei: Die Module haben eine gewisse Reihenfolge im Bios und die sollte unbedingt eingehalten werden. Blöderweise ist das System Modul an erster Stelle und CBrom kann nur an letzter Stelle Module einfügen. Das heisst also das wir einmal alle Module rauswerfen müssen, dann das System Modul hinzufügen und anschließend müssen alle Module wieder in der richtigen Reihenfolge rein. Erstmal kurz die CBrom Befehle. Wichtig, die werden immer auf das Bios angewandt, nicht auf das System Modul:
Code:
Zeigt alle vorhandenen Module eines Bios an:
cbrom bios.bin /d
Extrahiert ein Modul:
cbrom bios.bin /modulname extract
Löscht ein Modul aus dem Bios:
cbrom bios.bin /modulname release
Fügt ein Modul hinzu (geht afaik nur wenn dieses Modul nicht im Bios vorhanden ist):
cbrom bios.bin /modulname modul-dateiname.bin
Den
extract Befehl brauchen wir nicht unbedingt, weil wir mit AwdBedit bereits alle Module extrahiert haben. Es sind prinzipiell aber beide Varianten möglich.
3. Wir brauchen nun eine Bios Datei in der keine Module mehr drin sind. Dazu nehmen wir uns eine Kopie des Bios das modifiziert werden soll und schmeissen alle Module nacheinander mit
cbrom bios.bin /modulname release raus. Übrig bleibt ein Bios, das nur noch das System Modul enthält. Ich nenne diese Datei gerne
empty.bin. Außerdem notieren wir uns welche Module gespeichert sind, welchen Dateinamen diese haben und die Reihenfolge. Alternativ dazu können wir auch eine zweite Kommandozeile öffnen und dort
cbrom bios.bin /d auf das ungemoddete Bios anwenden, dann sind alle Module immer auf einen Blick vorhanden.
4. Jetzt nutzen wir die empty.bin um das neue System Modul hinzuzufügen.
Vorher erstellen wir aber noch eine Kopie der empty.bin, die brauchen wir im nächsten Schritt. Der Befehl fürs Hinzufügen des System Modul:
cbrom empty.bin /other 5000:0 neues-system-modul.datei. Nach dem Hinzufügen sind dann zwar 2 System Module in der empty.bin, aber CBrom legt dankenswerterweise eine
bios.rom an, in der das hinzugefügte Modul in komprimierter Form abgelegt wird. Die empty.bin in der wir das neue Modul hinzugefügt haben brauchen wir nicht mehr, die kann gelöscht werden. Im nächsten Schritt nutzen wir diese
bios.rom und die vor dem Hinzufügen des System Moduls erstellte Kopie der
empty.bin.
5. Wir nutzen die Kopie der
empty.bin und kopieren den Inhalt der
bios.rom Datei mit dem Hexeditor hinein. So wird das alte System Modul mit dem neuen System Modul überschrieben. Der Offset in der empty.bin ist meist 10000h. Man erkennt die richtige Stelle daran, das sie mit dem Klartext LH-5 (das ist die Komprimierung) und dem Dateinamen des Moduls beginnt. Falls das neue System Modul kleiner als das Alte ist, so muss der übriggebliebene Rest des alten Moduls mit FFh händisch überschrieben werden. Dabei aber aufpassen das sich die Dateigröße des Bios nicht ändert.
6. Nun müssen noch alle anderen Module in der richtigen Reihenfolge wieder ins Bios rein. Dazu mit
cbrom bios.bin /modulname modul.datei alle nacheinander hinzufügen. Alternativ nutzen wir eine Batchdatei (siehe unten) die das für uns erledigt. Mit der Batchdatei minimiert sich die Tipparbeit auf
batch.bat bios.bin, der Rest läuft so durch. Danach kann mit cbrom bios.bin /d geprüft werden ob alle Module korrekt hinzugefügt wurden.
7. Wenn das alles korrekt ausgeführt ist, dann sollte das Bios booten.
optional:
8.) Wenn noch weitere Änderungen am Bios durchgeführt werden sollen, dann kann das Bios natürlich noch mit Modbin geöffnet und z.B. der Biosname auf dem POST Screen angepasst werden.
-------------------------------------------------------------------------------
Noch ein paar Anmerkungen, die mir das Leben erleichtert haben:
Ich erstelle mir für jedes Bios mehrere Batchdateien mit den Cbrom Befehlen. Das spart eine Menge Tipparbeit und Zeit, einfach weil das Hinzufügen der Module dann halbautomatisiert erfolgt. Das macht insbesondere dann Sinn, wenn man mehrere Varianten/Romsips testen möchte. Das B39 Bios hat beispielsweise folgende Module (Ausgabe von
CBrom b39.bin /d):
Code:
******** w6570b39.bin BIOS component ********
No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================
0. System BIOS 20000h(128.00K) 139AEh(78.42K) W6570NMS.BIN
1. XGROUP CODE 0D0F0h(52.23K) 08DFEh(35.50K) awardext.rom
2. ACPI table 04F9Eh(19.90K) 01B11h(6.77K) ACPITBL.BIN
3. EPA LOGO 0168Ch(5.64K) 002AAh(0.67K) AwardBmp.bmp
4. YGROUP ROM 05F80h(23.88K) 03AB4h(14.68K) awardeyt.rom
5. GROUP ROM[ 0] 04DD0h(19.45K) 02274h(8.61K) _EN_CODE.BIN
6. GROUP ROM[ 1] 093C0h(36.94K) 007E9h(1.98K) BGROUP.BIN
7. PCI ROM[A] 10000h(64.00K) 07B02h(30.75K) NV2PXES.NIC
8. PCI ROM[B] 0C000h(48.00K) 06323h(24.78K) NVRAID.ROM
9. VGA ROM[1] 0DC00h(55.00K) 08F7Eh(35.87K) CR17NZ.ROM
10. LOGO BitMap 4B30Ch(300.76K) 08428h(33.04K) Platinum.BMP
Total compress code space = 5D000h(372.00K)
Total compressed code size = 43C43h(271.07K)
Remain compress code space = 193BDh(100.93K)
** Micro Code Information **
Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID
------------------+--------------------+--------------------+-------------------
Damit habe ich mir eine Batchdatei gebastelt, die mir die Module hinzufügt, wenn ich sie mittels
batch.bat bios.bin aufrufe:
Code:
cbrom198.exe %1 /xgroup awardext.rom
cbrom198.exe %1 /acpi acpitbl.bin
cbrom198.exe %1 /epa awardbmp.bmp
cbrom198.exe %1 /ygroup awardeyt.rom
cbrom198.exe %1 /group _EN_CODE.bin
cbrom198.exe %1 /group1 Bgroup.bin
cbrom198.exe %1 /pci NV2PXES.NIC
cbrom198.exe %1 /pci NVRAID.rom
cbrom198.exe %1 /vga cr17nz.rom
cbrom198.exe %1 /logo Platinum.bmp
Das Ganze funktioniert natürlich analog für
extract und
release. Solange man sich eine Kopie der geleerten Bios Datei (oben, empty.bin) behält, braucht man diese beiden aber eigentlich nicht automatisieren, da das pro Bios nur einmalig durchgeführt werden muss.