Skip to content

T60p Extract VGABIOS

Antonizoon edited this page Oct 5, 2014 · 6 revisions

In this method, we will grab the VGABIOS from the computer's working memory. This is the simplest, and probably most reliable method, since the VGABIOS will patch itself with the necessary graphics card IDs at every boot. As a result, the VGABIOS is unique to every device.

Extracting the VGABIOS

  1. Open up a Linux Terminal.

  2. Become root with su or sudo su.

  3. Use this nice little Bash one-liner (by Peter Stuge) to automatically detect the location of the VGABIOS in memory, and dump it with dd.

     cat /proc/iomem | grep 'Video ROM' | (read m; m=${m/ :*}; s=${m/-*}; e=${m/*-}; \
     dd if=/dev/mem of=vgabios.bin bs=1c skip=$[0x$s] count=$[$[0x$e]-$[0x$s]+1])
    
  4. The VGABIOS has now been extracted (in the current directory) as vgabios.bin .

Finding the VGABIOS with romheaders

Now that the VGABIOS has been extracted, we must figure out the PCI IDs. We will use the romheaders tool from the FCode Suite.

  1. Install the FCode Suite.

     sudo apt-get install fcode-utils
    
  2. Run the following command on the vgabios.bin extracted in the previous section.

     romheaders vgabios.bin
    
  3. You will get an output that looks like the following:

Image 1:
PCI Expansion ROM Header:
  Signature: 0x55aa (Ok)
  CPU unique data: 0x7f 0xe9 0x77 0x02 0x00 0x00 0x00 0x00
                   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  Pointer to PCI Data Structure: 0x0238

PCI Data Structure:
  Signature: 0x50434952 'PCIR' (Ok)
  Vendor ID: 0x1002
  Device ID: 0x7145
  Vital Product Data:  0x0000
  PCI Data Structure Length: 0x0018 (24 bytes)
  PCI Data Structure Revision: 0x00
  Class Code: 0x030000 (VGA Display controller)
  Image Length: 0x007f blocks (65024 bytes)
  Revision Level of Code/Data: 0x090c
  Code Type: 0x00 (Intel x86)
  Last-Image Flag: 0x80 (last image in rom)
  Reserved: 0x0000

Platform specific data for x86 compliant option rom:
  Initialization Size: 0x7f (65024 bytes)
  Entry point for INIT function: 0x27d
  1. From this example, the (<vendor_id>,<device_id>) for the T60 with ATI GPU is (1002,7145) . Remember these numbers when building Coreboot.
BA Logo

Bibliotheca Anonoma

Coreboot Laptops

Coreboot is an open source, user configurable BIOS. However, it does use a few proprietary blobs here and there.

ThinkPads

These require hardware flashing. Due to Intel Management Firmware, proprietary blobs are required for newer Intel motherboards to even power up.

Chromebooks

Most Intel Chromebooks come with Coreboot preinstalled. SeaBIOS can optionally be installed to add Windows support.

Just use John Lewis's Installation Script for All Models to autoinstall.

Build Notes

NOTE: The Libreboot components of this wiki was divested into the Official Libreboot Documentation here. Please use that from now on.

Libreboot laptops are certified by the FSF to protect your freedom.

They contain no proprietary blobs of any kind, and have the best support for FSF certified GNU/LInux.

ThinkPads

Macbooks

Other Tutorials

Clone this wiki locally