2023-07-10 15:43:08 +00:00
|
|
|
---
|
2024-08-31 21:28:18 +00:00
|
|
|
title: Canoeboot installation guides
|
2023-07-10 15:43:08 +00:00
|
|
|
x-toc-enable: true
|
|
|
|
...
|
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
This article will teach you how to install Canoeboot, on any of the supported
|
|
|
|
laptop, desktop and server motherboards.
|
2024-05-27 11:02:00 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
**ALWAYS remember to make a backup of the current flash, when overwriting it,
|
|
|
|
regardless of what firmware you currently have and what firmware you're
|
|
|
|
re-flashing it with; this includes updates between Canoeboot releases. Use
|
|
|
|
the `-r` option in flashprog instead `-w`, to read from the flash.**
|
|
|
|
|
|
|
|
Install Canoeboot via external flashing
|
|
|
|
=================
|
|
|
|
|
|
|
|
Refer to the following article:\
|
|
|
|
[Externally rewrite 25xx NOR flash via SPI protocol](spi.md)
|
|
|
|
|
|
|
|
You are strongly advised to *have* an external flashing setup, and make sure
|
|
|
|
it works, before attempting internal flashing. This, in addition to making
|
|
|
|
a backup of the current flash contents, prior to flashing, whether you dump
|
|
|
|
externally or internally - if only external flashing is available, then it's
|
|
|
|
usually the case that only external dumping is available too.
|
2024-01-27 22:35:38 +00:00
|
|
|
|
|
|
|
This section relates to installing canoeboot on supported targets.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Which systems are supported by Canoeboot?
|
|
|
|
========================================
|
2024-01-04 09:21:57 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Before actually reading the installation guides, please ensure that your
|
|
|
|
system is fully supported by Canoeboot. More information about the Canoeboot
|
|
|
|
build system can be found in the [cbmk maintenance manual](../maintain/).
|
2024-01-04 09:21:57 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
With x86 machines, you can use the SeaBIOS or GNU GRUB payloads. On ARM
|
|
|
|
systems, you can use the U-Boot payload (coreboot still initialises hardware).
|
|
|
|
|
|
|
|
Canoeboot currently supports the following systems:
|
2024-01-04 09:21:57 +00:00
|
|
|
|
2024-09-26 06:53:44 +00:00
|
|
|
Games consoles
|
|
|
|
--------------
|
|
|
|
|
|
|
|
- [Sony Playstation](playstation.md) (PS1/PSX)
|
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Servers (AMD, x86)
|
|
|
|
------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
- [ASUS KFSN4-DRE motherboard](kfsn4-dre.md)
|
|
|
|
- [ASUS KGPE-D16 motherboard](kgpe-d16.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Desktops (AMD, Intel, x86)
|
|
|
|
--------------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
- [Acer G43T-AM3](acer_g43t-am3.md)
|
|
|
|
- Apple iMac 5,2
|
|
|
|
- [ASUS KCMA-D8 motherboard](kcma-d8.md)
|
2024-11-02 06:37:04 +00:00
|
|
|
- [Dell OptiPlex 780 variants e.g. MT, USFF](dell780.md)
|
2024-08-31 21:28:18 +00:00
|
|
|
- [Gigabyte GA-G41M-ES2L motherboard](ga-g41m-es2l.md)
|
|
|
|
- Intel D510MO and D410PT motherboards
|
|
|
|
- [Intel D945GCLF](d945gclf.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Laptops (Intel, x86)
|
|
|
|
--------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
- [Apple MacBook1,1 and MacBook2,1](macbook21.md)
|
2024-09-30 05:54:15 +00:00
|
|
|
- [Dell Latitude E4300, E6400, E6400 XFR and E6400 ATG](latitude.md)
|
2024-08-31 21:28:18 +00:00
|
|
|
- [Lenovo ThinkPad R400](r400.md)
|
|
|
|
- Lenovo ThinkPad R500
|
|
|
|
- [Lenovo ThinkPad T400 / T400S](t400.md)
|
|
|
|
- [Lenovo ThinkPad T500 / W500](t500.md)
|
|
|
|
- Lenovo ThinkPad T60, X60, X60S, X60 Tablet (with Intel GPU)
|
|
|
|
- [Lenovo ThinkPad X200 / X200S / X200 Tablet](x200.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Laptops (ARM, with U-Boot payload)
|
|
|
|
----------------------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
- [ASUS Chromebook Flip C101 (gru-bob)](chromebooks.md)
|
|
|
|
- [Samsung Chromebook Plus (v1) (gru-kevin)](chromebooks.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Emulation
|
|
|
|
---------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
- [Qemu x86 and arm64](../misc/emulation.md)
|
|
|
|
|
|
|
|
**Disable security before flashing**
|
|
|
|
================================
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
**Before internal flashing, you must first disable `/dev/mem` protections. Make
|
|
|
|
sure to re-enable them after you're finished.**
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
**See: [Disabling /dev/mem protection](devmem.md)**
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
ROM image file names
|
|
|
|
====================
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Canoeboot ROM images are named like
|
|
|
|
this: `payload_board_inittype_displaytype_keymap.rom`
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
The `payload` option can be SeaBIOS, SeaGRUB or U-Boot. If GRUB is available
|
|
|
|
on a given board, in flash, both SeaBIOS and SeaGRUB are provided; SeaBIOS
|
|
|
|
images still have GRUB available via the SeaBIOS menu, and SeaGRUB means that
|
|
|
|
SeaBIOS automatically loads GRUB from flash first (but you can still choose
|
|
|
|
something else, by pressing ESC in SeaBIOS when prompted).
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Inittype can be `libgfxinit`, `vgarom` or `normal`. The `libgfxinit` option
|
|
|
|
means coreboot provides native video initialisation, for onboard graphics.
|
|
|
|
The `vgarom` option means coreboot executes a VGA option ROM for video
|
|
|
|
initialisation. The `normal` option means coreboot provides no video
|
|
|
|
initialisation, via VGA ROM or native code.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Displaytype can be `txtmode` or `corebootfb` - if inittype is `normal`, this
|
|
|
|
is ignored because `txtmode` is assumed.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
If `payload` is `seabios` instead of `seagrub`, no keymaps are inserted into
|
|
|
|
flash and only US QWERTY is assumed, otherwise the keymap refers to what is used
|
|
|
|
in GRUB on `seagrub` payload setups.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
If you use a libgfxinit image on a desktop machine, you can still insert a
|
|
|
|
graphics card and it'll work just fine; its own VGA option ROM will be
|
|
|
|
executed instead, if the primary payload is SeaBIOS, whether that be pure
|
|
|
|
SeaBIOS or a SeaGRUB setup.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
EC firmware updates
|
|
|
|
===================
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Obviously, free EC firmware would be preferable, but it is not the case on
|
|
|
|
all machine. We would like to have free EC firmware on more machines, but for
|
|
|
|
now, we must rely on the vendor in a lot of cases. The EC is usually on a
|
|
|
|
separate flash, so you wouldn't think about it unless you knew it was there;
|
|
|
|
this is exactly why it's mentioned, so that you think about it,
|
|
|
|
[because proprietary software is bad](../../news/policy.md).
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
In many cases, the EC firmware must be updated on a separate IC to the main
|
|
|
|
boot flash, and this can usually only be done with the vendor's own tool,
|
|
|
|
running from the vendor boot firmware, and usually only on Windows, because
|
|
|
|
they provide EC and BIOS/UEFI updates in the same utility. Find out what you
|
|
|
|
need to do for your machine before installing Canoeboot.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
It is recommended that you update to the latest EC firmware version. The
|
|
|
|
[EC firmware](../../faq.md#ec-embedded-controller-firmware)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Updating the EC can sometimes provide benefit depending on the vendor. For
|
|
|
|
example, they might fix power issues that could then enhance battery life.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
ThinkPads
|
|
|
|
---------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
See: <http://www.thinkwiki.org/wiki/BIOS_update_without_optical_disk>
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Otherwise, check the Lenovo website to find the update utility for your
|
|
|
|
mainboard.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Other
|
|
|
|
-----
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
The same wisdom applies to other laptop vendors.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Non-laptops typically do not have embedded controllers in them.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Canoeboot installation instructions
|
|
|
|
===================================
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
In general, if Canoeboot is already running, you can skip
|
|
|
|
towards the final section on this page, which provides general internal
|
|
|
|
flashing instructions. Internal flashing is when you flash the target machine
|
|
|
|
from the target machine, inside an operating system running on it.
|
2024-05-27 11:02:00 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Some boards require special steps, even if Canoeboot is already running,
|
2024-09-07 01:24:15 +00:00
|
|
|
for example if you [locked down the flash](../gnulinux/grub_hardening.md).
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Therefore, before following generic guides, make sure to check first whether
|
|
|
|
your board has special instructions, otherwise use the generic guide at the
|
|
|
|
end of this article.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-05-27 11:02:00 +00:00
|
|
|
Intel GbE MAC address (IFD-based systems)
|
2024-08-31 21:28:18 +00:00
|
|
|
---------------------------------------
|
2024-05-27 11:02:00 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
On all Intel platforms except X4X (e.g. Gigabyte GA-G41M-ES2L) and i945
|
|
|
|
ones (e.g. ThinkPad X60, ThinkPad T60, MacBook2,1), an Intel Flash Descriptor is
|
|
|
|
used. If the board has Intel gigabit ethernet, the MAC address is included in
|
|
|
|
flash, and can (must) be changed prior to installation.
|
2024-05-27 11:02:00 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
You can use [nvmutil](nvmutil.md) to change the MAC address. You will perform
|
|
|
|
this modification to the ROM image, before flashing it.
|
2024-05-27 11:02:00 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Flash lockdown / boot security
|
|
|
|
-------------------
|
2024-05-27 11:02:00 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
This is referred to informally as *Secure libreBoot*.
|
2024-05-27 11:02:00 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Full flash lockdown is possible, with cryptographic verification of your
|
|
|
|
Linux kernel and other files, using special features in the GRUB payload.
|
2024-05-27 11:02:00 +00:00
|
|
|
|
|
|
|
There are also some Intel X4X platforms that use an ICH10 southbridge,
|
|
|
|
supported in Canoeboot, but these are flashed in a *descriptorless* setup,
|
|
|
|
which means that the MAC address is irrelevant (either there will be an Intel
|
|
|
|
PHY module that is now unusable, and you use an add-on card, or it doesn't use
|
|
|
|
an Intel PHY module and the onboard NIC is usable).
|
|
|
|
|
2023-07-10 15:43:08 +00:00
|
|
|
Install via host CPU (internal flashing)
|
|
|
|
========================================
|
|
|
|
|
2024-09-07 01:24:15 +00:00
|
|
|
See: [GRUB hardening / Secure canoeBoot](../gnulinux/grub_hardening.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
If you already did this, it's possible that you may no longer be able to
|
|
|
|
flash internally. If that is the case, you must [flash externally](spi.md).
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Updating an existing installation
|
|
|
|
---------------------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Unless otherwise stated, in sections pertaining to each mainboard below,
|
|
|
|
an existing Canoeboot installation can be updated via internal flashing,
|
|
|
|
without any special steps; simply follow the general internal flashing
|
|
|
|
guide, in the final section further down this page.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
If you have an existing Canoeboot installation but you *locked down the flash*,
|
|
|
|
updating it will require external flashing.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
If you currently have the factory firmware, you probably need to flash
|
|
|
|
externally; on *some* machines, internal flashing is possible, usually with
|
|
|
|
special steps required that differ from updating an existing installation.
|
|
|
|
>>>>>>> 09844d62 (simplify docs/install and merge docs/hardware)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
The next sections will pertain to specific mainboards, where indicated,
|
|
|
|
followed by general internal flashing instructions where applicable.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Dell Latitude laptops (vendor BIOS)
|
|
|
|
---------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
See: [Dell Latitude flashing guide](latitude.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
This applies to all supported Dell Latitude models. Remember to [update the
|
|
|
|
MAC address with nvmutil](nvmutil.md), before flashing.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
ThinkPad X200/T400/T500/W500/R400/R500
|
|
|
|
--------------------------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
If you're running one of these with Lenovo BIOS, you must externally flash
|
|
|
|
Canoeboot, because the original firmware restricts writes to the flash.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
There machines all use SOIC8/SOIC16 flash ICs. Refer to pages specifically for
|
|
|
|
each machine:
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
* [ThinkPad X200](x200.md)
|
|
|
|
* [ThinkPad T400](t400.md)
|
|
|
|
* [ThinkPad R400](r400.md)
|
|
|
|
* [ThinkPad T500/W500](t500.md) (R500 is similar)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
NOTE: T400S, X200S and X200 Tablet require different steps, because these have
|
|
|
|
WSON8 flash ICs on them, which will require some soldering. Please read
|
|
|
|
the [external flashing guide](spi.md) in the section pertaining to WSON.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
You can find WSON8 probes online, that are similar to a SOIC8/SOIC16 clip. Your
|
|
|
|
mileage may very, but WSON8 has the same pinout as SOIC8 so you might have some
|
|
|
|
luck with that.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Intel D510MO/D410PT (vendor BIOS)
|
|
|
|
-----------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
See: [External flashing guide](spi.md) - both boards are compatible with
|
|
|
|
the same image.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Gigabyte GA-G41M-ES2L (vendor BIOS)
|
|
|
|
---------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Internal flashing is possible, from factory BIOS to Canoeboot, but special
|
|
|
|
steps are required.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
See: [Gigabyte GA-G41M-ES2L installation guide](ga-g41m-es2l.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Acer G43T-AM3 (vendor BIOS)
|
|
|
|
--------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
See: [Acer G43T-AM3](acer_g43t-am3.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
MacBook 1,1 / 2,1 / iMac 5,2 (vendor BIOS)
|
|
|
|
-------------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
MacBook *1,1* requires [external flashing](spi.md). MacBook *2,1* can always
|
|
|
|
be flashed internally. iMac 5,2 can be flashed internally.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Also check the [Macbook2,1 hardware page](macbook21.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
ASUS KCMA-D8 / KGPE-D16 (vendor BIOS)
|
|
|
|
--------------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
[You must flash it externally](spi.md) (DIP-8 section) - also look at
|
|
|
|
the [KGPE-D16 hardware page](kgpe-d16.md).
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Further information is available on the [KCMA-D8 page](kcma-d8.md).
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
KGPE-D16 installation is essentially the same, with the same type of flash
|
|
|
|
IC (DIP-8). Refer to the external flashing guide.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
ASUS KFSN4-DRE (vendor BIOS)
|
|
|
|
-------------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
|
|
|
This board uses LPC flash in a PLCC32 socket. This coreboot page shows an
|
|
|
|
example of the push pin as a proof of concept:
|
|
|
|
<http://www.coreboot.org/Developer_Manual/Tools#Chip_removal_tools>
|
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
See: [ASUS KFSN4-DRE guide](kfsn4-dre.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Hot-swap the flash IC with another one while it's running, and flash it
|
|
|
|
internally.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Intel D945GCLF (vendor BIOS)
|
|
|
|
---------------------------------
|
2024-05-04 08:54:51 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
See: [Intel D945GCLF flashing guide](d945gclf.md)
|
extreme cleanup / grandiose gesture
make canoeboot a truly GNU FSDG compliant coreboot distro,
by removing all overly positive reference to Libreboot;
what remains is technical in nature, so as to provide
historical context since Canoeboot is a fork of Libreboot.
I've stated before that I wish to take a more neutral tone
toward the FSF, in contrast to the *coldboot war* of 2023
when GNU Boot started.
Canoeboot was heavily linking to Libreboot, even going so far
as to call itself "inferior" and tell the reader to use
Libreboot.
From now on, Canoeboot will be maintained as though I actually
believed in FSF propoganda. I don't, but its users do. Treat
them with respect. My reason for providing Canoeboot is
precisely that I wish for such people to have a high quality
coreboot distro, much unlike the inferior *GNU Boot* project;
inferior because to this day, it's still based on very old
Libreboot, with not much changed (of any real substance)
relative to the Libreboot 20220710 release on which it forked.
In general, I've also found a lot of stragglers from when
Canoeboot started, where paragraphs referred to Libreboot that
should have actually referred to Canoeboot, or paragraphs
with Libreboot-specific information that does not make sense
in the Canoeboot project e.g. references to vendor scripts.
The resulting canoeboot.org will now look no different to any
typical reader than a typical FSF-aligned project.
There is a next stage to this, which will become apparent to
everyone if I have my way.
Signed-off-by: Leah Rowe <info@minifree.org>
2024-05-10 02:12:44 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
ThinkPad T60/X60/X60Tablet/X60S
|
|
|
|
-------------------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Only the Intel GPU is compatible. Do not flash the ATI GPU models.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
External flashing guides:
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
* [ThinkPad X60](x60_unbrick.md)
|
|
|
|
* [ThinkPad X60 Tablet](x60tablet_unbrick.md)
|
|
|
|
* [ThinkPad T60](t60_unbrick.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
These machines can also be flashed internally, by exploiting a bug
|
|
|
|
in the original Lenovo BIOS. If there's a BIOS password at boot, you should
|
|
|
|
just flash externally.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Internal flashing instructions:
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
First, please ensure that your CR2032/CMOS battery is working. This is what
|
|
|
|
powers the SRAM containing BIOS settings, and it powers the real-time clock.
|
|
|
|
It also holds the BUC.TS value - this is what we need.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
BUC (Backup Control) register contains a bit called Top Swap (TS). The 64KB
|
|
|
|
bootblock at the top of flash is complemented by a backup Top Swap just above
|
|
|
|
it. The one at the end can't be flashed internally while Lenovo BIOS is running,
|
|
|
|
but the rest of it can be flashed (everything above the main bootblock).
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
By setting the TS bit, you can make the machine boot from the backup bootblock.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Download the Libreboot 20160907 utils archive, and in there you will find
|
|
|
|
these binaries:
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-01-27 22:35:38 +00:00
|
|
|
* `flashprog`
|
|
|
|
* `flashprog_i945_sst`
|
|
|
|
* `flashprog_i945_mx`
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
You'll also find the bucts tool. Run it as root:
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
./bucts 1
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Now run both of these as root:
|
|
|
|
|
|
|
|
./flashrom_i945_sst -p internal -w coreboot.rom
|
|
|
|
./flashrom_i945_mx -p internal -w coreboot.rom
|
2023-07-10 15:43:08 +00:00
|
|
|
|
|
|
|
You'll see a lot of errors. This is normal. You should see something like:
|
|
|
|
|
|
|
|
```
|
|
|
|
Reading old flash chip contents... done.
|
|
|
|
Erasing and writing flash chip... spi_block_erase_20 failed during command execution at address 0x0
|
|
|
|
Reading current flash chip contents... done. Looking for another erase function.
|
|
|
|
spi_block_erase_52 failed during command execution at address 0x0
|
|
|
|
Reading current flash chip contents... done. Looking for another erase function.
|
|
|
|
Transaction error!
|
|
|
|
spi_block_erase_d8 failed during command execution at address 0x1f0000
|
|
|
|
Reading current flash chip contents... done. Looking for another erase function.
|
|
|
|
spi_chip_erase_60 failed during command execution
|
|
|
|
Reading current flash chip contents... done. Looking for another erase function.
|
|
|
|
spi_chip_erase_c7 failed during command execution
|
|
|
|
Looking for another erase function.
|
|
|
|
No usable erase functions left.
|
|
|
|
FAILED!
|
|
|
|
Uh oh. Erase/write failed. Checking if anything has changed.
|
|
|
|
Reading current flash chip contents... done.
|
|
|
|
Apparently at least some data has changed.
|
|
|
|
Your flash chip is in an unknown state.
|
|
|
|
```
|
|
|
|
|
|
|
|
If you see this, rejoice! It means that the flash was successful. Please do not
|
|
|
|
panic. Shut down now, and wait a few seconds, then turn back on again.
|
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
The main bootblock still isn't flashed, but you can shut down, wait a few
|
|
|
|
seconds and boot up again. When you do, you'll have Canoeboot. Please make
|
|
|
|
sure to flash a second time, like so:
|
|
|
|
|
|
|
|
flashprog -p internal -w coreboot.rom
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Canoeboot recommends `flashprog` now, which is a fork of flashrom, but we used
|
|
|
|
flashrom in the 2016 release. The macronix/ssh flashrom binaries there are
|
|
|
|
specifically patched; check the Libreboot 20160907 source code for the actual
|
|
|
|
patches. The patches modify some flash chip definitions in flashrom, to exploit
|
|
|
|
the bug in Lenovo BIOS enabling internal flashing.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
You must ensure that the second flash is performed, upon reboot, because
|
|
|
|
otherwise if the CR2032 battery dies, bucts will be reset and it will no
|
|
|
|
longer boot.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
When you've done the second flash, which includes overwriting the main
|
|
|
|
bootblock, set bucts back to zero:
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
./bucts 0
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
The second flash can be done by simply following the general internal flashing
|
|
|
|
guide further down on this page.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
ARM-based Chromebooks
|
|
|
|
---------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
See: [Chromebook flashing instructions](chromebooks.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
NOTE: The generic flashing instructions (later on this page) apply only to
|
|
|
|
the x86 machines, because the Chromebooks still use flashrom with
|
|
|
|
the `-p host` argument instead of `-p internal` when flashing, and you typically
|
|
|
|
need to flash externally, due to Google's security model.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
QEMU (arm64 and x86)
|
|
|
|
--------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Canoeboot can be used on QEMU (virtual machine), which is useful for debugging
|
|
|
|
payloads and generally trying out Canoeboot, without requiring real hardware.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
See: [Canoeboot QEMU guide](../misc/emulation.md)
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Install via host CPU (internal flashing)
|
|
|
|
========================================
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
NOTE: This mainly applies to the x86 machines.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Please check other sections listed above, to see if there is anything
|
|
|
|
pertaining to your mainboard. Internal flashing means that you boot GNU+Linux or
|
|
|
|
BSD on the target machine, and run `flashprog` there, flashing the machine
|
|
|
|
directly.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
**If you can't flash internally, you must [flash externally](spi.md).**
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Internal flashing is often unavailable with the factory firmware, but it is
|
|
|
|
usually possible when Canoeboot is running (barring special circumstances).
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Run flashprog on host CPU
|
|
|
|
------------------------
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
### Flash chip size
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
Use this to find out:
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
flashprog -p internal
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
In the output will be information pertaining to your boot flash.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
### Howto: read/write/erase the boot flash
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
How to read the current chip contents:
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
sudo flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump.bin
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
You should still make several dumps, even if you're flashing internally, to
|
|
|
|
ensure that you get the same checksums. Check each dump using `sha1sum`
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
How to erase and rewrite the chip contents:
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
sudo flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -w canoeboot.rom
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
NOTE: `force_I_want_a_brick` is not scary. Do not be scared! This merely disables
|
|
|
|
the safety checks in flashprog. Flashrom and coreboot change a lot, over the years,
|
|
|
|
and sometimes it's necessary to use this option. If you're scared, then just
|
|
|
|
follow the above instructions, but remove that option. So, just use `-p internal`.
|
|
|
|
If that doesn't work, next try `-p internal:boardmismatch=force`. If that doesn't
|
|
|
|
work, try `-p internal:boardmismatch=force,laptop=force_I_want_a_brick`. So long
|
|
|
|
as you *ensure* you're using the correct ROM for your machine, it will be safe
|
|
|
|
to run flashprog. These extra options just disable the safetyl checks in flashprog.
|
|
|
|
There is nothing to worry about.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
If successful, it will either say `VERIFIED` or it will say that the chip
|
|
|
|
contents are identical to the requested image.
|
2023-07-10 15:43:08 +00:00
|
|
|
|
2024-08-31 21:28:18 +00:00
|
|
|
NOTE: there are exceptions where the above is not possible. Read about them in
|
|
|
|
the sections below:
|