Merge pull request 'Remove ich9utils' (#137) from runxiyu/lbwww:remove_ich9utils into master

Reviewed-on: https://codeberg.org/libreboot/lbwww/pulls/137
master
Leah Rowe 2025-02-08 11:21:30 +00:00
commit 990dc943d3
10 changed files with 20 additions and 66 deletions

View File

@ -631,20 +631,19 @@ engineered the layout of the Intel GbE NVM (non-volatile memory) region in the
boot flash. This region defines configuration options for the onboard Intel boot flash. This region defines configuration options for the onboard Intel
GbE NIC, if present. GbE NIC, if present.
Based on this, I was able to take Steve's initial proof of concept and write Based on this, I was able to take Steve's initial proof of concept
and work with him extensively to write
the `ich9gen` utility, which generates an Intel Flash Descriptor and GbE NVM the `ich9gen` utility, which generates an Intel Flash Descriptor and GbE NVM
region, from scratch, without an Intel ME region defined. It is this tool, region, from scratch, without an Intel ME region defined,
the `ich9gen` tool, that Libreboot uses to provide ROM images for GM45+ICH9M without needing a dump of the original Lenovo BIOS firmware.
Libreboot used to use `ich9gen` to provide ROM images for GM45+ICH9M
platforms (such as ThinkPad X200/T400/T500/W500), with a fully functional platforms (such as ThinkPad X200/T400/T500/W500), with a fully functional
descriptor and functional Gigabit Ethernet, but *without* needing Intel descriptor and functional Gigabit Ethernet, but *without* needing Intel
Management Engine (ME) firmware, thus making those machines *libre* (the ME Management Engine (ME) firmware, thus making those machines *libre* (the ME
is fully disabled, when you use a descriptor+gbe image generated by `ich9gen`). is fully disabled, when you use a descriptor+gbe image generated by `ich9gen`).
Note that `ich9gen` is now obsolete as the Flash Descriptor and NVM region
With *my* `ich9gen` tool (Steve's tool was called `ich9deblob`), you didn't are generated pre-assembled, and `nvmutil` is used to change MAC addresses
need a dump of the original Lenovo BIOS firmware anymore! I could not have instead.
written this tool, without Steve's initial proof of concept. I worked with him,
extensively, for many months. All GM45+ICH9M support (X200, T400, etc) in
Libreboot is made possible because of the work he did, back in 2014.
### Swift Geek ### Swift Geek

View File

@ -1 +1 @@
Documentation pertaining to ich9utils which can generate or modify Intel Flash Descriptors, and Intel GbE NVM images. Documentation pertaining to the deprecated ich9utils which can generate or modify Intel Flash Descriptors, and Intel GbE NVM images.

View File

@ -86,18 +86,7 @@ init scripts or you can use your operating system's own networking
configuration. Refer to your operating system's documentation for configuration. Refer to your operating system's documentation for
how to do this. how to do this.
Changing the MAC address on X200/T400/T500/W500 Changing the MAC address (e.g. X230/T440p)
-----------------------------------------------
On GM45 laptops with ICH9M southbridge and Intel PHY module, the MAC address
is hardcoded in boot flash, which means it can be changed if you re-flash.
See [ich9utils documentation](../install/ich9utils.md)
If *all* you want to do is change the MAC address, you might try `nvmutil`
instead. See notes below:
Changing the MAC address on ivybridge/sandybridge/haswell (e.g. X230/T440p)
----------------------------------------------------------------- -----------------------------------------------------------------
See [nvmutil documentation](../install/nvmutil.md) See [nvmutil documentation](../install/nvmutil.md)
@ -107,15 +96,6 @@ Sandybridge, Ivybridge and Haswell platforms, but it can be used on any
platform with a valid GbE region in flash, where an Intel Flash Descriptor platform with a valid GbE region in flash, where an Intel Flash Descriptor
is used; this includes older GM45+ICH9M machines supported by Libreboot. is used; this includes older GM45+ICH9M machines supported by Libreboot.
The `ich9utils` program is more useful in an lbmk context, because it
generates an entire Intel Flash Descriptor and GbE region from scratch;
coreboot has a similar method in its build system, using its own utility
called bincfg, but this tool is unused in lbmk.
No tool like ich9utils exists for these boards yet, but lbmk includes the IFD
and GbE files in-tree (Intel ME is handled by extracting from Lenovo updates,
which the build system automatically fetches from the internet).
You can use `nvmutil` to change the existing MAC address in a GbE region. This You can use `nvmutil` to change the existing MAC address in a GbE region. This
sets the "hardcoded" MAC address, typically a globally assigned one set by sets the "hardcoded" MAC address, typically a globally assigned one set by
the vendor, but you can use local addresses, and you can use randomised MACs. the vendor, but you can use local addresses, and you can use randomised MACs.

View File

@ -71,8 +71,7 @@ the palmrest: 4MiB is SOIC-8, 8MiB is SOIC-16.
*The R400 laptops come with the ME (and sometimes AMT in addition) *The R400 laptops come with the ME (and sometimes AMT in addition)
before flashing libreboot. libreboot disables and removes it by using a before flashing libreboot. libreboot disables and removes it by using a
modified descriptor: see [../install/ich9utils.md](../install/ich9utils.md)* modified descriptor.*
(contains notes, plus instructions)
Flashing instructions can be found at Flashing instructions can be found at
[../install/\#flashprog](../install/#flashprog) [../install/\#flashprog](../install/#flashprog)

View File

@ -70,8 +70,7 @@ the palmrest: 4MiB is SOIC-8, 8MiB is SOIC-16.
*The T400 laptops come with the ME (and sometimes AMT in addition) *The T400 laptops come with the ME (and sometimes AMT in addition)
before flashing libreboot. libreboot disables and removes it by using a before flashing libreboot. libreboot disables and removes it by using a
modified descriptor: see [../install/ich9utils.md](../install/ich9utils.md)* modified descriptor.*
(contains notes, plus instructions)
Flashing instructions can be found at Flashing instructions can be found at
[../install/\#flashprog](../install/#flashprog) [../install/\#flashprog](../install/#flashprog)

View File

@ -72,8 +72,7 @@ the palmrest: 4MiB is SOIC-8, 8MiB is SOIC-16.
*The T500 laptops come with the ME (and sometimes AMT in addition) *The T500 laptops come with the ME (and sometimes AMT in addition)
before flashing libreboot. libreboot disables and removes it by using a before flashing libreboot. libreboot disables and removes it by using a
modified descriptor: see [../install/ich9utils.md](../install/ich9utils.md)* modified descriptor.*
(contains notes, plus instructions)
Flashing instructions can be found at Flashing instructions can be found at
[../install/\#flashprog](../install/#flashprog) [../install/\#flashprog](../install/#flashprog)

View File

@ -70,8 +70,7 @@ the palmrest: 4MiB is SOIC-8, 8MiB is SOIC-16.
*The X200 laptops come with the ME (and sometimes AMT in addition) *The X200 laptops come with the ME (and sometimes AMT in addition)
before flashing libreboot. libreboot disables and removes it by using a before flashing libreboot. libreboot disables and removes it by using a
modified descriptor: see [../install/ich9utils.md](../install/ich9utils.md)* modified descriptor.*
(contains notes, plus instructions)
Flashing instructions can be found at Flashing instructions can be found at
[../install/\#flashprog](../install/#flashprog) [../install/\#flashprog](../install/#flashprog)

View File

@ -295,7 +295,7 @@ privacy that can't be ignored.
Before version 6.0 (that is, on systems from 2008/2009 and earlier), the Before version 6.0 (that is, on systems from 2008/2009 and earlier), the
ME can be disabled by setting a couple of values in the SPI flash ME can be disabled by setting a couple of values in the SPI flash
memory. The ME firmware can then be removed entirely from the flash memory. The ME firmware can then be removed entirely from the flash
memory space. The libreboot project [does this](docs/install/ich9utils.md) on memory space. The libreboot project does this on
the Intel 4 Series systems that it supports, such as the [ThinkPad the Intel 4 Series systems that it supports, such as the [ThinkPad
X200](../docs/install/x200.md) and [ThinkPad X200](../docs/install/x200.md) and [ThinkPad
T400](../docs/install/t400.md). ME firmware versions 6.0 and T400](../docs/install/t400.md). ME firmware versions 6.0 and
@ -516,13 +516,8 @@ inconvenient to use an external programmer.
On some systems, it is possible to write-protect the firmware, such that On some systems, it is possible to write-protect the firmware, such that
it is rendered read-only at the OS level (external flashing is still it is rendered read-only at the OS level (external flashing is still
possible, using dedicated hardware). For example, on current GM45 possible, using dedicated hardware). [See instructions
laptops (e.g. ThinkPad X200, T400), you can write-protect (see here.](docs/linux/grub_hardening.md#flash-write-protection)
[ICH9 gen utility](docs/install/ich9utils.md#ich9gen)).
It's possible to write-protect on all libreboot systems, but the instructions
need to be written. The documentation is in the main git repository, so you are
welcome to submit patches adding these instructions.
TODO: Document PRx based flash protection on Intel platforms, and investigate TODO: Document PRx based flash protection on Intel platforms, and investigate
other methods on AMD systems. other methods on AMD systems.

View File

@ -95,7 +95,7 @@ In a *descriptor* configuration, the flash is divided into regions such as:
the initialisation firmware plus operating system for it is loaded from the initialisation firmware plus operating system for it is loaded from
this dedicated region in the main boot flash. More info is available [in the this dedicated region in the main boot flash. More info is available [in the
FAQ](faq.md#intelme) - where ME firmware is otherwise present, Libreboot FAQ](faq.md#intelme) - where ME firmware is otherwise present, Libreboot
either [removes](docs/install/ich9utils.html) it or (with the `me_cleaner` program) [reconfigures](https://github.com/corna/me_cleaner/wiki/How-does-it-work%3F) it in such either removes it or (with the `me_cleaner` program) [reconfigures](https://github.com/corna/me_cleaner/wiki/How-does-it-work%3F) it in such
a way where it is disabled during machine initialisation. a way where it is disabled during machine initialisation.
* Platform region: non-program data, usually just a bunch of strings put there * Platform region: non-program data, usually just a bunch of strings put there
by the hardware vendor. by the hardware vendor.
@ -152,11 +152,7 @@ whether the CPU comes out of reset).
*Libreboot* provides a way to fully remove the ME firmware, while retaining *Libreboot* provides a way to fully remove the ME firmware, while retaining
full use of the machine, on GM45 platforms with ICH9M southbridge. These are full use of the machine, on GM45 platforms with ICH9M southbridge. These are
laptops: ThinkPad X200/T400/T500/W500 and so on of that generation. See: laptops: ThinkPad X200/T400/T500/W500 and so on of that generation.
[docs/install/ich9utils.md](docs/install/ich9utils.md)
The `ich9utils` software is provided by Libreboot. The `ich9gen` utility was
specifically written by Leah Rowe, in 2014 and improved incrementally since.
On newer platforms as alluded to above, `me_cleaner` is used instead. On newer platforms as alluded to above, `me_cleaner` is used instead.
@ -301,7 +297,6 @@ Intel Flash Descriptors are provided as blobs on some boards, but these are
not *software* blobs. They are configurations provided in a binary format, not *software* blobs. They are configurations provided in a binary format,
fully readable by libre software. For example: fully readable by libre software. For example:
* Libreboot's `ich9gen` program generates ICH9M flash descriptors from scratch.
* Coreboot's `ifdtool` program has extensive features for manipulating Intel * Coreboot's `ifdtool` program has extensive features for manipulating Intel
flash descriptors. flash descriptors.
* Corebot's `bincfg` program generates any sort of binary from a `.spec` file * Corebot's `bincfg` program generates any sort of binary from a `.spec` file
@ -311,8 +306,6 @@ fully readable by libre software. For example:
Intel GbE NVM config (configuration data, binary-encoded, for gigabit NIC): Intel GbE NVM config (configuration data, binary-encoded, for gigabit NIC):
* Libreboot's `ich9gen` program *also* generates GbE NVM images specifically
for Intel NICs used in GM45 thinkpads.
* Libreboot's `nvmutil` program can manipulate GbE NVM images * Libreboot's `nvmutil` program can manipulate GbE NVM images
### ARM/chromebooks ### ARM/chromebooks

View File

@ -35,9 +35,7 @@ needed something more stable, so now Libreboot is hosted on codeberg. See:
There are also these programs, hosted by the Libreboot project, and libreboot There are also these programs, hosted by the Libreboot project, and libreboot
either recommends them or makes use of them: either recommends them or makes use of them:
The `ich9utils` project is now available under `util/ich9utils` in lbmk, and The old `ich9utils` and `bucts` repositories are available on notabug:
lbmk uses *that*, but the old standalone repository is still available on
notabug (bucts is also there):
* Bucts (utility): <https://notabug.org/libreboot/bucts> * Bucts (utility): <https://notabug.org/libreboot/bucts>
* ich9utils (utility): <https://notabug.org/libreboot/ich9utils> * ich9utils (utility): <https://notabug.org/libreboot/ich9utils>
@ -60,13 +58,6 @@ internally an libreboot ROM onto a ThinkPad X60 or T60 that is currently running
the original Lenovo BIOS. Instructions for that are available here:\ the original Lenovo BIOS. Instructions for that are available here:\
[libreboot installation guides](docs/install/) [libreboot installation guides](docs/install/)
The `ich9utils` repository is used heavily, by the `lbmk` build system. However,
you can also download `ich9utils` on its own and use it. It generates ICH9M
descriptor+GbE images for GM45 ThinkPads that use the ICH9M southbridge. It may
also work for other systems using the same platform/chipset.
Documentation for `ich9utils` is available here:\
[ich9utils documentation](docs/install/ich9utils.md)
### lbmk (libreboot-make) ### lbmk (libreboot-make)
This is the core build system in libreboot. You could say that `lbmk` *is* This is the core build system in libreboot. You could say that `lbmk` *is*