general audit / cleanup

Signed-off-by: Leah Rowe <leah@libreboot.org>
master
Leah Rowe 2025-01-19 18:02:33 +00:00
parent be8cd2d2e0
commit c5c3cc6580
82 changed files with 1908 additions and 1567 deletions

View File

@ -6,8 +6,8 @@ x-toc-enable: true
The main purpose of this article is to describe how the Canoeboot project
operates, why it exists and what it does. Who, what, why and when.
What is Canoeboot?
===================
Open source BIOS/UEFI firmware
------------------
Canoeboot is free/libre boot firmware based on [Libreboot](https://libreboot.org/) (which is in turn
based on coreboot), replacing proprietary BIOS/UEFI firmware on select x86/ARM
@ -25,8 +25,7 @@ same way that *Debian* is a Linux distro. Similar projects now exist, today,
inspired by Libreboot's example. Coreboot is notoriously difficult to configure and install
for most non-technical users, but Libreboot and Canoeboot make it easier.
How does Canoeboot compare to Libreboot?
-------------------
### How does Canoeboot compare to Libreboot?
More specifically, Canoeboot is a *fork* of Libreboot, maintained in parallel
as per each Libreboot release; Canoeboot maintains
@ -105,8 +104,7 @@ at all times, usually making releases on the exact same day. When a
Libreboot release comes out, Canoeboot usually also does a corresponding
release on the same day, or the day after.
Who?
------
### Who?
Canoeboot is maintained by the same founder, Leah Rowe, who is the founder and
lead developer of both the Libreboot project *and* the Canoeboot project.
@ -116,8 +114,7 @@ a handful of mainboards from coreboot, and sometimes
several [mitigations](https://browse.libreboot.org/lbmk.git/plain/resources/coreboot/default/patches/0012-fix-speedstep-on-x200-t400-Revert-cpu-intel-model_10.patch?id=9938fa14b1bf54db37c0c18bdfec051cae41448e)
may be required to stabilise certain functionalities under these conditions.
Release schedule
--------------
### Release schedule
The Canoeboot schedule is: whenever a Libreboot release is ready, produce a
new Canoeboot release based on it, when there are enough changes to warrant a
@ -128,8 +125,7 @@ of Libreboot. Development is done mainly on Libreboot, and ported over to
Canoeboot periodically; any work that isn't suitable for Canoeboot (such as
scripts for handling binary blobs) are *not* ported over to Canoeboot.
How releases are engineered
-----------------
### How releases are engineered
It's actually very simple. Here is the method by which Canoeboot releases are
created:

View File

@ -4,13 +4,13 @@ x-toc-enable: true
...
User support
============
------------
IRC oder Reddit werden bevorzugt, sofern Du eine Support Anfrage hast (IRC empfohlen).
Für Informationen bzgl. IRC and Reddit siehe unten.
Entwicklungs Diskussion
======================
---------------------
Eine Mailing Liste ist für die Zukunft in Planung. Bis dahin, siehe unter
[der Git Seite](git.md) für Informationen wie Du dich an der Entwicklung beteiligen kannst.
@ -18,7 +18,7 @@ Eine Mailing Liste ist für die Zukunft in Planung. Bis dahin, siehe unter
Hier finden sich ebenso Anleitungen zum Senden von Patches (via Pull-Requests).
IRC Chatraum
============
-------------
IRC ist hauptsächlich der Weg um Kontakt Canoeboot Projekt aufzunehmen. `#canoeboot` auf Libera
IRC.
@ -49,12 +49,11 @@ Website erläutern wie dies funktioniert:
Grundsätzlich solltest Du die Dokumentation der von Dir verwendeten IRC Software konsultieren.
Soziale Medien
============
-----------------
Canoeboot existiert offiziell an vielen Orten.
Mastodon
--------
### Mastodon
Gründerin und Haupt-Entwicklerin, Leah Rowe, ist auf Mastodon:
@ -63,8 +62,7 @@ Gründerin und Haupt-Entwicklerin, Leah Rowe, ist auf Mastodon:
Leah kann zudem unter dieser eMail kontaktiert werden:
[leah@libreboot.org](mailto:leah@libreboot.org)
Reddit
------
### Reddit
Hauptsächlich verwendet als Support Kanal und für Veröffentlichung von Neuigkeiten:
<https://www.reddit.com/r/canoeboot/>

View File

@ -4,19 +4,19 @@ x-toc-enable: true
...
Supporto utenti
===============
---------------
IRC o Reddit sono consigliati, sebbene preferiamo che usi il canale IRC
per avere o per offrire supporto tecnico. Continua a leggere per avere
ulteriori informazioni.
Mailing list
============
------------
No mailing lists at present.
Discussione sullo sviluppo
==========================
--------------------------
Per ora dai un occhiata sulla
[pagina Git](git.md) per avere maggiori informazioni su come puoi
@ -26,7 +26,7 @@ Su quella stessa pagina puoi trovare informazioni su come inviare
correzioni (patches) tramite pull requests.
Canale IRC
==========
----------
IRC e' il modo principale per contattare chi collabora con il progetto Canoeboot.
Il canale ufficiale e' `#canoeboot` su Libera IRC.
@ -56,19 +56,22 @@ di Libera spiegano come:
Comunque dovresti sempre controllare la documentazione del tuo client IRC preferito.
Reti sociali online
===================
-------------------
Canoeboot esiste ufficialmente in molte piattaforme.
Mastodon
--------
### Mastodon
Il fondatore e sviluppatore principale, Leah Rowe, e' su Mastodon:
* <https://mas.to/@libreleah>
Posta elettronica
-----------------
### Posta elettronica
Leah puo' essere contattata anche via email a questo indirizzo:
[leah@libreboot.org](mailto:leah@libreboot.org)
### Reddit
Usato principalmente come canale di supporto e per annunciare notizie:
<https://www.reddit.com/r/canoeboot/>

View File

@ -3,16 +3,14 @@ title: Contact
x-toc-enable: true
...
**TODO: mailing lists, mastodon server and peertube account.**
User support
============
-------------
IRC or Reddit are recommended, if you wish to ask for support (IRC recommended).
See below for information about IRC and Reddit.
Development discussion
======================
--------------------
Mailing lists are planned for the future. For now, see notes
on [the Git page](git.md) for information about how to assist with development.
@ -20,7 +18,7 @@ on [the Git page](git.md) for information about how to assist with development.
Instructions are also on that page for sending patches (via pull requests).
IRC chatroom
============
-------------
IRC is the main way to contact the Canoeboot project. `#canoeboot` on Libera
IRC.
@ -51,12 +49,11 @@ website tells you how:
In general, you should check the documentation provided by your IRC software.
Social media
============
-------------
Canoeboot exists officially on many places.
Mastodon
--------
### Mastodon
The founder and lead developer, Leah Rowe, is on Mastodon:
@ -65,8 +62,7 @@ The founder and lead developer, Leah Rowe, is on Mastodon:
Leah can also be contacted by this email address:
[leah@libreboot.org](mailto:leah@libreboot.org)
Reddit
------
### Reddit
Mostly used as a support channel, and also for news announcements:
<https://www.reddit.com/r/canoeboot/>

View File

@ -3,16 +3,14 @@ title: Зв'язок
x-toc-enable: true
...
**TODO: списки розсилки, сервер mastodon та обліковий запис peertube.**
Підтримка користувачів
============
----------------------
IRC або Reddit рекомендовані, якщо ви бажаєте попросити про допомогу (найкраще IRC).
Дивіться інформацію нижче щодо IRC та Reddit.
Обговорення розробки
======================
--------------------
Списки розсилки плануються на майбутнє. Зараз, подивіться нотатки
на [сторінці Git](git.md) для інформації щодо допомоги з розробкою.
@ -20,7 +18,7 @@ IRC або Reddit рекомендовані, якщо ви бажаєте по
На цій сторінці також знаходяться інструкції по відправці патчів (через pull request'и).
Кімната IRC
============
-----------
IRC це головний спосіб зв'язку з проектом Canoeboot. `#canoeboot` на Libera
IRC.
@ -51,12 +49,11 @@ Libera є однією з найбільших мереж IRC, використ
Взагалі, вам варто перевірити документацію, яка передбачена вашою програмою IRC.
Соціальні мережі
============
----------------
Canoeboot офіційно існує в багатьох місцях.
Mastodon
--------------------
### Mastodon
Засновник та головний розробник, Лія Роу, є в Mastodon:
@ -65,8 +62,7 @@ Mastodon
Також можливо зв'язатися з Лією за ії електронною адресою:
[leah@libreboot.org](mailto:leah@libreboot.org)
Reddit
------
### Reddit
Найбільше використовується як канал підтримки, та також для оголошення новин:
<https://www.reddit.com/r/canoeboot/>

View File

@ -9,4 +9,3 @@ and lead developer for *both* projects; Leah maintains both
Canoeboot *and* Libreboot.
If you have a patch, or beef, talk to Leah.

View File

@ -1,26 +1,120 @@
---
title: BSD operating systems
title: Install a BSD operating system on Canoeboot
x-toc-enable: true
...
Guide last updated on 16 November 2022.
It is assumed here that you are using the *SeaBIOS* payload, *not* the GRUB
payload; the U-Boot payload may also work, but that is not covered here. The
SeaBIOS payload must ideally run in text mode (`txtmode` images from Canoeboot
releases).
NOTE: This guide pertains to x86 hosts, and does not cover supported CrOS/ARM
chromebooks. For ARM targets, you should refer to u-boot documentation.
This guide pertains to x86 hosts, and does not cover supported CrOS/ARM
chromebooks. For ARM targets, you should refer to [u-boot
documentation](../uboot/) - and [U-Boot x86](../uboot/uboot-x86.md) is also
available. The U-Boot x86 payload is interesting, because it can in fact boot
OpenBSD via UEFI method (U-Boot provides a lightweight UEFI implementation
independently of, say, EDK2).
Canoeboot is capable of booting many BSD systems. This section mostly documents
the peculiarities of Canoeboot as it pertains to BSD; you can otherwise refer to
the official documentation for whatever BSD system you would like to use.
What is BSD?
------------
Kernel Mode Setting
===================
In our context, we are referring to those descendents of 4.4BSD-Lite starting
in the early 1990s. On balance, they are about equal to Linux in many ways,
and some would argue that they are *better* (higher code quality). It can be
said that the BSDs are the closest we have to *true* open source Unix systems,
since they ultimately descend from that code lineage. For example, the
FreeBSD project briefly covers its own history in the Hand Book:
<https://docs.freebsd.org/en/books/handbook/introduction/#history>
Chief among them are:
* [FreeBSD](https://www.freebsd.org/) (HardenedBSD probably also works)
* [NetBSD](https://netbsd.org/)
* [OpenBSD](https://www.openbsd.org/)
* [DragonFlyBSD](https://www.dragonflybsd.org/) (UNTESTED)
**TODO: DragonFlyBSD is untested, as of January 2025. It ought to be tested.**
Many other BSD systems exist, that are largely derived from these.
Why use BSD (instead of Linux)?
-------------------------------
BSD operating systems are in wide use today, powering much of the world's
most critical infrastructure, and they're quite competent laptop/desktop or
workstation systems. Some of them have unique features that you can't find
anywhere else (e.g. FreeBSD jails, OpenBSD's numerous security enhancements,
NetBSD's rump kernel design and clean code quality).
BSD systems are superfically similar to Linux systems, but they are very
different under the hood (different kernel designs, different userspace
implementations, and so on). However, almost all of the Linux userspace programs
that you enjoy using are probably available in the various BSD *ports trees*,
or they can be compiled with little to no modification. This is because, despite
the actual differences under the hood, the BSDs and various Linux distros all
adhere to the same basic standards (e.g. Single Unix Specification).
If you want to enjoy using a high quality operating system, with many unique
features, BSD systems can be quite fun to use, and quite challenging. They tend
to have a much more conservative take on implementations, compared to Linux
distros, instead opting for technical correctness and minimalism; this is a
good thing, because lots of Linux distros these days are extremely bloated.
Using a BSD system feels like Linux did in the year 2005, just with much better
hardware support, and that's a *good thing*; the reason why is that BSD systems
simply have fewer users, and a higher concentration of *technical* users, and
this *shows* when you use it. Linux is *much* more mass market and has to cater
to all sorts of people, and these days Linux distros have to *Just Work*.
You can look at the documentation of each BSD system and try each one out, to
see which one is right for you. Be warned, BSD systems *are* typically harder
to use than Linux systems. Even the most seasoned Linux user will often have a
hard time with any BSD, if it's their first time using a BSD system. This is
mitigated by excellent documentation, which is one of the things that the BSDs
excel at, but you are expected to *read* the documentation; many Linux distros
try to hold your hand ("it Just Works"), but the BSDs generally don't do that.
If you're already a power user on Linux, and comfortable with the more hands-on
distros like Arch Linux or Gentoo Linux, you'll have a much easier time
learning a BSD. FreeBSD for example comes completely barebones by default, and
you add packages to it, configuring it to your liking, much like Arch Linux; if
you're wily enough, you might also use the CURRENT tree and install all packages
by building them from *ports* (akin to how Gentoo Linux is used).
BSD systems also have much more relaxed licensing than Linux systems, by and
large; most of the software in the base system, on any BSD project, will use
a permissive license instead of copyleft. They can be regarded as Free Software,
but it's a very different ideology than, say, GNU. Some might argue that this
is better, because licensing conflicts are common among copyleft licenses, even
among different versions of the GPL. A BSD-style license permits *anyone* to
use the code, *without* requiring modified versions to ship source code, so it
can be said that the BSD license model contains [far fewer
restrictions](https://docs.freebsd.org/en/articles/bsdl-gpl/). One might say
that the BSD systems are *more free* than GNU/Linux systems.
Basically, your choice to use BSD will likely be based on a combination of
technical and/or ideological preferences. But don't say we didn't warn you.
BSD is hard. On the flip side of that coin, BSD is *easy*, because it forces
you to really learn how your system works; when you become proficient with
BSD, you'll learn everything else much easier, and you may find yourself doing
things more efficiently *in Linux* as well!
That's enough BSD fanaticism. Please read the following sections, *before*
you embark on your BSD Canoeboot journey:
Common issues with BSD+Canoeboot
--------------------------------
This page will not tell you how to install BSD systems; that is best left to
the documentation for your BSD system. Instead, these next sections cover only
the idiosyncrasies of Canoeboot as they relate to BSD:
### Kernel Mode Setting
Your BSD system *must* support Kernel Mode Setting for your graphics
device (most of them do nowadays). The reasons will become apparent, as
you read this article.
Boot BSD, using SeaBIOS
=======================
### Boot BSD, using SeaBIOS
On x86 platforms, Canoeboot provides the choice of GRUB and/or
SeaBIOS payload. GRUB can technically boot BSD kernels, but the code is
@ -37,8 +131,18 @@ If you don't plan to set up Xorg/Wayland, then that's all you really need to
do. For example, you might want to run a headless server, in which case you
probably don't mind running in text mode all the time.
OpenBSD and corebootfb
----------------------
#### GRUB payload
GRUB *can* directly boot many BSD systems, but this is ill advisable. You are
advised to use either SeaBIOS, and boot a BIOS-based BSD bootloader, or use
Canoeboot's [U-Boot payload](../uboot/) and use it to boot via UEFI; U-Boot's
bootflow menu can achieve this.
The U-Boot coreboot payload is still experimental, on ARM64 *and* x86/x86\_64,
so you should probably use SeaBIOS for now (on x86). U-Boot is the *only*
coreboot payload for Canoeboot on ARM64 motherboards.
### OpenBSD and corebootfb
It's still recommended to use SeaBIOS in text mode, but OpenBSD specifically
can work with SeaBIOS booting in a coreboot framebuffer, with SeaVGABIOS. In
@ -46,19 +150,22 @@ Canoeboot ROM images, this would be SeaBIOS images with `corebootfb` in the
file name.
Make sure to select MBR-style partitioning on the installer, and it will
Just Work.
Just Work. **GPT partitioning won't work in OpenBSD, if you use the SeaBIOS
payload, but will work if you boot/install it via UEFI boot method with
Canoeboot's [U-Boot UEFI payload](../uboot/uboot-x86.md) instead.**
If you're using the GRUB payload but SeaBIOS is available in the boot menu,
you can just select SeaBIOS at said menu, and OpenBSD will work fine.
FreeBSD and corebootfb
----------------------
### FreeBSD and corebootfb
Assumed broken, so please ensure that you boot with SeaBIOS payload in text
mode (cbmk ROM images with `txtmode` in the file name, not `corebootfb`).
Warnings for X11 users
----------------------
Please boot in *text mode*. FreeBSD can be configured to use KMS, if you need
Xorg or wayland.
### Warnings for X11 users
One important peculiarity of most Canoeboot systems is: VGA mode
support exists, if booting with corebootfb (coreboot's own framebuffer) and
@ -169,3 +276,36 @@ extremely expensive computationally speaking. This is why modern kernels
You can learn more about INT10H text/VGA modes here:
<https://en.wikipedia.org/wiki/INT_10H>
If you use the *U-Boot* payload, INT10H is irrelevant because you will rely on
an EFI framebuffer instead, which U-Boot does provide (piggybacking off of the
coreboot framebuffer where one is available).
Regardless of whether you have an EFI framebuffer or INT10H VGA interrupts,
the various BSD systems all support KMS so you should be able to use Xorg or
Wayland just fine.
ALWAYS READ THE MANUAL
----------------------
All of the BSDs have *excellent* documentation; it's one of the defining
characteristics, versus typical Linux distros. This is precisely *because*
the BSDs develop everything in-house, so the various components of a BSD
system are much more heavily integrated, and this means that they can provide
much more reliable documentation; reliable from both the user's perspective
and from the perspective of technical correctness.
Aside from these and other quirks when installing BSD *on Canoeboot*, the BSDs
otherwise work in exactly the same way as you would expect, and you can
follow along to their official documentation without much fuss.
No specific or detailed guides will be provided here, because SeaBIOS is
fairly self-explanatory; you can otherwise refer to the SeaBIOS
documentation.
DO NOT USE ROM IMAGES WITH `seabios_grubfirst` IN THE FILE NAME! These were
present in older Canoeboot releases, and supported in previous revisions
of the build system, but they did not work for the intended purpose. More
info is written on the [Canoeboot installation guide](../install/). ROM
images with `seabios_grubfirst` in the filename will NOT be included in
future Canoeboot releases.

View File

@ -1,19 +1,12 @@
---
title: Build from source
title: Compile Canoeboot from source
x-toc-enable: true
...
WARNING: eCryptfs file name limits
=================================
If you need to build Canoeboot from source, this guide is for you.
Do not run the build system on a eCryptfs file system, because it has
very short file name limits and Canoeboot's build system deals with very
long file names. We commonly get reports from this by Linux Mint users
who encrypt their home directory with eCryptfs; regular LUKS encryption will
do nicely.
Introduction
============
Open source BIOS/UEFI firmware
------------
Canoeboot's build system is named `cbmk`, short for `CanoeBoot MaKe`, and this
document describes how to use it. With this guide, you can know how to compile
@ -22,8 +15,16 @@ canoeboot from the available source code.
The following document describes how `cbmk` works, and how you can make changes
to it: [canoeboot maintenance manual](../maintain/)
### WARNING: eCryptfs file name limits
Do not run the build system on a eCryptfs file system, because it has
very short file name limits and Canoeboot's build system deals with very
long file names. We commonly get reports from this by Linux Mint users
who encrypt their home directory with eCryptfs; regular LUKS encryption will
do nicely.
System requirements
===================
-------------------
You must ensure that you have the correct operating system, CPU, RAM, disk space
and so on.
@ -32,7 +33,7 @@ System requirements are documented in
the [cbmk maintenance manual](../maintain/#system-requirements).
Multi-threaded builds
=====================
---------------------
Canoeboot's build system defaults to a single build thread, but you can change
it by doing e.g.
@ -46,7 +47,7 @@ is passed, where THREADS is the number of threads. This is also set when running
xz commands for compression, using the `-t` option.
Environmental variables
=======================
-----------------------
Please read about environmental variables in [the build
instructions](../maintain/), before running cbmk. You should set
@ -54,14 +55,14 @@ your variables accordingly, though you do not technically need to; some
of them may be useful, e.g. `XBMK_THREADS` (sets the number of build threads).
Sources
=======
-------
This version, if hosted live on canoeboot.org, assumes that you are using
the `cbmk` git repository, which
you can download using the instructions on [the code review page](../../git.md).
Git
===
---
Canoeboot's build system uses Git, extensively. You should perform the steps
below, *even if you're using a release archive*.
@ -81,21 +82,18 @@ You may also want to follow more of the steps here:
<https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup>
How to compile Canoeboot
========================
Actual development/testing is always done using cbmk directly, and this
includes when building from source. Here are some instructions to get you
started:
Zero..st, check time/date
-------------------------
### Zero..st, check time/date
Make sure date/hwclock report the correct time and date on your system,
because parts of the build process download from HTTPS servers and wrong
time or date can cause connections to be dropped during negotiation.
First, install build dependencies
---------------------------------
### First, install build dependencies
Check `config/dependencies/` for list of supported distros.
@ -131,8 +129,7 @@ Technically, any Linux distribution can be used to build canoeboot.
However, you will have to write your own script for installing build
dependencies.
Debian Trixie/Sid
-----------------
### Debian Trixie/Sid
Debian Trixie, the testing release as of 3 January 2025, and Debian Sid,
provide `gnat` and `gcc` as you expect, but `gnat` resolves to `gnat-13` and
@ -169,8 +166,7 @@ When we tested with this configuration, the KGPE-D16 images also compiled.
NOTE: Ubuntu 24.10 also has the issue described above. Some other distros may
also have it, if they're based on Debian Testing/Sid or Ubuntu 24.10.
MIPS cross compiler
-------------------
### MIPS cross compiler
Canoeboot has support for the Sony PlayStation (PS1/PSX), based on
the PCSX-Redux Open BIOS. If you're doing a full release build, and/or
@ -185,8 +181,7 @@ If your distro doesn't have the MIPS compiler available,
the [PlayStation](../install/playstation.md) page provides instructions for
manual installation; please do this in addition to the normal dependencies.
Next, build ROM images
----------------------
### Next, build ROM images
Canoeboot MaKe (cbmk) automatically runs all necessary commands; for
example, `./mk -b coreboot` will automatically build the required payloads
@ -205,8 +200,7 @@ or get a list of supported build targets:
./mk -b coreboot list
Or maybe just build payloads?
-----------------------------
### Or maybe just build payloads?
If you wish to build payloads, you can also do that. For example:
@ -232,8 +226,8 @@ example want to modify a config, e.g.:
Or perhaps add a new board! The maintenance manual will teach you how the
Canoeboot build system (cbmk) works!
Post-compilation steps
======================
A note about documentation (and this page)
-------------------------------
So you compiled your Canoeboot image? Congratulations!

View File

@ -7,17 +7,8 @@ x-toc-enable: true
still in English, and there may be some differences aside from translation,
versus the English version.**
WARNING: eCryptfs file name limits
=================================
Do not run the build system on a eCryptfs file system, because it has
very short file name limits and Canoeboot's build system deals with very
long file names. We commonly get reports from this by Linux Mint users
who encrypt their home directory with eCryptfs; regular LUKS encryption will
do nicely.
Introduction
============
Open source BIOS/UEFI firmware
------------
Система побудови canoeboot, називається `cbmk`, скорочення від `CanoeBoot MaKe`, і цей
документ описує те, як використовувати її. З цим керівництвом ви можете узнати те, як побудувати
@ -34,8 +25,16 @@ canoeboot з доступного джерельного коду.
Наступний документ описує те, як працює `cbmk`, і як ви можете робити зміни
до нього: [керівництво обслуговування canoeboot](../maintain/)
### WARNING: eCryptfs file name limits
Do not run the build system on a eCryptfs file system, because it has
very short file name limits and Canoeboot's build system deals with very
long file names. We commonly get reports from this by Linux Mint users
who encrypt their home directory with eCryptfs; regular LUKS encryption will
do nicely.
System requirements
===================
-------------------
You must ensure that you have the correct operating system, CPU, RAM, disk space
and so on.
@ -44,7 +43,7 @@ System requirements are documented in
the [cbmk maintenance manual](../maintain/#system-requirements).
Multi-threaded builds
=====================
---------------------
Canoeboot's build system defaults to a single build thread, but you can change
it by doing e.g.
@ -58,15 +57,15 @@ is passed, where THREADS is the number of threads. This is also set when running
xz commands for compression, using the `-t` option.
Environmental variables
=======================
-----------------------
Please read about environmental variables in [the build
instructions](../maintain/), before running cbmk. You should set
your variables accordingly, though you do not technically need to; some
of them may be useful, e.g. `XBMK_THREADS` (sets the number of build threads).
Introduction
============
Environmental variables
-----------------------
Please read about environmental variables in [the build
instructions](../maintain/), before running cbmk. You should set
@ -74,7 +73,7 @@ your variables accordingly, though you do not technically need to; some
of them may be useful, e.g. `XBMK_THREADS` (sets the number of build threads).
Git
===
---
Система побудови Canoeboot використовує Git, обширно. Ви маєте виконати кроки
знизу, *навіть, якщо ви використовуєте архів випуску*.
@ -94,17 +93,15 @@ Git
<https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup>
Build
=====
-----
Zero..st, check time/date
-------------------------
### Zero..st, check time/date
Make sure date/hwclock report the correct time and date on your system,
because parts of the build process download from HTTPS servers and wrong
time or date can cause connections to be dropped during negotiation.
Побудова з джерельного коду
============================
### Побудова з джерельного коду
Фактична розробка/тестування завжди виконується безпосередньо за допомогою `cbmk`, і це також
стосується збирання з джерельного коду. Ось кілька інструкцій, щоб
@ -129,8 +126,7 @@ Check: `config/dependencies/` for list of supported distros.
Однак, вам потрібно буде написано свій власний сценарій для встановлення залежностей
побудови.
Debian Trixie/Sid
-----------------
### Debian Trixie/Sid
Debian Trixie, the testing release as of 3 January 2025, and Debian Sid,
provide `gnat` and `gcc` as you expect, but `gnat` resolves to `gnat-13` and
@ -167,8 +163,7 @@ When we tested with this configuration, the KGPE-D16 images also compiled.
NOTE: Ubuntu 24.10 also has the issue described above. Some other distros may
also have it, if they're based on Debian Testing/Sid or Ubuntu 24.10.
MIPS cross compiler
-------------------
### MIPS cross compiler
Canoeboot has support for the Sony PlayStation (PS1/PSX), based on
the PCSX-Redux Open BIOS. If you're doing a full release build, and/or
@ -183,8 +178,7 @@ If your distro doesn't have the MIPS compiler available,
the [PlayStation](../install/playstation.md) page provides instructions for
manual installation; please do this in addition to the normal dependencies.
Next, build ROM images
----------------------
### Next, build ROM images
В якості результату, ви тепер можете (після встановлення правильних залежностей побудови) виконати
лише одну команду, з свіжого Git clone, для побудови образів ROM:

View File

@ -8,17 +8,19 @@ documentation, but there are aspects of Canoeboot that deserve special
treatment. Canoeboot provides the option to boot GRUB directly, running on
bare metal (instead of using BIOS or UEFI services).
[The Linux section](../linux/) also has canoeboot-specific guides for
Boot Linux from GRUB
--------------------
[The Linux section](../linux/) also has Canoeboot-specific guides for
dealing with Linux distributions when using GRUB directly, in this
setup. [A similar section exists for BSD operating systems](../bsd/)
GRUB keyboard layouts
=====================
---------------------
It is possible to use *any* keymap in GRUB.
Custom keyboard layout
----------------------
### Custom keyboard layout
Keymaps are stored in `config/grub/keymap/`
@ -30,7 +32,7 @@ files:
When you build GRUB from source, you can use the `grub-mklayout` program to
create a special keymap file for GRUB. [Learn how to build GRUB](../build/)
To compile GRUB, in lbmk, do this:
To compile GRUB, in cbmk, do this:
./mk -b grub default

View File

@ -1,5 +1,5 @@
---
title: Documentation
title: Canoeboot documentation
...
Always check the Canoeboot website for the latest updates to
@ -8,22 +8,24 @@ the [main news section](../news/).
[Answers to Frequently Asked Questions about Canoeboot](../faq.md).
What is Canoeboot? An article is available for that; please read the
article titled [What is Canoeboot?](../about.md).
Need help?
----------
Help is available on [Canoeboot IRC](../contact.md) and other channels.
Installing Canoeboot
====================
--------------------
- [How to install Canoeboot](install/)
Documentation related to operating systems
============================
Installing operating systems
----------------------------
- [How to install BSD operating systems](bsd/)
- [How to install Linux](linux/)
Information for developers
==========================
--------------------------
- [How to compile the Canoeboot source code](build/)
- [Build system developer documentation](maintain/)
@ -31,7 +33,7 @@ Information for developers
- [U-Boot payload](uboot/)
Other information
=================
-----------------
- [Miscellaneous](misc/)
- [List of codenames](misc/codenames.md)

View File

@ -8,22 +8,23 @@ Canoeboot. Новини, включаючи оголошення про випу
[Відповіді на поширені запитання про Canoeboot](../faq.md).
What is Canoeboot? An article is available for that; please read the
article titled [What is Canoeboot?](../about.md).
Need help?
----------
Help is available on [Canoeboot IRC](../contact.md) and other channels.
Встановлення Canoeboot
====================
- [Як встановити Canoeboot](install/)
Документація, яка має відношення до операційних систем
============================
-----------------------------------------------------
- [Як встановити BSD на x86 хостову систему](bsd/)
- [Керівництва Linux](linux/)
Інформація для розробників
==========================
--------------------------
- [Як зібрати джерельний код Canoeboot](build/)
- [Документація розробника системи побудови](maintain/)
@ -31,7 +32,7 @@ article titled [What is Canoeboot?](../about.md).
- [Корисне навантаження U-Boot](uboot/)
Інша інформація
=================
---------------
- [Різне](misc/)
- [Список кодових назв](misc/codenames.md)

View File

@ -2,26 +2,31 @@
title: 文档
...
canoeboot 的最新更新,可以在 [canoeboot.org](https://canoeboot.org) 上找到。新闻,包括新版发布公告,可以在[新闻主页](../news/)中找到。
Canoeboot 的最新更新,可以在 [canoeboot.org](https://canoeboot.org) 上找到。新闻,包括新版发布公告,可以在[新闻主页](../news/)中找到。
[canoeboot 常见问题解答](../faq.md).
[Canoeboot 常见问题解答](../faq.md).
What is Canoeboot? An article is available for that; please read the
article titled [What is Canoeboot?](../about.md).
安装 canoeboot
====================
Need help?
----------
Help is available on [Canoeboot IRC](../contact.md) and other channels.
安装 Canoeboot
--------------
- [如何安装 Canoeboot](install/)
操作系统相关文档
============================
----------------
- [如何在 x86 机器上安装 BSD](bsd/)
- [Linux 指南](linux/)
开发者信息
==========================
----------
- [如何编译 canoeboot 源代码](build/)
- [构建系统开发者文档](maintain/)
@ -29,7 +34,7 @@ article titled [What is Canoeboot?](../about.md).
- [U-Boot payload](uboot/)
其它信息
=================
--------
- [杂项](misc/)
- [代号列表](misc/codenames.md)

View File

@ -1,8 +1,15 @@
---
title: ASUS Chromebook C201 installation guide
title: Install Canoeboot ASUS Chromebook C201
x-toc-enable: true
...
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on your
ASUS Chromebook C201 motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware.
WARNING: This board is known to have non-functioning video init at the time
of writing, 19 February 2023. It is as yet unsolved.
@ -10,14 +17,13 @@ See: <https://notabug.org/libreboot/lbmk/issues/136> (NOTE: Libreboot issue page
not Canoeboot)
Introduction
===========
------------
This page contains information about assembly and disassembly, for flashing
the ASUS Chromebook C201 externally. It will also link to internal flashing
instructions, and information about U-Boot.
Flashrom
--------
### Flashrom
A special fork of flashrom, maintained by Google, is required for flashing.
More information about this is present in the generic [chromebook flashing
@ -27,8 +33,7 @@ NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog
now, as of 3 May 2024, which is a fork of flashrom, but the chromium fork
is another fork of flashrom, and you should use that on chromebooks.
Depthcharge payload (obsolete)
------------------------------
### Depthcharge payload (obsolete)
This board was also supported in Libreboot 20160907, with the Depthcharge
payload. Support was dropped in later releases, and then re-added in the
@ -41,7 +46,7 @@ instructions pertaining to Depthcharge:
* <https://notabug.org/libreboot/lbwww/src/4be2eed23e11b1071cd500a329abf654ab25f942/site/docs/hardware/c201.md>
U-boot payload
==============
--------------
U-Boot was ported to coreboot CrOS devices, courtesy of Alper Nebi
Yasak on behalf of the Libreboot project, upon which Canoeboot is based.
@ -51,7 +56,7 @@ Read the section pertaining to U-boot payload:
[u-boot payload documentation for Canoeboot](../uboot/)
Internal flashing
=================
------------------
External flashing is possible, but only necessary in the event of a *brick*.
If you're flashing good firmware, and the machine boots properly, you can
@ -63,8 +68,7 @@ the information has moved.
See: [chromebook flashing instructions](chromebooks.md)
Write-protect screw
-------------------
### Write-protect screw
The chromebook flashing instructions, linked above, refer to a *screw* that
can be turned, to disable flash protection. This is necessary, for internally
@ -87,7 +91,7 @@ The write protect screw can be put back in place later, when the device
is known to be in a working state.
External flashing
=================
-----------------
If the machine is no longer booting, due to bad firmware, you can unbrick
it externally. Refer to [external flash instructions](spi.md).

View File

@ -1,14 +1,30 @@
---
title: Chromebook flashing instructions
title: Install Canoeboot on a Chromebook
x-toc-enable: true
...
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on various ARM64-based
Chromebook laptops. Canoeboot replaces proprietary BIOS/UEFI firmware, though
it should be noted that Google already ships coreboot and their own payload
called Depthcharge, which is all free software; the difference with Canoeboot
is that it replaces Depthcharge with *U-Boot* (as a coreboot payload), which
provides a lightweight UEFI boot implementation that can boot regular Linux and
BSD systems more easily than Depthcharge.
NOTE: daisy, peach and veyron boards were temporarily removed from
cbmk. They should be re-added to Canoeboot at a later date. The reasons
are written on the hardware compatibility page. For now, Canoeboot only
officially supports the `nyan` and `gru` chromebooks.
This page attempts to give a brief, general overview of how to flash
custom firmware on ChromeOS devices. This guide usually refers to all of
them as "Chromebook"s since it's the most common form factor.
Flashrom
========
--------
A special fork of flashrom, maintained by Google, is required for flashing
these Chromebook devices. See:
@ -18,7 +34,7 @@ these Chromebook devices. See:
You must then compile this from source, and run it.
Enable ChromeOS "Developer Mode"
================================
--------------------------------
Chromebooks are locked-down by default to only run ChromeOS. Most things
you will want to do on these require you unlock it by enabling their
@ -39,7 +55,7 @@ where you can run programs. Most of the root file system is read-only,
except for `/usr/local` and any mounted drives under `/media/removable`.
Identify your device
====================
--------------------
It's more common to refer to ChromeOS boards by their codenames, and
many compatible devices can share a single codename. Canoeboot ROM
@ -51,7 +67,7 @@ device's. There are a number of ways to find it, some are:
- Run `crossystem hwid` or `crossystem fwid` in a terminal
Back up stock firmware
======================
----------------------
The stock firmware on your device comes with some irreplaceable data
that is unique to your device. This can include the serial number and
@ -73,7 +89,7 @@ If you can already boot a conventional Linux distro on your Chromebook,
you may be able to use `flashrom -p linux_mtd` on that system instead.
Check external flashability
===========================
---------------------------
If a ROM image you flash is broken, you may need to restore the stock
firmware to fix the board to get internal flashing working. Refer to the
@ -88,7 +104,7 @@ mechanism that lets you flash externally using a special USB debugging
cable. However, most boards that Canoeboot supports do not have this.
Disable write protection
========================
------------------------
Chromebooks have the SPI flash chip partially write-protected by
default, but thankfully this protection can be disabled by the device
@ -123,7 +139,7 @@ compile and use that flashrom fork to disable write-protection. There is
no `cbmk` support yet for automatically building it.
Prepare the ROM image
=====================
---------------------
Canoeboot ROM image layouts are currently incompatible with the regions
that should be carried over from the stock firmware. However, the
@ -138,7 +154,7 @@ keep backups of the original firmware.
TODO: Instructions to preserve vital data when FMAPs are compatible.
Flash the ROM image
===================
-------------------
WARNING: Although none are supported yet, make sure not to flash ROM
images on x86 Chromebooks without injecting non-redistributable blobs
@ -158,7 +174,7 @@ If you can already boot a conventional Linux distro on your Chromebook,
you may be able to use `flashrom -p linux_mtd` on that system instead.
Install an operating system (experimental research)
===========================
------------------------------------------------
In general, ARM-compatible distros targeting U-boot can be used. There are
three general methods for installing that vary depending on the distribution:
@ -168,25 +184,22 @@ three general methods for installing that vary depending on the distribution:
3. extlinux.conf - a newer flat, bootloader-spec text file that typically lives
in /boot/extlinux/extlinux.conf
Successful installations:
-------------------------
### Successful installations:
* [ArchLinuxARM on RK3399-based Chromebooks](../uboot/uboot-archlinux.md).
* [Debian Bookworm on Samsung Chromebook Plus XE513C24](../uboot/uboot-debian-bookworm.md).
* [Debian on Asus Chromebook C201](https://wiki.debian.org/InstallingDebianOn/Asus/C201).
Unsuccessful installations:
---------------------------
### Unsuccessful installations:
* [OpenBSD on Samsung Chromebook Plus XE513C24](../uboot/uboot-openbsd.md).
Other promising ARM-compatible distros:
---------------------------------------
### Other promising ARM-compatible distros:
* [Armbian](https://www.armbian.com/uefi-arm64/).
See also
========
--------
* [ChromiumOS Documentation](https://chromium.googlesource.com/chromiumos/docs/+/HEAD/)
* [ChromiumOS Firmware Test Manual](https://chromium.googlesource.com/chromiumos/docs/+/HEAD/firmware_test_manual.md)

View File

@ -1,5 +1,5 @@
---
title: Intel D945GCLF desktop board
title: Install Canoeboot on Intel D945GCLF and/or D945GCLF2
x-toc-enable: true
...
@ -21,7 +21,7 @@ motherboard while they still have the original BIOS present.
| **Graphics** | ? |
| **Display** | None. |
| **Memory** | Up to 2GB |
| **Architecture** | x86_64 |
| **Architecture** | x86\_64 |
| **Original boot firmware** | Intel BIOS |
| **Intel ME/AMD PSP** | Not present. |
| **Flash chip** | SOIC-8 512KiB |
@ -50,13 +50,21 @@ P*: Partially works with vendor firmware
| **SeaBIOS** | Works |
| **SeaBIOS with GRUB** | Doesn't work |
</div>
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on your
Intel D945GCLF and/or D945GCLF2 desktop motherboard. Canoeboot replaces
proprietary BIOS/UEFI firmware.
If you just want flashing instructions, go to
[../install/d945gclf.md](../install/d945gclf.md)
D945GCLF2D also reported working by a user.
Introduction
============
------------
This board is a mini-itx desktop board for 2008. It uses an atom 230,
which is a singe core CPU but it is hyperthreaded so it appears to have
@ -79,8 +87,7 @@ hyperthreaded). Since the board is almost identical (and coreboot code
seem to indicate that it works, since MAX\_CPU=4 is set), it is believed
that it should also work but this is untested.
Remarks about vendor bios:
--------------------------
### Remarks about vendor bios:
- Without Canoeboot or Libreboot this board is completely useless, since the
vendor bios is very bad. It cannot boot from any HDD whether it is
@ -99,15 +106,14 @@ And SPI SOIC8 flash chip\
![](https://av.canoeboot.org/d945gclf/20160923_141550.jpg){width="50%" height="50%"}
Flashing instructions {#clip}
=====================
-----------------------------
Refer to [spi.md](spi.md) for how to re-flash externally.
Here is an image of the flash chip:\
![](https://av.canoeboot.org/d945gclf/d945gclf_spi.jpg)
How to replace thermal paste and fan
------------------------------------
### How to replace thermal paste and fan
This board comes with very crappy disposable loud fan, that one has no
bearings, which can not be repaired or oiled properly, do not waste your

View File

@ -1,5 +1,5 @@
---
title: Dell OptiPlex 780 MT/USFF
title: Install Canoeboot on Dell OptiPlex 780 MT/USFF
x-toc-enable: true
...
@ -52,14 +52,18 @@ P*: Partially works with vendor firmware
| **SeaBIOS** | Works |
| **SeaBIOS with GRUB** | Works |
</div>
Introduction
============
Open source BIOS/UEFI firmware
-------------------------
This document will teach you how to install Canoeboot, on your
Dell OptiPlex 780 desktop motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware.
Official information about the computer can be found here:
<https://www.dell.com/support/manuals/en-uk/optiplex-7010-plus-small-ff/opti_7010_sff_plus_om/specifications-of-optiplex-small-form-factor-plus-7010?guid=guid-7c9f07ce-626e-44ca-be3a-a1fb036413f9&lang=en-us>
Build ROM image from source
---------------------------
### Build ROM image from source
The build target, when building from source, is thus:
@ -72,25 +76,27 @@ The `_truncate` image is needed if you're flashing Canoeboot internally from
the original Dell firmware. Otherwise, you only need the regular images that
lack `_truncate` in the file name.
100% FREE
=========
Alternatively, you can use release images instead of compiling from source.
### 100% FREE / OPEN SOURCE!
This mainboard is entirely free software in the main boot flash. It is using
the Intel X4X / ICH10 platform, same as on the already supported
Gigabyte GA-G41M-ES2L mainboard.
Installation
============
Install Canoeboot
-----------------
Set MAC address
---------------
These next sections will teach you how to install Canoeboot, on your
Dell OptiPlex 780 motherboard.
### Set MAC address
This platform uses an Intel Flash Descriptor, and defines an Intel GbE NVM
region. As such, release/build ROMs will contain the same MAC address. To
change the MAC address, please read [nvmutil documentation](../install/nvmutil.md).
WARNING about CPU/GPU compatibility
-------------------------------
### WARNING about CPU/GPU compatibility
Coreboot has libre initialisation code for Intel graphics, but libre
initialisation code is not available for most graphics cards. This machine can
@ -99,8 +105,7 @@ used, SeaBIOS executes its VGA ROM which provides video init, instead of
coreboot's native Intel video init. GRUB piggybacks off of what SeaBIOS did,
so the GRUB payload will also work.
Flash a ROM image (software)
-----------------
### Flash a ROM image (software)
**Always make sure to dump a copy of the current flash first. ALSO: [make
sure /dev/mem protection is disabled](devmem.md) for the flashing to work!**
@ -149,8 +154,7 @@ the full image; the one without `_truncate` in the file name uses all of the
flash, with the BIOS region ending at the 8MB limit, so the BIOS region is
therefore 2MB larger on those images.
Flash a ROM image (hardware)
-----------------
### Flash a ROM image (hardware)
For general information, please refer to [25xx NOR flash
instructions](../install/spi.md) - that page refers to use of socketed flash.

View File

@ -12,7 +12,7 @@ access once you no longer need it, as this is a useful security layer against
any wrongful operations that you may later inadvertently run as root.
Also disable SecureBoot
=======================
-----------------------
If you're using a UEFI setup, it's probably because you're using
a latter Intel platform and want to flash Canoeboot internally, from
@ -23,7 +23,7 @@ using the factory firmware, please ensure that *SecureBoot* is disabled,
because it will interfere with lower memory accesses if left enabled.
FLASH ERRORS (and workarounds)
=======================
------------------------------
**NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog)
now, which is a fork of flashrom.**
@ -33,8 +33,7 @@ This section relates to installing Canoeboot on supported targets.
Right out of the gate, some users may experience errors with flashprog when
using the internal programmer. They are:
/dev/mem access error
---------------------
### /dev/mem access error
NOTE: if running `flashprog -p internal` for software based flashing, and you
get an error related to `/dev/mem` access, you should reboot with
@ -46,8 +45,7 @@ is `kernel.securelevel=-1`; see [NetBSD securelevel
manual](https://wiki.netbsd.org/tutorials/kernel_secure_levels/)
and [OpenBSD securelevel manual](https://man.openbsd.org/securelevel).
ERROR: Could not get I/O privileges
------------------------------------
### ERROR: Could not get I/O privileges
Error message: `ERROR: Could not get I/O privileges (Function not implemented)`

View File

@ -1,5 +1,5 @@
---
title: Gigabyte GA-G41M-ES2L desktop board
title: Install Canoeboot on Gigabyte GA-G41M-ES2L
...
<div class="specs">
@ -18,7 +18,7 @@ GA-G41M-ES2L
| **Graphics** | Integrated |
| **Display** | None. |
| **Memory** | Up to 8GB (2x4GB DDR2-800) |
| **Architecture** | x86_64 |
| **Architecture** | x86\_64 |
| **Original boot firmware** | AWARD BIOS |
| **Intel ME/AMD PSP** | Present. Can be disabled |
| **Flash chip** | 2x8Mbit |
@ -48,8 +48,12 @@ P*: Partially works with vendor firmware
| **SeaBIOS with GRUB** | Works |
</div>
Introduction
============
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on your
Gigabyte GA-G41M-ES2L desktop motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware.
This is a desktop board using intel hardware (circa \~2009, ICH7
southbridge, similar performance-wise to the ThinkPad X200. It can make
@ -85,7 +89,7 @@ You can learn more about using the build system, cbmk, here:\
[Canoeboot build instructions](../build/)
RAM
===
---
**This board is very picky with RAM. If it doesn't boot, try an EHCI debug
dongle, serial usb adapter and null modem cable, or spkmodem, to get a
@ -101,7 +105,7 @@ Many other modules will probably work just fine, but raminit is very picky on
this board. Your mileage *will* fluctuate, wildly.
MAC ADDRESS
===========
-----------
NOTE: due to a bug in the hardware, the MAC address is hardcoded in
coreboot. Therefore, you must set your own MAC address in your
@ -112,14 +116,14 @@ distro, to set a valid MAC address. By doing this, your NIC should
work nicely.
Flash chip size {#flashchips}
===============
---------------------
Use this to find out:
flashprog -p internal
Flashing instructions {#clip}
=====================
--------------------------
Refer to [spi.md](spi.md) for how to set up an SPI programmer for
external flashing. *You can only externally reprogram one of the chips

View File

@ -25,7 +25,7 @@ scrapped.
Anyway, ich9utils documentation:
Introduction
============
------------
The `ich9utils` utility from Canoeboot is used to manipulate Intel Flash
Descriptors for ICH9M on laptops such as ThinkPad X200 or T400. Specifically,
@ -73,7 +73,7 @@ More information about the ME can be found at
Another project: <http://io.netgarage.org/me/>
ich9utils
=========
---------
You can find `ich9utils` on the [Libreboot Git page](https://libreboot.org/git.html) or you can download
`lbmk` from the same page at an under revision (around Libreboot 20230625 or
@ -90,7 +90,7 @@ Go in there and type `make` to get the binaries: `ich9deblob`, `ich9gen`
and `ich9show`.
ICH9 show utility {#ich9show}
================
---------------------------
The *ich9show* utility outputs the entire contents of the descriptor and GbE
regions in a given ROM image as supplied by the user. Output is in Markdown
@ -98,7 +98,7 @@ format (Pandoc variant) so that it can be converted easily into various
formats. It could even be piped *directly* into pandoc!
ICH9 gen utility {#ich9gen}
================
---------------------------
When you simply run `ich9gen` without any arguments, it generates
descriptor+GbE images with a default MAC address in the GbE region. If you wish
@ -190,8 +190,7 @@ Your canoeboot.rom image is now ready to be flashed on the system. Refer
back to [../install/\#flashprog](../install/#flashprog) for how to flash
it.
Write-protecting the flash chip
-------------------------------
### Write-protecting the flash chip
The `ich9gen` utility (see below) generates two types of descriptor+GbE setup:
@ -205,7 +204,7 @@ the contents of flash).
For ease of use, Canoeboot provides ROMs that are read-write by default.
ICH9 deblob utility {#ich9deblob}
===================
-----------------------------------
This was the tool originally used to disable the ME on X200 (later
adapted for other systems that use the GM45 chipset).
@ -284,7 +283,7 @@ back to [index.md/\#gm45](index.md/#gm45) for how to flash
it.
demefactory utility {#demefactory}
===================
----------------------------------
This utility has never been tested, officially, but it *should* work.

View File

@ -1,10 +1,14 @@
---
title: Canoeboot installation guides
title: Install Canoeboot
x-toc-enable: true
...
Open source BIOS/UEFI firmware
------------------------------
This article will teach you how to install Canoeboot, on any of the supported
laptop, desktop and server motherboards.
laptop, desktop and server motherboards of Intel/AMD x86/x86\_64 and ARM64
platform. Canoeboot replaces proprietary BIOS/UEFI firmware.
**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
@ -12,7 +16,7 @@ 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)
@ -23,10 +27,13 @@ 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.
This section relates to installing canoeboot on supported targets.
Need help?
----------
Help is available on [Canoeboot IRC](../../contact.md) and other channels.
Which systems are supported by Canoeboot?
========================================
-----------------------------------------
Before actually reading the installation guides, please ensure that your
system is fully supported by Canoeboot. More information about the Canoeboot
@ -37,19 +44,16 @@ systems, you can use the U-Boot payload (coreboot still initialises hardware).
Canoeboot currently supports the following systems:
Games consoles
--------------
### Games consoles
- [Sony Playstation](playstation.md) (PS1/PSX)
Servers (AMD, x86)
------------------
### Servers (AMD, x86)
- [ASUS KFSN4-DRE motherboard](kfsn4-dre.md)
- [ASUS KGPE-D16 motherboard](kgpe-d16.md)
Desktops (AMD, Intel, x86)
--------------------------
### Desktops (AMD, Intel, x86)
- [Acer G43T-AM3](acer_g43t-am3.md)
- Apple iMac 5,2
@ -59,8 +63,7 @@ Desktops (AMD, Intel, x86)
- Intel D510MO and D410PT motherboards
- [Intel D945GCLF](d945gclf.md)
Laptops (Intel, x86)
--------------------
### Laptops (Intel, x86)
- [Apple MacBook1,1 and MacBook2,1](macbook21.md)
- [Dell Latitude E4300, E6400, E6400 XFR and E6400 ATG](latitude.md)
@ -71,19 +74,17 @@ Laptops (Intel, x86)
- Lenovo ThinkPad T60, X60, X60S, X60 Tablet (with Intel GPU)
- [Lenovo ThinkPad X200 / X200S / X200 Tablet](x200.md)
Laptops (ARM, with U-Boot payload)
----------------------------------
### Laptops (ARM, with U-Boot payload)
- [ASUS Chromebook Flip C101 (gru-bob)](chromebooks.md)
- [Samsung Chromebook Plus (v1) (gru-kevin)](chromebooks.md)
Emulation
---------
### Emulation
- [Qemu x86 and arm64](../misc/emulation.md)
**Disable security before flashing**
================================
Disable security before flashing
--------------------------------
**Before internal flashing, you must first disable `/dev/mem` protections. Make
sure to re-enable them after you're finished.**
@ -91,7 +92,7 @@ sure to re-enable them after you're finished.**
**See: [Disabling /dev/mem protection](devmem.md)**
ROM image file names
====================
--------------------
Canoeboot ROM images are named like
this: `payload_board_inittype_displaytype_keymap.rom`
@ -121,7 +122,7 @@ executed instead, if the primary payload is SeaBIOS, whether that be pure
SeaBIOS or a SeaGRUB setup.
EC firmware updates
===================
-------------------
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
@ -142,23 +143,21 @@ It is recommended that you update to the latest EC firmware version. The
Updating the EC can sometimes provide benefit depending on the vendor. For
example, they might fix power issues that could then enhance battery life.
ThinkPads
---------
### ThinkPads
See: <http://www.thinkwiki.org/wiki/BIOS_update_without_optical_disk>
Otherwise, check the Lenovo website to find the update utility for your
mainboard.
Other
-----
### Other
The same wisdom applies to other laptop vendors.
Non-laptops typically do not have embedded controllers in them.
Canoeboot installation instructions
===================================
-----------------------------------
In general, if Canoeboot is already running, you can skip
towards the final section on this page, which provides general internal
@ -172,8 +171,7 @@ 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.
Intel GbE MAC address (IFD-based systems)
---------------------------------------
### Intel GbE MAC address (IFD-based systems)
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
@ -183,10 +181,9 @@ flash, and can (must) be changed prior to installation.
You can use [nvmutil](nvmutil.md) to change the MAC address. You will perform
this modification to the ROM image, before flashing it.
Flash lockdown / boot security
-------------------
### Flash lockdown / boot security
This is referred to informally as *Secure libreBoot*.
This is referred to informally as *Secure canoeBoot*.
Full flash lockdown is possible, with cryptographic verification of your
Linux kernel and other files, using special features in the GRUB payload.
@ -205,8 +202,7 @@ See: [GRUB hardening / Secure canoeBoot](../linux/grub_hardening.md)
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).
Updating an existing installation
---------------------------------
### Updating an existing installation
Unless otherwise stated, in sections pertaining to each mainboard below,
an existing Canoeboot installation can be updated via internal flashing,
@ -223,16 +219,14 @@ special steps required that differ from updating an existing installation.
The next sections will pertain to specific mainboards, where indicated,
followed by general internal flashing instructions where applicable.
Dell Latitude laptops (vendor BIOS)
---------------------
### Dell Latitude laptops (vendor BIOS)
See: [Dell Latitude flashing guide](latitude.md)
This applies to all supported Dell Latitude models. Remember to [update the
MAC address with nvmutil](nvmutil.md), before flashing.
ThinkPad X200/T400/T500/W500/R400/R500
--------------------------------------
### ThinkPad X200/T400/T500/W500/R400/R500
If you're running one of these with Lenovo BIOS, you must externally flash
Canoeboot, because the original firmware restricts writes to the flash.
@ -253,35 +247,30 @@ 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.
Intel D510MO/D410PT (vendor BIOS)
-----------------------
### Intel D510MO/D410PT (vendor BIOS)
See: [External flashing guide](spi.md) - both boards are compatible with
the same image.
Gigabyte GA-G41M-ES2L (vendor BIOS)
---------------------
### Gigabyte GA-G41M-ES2L (vendor BIOS)
Internal flashing is possible, from factory BIOS to Canoeboot, but special
steps are required.
See: [Gigabyte GA-G41M-ES2L installation guide](ga-g41m-es2l.md)
Acer G43T-AM3 (vendor BIOS)
--------------------
### Acer G43T-AM3 (vendor BIOS)
See: [Acer G43T-AM3](acer_g43t-am3.md)
MacBook 1,1 / 2,1 / iMac 5,2 (vendor BIOS)
-------------------------
### MacBook 1,1 / 2,1 / iMac 5,2 (vendor BIOS)
MacBook *1,1* requires [external flashing](spi.md). MacBook *2,1* can always
be flashed internally. iMac 5,2 can be flashed internally.
Also check the [Macbook2,1 hardware page](macbook21.md)
ASUS KCMA-D8 / KGPE-D16 (vendor BIOS)
--------------------------
### ASUS KCMA-D8 / KGPE-D16 (vendor BIOS)
[You must flash it externally](spi.md) (DIP-8 section) - also look at
the [KGPE-D16 hardware page](kgpe-d16.md).
@ -291,8 +280,7 @@ Further information is available on the [KCMA-D8 page](kcma-d8.md).
KGPE-D16 installation is essentially the same, with the same type of flash
IC (DIP-8). Refer to the external flashing guide.
ASUS KFSN4-DRE (vendor BIOS)
-------------------------
### ASUS KFSN4-DRE (vendor BIOS)
This board uses LPC flash in a PLCC32 socket. This coreboot page shows an
example of the push pin as a proof of concept:
@ -303,13 +291,11 @@ See: [ASUS KFSN4-DRE guide](kfsn4-dre.md)
Hot-swap the flash IC with another one while it's running, and flash it
internally.
Intel D945GCLF (vendor BIOS)
---------------------------------
### Intel D945GCLF (vendor BIOS)
See: [Intel D945GCLF flashing guide](d945gclf.md)
ThinkPad T60/X60/X60Tablet/X60S
-------------------------------
### ThinkPad T60/X60/X60Tablet/X60S
Only the Intel GPU is compatible. Do not flash the ATI GPU models.
@ -402,8 +388,7 @@ bootblock, set bucts back to zero:
The second flash can be done by simply following the general internal flashing
guide further down on this page.
ARM-based Chromebooks
---------------------
### ARM-based Chromebooks
See: [Chromebook flashing instructions](chromebooks.md)
@ -412,8 +397,7 @@ 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.
QEMU (arm64 and x86)
--------------------
### QEMU (arm64 and x86)
Canoeboot can be used on QEMU (virtual machine), which is useful for debugging
payloads and generally trying out Canoeboot, without requiring real hardware.
@ -421,7 +405,7 @@ payloads and generally trying out Canoeboot, without requiring real hardware.
See: [Canoeboot QEMU guide](../misc/emulation.md)
Install via host CPU (internal flashing)
========================================
----------------------------------------
NOTE: This mainly applies to the x86 machines.
@ -435,10 +419,9 @@ directly.
Internal flashing is often unavailable with the factory firmware, but it is
usually possible when Canoeboot is running (barring special circumstances).
Run flashprog on host CPU
------------------------
### Run flashprog on host CPU
### Flash chip size
#### Flash chip size
Use this to find out:
@ -446,7 +429,7 @@ Use this to find out:
In the output will be information pertaining to your boot flash.
### Howto: read/write/erase the boot flash
#### Howto: read/write/erase the boot flash
How to read the current chip contents:
@ -471,6 +454,3 @@ There is nothing to worry about.
If successful, it will either say `VERIFIED` or it will say that the chip
contents are identical to the requested image.
NOTE: there are exceptions where the above is not possible. Read about them in
the sections below:

View File

@ -1,12 +1,16 @@
---
title: ASUS KCMA-D8 desktop/workstation board
title: Install Canoeboot on ASUS KCMA-D8
x-toc-enable: true
...
TODO: this page is OLD. check that the info is still valid.
Introduction
============
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on your
ASUS KCMA-D8 server/workstation motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware.
Specifications available here:
<https://www.asus.com/uk/Commercial-Servers-Workstations/KCMAD8/>
@ -36,7 +40,7 @@ If you currently have the ASUS firmware, please ignore the above link and
instead refer to the section below:
Flashing
========
--------
The default ASUS firmware write-protects the flash, so you have to remove the
chip and re-flash it using external hardware.
@ -56,7 +60,7 @@ Refer to the following guide:\
[Externally rewrite 25xx NOR flash via SPI protocol](../install/spi.md)
PCI option ROMs
===============
---------------
Unlike Libreboot 20160907, Canoeboot in newer releases now supports finding and
loading PCI option ROMs automatically, both in GRUB and SeaBIOS on this machine.
@ -66,21 +70,21 @@ So for example, if you wish to use an add-on graphics card, you can! It's no
problem, and should work just fine.
CPU coolers
===========
-----------
With some creativity, standard AM3+ coolers will work fine.
2 x Socket C32 (LGA1207) available, so you can use 2 CPUs. (up to 32GiB per CPU)
CPU compatibility
=================
-----------------
- Opteron 4100 series: Incompatible
- Opteron 4200 series: Compatible
- Opteron 4300 series: Compatible
Board status (compatibility) {#boardstatus}
============================
-------------------------------------
There are two ways to identify a supported KCMA-D8 board:
@ -99,14 +103,14 @@ For more detailed information regarding the coreboot port, see
<https://raptorengineeringinc.com/coreboot/kcma-d8-status.php>
Form factor {#formfactor}
===========
-----------------------
This board is ATX form factor. While the [ATX standard, version 2.2](https://web.archive.org/web/20120725150314/http://www.formfactors.org/developer/specs/atx2_2.pdf)
specifies board dimensions 305mm x 244mm, this board measures 305mm x 253mm;
please ensure that your case supports this extra ~cm in width.
IPMI iKVM module add-on {#ipmi}
=======================
----------------------------
Don't use it. It uses proprietary firmware and adds a backdoor (remote
out-of-band management chip, similar to the [Intel Management
@ -116,7 +120,7 @@ mainboard since it's on the add-on module, which you don't have to
install.
Flash chips {#flashchips}
===========
-----------------------
2MiB flash chips are included by default, on these boards. It's on a
P-DIP 8 slot (SPI chip). The flash chip can be upgraded to higher sizes:
@ -133,7 +137,7 @@ Ideally, you should not hot-swap. Only remove the IC when the system is
powered down and disconnected from mains.
Native graphics initialization {#graphics}
==============================
-----------------------------------------
Only text-mode is known to work, but linux(kernel) can initialize the
framebuffer display (if it has KMS - kernel mode setting).
@ -147,7 +151,7 @@ because the Nouveau driver can't increase the GPU clock (it doesn't know how,
as of 18 March 2021).
Current issues {#issues}
==============
----------------------
- Opteron 4100 series CPUs are currently incompatible
- LRDIMM memory modules are currently incompatible

View File

@ -1,5 +1,5 @@
---
title: ASUS KFSN4-DRE server/workstation board
title: Install Canoeboot on ASUS KFSN4-DRE
x-toc-enable: true
...
@ -18,7 +18,7 @@ x-toc-enable: true
| **Graphics** | XGI Z9s VGA Controller |
| **Display** | None. |
| **Memory** | 512MB, 1GB, 2GB, 4GB |
| **Architecture** | x86_64 |
| **Architecture** | x86\_64 |
| **Original boot firmware** | AMIBIOS |
| **Intel ME/AMD PSP** | Not present. |
| **Flash chip** | PLCC 1MiB (Upgradable to 2MiB) |
@ -46,6 +46,13 @@ P+: Partially works;
| **SeaBIOS with GRUB** | Partially works |
</div>
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on your
ASUS KFSN4-DRE server/workstation motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware.
This is a server board using AMD hardware (Fam10h). It can also be used
for building a high-powered workstation. Powered by Canoeboot.
@ -56,14 +63,14 @@ NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog
now, as of 3 May 2024, which is a fork of flashrom.
Form factor {#formfactor}
===========
---------------------
These boards use the SSI EEB 3.61 form factor; make sure that your case
supports this. This form factor is similar to E-ATX in that the size is
identical, but the position of the screws are different.
Flash chips {#flashchips}
===========
-----------------------
These boards use LPC flash (not SPI), in a PLCC socket. The default
flash size 1MiB (8Mbits), and can be upgraded to 2MiB (16Mbits).
@ -76,18 +83,18 @@ extractor. These can be found online. See
<http://www.coreboot.org/Developer_Manual/Tools#Chip_removal_tools>*
Native graphics initialization {#graphics}
==============================
---------------------------------------
Native graphics initialization exists (XGI Z9s) for this board.
Framebuffer- and text-mode both work. A serial port is also available.
Memory
======
-------
DDR2 533/667 Registered ECC. 16 slots. Total capacity up to 64GiB.
Hex-core CPUs {#hexcore}
=============
---------------------
PCB revision 1.05G is the latest version of this board and the best one
(the revision number is be printed on the board), if you want to use
@ -101,7 +108,8 @@ To be sure your board supports a CPU check the official ASUS website here:
If you are running a Hex-Core CPU on any board version, please contact us.
Board configurations {#configurations}
==============
----------------------------------------
There are 7 different configurations of this board: "standard", 2S, iKVM,
iKVM/IST, SAS, SAS/iKVM and SAS/iKVM/IST.
@ -120,7 +128,7 @@ The IST versions with PCB revision 1.05G are the ones who are believed to
support the six core Opteron Istanbul processors (2400 and 8400 series).
Current issues {#issues}
==============
-----------------------
- There seems to be a 30 second bootblock delay (observed by
tpearson); the system otherwise boots and works as expected. See
@ -147,7 +155,7 @@ Current issues {#issues}
the USB booting doesn't work.
Other information
=================
------------------
[specifications](https://web.archive.org/web/20181212180051/http://ftp.tekwind.co.jp/pub/asustw/mb/Socket%20F/KFSN4-DRE/Manual/e3335_kfsn4-dre.pdf)

View File

@ -3,10 +3,17 @@ title: ASUS KGPE-D16 server/workstation board
x-toc-enable: true
...
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on your
ASUS KGPE-D16 server/workstation motherboard. Libreboot replaces proprietary
BIOS/UEFI firmware.
TODO: OLD page. TODO: check that all the info is still valid.
Introduction
============
Free your BIOS today!
---------------------
This is a server board using AMD hardware (Fam10h *and Fam15h* CPUs
available). It can also be used for building a high-powered workstation.
@ -26,24 +33,24 @@ possible to re-flash using software running in Linux on the
KGPE-D16, without using external hardware.
CPU compatibility
=================
-----------------
Opteron 62xx and 63xx CPUs work just fine.
Board status (compatibility) {#boardstatus}
============================
---------------------
See <https://raptorengineeringinc.com/coreboot/kgpe-d16-status.php>.
Form factor {#formfactor}
===========
----------------------
These boards use the SSI EEB 3.61 form factor; make sure that your case
supports this. This form factor is similar to E-ATX in that the size is
identical, but the position of the screws are different.
IPMI iKVM module add-on {#ipmi}
=======================
--------------------------
Don't use it. It uses proprietary firmware and adds a backdoor (remote
out-of-band management chip, similar to the [Intel Management
@ -53,7 +60,7 @@ mainboard since it's on the add-on module, which you don't have to
install.
Flash chips {#flashchips}
===========
--------------------------
2MiB flash chips are included by default, on these boards. It's on a
P-DIP 8 slot (SPI chip). The flash chip can be upgraded to higher sizes:
@ -72,13 +79,13 @@ This guide shows how to flash the chip:\
[25xx NOR flashing guide](../install/spi.md)
Native graphics initialization {#graphics}
==============================
----------------------------------
Only text-mode is known to work, but linux(kernel) can initialize the
framebuffer display (if it has KMS - kernel mode setting).
Current issues {#issues}
==============
----------------------------------
- LRDIMM memory modules are currently incompatible
(IT MAY WORK NOWADAYS, TODO TEST)

View File

@ -1,14 +1,26 @@
---
title: Flashing Canoeboot on Dell Latitude laptops
title: Install Canoeboot on Dell Latitude laptops
x-toc-enable: true
...
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on various models of
Dell Latitude laptop motherboard, namely Dell Latitude E4300, E6400, E6400 XFR,
E6400 ATG; you must only install Canoeboot on models with *Intel graphics*.
Canoeboot replaces proprietary BIOS/UEFI firmware.
In case any models are unlisted in the above paragraph, you should also check
the full list of supported Dell Latitude models on the [Canoeboot hardware
compatibility](./#which-systems-are-supported-by-canoeboot) page.
All of the Dell Latitude models can be flashed internally, which means that
you do not need to disassemble them. You can do it from Linux or BSD, using
the instructions on this page.
Disable security before flashing
================================
--------------------------------
Please also [disable /dev/mem protection](devmem.md), otherwise flashprog
and dell-flash-unlock won't work. You can re-enable the protections after
@ -19,13 +31,13 @@ Note that Canoeboot does not currently implement UEFI on x86 platforms, but
you can set up [Secure canoeBoot](../linux/grub_hardening.md) after flashing.
MAC address
===========
-----------
Make sure to set your own MAC address in the ROM image before flashing.
Please read the [nvmutil manual](nvmutil.md) which says how to do this.
Thermal safety
==============
--------------
**Thermal safety**: this machine shuts down very quickly, when the machine
exceeds 80c CPU temperature, which is far more conservative than on most
@ -34,17 +46,23 @@ excellent. More info available [here](../install/dell_thermal.md). This is a
known bug, but otherwise the machine will be mostly stable.
Machine-specific notes
======================
----------------------
dGPU variants
-------------
### Latitude E6400
Vendor files not required for Dell Latitude E6400 if you have the Intel GPU.
If you have the Nvidia model, please use the `e6400nvidia_4mb` target, and
make sure to run the [inject script](ivy_has_common.md) prior to flashing.
### dGPU variants
Only the models with Intel graphics are supported in Canoeboot, since these
can be booted with free graphics initialisation, whereas the discrete GPUs
require binary blobs which are not allowed in Canoeboot.
Internal flashing
=================
-----------------
You can simply boot Linux or BSD, on the Dell Latitude you wish to flash,
and run `flashprog` from there, for Canoeboot installation. Certain other steps
@ -105,12 +123,11 @@ successful. If you don't see that, or you're unsure, please [contact the
Canoeboot project via IRC](../../contact.md).
External flashing
=================
-----------------
General guidance
----------------
### General guidance
Machine-specific disassembly instructions not provided, but you can find
Machine-specific disassembly instructions are not provided, but you can find
the hardware maintenance manual for your Latitude module online. Just search
for it. The flash chips(s) is/are usually under the keyboard/palmrest. Near
to the PCH/southbridge.
@ -128,10 +145,9 @@ Please read the [external SPI flash guide](spi.md)
External flashing is usually not required, on these machines.
Chip size guidance
------------------
### Chip size guidance
SOme Dell Latitudes use a single flash chip, so you can
Some Dell Latitudes use a single flash chip, so you can
just use the ROM images as-is.
If there are two flash chips, you must split the ROM images. Check the silk

View File

@ -4,7 +4,7 @@ x-toc-enable: true
...
Introduction (GM45+e1000)
=========================
-------------------------
This section is applicable to all supported laptops with the
mobile 4 series chipset (as shown in `$ lspci`)
@ -17,15 +17,11 @@ for the built-in gigabit ethernet controller is stored inside the flash chip,
along with Canoeboot and other configuration data. Therefore, installing
Canoeboot will overwrite it.
Thus, for these laptops, prebuilt Canoeboot already contains a generic
MAC address in the configuration section. This address is `00:f5:f0:40:71:fe
in builds before 2018-01-16 and `00:4c:69:62:72:65` (see the ascii character
set) afterwards.
Thus, for these laptops, prebuilt Canoeboot images already contain a generic
MAC address in the GbE region.
Unless you change it, your computer will boot and use it. This can lead
to network problems if you have more than one Canoeboot computer on
the same layer2 network (e.g. on the same network switch). The switch
(postman) will simply not know who to deliver to as the MAC (house) addresses
will be the same.
the same layer2 network (e.g. on the same network switch).
To prevent these address clashes, you can either modify prebuilt Canoeboot
to use an address of your own choosing or you can change the address in your
@ -35,7 +31,7 @@ In either case, it is a good idea to write down the address that your
computer originally had.
Obtaining the existing MAC address
==================================
----------------------------------
The existing MAC address may be obtained by the following methods:
@ -65,7 +61,7 @@ The existing MAC address may be obtained by the following methods:
updated.
Changing the MAC address in the operating system
================================================
------------------------------------------------
There are three portable ways of doing so:
@ -90,8 +86,8 @@ init scripts or you can use your operating system's own networking
configuration. Refer to your operating system's documentation for
how to do this.
Changing the MAC address on X200/T400/T500/W500
===============================================
Changing the MAC address on X200/T400/T500/W500 (OBSOLETE)
-----------------------------------------------
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.
@ -101,8 +97,26 @@ 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:
Also see [nvmutil documentation](../install/nvmutil.md)
Changing the MAC address via nvmutil
-----------------------------------------------------------------
The nvmutil utility is yet another utility provided by Canoeboot, for
changing your MAC address. It is a standalone utility, that operates
only on pre-assembled GbE files.
Nowadays, nvmutil is the preferred way to do it, instead of ich9gen.
See [nvmutil documentation](../install/nvmutil.md)
This tool was originally written for changing the MAC address on Intel
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
is used; this includes older GM45+ICH9M machines supported by Canoeboot.
The `ich9utils` program is more useful in an cbmk 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 cbmk.
No tool like ich9utils exists for these boards yet, but cbmk includes the IFD
and GbE files in-tree.
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
the vendor, but you can use local addresses, and you can use randomised MACs.

View File

@ -1,5 +1,5 @@
---
title: MacBook2,1 and MacBook1,1
title: Install Canoeboot on MacBook2,1 and MacBook1,1
x-toc-enable: true
...
@ -20,7 +20,7 @@ x-toc-enable: true
| **Graphics** | Intel GMA 950 |
| **Display** | 1280x800 TFT |
| **Memory** | 512MB, 1GB (upgradable to 4GB with 3GB usable) |
| **Architecture** | x86_64 |
| **Architecture** | x86\_64 |
| **EC** | Proprietary |
| **Original boot firmware** | Apple EFI |
| **Intel ME/AMD PSP** | Not present. |
@ -48,6 +48,14 @@ P+: Partially works;
| **SeaBIOS** | Works |
| **SeaBIOS with GRUB** | Works |
</div>
Open source BIOS/UEFI firmware
-------------------------
This document will teach you how to install Canoeboot, on your
Apple MacBook 2,1 2005-2007 laptop motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware.
The MacBook1,1 and MacBook2,1 are very similar to the
ThinkPad X60. It shares some hardware with the X60 such as the chipset.
@ -61,15 +69,14 @@ uses Core Duo processors (supports 32-bit OS but not 64-bit), and it is
believed that this is the only difference.
Compatibility
=============
-------------
The following pages list many models of MacBook1,1 and MacBook2,1:
* <http://www.everymac.com/ultimate-mac-lookup/?search_keywords=MacBook1,1>
* <http://www.everymac.com/ultimate-mac-lookup/?search_keywords=MacBook2,1>
Models
------
### Models
Specifically (Order No. / Model No. / CPU) for the MacBook1,1:
@ -97,7 +104,7 @@ then don't forget to [send a patch](../../git.md), confirming that it
actually works!
Internal flashing
=================
-----------------
MacBook2,1 can always be flashed internally, even if running Apple firmware:
@ -110,7 +117,7 @@ The MacBook1,1 can't be flashed internally if running the Apple EFI firmware.
You must flash externally.
External flashing
=================
-----------------
MacBook1,1 requires external flashing, if running the default Apple firmware.
MacBook2,1 can be flashed internally, regardless.
@ -130,7 +137,7 @@ Refer to the following guide:\
[Externally rewrite 25xx NOR flash via SPI protocol](../install/spi.md)
OSes using Linux on Apple EFI firmware
======================================
--------------------------------------
You have 2 choices for booting up OSes using Linux as their kernel
on the MacBook:
@ -139,8 +146,7 @@ on the MacBook:
* Boot via a CD or DVD.
Boot via a CD or DVD
--------------------
### Boot via a CD or DVD
The Apple EFI firmware contains a PC BIOS emulation layer for booting
Microsoft Windows on CDs and DVDs. That emulation layer **only** works
@ -170,8 +176,7 @@ should boot up properly automatically.
to it using GRUB, despite the fact that it does sometimes show up. You
also won't be able to boot it up when using Canoeboot.*
Boot via USB
------------
### Boot via USB
This method is harder than booting from a CD/DVD and may soft-brick your
MacBook but it's the only way to boot up successfully from a USB.
@ -209,14 +214,14 @@ the CMOS/PRAM battery, wait a few minutes, and put it back in.
to reconfigure GRUB2 correctly, else your system won't boot.*
Coreboot wiki page
==================
------------------
The following page has some information:
* <https://www.coreboot.org/Board:apple/macbook21>
Issues and solutions/workarounds
================================
--------------------------------
There is one mouse button only, however multiple finger tapping
works. The Apple logo on the
@ -227,8 +232,7 @@ should [cover it up](http://cweiske.de/tagebuch/tuxbook.htm).
software. Webcams are a privacy and security risk; cover it up! Or
remove it.*
Make it overheat less
---------------------
### Make it overheat less
NOTE: in Canoeboot, this section is less relevant, because C3
states are now; the issue pertained to much older releases of [Libreboot](https://libreboot.org/),
@ -269,8 +273,7 @@ PLATFORM_PROFILE_ON_BAT=low-power
The MacBook will still overheat, just less.
Enable AltGr
------------
### Enable AltGr
The keyboard has a keypad enter instead of an AltGr. The first key on
the right side of the spacebar is the Apple "command" key. On its
@ -294,12 +297,11 @@ line:
to the file /etc/vconsole.conf and then restart the computer.
Make touchpad more responsive
-----------------------------
### Make touchpad more responsive
Linux kernels of version 3.15 or lower might make the touchpad
extremely sluggish. A user reported that they could get better
response from the touchpad with the following in their xorg.conf:
response from the touchpad with the following in their `xorg.conf`:
```
Section "InputClass"

View File

@ -1,45 +1,35 @@
---
title: nvmutil manual
title: nvmutil usage instructions
x-toc-enable: true
...
With this software, you can change the MAC address inside GbE regions
on any system that uses an Intel Flash Descriptor.
on any system that uses an Intel Flash Descriptor. This software works well
on most/all of the major Linux or BSD operating systems.
You can use the documentation below, if you wish to use `nvmutil` manually.
Continue reading...
Introduction
============
Change the Intel GbE MAC address
--------------------------------
This is the manual for `nvmutil`, included in the Canoeboot,
build system (cbmk) under `util/nvmutil/`. This program lets you modify
the MAC address, correct/verify/invalidate checksums,
swap/copy and dump regions on Intel PHY NVM images,
which are small binary configuration files that go
in flash, for Gigabit (ethernet) Intel NICs.
This is the manual for `nvmutil`, included within the [Canoeboot build
system](../maintain/) (cbmk) under `util/nvmutil/`. This program lets you modify
the MAC address, correct/verify/invalidate checksums, swap/copy and dump regions
on Intel PHY NVM images, which are small binary configuration files that go in
flash, for Gigabit (ethernet) Intel NICs.
**Please [install build dependencies](../build/) before you do this.**
This software is largely targeted at coreboot users,
but it can be used on most modern Intel systems, or
most systems from about 2008/2009 onwards.
This software is largely targeted at coreboot users, but it can be used on most
modern Intel systems, or most systems from about 2008/2009 onwards, regardless
of which boot firmware they have.
NOTE: Canoeboot X200/X200T/X200S/T400/T400S/T500/W500/R400
users should know that this software does *not*
replace `ich9gen`, because that program generates entire
ICH9M IFD+GbE regions, in addition to letting you set the
MAC address. *This* program, `nvmutil`, can *also* set
the MAC address on those machines, but it operates on a
single GbE dump that is already created.
This program is operated on dumps of the GbE NVM image,
which normally goes in the boot flash (alongside BIOS/UEFI
or coreboot, IFD and other regions in the flash). The first
half of this README is dedicated to precisely this, telling
you how to dump or otherwise acquire that file; the second
half of this README then tells you how to operate on it,
using `nvmutil`.
This program is operated on dumps of the GbE NVM image, which normally goes in
the boot flash (alongside BIOS/UEFI or coreboot, IFD and other regions in
the flash). The first half of this README is dedicated to precisely this,
telling you how to dump or otherwise acquire that file; the second half of this
README then tells you how to operate on it, using `nvmutil`.
Automatic MAC address changer
-----------------------------
@ -70,7 +60,13 @@ is provided without argument, or no argument is given, the MAC address is
randomised. Otherwise, you can specify an arbitrary address.
The `?` character is random, and you can specify that any of them be random,
while setting others (or all of them) arbitrarily.
while setting others (or all of them) arbitrarily. On the corresponding nibble,
the bit for unicast/multicast and global/local are set accordingly, so that
randomly generated addresses are *always* unicast and *local*, unless the
corresponding nibble is set arbitrarily; if the latter, then an error is thrown
if the arbitrary nibble corresponds to a multicast MAC address (and when errors
are thrown, the file shall remain unchanged). More information about error
handling is provided, later in this document.
The `restore` option restores the original one. The command works by using a
reference GbE image file present in Canoeboot's build system, for the given
@ -80,7 +76,7 @@ The Canoeboot version is designed to throw an error, if you run it on a Libreboo
tarball.
How to download newer versions
==============================
------------------------------
Simply pull down the latest changes in `cbmk.git`. The `nvmutil`
software is part of our Canoeboot build system, which we called `cbmk`,
@ -91,7 +87,7 @@ More info about git:
* <https://git-scm.com/>
Context
=======
-------
On many Intel systems with an IFD (Intel Flash Descriptor), the
Intel PHY (Gigabit Ethernet) stores its configuration, binary
@ -122,8 +118,7 @@ This 4KB region is then repeated, to make an 8KB region in
flash, known as the *GbE region*. In `nvmutil`, the first part
is referred to as *part 0* and the second part as *part 1*.
Known compatible PHYs
---------------------
### Known compatible PHYs
TODO: write a full list her ofe what actual PHYs are known to work.
@ -136,7 +131,7 @@ files; it is assumed that intel would later change the
file size and/or checksum value and/or checksum location.
How to obtain the GbE file
==========================
--------------------------
The chip containing your BIOS/UEFI firmware (or coreboot) has
it, if you have an Intel PHY for gigabit ethernet.
@ -146,8 +141,7 @@ containing your NIC's configuration. This is the part that
many people will struggle with, so we will dedicated an
entire next section to it:
Use flashprog
------------
### Use flashprog
NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog)
now, as of 3 May 2024, which is a fork of flashrom.
@ -194,8 +188,7 @@ option should be changed accordingly. Read flashprog
documentation, and make sure you have everything
properly configured.
Use ifdtool
-----------
### Use ifdtool
NOTE: This has only been tested on systems that use IFDv1
(Intel Flash Descriptor, version 1). This distinction, between
@ -308,7 +301,7 @@ SPI1. You should adjust the above parameters, according
to your configuration.
How to compile source code
==========================
--------------------------
The nvmutil source code is located under `util/nvmutil/` in the
cbmk repository. A makefile is included there, for you to build an
@ -333,8 +326,7 @@ The `nvmutil` software has been build-tested on `Clang`, `GCC`
and `tcc`. Only standard library functions (plus `err.h`) are
used, so you don't need any extra libraries.
How to compile it
-----------------
### How to compile nvmutil
First, ensure that the current working directory is your
copy of the nvmutil source code!
@ -350,7 +342,7 @@ whatever is in your `$PATH` for userspace programs).
TODO: Add `make install` to the Makefile, portably.
How to use nvmutil
==================
------------------
You run it, passing as argument the path to a file, and you run
commands on that file. This section will tell you how to
@ -362,8 +354,7 @@ done that, you could still run it in cwd for instance:
./nvm bla bla bla
Exit status
-----------
### Exit status
The `nvmutil` program uses `errno` extensively. The best error
handling is done this way, the Unix way. Error handling is extremely
@ -389,8 +380,7 @@ of size *8KB*.
Additional rules regarding exit status shall apply, depending on
what command you use. Commands are documented in the following sections:
Change MAC address
------------------
### Change MAC address
The `nvm` program lets you change the MAC address. It sets
a valid checksum, after changing the MAC address. This program
@ -455,8 +445,7 @@ corrected if you use the `setchecksum` command
in `nvmutil`. It is common for vendor gbe files to contain
one valid part and one invalid part, per checksum rules.
Verify checksums (and show MAC addresses)
-----------------------------------------
### Verify checksums (and show MAC addresses)
This command *only* requires *read* access on files.
@ -472,8 +461,7 @@ NOTE: This will exit with zero status if at least one part
contains a valid checksum. If both parts are invalid, nvmutil
will exit with non-zero status.
Copy part
---------
### Copy part
This command requires read *and* write access on files.
@ -493,8 +481,7 @@ will be performed, and nvmutil will exit with non-zero status.
Otherwise, it will (if all other conditions are met) exit with
zero status.
Swap parts
----------
### Swap parts
This command requires read *and* write access on files.
@ -513,8 +500,7 @@ If *at least one* part is valid, nvmutil will return
with zero exit status. If both parts are invalid, it will
return non-zero.
Set valid checksum
------------------
### Set valid checksum
This command requires read *and* write access on files.
@ -534,8 +520,7 @@ set the checksum. There is no feasible way to guard against
use on the wrong file, unlike with the other commands. Please
make SURE you're running this on the correct file!*
Set invalid checksum
--------------------
### Set invalid checksum
This command requires read *and* write access on files.
@ -563,3 +548,12 @@ run `brick` before running `setmac` (or run it afterwards).
The Linux kernel's `e1000` driver will refuse to initialise
Intel gigabit NICs that don't have a valid checksum. This
is software-defined, and not enforced by the hardware.
TODO
----
* Support higher block sizes e.g. 8KB blocks for GbE part sections
* Adapt this into a manpage (useful for Linux package repositories / BSD ports)
* Send nvmutil upstream to coreboot, for inclusion under `util/`
* In addition to the manpage, when sending to coreboot, also adapt this page
for inclusion into doc.coreboot.org

View File

@ -27,16 +27,16 @@ if you want it to, and you can!
| **Original boot firmware** | Sony PS1 BIOS (USA/JPN/EU) |
| **Flash chip** | 512KB Mask ROM |
</div>
Introduction
============
Open source playstation (PS1/PSX) BIOS
---------------------------------
This uses the free/opensource BIOS developed by the PCSX-Redux team, which you
can learn more about here:
<https://github.com/grumpycoders/pcsx-redux/tree/main/src/mips/openbios>
Build from source
-----------------
### Build from source
Canoeboot's build system provides automation for this. Please use the latest cbmk
revision [from Git](../../git.md).
@ -65,7 +65,7 @@ This commonly only builds the BIOS part. If you want to build all of PCSX-Redux,
you can, but cbmk does not provide automation for this.
Installation
============
------------
If all went well, you should see `openbios.bin` located
under the `bin/playstation/` (within cbmk). Alternatively, you may be using
@ -73,8 +73,7 @@ a release *after* Canoeboot 20240612 that has it pre-built. Either way is fine.
The `openbios.bin` file is your new BIOS build.
Emulators
---------
### Emulators
Most PlayStation emulators rely on low-level emulation to execute the real BIOS.
The Open BIOS by PCSX-Redux (as distributed by Canoeboot) can also be used, and
@ -89,8 +88,7 @@ provided with your chosen PlayStation emulator. You can even freely
redistribute this BIOS, because it's free software (released under MIT license),
which is a major advantage over Sony's original BIOS.
Hardware
--------
### Hardware
Not yet tested by the Canoeboot project, but the PCSX-Redux developers have
stated that it will work on the real console. *It should be noted that the Open
@ -114,7 +112,7 @@ BIOS much more polished, but a number of games have been tested and it's more
or less fully reliable in most cases.
Game compatibility
==================
------------------
The upstream maintains a compatibility list, here:
@ -124,7 +122,7 @@ NOTE: Google Docs, but an option exists on there to export it for LibreOffice
Calc. The list is provided as a spreadsheet.
Remarks about hardware
====================
----------------------
Modern NOR flash can be used. You specifically want a TSOP-32 SMD/SMT type device,
one that operates at 3.3v (tolerance 2.7 to 3.6v), organised into 512KB blocks,
@ -144,10 +142,9 @@ We do not yet provide instructions for how to install this on real hardware, in
the Canoeboot project, but this can be done at a future date.
Other mods (hardware)
===============
---------------------
Video timings
-------------
### Video timings
The Open BIOS will not implement any DRM, so it's possible that you might boot
out of region games. In an emulator, this is no problem, but it can prove
@ -197,8 +194,7 @@ By fixing the timings in this way, your region-free console will also have
correct timings, thus maximum game compatibility, and colours will always be
correct no matter what video cable you're using.
Modchips
--------
### Modchips
If using hardware, you will probably still want a modchip. Many proprietary
modchip firmwares exist, such as Old crow, MultiMode3 and Mayumi; these run on
@ -226,8 +222,7 @@ not yet been confirmed by the Canoeboot project.
More hardware testing is planned, but the Open BIOS works perfectly in emulators.
Give it a try!
Boot games on SD cards
-----------------------
### Boot games on SD cards
The [PicoStation](https://github.com/paulocode/picostation) project provides
free firmware for RP2040 devices, which you can solder into a modboard which
@ -238,8 +233,7 @@ real playstation (the picostation replaces your CD drive).
Not only is this useful in a development context, but it can also be used when
your CD drive has worn out and no longer reads discs properly.
Final remarks
-------------
### Final remarks
Combined with PsNee and PicoStation, the Open BIOS from PCSX-Redux team will
turn your 90s PlayStation into a very hackable machine. There is
@ -251,7 +245,7 @@ simply computers, fully reprogrammable and as such, Canoeboot is happy to provid
this support, for the Sony PlayStation
Credit
======
------
Thanks go to the PCSX-Redux team for their excellent work reverse engineering
the Sony PS1 BIOS.

View File

@ -1,5 +1,5 @@
---
title: Flashing the ThinkPad R400
title: Install Canoeboot on Lenovo ThinkPad R400
x-toc-enable: true
...
@ -21,7 +21,7 @@ x-toc-enable: true
GeForce 9300M on some models) |
| **Display** | 1280x800/1440x900 TFT |
| **Memory** | Up to 8GB |
| **Architecture** | x86_64 |
| **Architecture** | x86\_64 |
| **EC** | Proprietary |
| **Original boot firmware** | LenovoBIOS |
| **Intel ME/AMD PSP** | Present. Can be completly disabled. |
@ -52,16 +52,12 @@ P*: Partially works with vendor firmware
| **SeaBIOS with GRUB** | Works |
</div>
Dell Latitude E6400
===================
Open source BIOS/UEFI firmware
-------------------------
**If you haven't bought an R400 yet: the [Dell Latitude
E6400](../install/latitude.md) is much easier to flash; no disassembly required,
it can be flashed entirely in software from Dell BIOS to Canoeboot. It is the
same hardware generation (GM45), with same CPUs, video processor, etc.**
Introduction
============
This document will teach you how to install Canoeboot, on your
Lenovo ThinkPad R400 laptop motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware.
It is believed that all or most R400 laptops are compatible. See notes
about [CPU
@ -85,8 +81,16 @@ now, as of 27 January 2024, which is a fork of flashrom.
The reason why was explained, in
the [Libreboot 20240225 release](https://libreboot.org/news/libreboot20240225.html)**
Dell Latitude E6400
-------------------
**If you haven't bought an R400 yet: the [Dell Latitude
E6400](../install/latitude.md) is much easier to flash; no disassembly required,
it can be flashed entirely in software from Dell BIOS to Canoeboot. It is the
same hardware generation (GM45), with same CPUs, video processor, etc.**
EC update {#ecupdate}
=========
--------------------
It is recommended that you update to the latest EC firmware version. The
[EC firmware](../../faq.md#ec-embedded-controller-firmware) is separate from
@ -111,7 +115,7 @@ TODO: put hardware register logs here like on the [X200](x200.md) and
[T400](t400.md) page.
Installation notes
==================
------------------
[External flashing](spi.md) required, if Lenovo BIOS is running.
@ -131,15 +135,14 @@ ROM properly first. Although ROM images are provided pre-built in
Canoeboot, there are some modifications that you need to make to the one
you chose before flashing. (instructions referenced later in this guide)
Serial port {#serial_port}
-----------
### Serial port {#serial_port}
EHCI debug might not be needed. It has been reported that the docking
station for this laptop has a serial port, so it might be possible to
use that instead.
A note about CPUs
=================
-----------------
[ThinkWiki](http://www.thinkwiki.org/wiki/Category:R400) has a list of
CPUs for this system. The Core 2 Duo P8400 and P8600 are believed to
@ -147,13 +150,12 @@ work in Canoeboot. The Core 2 Duo T9600 was confirmed to work, so the
T9400 probably also works. *The Core 2 Duo T5870/5670 and Celeron M
575/585 are untested!*
Quad-core CPUs
--------------
### Quad-core CPUs
Incompatible. Do not use.
A note about GPUs
=================
-----------------
Some models have an Intel GPU, while others have both an ATI and an
Intel GPU; this is referred to as "Dual Graphics" (previously
@ -167,12 +169,12 @@ Intel GPU is used and the ATI GPU is disabled, so native graphics
initialization works all the same.
CPU paste required
==================
------------------
See [\#paste](#paste).
Flash chip size {#flashchips}
===============
-----------------------------
Use this to find out:
@ -182,17 +184,16 @@ NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog
now, as of 3 May 2024, which is a fork of flashrom.
MAC address {#macaddress}
===========
-------------------------
Refer to [mac\_address.md](../install/mac_address.md).
External flashing
=================
-----------------
Refer to [spi.md](spi.md) as a guide for external re-flashing.
Disassembly
-----------
### Disassembly
Remove all screws:\
![](https://av.canoeboot.org/r400/0000.jpg)\
@ -278,7 +279,7 @@ Read [this article](spi.md) to learn how you may flash the chip, which is near
to the RAM.
Thermal paste (IMPORTANT)
=========================
-------------------------
Because part of this procedure involved removing the heatsink, you will
need to apply new paste. Arctic MX-4 is ok. You will also need isopropyl
@ -295,7 +296,7 @@ show how to properly apply the thermal paste. Other guides online detail
the proper application procedure.
Memory
======
------
In DDR3 machines with Cantiga (GM45/GS45/PM45), northbridge requires sticks
that will work as PC3-8500 (faster PC3/PC3L sticks can work as PC3-8500).

View File

@ -3,8 +3,51 @@ title: Read/write 25XX NOR flash via SPI protocol
x-toc-enable: true
...
NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog)
now, as of 3 May 2024, which is a fork of flashrom.
Need help?
----------
Help is available on [Canoeboot IRC](../../contact.md) and other channels.
Install open source BIOS/UEFI firmware
--------------------------------------
This guide is predominantly about *installing Canoeboot* (flashing it) onto
your motherboard's main system flash. You can also adapt this guide for dumping,
erasing and verifying firmware images; this guide shows you how to use
the [flashprog](https://flashprog.org/) software with various external
25XX NOR flash programmers. This guide is written for *Linux* users, but BSD
operating systems are also compatible with flashprog; Windows might be feasible,
ditto Apple's MacOS, as flashprog can also run on those, but they are not
officially supported by Canoeboot, and *we recommend* that you use Linux/BSD.
Although this documentation is written *for the Canoeboot project*, it can be
used on any compatible 25xx NOR flash, on any number of devices, such as home
routers and even certain videogame systems. If you're a refurbisher, and not
a Canoeboot-based one, but just a regular refurbisher e.g. on eBay, dealing
with proprietary UEFI firmware (and perhaps Windows installations), it may be
that on some of them, SMM-based flash writes are performed to store UEFI firmware
configurations (instead of the old NVRAM/CMOS memory); you could adapt this
guide (and read flashprog documentation) to erase/flash custom configurations,
for example when unlocking boot passwords on the computers that you sell. This
is the power of [Free Software](https://writefreesoftware.org/learn); flashprog
is a Free Software project. The use-case scenario of the humble eBay seller is
real; several of them have in fact used this guide in the past.
So keep that in mind; this is part of the Canoeboot installation instructions,
but it can be used for *any* flashing operation on *any* 25xx NOR flash, with
all sorts of firmware; you could also use this to *reverse* a Canoeboot
installation, re-flashing the original vendor firmware if you made a dump of it,
**and we definitely recommend backing that up prior to Canoeboot installation**.
**Please ensure that your programmer's voltage matches that of the flash IC,
and read this guide carefully to account for proper electrical safety. In
general, these programmers operate at 3.3v, so you'll need a logic level
adapter and e.g. buck converter, if you're dealing with a 1.8V flash IC.**
**[PLEASE READ THESE INSTRUCTIONS BEFORE INSTALLING](ivy_has_common.md), OR
YOU MAY BRICK YOUR MACHINE!! - Please click the link and follow the instructions
there, before flashing. For posterity,
[here is the link again](ivy_has_common.md).**
This guide will teach you how to use various tools for externally reprogramming
a 25xx NOR flash via SPI protocol. This is the most common type of flash IC for
@ -42,10 +85,9 @@ from Linux, with flashprog.
is called *external* because it's not the *internal* one on your mainboard.
Raspberry Pi Pico
=================
-----------------
RP2040/RP2530 both supported
----------------------------
### RP2040/RP2530 both supported
**Pico 2 and other RP2530 dongles also supported, on Canoeboot 20250107
or higher. Releases before this only supported the original Pico, and other
@ -63,8 +105,7 @@ Additionally, all the software running on it is free, down to the full
versions (Pico W & Pico WH) need vendor firmware to use the Wi-Fi chip,
but that is not needed for following this guide.
Download serprog firmware pre-compiled
-------------------------
### Download serprog firmware pre-compiled
Download the pico serprog tarball from Canoeboot releases. For example, the
Canoeboot 20250107 one would be
@ -72,8 +113,9 @@ named: `canoeboot-20250107_pico_serprog.tar.xz` - it's available under
the `roms/` directory in each release. With these binaries, you can easily
get started.
Build serprog firmware from source
----------------------------------
### Build serprog firmware from source (OPTIONAL)
**Pre-compiled binaries are also available, in Canoeboot releases.**
You can alternatively download the serprog firmware here:\
<https://codeberg.org/libreboot/pico-serprog>\
@ -96,8 +138,7 @@ at `bin/serprog_pico/serprog_pico.uf2`
and `bin/serprog_pico/serprog_pico_w.uf2` - images with `pico2` in the
file name are for the Pico 2, and they can also be used.
Install the serprog firmware
----------------------------
### Install the serprog firmware
First, connect just the Pico to your computer with a micro-USB cable.
Mount it like any other USB flash drive. If it isn't detected, you might need
@ -113,8 +154,7 @@ release tarball.
**NOTE: Other RP2040/2530 devices will also work. You just have to match
the right pins and use the correct firmware file!**
Logic levels
------------
### Logic levels
A Pico has proper 3.3V logic levels, unlike a ch341a. Which means it won't
destroy your board by sending 5V to it. If you have a 1.8V flash chip,
@ -122,8 +162,7 @@ you need to add a logic level converter. **Please ensure that you have matched
the voltage of your programmer to the voltage of your chip; both the data lines
and power lines to the chip must match.**
Wiring
------
### Wiring
Disconnect the Pico and proceed to wire it to your
[flash chip](/docs/install/spi.html#identify-which-flash-type-you-have).
@ -159,11 +198,16 @@ not worth it. The 12Mbps USB port is limiting the actual speed here.
Higher speeds might work nicely, on Pico 2.
Do not use CH341A!
==================
Do not buy CH341A!
------------------
This section was heavily expanded, on 19 January 2025, because we see many
people online still talking about the CH341a. Therefore, the hatred has been
amplified. Please read this section carefully, to know why we advise against
use of this particular programmer.
NOR flashes on Canoeboot systems run on 3.3V DC or 1.8V DC, and this includes
data lines. CH341A has 5V logic levels on data lines, which will damage your
data lines. CH341A can have 5V logic levels on data lines, which can damage your
SPI flash and also the southbridge that it's connected to, plus anything else
that it's connected to.
@ -223,8 +267,80 @@ resistors) performed, on the black CH341A:\
The green version (not shown above) may come with 3.3v logic already wired, but
still needs to have pull-up resistors placed for WP/HOLD.
Disclaimer: A few (not many, but wily) people have criticised this section of the
documentation, due to a misconception about what it really means and also because
this section was previously very poorly written. So to be clear:
Yes, we are quite well aware that the CH341A can in fact operate at 3.3v,
even unmodified black models; the VCC line is 3.3v, and if when you either
directly wire VCC to WP/HOLD pins yourself, or a pull-up resistor on the
motherboard you're flashing pulls these high at 3.3v, then the logic levels
on the data lines do in fact switch to 3V *during an erase, read or write cycle*.
When no flashing operation is underway, the data lines are outputting at almost
negligable current, so the actual amount of heat generated will be negligable,
and therefore damage is unlikely. However, as stated above and as we will state
again:
* This is bad electrical design. The CH341A can switch flexibly between 3V
and 5V operation, but most flashes today are 1.8V or 5V anyway, and there are
all kinds of scenarios (such as over-current or surge event) where this 5V
idle logic level could still be applied. Modifying your CH341a to 3.3v
only, as defined in the datasheet (and by this page) is highly recommended.
* The drive level is extremely poor anyway, on CH341a, making ISP-based
flashing ill advisable in many cases, such as where the PCH (Intel platforms)
is partly active and the data lines have lower resistance, because some
boards have 0ohms or very low resistance on these lines.
* No pull-ups on the WP/hold lines, when flashing in the socket; they are high
via 0ohm trace to VCC, whereas you are advised to use a pull-up resistor to
mitigate over-current events.
* Crap LDO on the board, and no ESD/overcurrent protection; the CH341a probably
can't provide much current on the VCC line, especially for ISP-based flashing
where the flash shares a common power rail with many other components.
CH341a is cheap junk. Get yourself a Raspberry Pi Pico instead; it's about the
same price, but of much higher quality from an electrical design perspective,
supports much higher (12mA!) drive levels on data lines, can control multiple
chip selects at once; it's just better, in every way. And the Raspberry Pi is
completely reprogrammable, so you can use it for something else when you're
done, e.g. UART dongle, or if you're wily enough, [PlayStation 1 Optical Disc
Emulator](https://github.com/paulocode/picostation) - the Pico is simply a
highly versatile tool, much better value for money than the piece of junk
CH341a.
There is only one instance where the CH341a is *good*, and that is when you're
actually flashing a loose (not soldered) chip, in the ZIF socket on the CH341a
board. It's a DIP-8 socket, and you can also buy WSON-8 and SOIC-8 or SOIC-16
adapters for it; you can also plug a special adapter board into it that converts
the voltages (VCC and data lines) to 1.8V, for 1.8V flashes (you could also
use that same 1.8V adapter circuit in a breadboard wired to your Pico). On
socket-based flashing, *which is specifically what the CH341a was designed
for*, you don't have to worry about weak drive level because there is nothing
contending with it on the flash IC's data pins.
The *socket-based* flashing operation is what we recommend this programmer
for, *only if you already have one*. We still recommend fixing the issue with
the WP/HOLD pins as described above; if you're doing this, note that there are
also newer models that have a voltage switch and logic level shifter already
on the board, which can be very useful. *Clip-based* flashing (ISP / in-system
programming) is, specifically, what we advise against using the CH341a for.
Even if you *are* doing socket-based flashing, we still suggest buying the Pico
instead, though the Pico doesn't come with a ZIF socket; you can wire the Pico
to a breadboard instead, if you want to use a socket for flashing. Then you
will also have a good ISP device, and the overall cost covering both use-case
scenarios is *lower* (cheaper part cost) than buying a CH341a *and* Pico; and
the Pico can also emulate the PlayStation Optical Disc Drive in your
playstation to boot from SD card instead of your dead CD drive, or could even
be a [JTAG adapter](https://hackaday.com/2022/04/11/need-a-jtag-adapter-use-your-pico/) -
again, the Pico is a reprogrammable device! Whereas, the CH341a is a fixed-function
device (and performs poorly).
Why pay $10 for a CH341a when you can pay $10 for a Raspberry Pi Pico which is
electrically and functionally superior in every way? And the Pico is completely
open source, right down to the boot rom.
Identify which flash type you have
==================================
----------------------------------
In all of them, a dot or marking shows pin 1 (in the case of WSON8, pad 1).
@ -232,8 +348,7 @@ Use the following photos and then look at your board. When you've figured out
what type of chip you have, use that knowledge and the rest of this guide, to
accomplish your goal, which is to read from and/or write to the boot flash.
SOIC8
-----
### SOIC8
![](https://av.canoeboot.org/chip/soic8.jpg)
@ -248,8 +363,7 @@ SOIC8
| 7 | HOLD |
| 8 | VCC |
SOIC16
------
### SOIC16
![](https://av.canoeboot.org/chip/soic16.jpg)
@ -266,8 +380,7 @@ SOIC16
SOIC8 and SOIC16 are the most common types, but there are others:
WSON8
-----
### WSON8
It will be like this on an X200S or X200 Tablet:\
@ -278,15 +391,13 @@ On T400S, it is in this location near the RAM:\
![](https://av.canoeboot.org/t400s/soic8.jpg)\
NOTE: in this photo, the chip has been replaced with SOIC8
DIP8
----
### DIP8
![](https://av.canoeboot.org/dip8/dip8.jpg)
Pinout is the same as SOIC8 above.
Supply Voltage
--------------
### Supply Voltage
Historically, all boards that Canoeboot supports happened to have SPI NOR chips
which work at 3.3V DC. With the recent addition of Chromebooks whose chips are
@ -299,18 +410,16 @@ connect it to the chip through an adapter or logic level converter, never
directly.
Software configuration
======================
----------------------
General/Le potato
-----------------
### General/Le potato
The [generic guide](spi_generic.md) is intended to help those looking to use an
SBC which is not listed in this guide.
The guide will, however, use the libre computer 'Le Potato' as a reference board.
If you have that board, you should refer to the [generic guide.](spi_generic.md)
BeagleBone Black (BBB)
----------------------
### BeagleBone Black (BBB)
SSH into your BeagleBone Black. It is assumed that you are running Debian 9 on
your BBB. You will run `flashprog` from your BBB.
@ -372,8 +481,7 @@ Note: flashprog can never write if the flash chip isn't found automatically.
This means that it's working (the clip isn't connected to any flash
chip, so the error is fine).
Caution about BBB
-----------------
### Caution about BBB
BeagleBone Black is not recommended, because it's very slow and unstable for
SPI flashing, and nowadays much better options exist. We used to mainly
@ -382,8 +490,7 @@ Software on it, but nowadays there are superior options.
TODO: document other SPI flashers
Rasberry Pi (RPi)
-----------------
### Rasberry Pi (RPi)
SSH into your Raspberry Pi. You will run `flashprog` from your Raspberry Pi.
@ -402,9 +509,9 @@ Under the Interface section, you can enable SPI.
The device for communicating via SPI as at `/dev/spidev0.0`
RPi Drive Strength
------------------
Flashrom on the RPi may not be able to detect the SPI flash chip on some
### RPi Drive Strength
Flashprog on the RPi may not be able to detect the SPI flash chip on some
systems, even if your wiring and clip are set up perfectly. This may be due to
the drive strength of the Raspberry Pi GPIOs, which is 8mA by default. Drive
strength is essentially the maximum current the pin can output while also
@ -460,8 +567,7 @@ See
<https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-pads-control>
for more information about the drive strength control on the Pi.
Caution about RPi
-----------------
### Caution about RPi
Basically, the Raspbian project, now called Raspberry Pi OS, put in their repo
an update that added a new "trusted" repository, which just so happened to be
@ -481,8 +587,7 @@ They then removed it, after a public backlash, via the following commits:
* <https://github.com/RPi-Distro/raspberrypi-sys-mods/commit/ed96790e6de281bc393b575c38aa8071ce39b555>
* <https://github.com/RPi-Distro/raspberrypi-sys-mods/commit/4d1afece91008f3787495b520ac03b53fef754c6>
Libre firmware on RPi
---------------------
### Libre firmware on RPi
The boot firmware on older Raspberry Pi models can be replaced, with entirely
libre firmware. This may be a useful additional step, for some users. See:
@ -493,12 +598,11 @@ Website:
<https://librerpi.github.io/>
Install flashprog
----------------
### Install flashprog
If you're using a BBB or RPi, you will do this while SSH'd into those.
Flashrom is the software that you will use, for dumping, erasing and rewriting
Flashprog is the software that you will use, for dumping, erasing and rewriting
the contents of your NOR flash.
In the Canoeboot build system, from the Git repository, you can download and
@ -544,13 +648,12 @@ Example usage:
./elf/flashprog/flashprog -p PROGRAMMER --workaround-mx
How to use flashprog
===================
--------------------
Read past these sections, further down this page, to learn about specific chip
types and how to wire them.
Reading
-------
### Reading
Before flashing a new ROM image, it is highly advisable that you dump the
current chip contents to a file.
@ -596,8 +699,21 @@ they should all be the same length (VCC and GND wires can be longer).
This advice is *especially* applicable to the BBB, which is highly unreliable.
Writing
-------
For boards with more than one flash chip you will need to read from both chips
and combine them into a single file.
Most of the time, a two chip setup includes one 8mb 'bottom' chip and one 4mb
'top' chip.
The setup just described applies to the x230, t430, t530, and t440p.
For other boards, make sure you know which chip contains the lower and upper
portions of the rom.
You can combine both flashes together with `cat` for example:
cat bottom_8mb.rom top_4mb.rom > full_12mb.rom
Note that you will need this combined rom if you intend to manually extract vendor
files, which is a method not officially supported by Canoeboot's build system.
### Writing
Next, run this command (RPi):
@ -624,14 +740,22 @@ Verifying flash... VERIFIED.
If it says "VERIFIED" or says that the chip contents are identical to the
requested image, then the chip is properly flashed.
If the board you are writing to has two chips you'll need to split the rom into
two sections.
For example, to split a rom for the 12MB flash setups:
dd if=canoeboot_12mb.rom bs=1M of=bottom.rom count=8
dd if=canoeboot_12mb.rom bs=1M of=top.rom skip=8
Flash the resulting roms to each of their respective chips according to the above instructions.
Hardware configuration
======================
----------------------
Refer to the above guidance about software configuration. The following advice
will teach you how to wire each type of flash chip.
WARNINGS
--------
### WARNINGS
Do not connect the power source until your chip is otherwise properly
wired. For instance, do not connect a test clip that has power attached.
@ -656,16 +780,14 @@ DO NOT connect more than 1 DC power source to your flash chip either!
Mixing voltages like that can easily cause damage to your equipment, and to
your chip/mainboard.
MISO/MOSI/CS/CLK lines
----------------------
### MISO/MOSI/CS/CLK lines
You may want to add 47ohm series resistors on these lines, when flashing the
chips. Only do it on those lines (NOT the VCC or GND lines). This provides
some protection from over-current. On Intel platforms, the SPI flash is usually
connected via such resistors, directly to the Southbridge chipset.
ISP programming and VCC diode
-----------------------------
### ISP programming and VCC diode
ISP means in-system programming. It's when you flash a chip that is already
mounted to the mainboard of your computer that you wish to install Canoeboot
@ -705,8 +827,7 @@ the flash into a breadboard when flashing.
TODO: Make a page on canoeboot.org, showing how to do this on all mainboards
supported by canoeboot.
GPIO pins on BeagleBone Black (BBB)
-----------------------------------
### GPIO pins on BeagleBone Black (BBB)
Use this image for reference when connecting the pomona to the BBB:
<https://beagleboard.org/Support/bone101#headers> (D0 = MISO or connects
@ -715,8 +836,7 @@ to MISO).
On that page, look at the *P9 header*. It is what you will use to wire up your
chip for flashing.
GPIO pins on Raspberry Pi (RPi) 40 Pin
--------------------------------------
### GPIO pins on Raspberry Pi (RPi) 40 Pin
This diagram shows the pinout for most modern Pi's and Pi derivatives.
The diagram shows the pins of an RPi on the left and the two SOIC clips
@ -724,8 +844,7 @@ on the left.
![](https://av.canoeboot.org/rpi/wiring.webp)
GPIO pins on Raspberry Pi (RPi) 26 Pin
-------------------------------
### GPIO pins on Raspberry Pi (RPi) 26 Pin
Diagram of the 26 GPIO Pins of the Raspberry Pi Model B (for the Model
B+ with 40 pins, start counting from the right and leave 14 pins):
@ -734,8 +853,7 @@ B+ with 40 pins, start counting from the right and leave 14 pins):
Use this as a reference for the other sections in this page, seen below:
SOIC8/DIP8/WSON8 wiring diagram
-------------------------------
### SOIC8/DIP8/WSON8 wiring diagram
Refer to this diagram:
@ -762,8 +880,7 @@ will provide a stable 3.3V voltage, with adequate current levels. On those
laptops, this is necessary because the flash shares a common 3.3V DC rail with
many other ICs that all draw quite a lot of current.
SOIC16 wiring diagram (Raspberry Pi)
------------------------------------
### SOIC16 wiring diagram (Raspberry Pi)
RPi GPIO header:\
![](https://av.canoeboot.org/rpi/0009.png)
@ -801,8 +918,7 @@ NOTE: pins 1 and 9 are WP/HOLD pins. If flashing a chip on a breadboard, please
use pull-up resistors on those (see notes below), and decoupling capacitor on
pin 2 (VCC).
Pull-up resistors and decoupling capacitors
-------------------------------------------
### Pull-up resistors and decoupling capacitors
**Do this for chips mounted to a breadboard. Ignore this section if you're
flashing a chip that is already soldered to a mainboard.**
@ -850,8 +966,7 @@ WP/HOLD are not pin 3/7 like above, but instead pins 1 and 9, so wire your
pull-up resistors on those. VCC on SOIC16 is pin 2, so wire your decoupling
capacitors up on that.
SOIC8/WSON8/DIP8/SOIC16 not mounted to a mainboard
--------------------------------------------------
### SOIC8/WSON8/DIP8/SOIC16 not mounted to a mainboard
If your system has lower capacity SPI flash, you can upgrade. On *most* systems,
SPI flash is memory mapped and the maximum (in practise) that you can use is a
@ -923,8 +1038,7 @@ and good 60/40 or 63/37 leaded solder (don't use lead-free):
![](https://av.canoeboot.org/dip8/adapter.jpg)
![](https://av.canoeboot.org/dip8/sop8todip8.jpg)
SOIC8/SOIC16 soldered to a mainboard
------------------------------------
### SOIC8/SOIC16 soldered to a mainboard
This is an example of *in-system programming* or *ISP* for short.
@ -949,8 +1063,7 @@ Here is an example of a test clip connected for SOIC16:\
And here is an example photo for SOIC8:\
![](https://av.canoeboot.org/x60/th_bbb_flashing.jpg)
DIP8 soldered to the mainboard
------------------------------
### DIP8 soldered to the mainboard
It is extremely cursed for DIP8 to be soldered directly to the mainboard. It is
usually mounted to a socket.
@ -965,8 +1078,7 @@ directly soldered. It is almost always mounted in a socket.
Your DIP8 IC has the same pinout as a SOIC8 IC.
Replace WSON8 IC with SOIC8
---------------------------
### Replace WSON8 IC with SOIC8
**NOTE: You can alternatively purchase WSON8 probes from a site like Aliexpress.
They look similar to SOIC8 clips, and they work similarly.**
@ -1081,7 +1193,7 @@ evaporates quickly and it does not leave a corrosive residue.
-------------------------------------------------------------------------------
LICENSING
=========
---------
This page is released under different copyright terms than most other pages
on this website.

View File

@ -23,10 +23,9 @@ canoeboot 目前记录了这些 SPI 编程器的使用方法:
你在读的*这个*教程,使用的是*外部*编程器。之所以叫*外部*,是因为用的不是主板上的*内部*编程器。
Raspberry Pi Pico
=================
-----------------
RP2040/RP2530 both supported
----------------------------
### RP2040/RP2530 both supported
**Pico 2 and other RP2530 dongles also supported, on Canoeboot 20250107
or higher. Releases before this only supported the original Pico, and other
@ -44,8 +43,7 @@ Additionally, all the software running on it is free, down to the full
versions (Pico W & Pico WH) need vendor firmware to use the Wi-Fi chip,
but that is not needed for following this guide.
Download serprog firmware pre-compiled
-------------------------
### Download serprog firmware pre-compiled
Download the pico serprog tarball from Canoeboot releases. For example, the
Canoeboot 20250107 one would be
@ -53,8 +51,7 @@ named: `canoeboot-20250107_pico_serprog.tar.xz` - it's available under
the `roms/` directory in each release. With these binaries, you can easily
get started.
Build serprog firmware from source
----------------------------------
### Build serprog firmware from source
You can alternatively download the serprog firmware here:\
<https://codeberg.org/libreboot/pico-serprog>\
@ -77,8 +74,7 @@ at `bin/serprog_pico/serprog_pico.uf2`
and `bin/serprog_pico/serprog_pico_w.uf2` - images with `pico2` in the
file name are for the Pico 2, and they can also be used.
Install the serprog firmware
----------------------------
### Install the serprog firmware
First, connect just the Pico to your computer with a micro-USB cable.
Mount it like any other USB flash drive. If it isn't detected, you might need
@ -94,8 +90,7 @@ release tarball.
**NOTE: Other RP2040/2530 devices will also work. You just have to match
the right pins and use the correct firmware file!**
Logic levels
------------
### Logic levels
A Pico has proper 3.3V logic levels, unlike a ch341a. Which means it won't
destroy your board by sending 5V to it. If you have a 1.8V flash chip,
@ -103,8 +98,7 @@ you need to add a logic level converter. **Please ensure that you have matched
the voltage of your programmer to the voltage of your chip; both the data lines
and power lines to the chip must match.**
Wiring
------
### Wiring
Disconnect the Pico and proceed to wire it to your
[flash chip](/docs/install/spi.html#identify-which-flash-type-you-have).
@ -141,7 +135,7 @@ not worth it. The 12Mbps USB port is limiting the actual speed here.
Higher speeds might work nicely, on Pico 2.
不要使用 CH341A
==================
----------------
canoeboot 支持的机器NOR flash 使用的是 3.3V DC 或 1.8V DC这也包括了数据线路。CH341A 在数据线路上有 5V 逻辑电平,这会损伤 SPI flash 和它连接的南桥,以及它连接的其它任何东西。
@ -172,26 +166,23 @@ canoeboot 支持的机器NOR flash 使用的是 3.3V DC 或 1.8V DC这也
绿色版本(上面未展示)可能已经连接了 3.3v 逻辑电平,但仍然需要为 WP/HOLD 增加上拉电阻。
识别你的 flash 类型
==================================
-------------------
每一个 flash都会有一个点或者标记表明这是第 1 引脚(如 WSON8 的第 1 焊盘)。
参考下面的图片,再看看你的主板。搞清楚你的芯片类型之后,根据你了解的情况及本教程剩下的部分,来实现你的目标,即对你的引导 flash 进行读/写。
SOIC8
-----
### SOIC8
![](https://av.canoeboot.org/chip/soic8.jpg)
SOIC16
------
### SOIC16
![](https://av.canoeboot.org/chip/soic16.jpg)
SOIC8 和 SOIC16 是最常见的类型,但也有其他的类型:
WSON8
-----
### WSON8
X200S 或 X200 Tablet 上是像这样的:\
![](https://av.canoeboot.org/x200t_flash/X200T-flashchip-location.jpg)
@ -200,28 +191,24 @@ T400S 上,是在 RAM 附近的这个位置:\
![](https://av.canoeboot.org/t400s/soic8.jpg)\
注意: 本照片中的芯片换成了 SOIC8
DIP8
----
### DIP8
![](https://av.canoeboot.org/dip8/dip8.jpg)
电源电压
--------------
### 电源电压
之前Canoeboot 支持的所有主板,刚好都有在 3.3V DC 下工作的 SPI NOR 芯片。因为最近添加了额定 1.8V DC 芯片的 Chromebook所以就不再是这么回事了。
检查主板上芯片的元件型号,再查找一下它的数据表。找出它需要的电源电压并记下来。如果它和你外部刷写硬件的输出电压不匹配,那你只能通过适配器或者逻辑电平转换器,把它连至芯片,而绝不能直接连接。
软件配置
======================
--------
通用/Le potato
-----------------
### 通用/Le potato
[通用指南](spi_generic.md)可以帮助你使用本指南未列出的 SBC单板电脑。不过那份指南会使用 libre computer 'Le Potato' 作为参考板。如果你有那块板子,你应该参考 [通用指南](spi_generic.md)。
BeagleBone BlackBBB
----------------------
### BeagleBone BlackBBB
SSH 连接到你的 BeagleBone Black。假定你在 BBB 上用的是 Debian 9。你将在 BBB 上运行 `flashprog`
@ -278,15 +265,13 @@ Note: flashprog can never write if the flash chip isn't found automatically.
这表示正常工作了(夹子没连接任何 flash 芯片,所以出错是正常的)。
BBB 注意事项
-----------------
### BBB 注意事项
不建议使用 BeagleBone Black因为拿它来进行 SPI 刷写,速度很慢而且不稳定,并且现在有更好的选择了。我们以前建议使用 BBB因为它可以完全运行自由软件但现在有了更佳的选择。
计划:讲解其他 SPI 刷写工具
Rasberry PiRPi
-----------------
### Rasberry PiRPi
SSH 连接到树莓派。你将在树莓派上运行 `flashprog`
@ -303,8 +288,7 @@ SSH 连接到树莓派。你将在树莓派上运行 `flashprog`。
用于 SPI 通讯的设备位于 `/dev/spidev0.0`
RPi 驱动强度Drive Strength
------------------
### RPi 驱动强度Drive Strength
RPi 的 flashprog 可能无法检测到一些系统的 SPI flash即使你已经完美地连好了线并夹住了芯片。这可能是因为树莓派 GPIO 的驱动强度,它默认是 8mA。驱动强度本质上就是在保持高电平最低电压的同时引脚最高能输出的电流。对树莓派而言这个电压是 3.0 V。
@ -334,8 +318,7 @@ RPi 的 flashprog 可能无法检测到一些系统的 SPI flash即使你已
<https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-pads-control> 了解树莓派上的驱动强度控制。
RPi 注意事项
-----------------
### RPi 注意事项
基本上Raspbian 项目,即现在的 Raspberry Pi OS对其仓库进行了更新增加了一个新的“受信任”仓库这刚好是一个微软软件仓库。他们这么做似乎是为了 VS Code但问题在于这可以让微软自由地控制他们喜欢的依赖根据 apt-get 规则)。每当你更新,你都会对微软的服务器发送请求。不觉得这很奇怪吗?
@ -348,8 +331,7 @@ RPi 注意事项
* <https://github.com/RPi-Distro/raspberrypi-sys-mods/commit/ed96790e6de281bc393b575c38aa8071ce39b555>
* <https://github.com/RPi-Distro/raspberrypi-sys-mods/commit/4d1afece91008f3787495b520ac03b53fef754c6>
RPi 的自由固件
---------------------
### RPi 的自由固件
旧款树莓派的引导固件可以替换成完全自由的固件。对有些用户而言,这额外的一步可能很有用。参见:
@ -359,8 +341,7 @@ RPi 的自由固件
<https://librerpi.github.io/>
安装 flashprog
----------------
### 安装 flashprog
如果你在使用 BBB 或者 RPi你需要在 SSH 进去之后再这么做。
@ -388,12 +369,11 @@ Flashprog 是用来读出、擦除、重写 NOR flash 内容的软件。
如果你直接下载了 flashprog 源代码,你可以进入目录并直接运行 `make`。在 canoeboot 构建系统中,`config/dependencies/` 处的脚本写明了构建依赖,你可以直接使用 `apt-get` 软件安装。
如何使用 flashprog
===================
------------------
请先阅读本页更下方的部分,了解特定的芯片类型及其接线方法。
读出
-------
### 读出
刷入新的 ROM 镜像之前,强烈建议你将当前芯片的内容读出到一个文件。
@ -433,8 +413,7 @@ BBB 的话,这样:
注意,如果你要手动提取 blob那你就需要这个组合而成的 rom。
写入
-------
### 写入
接下来运行这个命令RPi
@ -459,12 +438,11 @@ Verifying flash... VERIFIED.
如果它显示“VERIFIED”了或者芯片的内容和请求的镜像一致那芯片就刷写成功了。
硬件配置
======================
--------
软件配置请参考上面的教程。下面的建议会教你如何为每种 flash 芯片接线。
警告
--------
### 警告
在芯片还没有正确接好线时,先不要连接电源。例如,不要连接到接通电源的测试夹。
@ -476,13 +454,11 @@ Verifying flash... VERIFIED.
也不要给你的 flash 芯片连接超过 1 个 DC 电源!那样混合电压的话,很容易损伤你的设备及芯片/主板。
MISO/MOSI/CS/CLK 接线
----------------------
### MISO/MOSI/CS/CLK 接线
在刷写这些芯片的时候,你可能也想增加 47 欧姆的串联电阻(不是加在 VCC 或 GND 线上)。这可以提供一些过流保护。在 Intel 平台上SPI flash 直接连接到南桥芯片组时,通常会通过这样的电阻。
ISP 编程及 VCC 二极管
-----------------------------
### ISP 编程及 VCC 二极管
ISP 即系统内编程in-system programming。它指的是一块芯片已经装在了你想安装 canoeboot 的电脑的主板上,而你要对这块芯片进行刷写。
@ -498,22 +474,19 @@ ISP 即系统内编程in-system programming。它指的是一块芯片
计划:在 canoeboot.org 创建一个页面,讲怎么在 canoeboot 支持的所有主板这么做。
BeagleBone BlackBBB上的 GPIO 引脚
-----------------------------------
### BeagleBone BlackBBB上的 GPIO 引脚
把 pomona 夹子连接到 BBB 时,参考这张图片:<https://beagleboard.org/Support/bone101#headers> D0 = MISO 或连接到 MISO
如果你要用 *P9 排针*来连接芯片刷写的话,请看那个页面的那个部分。
40 引脚树莓派RPi的 GPIO 引脚
--------------------------------------
### 40 引脚树莓派RPi的 GPIO 引脚
下图展示了大多数现代树莓派及其衍生版的引脚分配。图中右边是 RPi 的引脚,左边是两个 SOIC 夹。
![](https://av.canoeboot.org/rpi/wiring.webp)
26 引脚树莓派RPi的 GPIO 引脚
-------------------------------
### 26 引脚树莓派RPi的 GPIO 引脚
树莓派 B 款 26 GPIO 引脚图(对 40 引脚的 B+ 款而言,从右边开始数,剩下 14 个引脚):
@ -521,8 +494,7 @@ BeagleBone BlackBBB上的 GPIO 引脚
此处的信息,也请在阅读以下其他部分时参考:
SOIC8/DIP8/WSON8 接线图
-------------------------------
### SOIC8/DIP8/WSON8 接线图
参考此表:
@ -543,8 +515,7 @@ SOIC8/DIP8/WSON8 接线图
注意:在 X60/T60 thinkpad 上,不要连接第 8 引脚。而是将你的 PSU 接在主板供电口上,但不要启动主板。这会提供稳定的 3.3V 电压及足够的电流。在这些笔记本上,这是必要的,因为 flash 和其他许多 IC 共用一路 3.3V DC 电源,这些 IC 都会分走很多电流。
SOIC16 接线图(树莓派)
------------------------------------
### SOIC16 接线图(树莓派)
RPi GPIO 排针:\
![](https://av.canoeboot.org/rpi/0009.webp)
@ -580,8 +551,7 @@ BBB P9 排针:\
注意:第 1 和第 9 引脚是 WP/HOLD 引脚。在面包板上刷写芯片时,请对它们使用上拉电阻(见上面的注记),并在第 2 引脚VCC使用去耦电容。
上拉电阻和去耦电容
-------------------------------------------
### 上拉电阻和去耦电容
**如果芯片是装在面包板上的,那请遵循这里的步骤。如果你要刷写的芯片已经焊接在了主板上,那请忽略这一部分。**
@ -602,8 +572,7 @@ SOIC8/WSON8/DIP8如果芯片在主板上那第 8 引脚,即 VCC就已
SOIC16同上但在面包板上使用 SOIC16 socket。在 SOIC16 上WP/HOLD 不同于上面的第 3/7 引脚,而是第 1 和第 9 引脚所以要把上拉电阻接到那里。SOIC16 上的 VCC 是第 2 引脚,所以要把去耦电容接到那里。
SOIC8/WSON8/DIP8/SOIC16 未安装在主板上
--------------------------------------------------
### SOIC8/WSON8/DIP8/SOIC16 未安装在主板上
如果你的机器的 SPI flash 容量较低,那你可以升级。在*大多数*机器上SPI flash 是经过映射的内存,而(实际上)你最大可以使用 16MiB 的芯片。例如canoeboot 的 KGPE-D16 和 KCMA-D8 主板默认有 2MiB flash但你可以对它们轻松升级。另一个例子是 ThinkPad X200S、X200 Tablet 和 T400S它们都有 WSON8而最佳的方案就是将它替换为 SOIC8 flash 芯片。
@ -640,8 +609,7 @@ SOIC8/WSON8/DIP8/SOIC16 未安装在主板上
![](https://av.canoeboot.org/dip8/adapter.jpg)
![](https://av.canoeboot.org/dip8/sop8todip8.jpg)
SOIC8/SOIC16 焊接在主板上
------------------------------------
### SOIC8/SOIC16 焊接在主板上
这是*系统内编程*或 *ISP* 的一个简短例子。
@ -657,8 +625,7 @@ Pomona 5252 是一个 SOIC16 测试夹。也有其他的可以用,但这个是
SOIC8 例子的照片如下:\
![](https://av.canoeboot.org/x60/th_bbb_flashing.jpg)
DIP8 焊接在主板上
------------------------------
### DIP8 焊接在主板上
把 DIP8 直接焊接在主板上怪异至极。它通常是安装在芯片座上的。
@ -668,8 +635,7 @@ DIP8 焊接在主板上
DIP8 IC 的引脚分配和 SOIC8 IC 一样。
使用 SOIC8 替换 WSON8 IC
---------------------------
### 使用 SOIC8 替换 WSON8 IC
**NOTE: You can alternatively purchase WSON8 probes from a site like Aliexpress.
They look similar to SOIC8 clips, and they work similarly.**
@ -735,7 +701,7 @@ WSON8 IC\
-------------------------------------------------------------------------------
许可证
=========
------
本页面发布所使用的版权条款,不同于本网站上大多数其他页面。

View File

@ -6,7 +6,10 @@ x-toc-enable: true
NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog)
now, as of 3 May 2024, which is a fork of flashrom.
There are a plethora of single board computers with which you can flash canoeboot to a SOIC chip.
Background information
----------------------
There are a plethora of single board computers with which you can flash Canoeboot to a SOIC chip.
Some users might be daunted by the price of a raspberry pi.
This guide is intended to help users looking to use a programmer which is not listed in the [main guide.](spi.md)
As an example, this guide will use the [libre computer 'le potato.'](https://libre.computer/products/aml-s905x-cc/)
@ -22,7 +25,7 @@ All of this means that you should try to find a board that is *known* to support
It is *not* enough to know that the board itself supports SPI.
Selecting an Operating System
=============================
-----------------------------
In theory, any linux based operating system will do.
In practice, many distros are highly limited when it comes to single-board-computers.
@ -36,7 +39,7 @@ If your SBC supports [Raspbian](https://www.raspberrypi.com/software/) then usin
As a bonus, you may refer to the [main guide](spi.md) if the SBC you have supports raspbian, should you get confused with this guide.
Connecting to your Programmer
=============================
-----------------------------
Many SBC operating systems enable ssh by default.
If the OS you chose does not enable ssh on first boot, try checking the distro documentation and looking for terms such as 'headless install.'
@ -54,10 +57,10 @@ SSH to your programmer using the default credentials as specified in your distro
The IP address is the one determined in the earlier step.
For example:
`ssh root@192.168.0.167`
ssh root@192.168.0.167
Finding GPIO Pins
=================
-----------------
If you have determined that a board supports SPI then the only step left is to
determine the correct location of the SPI pins.
@ -69,7 +72,7 @@ Match each of the categories in the 'signal' column with those in the 'pin' colu
Using this method, you can theoretically use any single board computer with SPI support.
Enabling SPI
============
------------
The modules needed and methods to enable SPI vary based on the SBC you choose.
You should always make sure there is a well documented method for enabling SPI on your SBC before purchasing.
@ -80,8 +83,8 @@ sudo ldto enable spicc spicc-spidev
sudo ldto merge spicc spicc-spidev
```
Using Flashprog
==============
Using flashprog
--------------
Some Linux distros will provide flashprog in their default repositories.

View File

@ -1,5 +1,5 @@
---
title: Flashing the ThinkPad T400 externally
title: Install Canoeboot on Lenovo ThinkPad T400
x-toc-enable: true
...
@ -20,7 +20,7 @@ x-toc-enable: true
3650 on some models) |
| **Display** | 1280x800/1440x900 TFT |
| **Memory** | 2 or 4GB (Upgradable to 8GB) |
| **Architecture** | x86_64 |
| **Architecture** | x86\_64 |
| **EC** | Proprietary |
| **Original boot firmware** | LenovoBIOS |
| **Intel ME/AMD PSP** | Present. Can be completly disabled. |
@ -51,16 +51,12 @@ P*: Partially works with vendor firmware
| **SeaBIOS with GRUB** | Works |
</div>
Dell Latitude E6400
===================
Open source BIOS/UEFI firmware
-------------------------
**If you haven't bought an T400 yet: the [Dell Latitude
E6400](../install/latitude.md) is much easier to flash; no disassembly required,
it can be flashed entirely in software from Dell BIOS to Canoeboot. It is the
same hardware generation (GM45), with same CPUs, video processor, etc.**
Introduction
============
This document will teach you how to install Canoeboot, on your
Lenovo ThinkPad T400 laptop motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware.
It is believed that all or most laptops of the model T400 are compatible. See notes
about [CPU
@ -79,12 +75,20 @@ modified descriptor: see [../install/ich9utils.md](../install/ich9utils.md)*
Flashing instructions can be found at
[../install/\#flashprog](../install/#flashprog)
Dell Latitude E6400
-------------------
**If you haven't bought an T400 yet: the [Dell Latitude
E6400](../install/latitude.md) is much easier to flash; no disassembly required,
it can be flashed entirely in software from Dell BIOS to Canoeboot. It is the
same hardware generation (GM45), with same CPUs, video processor, etc.**
EC update {#ecupdate}
=========
---------------------
It is recommended that you update to the latest EC firmware version. The
[EC firmware](../../faq.md#ec-embedded-controller-firmware) is separate from
libreboot, so we don't actually provide that, but if you still have
Canoeboot, so we don't actually provide that, but if you still have
Lenovo BIOS then you can just run the Lenovo BIOS update utility, which
will update both the BIOS and EC version. See:
@ -92,7 +96,7 @@ will update both the BIOS and EC version. See:
- <http://www.thinkwiki.org/wiki/BIOS_update_without_optical_disk>
NOTE: this can only be done when you are using Lenovo BIOS. How to
update the EC firmware while running libreboot is unknown. libreboot
update the EC firmware while running Canoeboot is unknown. Canoeboot
only replaces the BIOS firmware, not EC.
Updated EC firmware has several advantages e.g. bettery battery
@ -102,7 +106,7 @@ The T400 is almost identical to the X200, code-wise. See
[x200.md](x200.md).
Installation notes
============
------------------
[External flashing](spi.md) required, if Lenovo BIOS is running.
@ -118,15 +122,14 @@ the screws on page 114 (with title "1130 Keyboard bezel") are swapped
and if you follow the HMM you will punch a hole through the bezel in the
upper right corner.
Serial port {#serial_port}
-----------
### Serial port {#serial_port}
EHCI debug might not be needed. It has been reported that the docking
station for this laptop has a serial port, so it might be possible to
use that instead.
A note about CPUs
=================
-----------------
[ThinkWiki](http://www.thinkwiki.org/wiki/Category:T400) has a list of
CPUs for this system. The Core 2 Duo P8400, P8600 and P8700 are believed
@ -134,8 +137,7 @@ to work with Canoeboot.
T9600, T9500, T9550 and T9900 are all compatible, as reported by users.
Quad-core CPUs
--------------
### Quad-core CPUs
Very likely to be compatible, but requires hardware modification.
Based on info from German forum post about installing Core Quad CPU on T500 found in coreboot mailing list. Currently work in progress and no guide available.
@ -143,9 +145,8 @@ Based on info from German forum post about installing Core Quad CPU on T500 foun
- [Coreboot mailing list post](https://mail.coreboot.org/pipermail/coreboot/2016-November/082463.html)
- [German forum post about install Core Quad on T500](https://thinkpad-forum.de/threads/199129)
A note about GPUs
=================
-----------------
Some models have an Intel GPU, while others have both an ATI and an
Intel GPU; this is referred to as "switchable graphics". In the *BIOS
@ -158,29 +159,28 @@ Intel GPU is used and the ATI GPU is disabled, so native graphics
initialization works all the same.
CPU paste required
==================
------------------
See [\#paste](#paste).
Flash chip size {#flashchips}
===============
---------------------------
Use this to find out:
flashprog -p internal
MAC address {#macaddress}
===========
------------------------
Refer to [mac\_address.md](mac_address.md).
How to flash externally
=========================
-----------------------
Refer to [spi.md](spi.md) as a guide for external re-flashing.
The procedure
-------------
### The procedure
Remove *all* screws, placing them in the order that you removed them:\
![](https://av.canoeboot.org/t400/0001.jpg) ![](https://av.canoeboot.org/t400/0002.jpg)
@ -278,7 +278,7 @@ Refer to the external flashing instructions [here](spi.md), and when you're
done, re-assemble your laptop.
Thermal paste (IMPORTANT)
=========================
-------------------------
Because part of this procedure involved removing the heatsink, you will
need to apply new paste. Arctic MX-4 is ok. You will also need isopropyl
@ -295,7 +295,7 @@ show how to properly apply the thermal paste. Other guides online detail
the proper application procedure.
Memory
======
------
In DDR3 machines with Cantiga (GM45/GS45/PM45), northbridge requires sticks
that will work as PC3-8500 (faster PC3/PC3L sticks can work as PC3-8500).

View File

@ -1,5 +1,5 @@
---
title: ThinkPad T500 external flashing
title: Install Canoeboot on Lenovo ThinkPad T500 and/or W500
x-toc-enable: true
...
@ -20,7 +20,7 @@ x-toc-enable: true
3650 on some models) |
| **Display** | 1280x800/1680x1050/1920x1200 TFT |
| **Memory** | 2 or 4GB (Upgradable to 8GB) |
| **Architecture** | x86_64 |
| **Architecture** | x86\_64 |
| **EC** | Proprietary |
| **Original boot firmware** | LenovoBIOS |
| **Intel ME/AMD PSP** | Present. Can be completly disabled. |
@ -51,16 +51,12 @@ P*: Partially works with vendor firmware
| **SeaBIOS with GRUB** | Works |
</div>
Dell Latitude E6400
===================
Open source BIOS/UEFI firmware
-------------------------
**If you haven't bought an T500 yet: the [Dell Latitude
E6400](../install/latitude.md) is much easier to flash; no disassembly required,
it can be flashed entirely in software from Dell BIOS to Canoeboot. It is the
same hardware generation (GM45), with same CPUs, video processor, etc.**
Introduction
============
This document will teach you how to install Canoeboot, on your
Lenovo ThinkPad T500 or ThinkPad W500 laptop motherboard. Canoeboot replaces
proprietary BIOS/UEFI firmware.
It is believed that all or most T500 laptops are compatible. See notes
about [CPU
@ -81,8 +77,16 @@ modified descriptor: see [../install/ich9utils.md](../install/ich9utils.md)*
Flashing instructions can be found at
[../install/\#flashprog](../install/#flashprog)
Dell Latitude E6400
-------------------
**If you haven't bought an T500 yet: the [Dell Latitude
E6400](../install/latitude.md) is much easier to flash; no disassembly required,
it can be flashed entirely in software from Dell BIOS to Canoeboot. It is the
same hardware generation (GM45), with same CPUs, video processor, etc.**
EC update {#ecupdate}
=========
-------------------
It is recommended that you update to the latest EC firmware version. The
[EC firmware](../../faq.md#ec-embedded-controller-firmware) is separate from
@ -104,7 +108,7 @@ The T500 is almost identical to the X200, code-wise. See
[x200.md](x200.md).
Installation notes
==================
------------------
[External flashing](spi.md) required, if Lenovo BIOS is running.
@ -114,15 +118,14 @@ followed (adapted) if you brick your T500, to know how to recover.
W500 is also mostly compatible with this guide.
Serial port {#serial_port}
-----------
### Serial port {#serial_port}
EHCI debug might not be needed. It has been reported that the docking
station for this laptop has a serial port, so it might be possible to
use that instead.
A note about CPUs
=================
-----------------
[ThinkWiki](http://www.thinkwiki.org/wiki/Category:T500) has a list of
CPUs for this system. The Core 2 Duo P8400, P8600 and P8700 are believed
@ -132,8 +135,8 @@ confirmed working.
T9550 and T9900 was tested by a user, and is compatible as reported in the IRC channel.
T9500 and T9400 may also work, but YMMV.
Quad-core CPUs
--------------
### Quad-core CPUs
Very likely to be compatible, but requires hardware modification.
Based on info from German forum post about installing Core Quad CPU on T500 found in coreboot mailing list. Currently work in progress and no guide available.
@ -149,7 +152,7 @@ everything nicely:
<https://yewtu.be/watch?v=Fs4GjDiOie8>
A note about GPUs
=================
-----------------
Some models have an Intel GPU, while others have both an ATI and an
Intel GPU; this is referred to as "switchable graphics". In the *BIOS
@ -162,29 +165,28 @@ Intel GPU is used and the ATI GPU is disabled, so native graphics
initialization works all the same.
CPU paste required
==================
------------------
See [\#paste](#paste).
Flash chip size {#flashchips}
===============
-----------------------------
Use this to find out:
flashprog -p internal
MAC address {#macaddress}
===========
------------------------
Refer to [mac\_address.md](mac_address.md).
Clip wiring
===========
-----------
Refer to [spi.md](spi.md) as a guide for external re-flashing.
The procedure
-------------
### The procedure
Remove all screws:\
![](https://av.canoeboot.org/t500/0000.jpg)\
@ -287,7 +289,7 @@ Connect your programmer, then connect GND and 3.3V\
Now flash Canoeboot.
Thermal paste (IMPORTANT)
=========================
-------------------------
Because part of this procedure involved removing the heatsink, you will
need to apply new paste. Arctic MX-4 is ok. You will also need isopropyl
@ -304,7 +306,7 @@ show how to properly apply the thermal paste. Other guides online detail
the proper application procedure.
Wifi
====
----
It is recommended that you install a new wifi chipset. This can only be
done after installing Canoeboot, because the original firmware has a
@ -316,7 +318,7 @@ the Intel chip that this T500 came with:\
![](https://av.canoeboot.org/t400/0012.jpg) ![](https://av.canoeboot.org/t400/ar5b95.jpg)
WWAN
====
----
If you have a WWAN/3G card and/or sim card reader, remove them
permanently. The WWAN-3G card has DMA, and proprietary firmware inside;
@ -326,7 +328,7 @@ also track your movements.
Not to be confused with wifi (wifi is fine).
Memory
======
------
In DDR3 machines with Cantiga (GM45/GS45/PM45), northbridge requires sticks
that will work as PC3-8500 (faster PC3/PC3L sticks can work as PC3-8500).

View File

@ -1,10 +1,15 @@
---
title: ThinkPad T60 Recovery guide
title: Install Canoeboot on Lenovo ThinkPad T60
x-toc-enable: true
...
NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog)
now, as of 3 May 2024, which is a fork of flashrom.
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on your
Lenovo Thinkpad T60 motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware. *This* version of the guide shows you how to
flash using external hardware, which can be useful for un-bricking.
"Unbricking" means flashing a known-good (working) ROM. The problem:
you can't boot the system, making this difficult. In this situation,

View File

@ -1,5 +1,5 @@
---
title: First-time ThinkPad X200 flashing
title: Install Canoeboot on Lenovo ThinkPad X200 / X200s / X200 Tablet
x-toc-enable: true
...
@ -18,7 +18,7 @@ x-toc-enable: true
| **Graphics** | Intel GMA X4500MHD |
| **Display** | 1280x800/1440x900 TFT |
| **Memory** | 1,2,3 or 4GB (Upgradable to 8GB, unofficially) |
| **Architecture** | x86_64 |
| **Architecture** | x86\_64 |
| **EC** | Proprietary |
| **Original boot firmware** | LenovoBIOS |
| **Intel ME/AMD PSP** | Present. Can be completly disabled. |
@ -47,16 +47,12 @@ P+: Partially works;
| **SeaBIOS with GRUB** | Works |
</div>
Dell Latitude E6400
===================
Open source BIOS/UEFI firmware
-------------------------
**If you haven't bought an X200 yet: the [Dell Latitude
E6400](../install/latitude.md) is much easier to flash; no disassembly required,
it can be flashed entirely in software from Dell BIOS to Canoeboot. It is the
same hardware generation (GM45), with same CPUs, video processor, etc.**
Introduction
============
This document will teach you how to install Canoeboot, on your
Lenovo ThinkPad X200, X200s or X200 Tablet laptop motherboard. Canoeboot
replaces proprietary BIOS/UEFI firmware.
It is believed that all X200 laptops are compatible. X200S and X200
Tablet will also work, [depending on the configuration](#x200s).
@ -80,8 +76,16 @@ Flashing instructions can be found at
NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog)
now, as of 3 May 2024, which is a fork of flashrom.
Dell Latitude E6400
-------------------
**If you haven't bought an X200 yet: the [Dell Latitude
E6400](../install/latitude.md) is much easier to flash; no disassembly required,
it can be flashed entirely in software from Dell BIOS to Canoeboot. It is the
same hardware generation (GM45), with same CPUs, video processor, etc.**
EC update {#ecupdate}
=========
---------------------
It is recommended that you update to the latest EC firmware version. The
[EC firmware](../../faq.md#ec-embedded-controller-firmware) is separate from
@ -102,7 +106,7 @@ Updated EC firmware has several advantages e.g. better battery
handling.
Battery Recall {#batteryrecall}
==============
------------------------------
[On 21 April 2015, Lenovo expanded a recall on Lenovo batteries found in some ThinkPad models, which includes the X200 and X200S.](https://pcsupport.lenovo.com/cr/en/solutions/hf004122)
To find out if you are affected, use [this Lenovo tool.](https://lenovobattery2014.orderz.com/)
@ -161,14 +165,13 @@ Sources:
Mod](http://forum.thinkpads.com/viewtopic.php?p=660662#p660662)
- [ThinkWiki.de - X200 Displayumbau](http://thinkwiki.de/X200_Displayumbau)
### X200S
#### X200S
<http://forum.thinkpads.com/viewtopic.php?p=618928#p618928> explains that the
X200S screens/assemblies are thinner. You need to replace the whole lid with
one from a normal X200/X201.
How to tell if it has an LED or CCFL? {#led_howtotell}
-------------------------------------
### How to tell if it has an LED or CCFL? {#led_howtotell}
Some X200s have a CCFL backlight and some have an LED backlight, in their LCD
panel. This also means that the inverters will vary, so you must be careful if
@ -182,11 +185,11 @@ a lamp which contains mercury; dispose according to local, state or federal
laws"* (one with an LED backlit panel will say something different).
Installation notes
==================
------------------
[External flashing](spi.md) required, if running Lenovo BIOS.
This guide is for those who want libreboot on their ThinkPad X200 while
This guide is for those who want Canoeboot on their ThinkPad X200 while
they still have the original Lenovo BIOS present. This guide can also be
followed (adapted) if you brick your X200, to know how to recover.
@ -196,22 +199,19 @@ underneath the palm rest. You will then connect an external SPI programmer, to
re-flash the chip externally while it is powered off with the battery removed.
NOTE: This guide only applies to the regular X200. For X200S and X200 Tablet
flashing, please read other guides available on libreboot.org.
flashing, please read other guides available on canoeboot.org.
Flash chip size
===============
### Flash chip size
Run this command on x200 to find out flash chip model and its size:
flashprog -p internal
MAC address
===========
### MAC address
Refer to [mac\_address.md](mac_address.md).
The procedure
-------------
### The procedure
This section is for the X200. This does not apply to the X200S or X200
Tablet (for those systems, you have to remove the motherboard
@ -246,7 +246,7 @@ When you're done, put the system back together. If it doesn't boot, try other
RAM modules because raminit is very unreliable on this platform (in coreboot).
Memory
======
------
In DDR3 machines with Cantiga (GM45/GS45/PM45), northbridge requires sticks
that will work as PC3-8500 (faster PC3/PC3L sticks can work as PC3-8500).
@ -272,8 +272,10 @@ You should see something like this:
Now [install Linux](../linux/).
X200S and X200 Tablet users: GPIO33 trick will not work.
--------------------------------------------------------
Errata
------
### X200S and X200 Tablet users: GPIO33 trick will not work.
sgsit found out about a pin called GPIO33, which can be grounded to
disable the flashing protections by the descriptor and stop the ME from

View File

@ -18,7 +18,7 @@ x-toc-enable: true
| **Графіка** | Intel GMA X4500MHD |
| **Дісплей** | 1280x800/1440x900 TFT |
| **Пам'ять** | 1,2,3 or 4GB (оновлюється до 8GB, неофіційно) |
| **Архітектура** | x86_64 |
| **Архітектура** | x86\_64 |
| **EC** | Пропрієтарний |
| **Оригінальна прошивка** | LenovoBIOS |
| **Intel ME/AMD PSP** | Наявний. Можна повністю вимкнути. |
@ -48,7 +48,7 @@ P+: Частково працює;
</div>
Вступ
============
-----
Вважається що всі ноутбуки X200 сумісні. X200S та X200
Tablet також працюватимуть, [залежно від конфігурації](#x200s).
@ -73,7 +73,7 @@ NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog
now, as of 3 May 2024, which is a fork of flashrom.
Оновлення EC {#ecupdate}
=========
------------------------
Рекомендується оновити мікропрограму EC до останньої версії.
[Прошивка EC](../../faq.md#ec-embedded-controller-firmware) є окремою від
@ -94,7 +94,7 @@ Lenovo BIOS, ви можете просто запустити утиліту о
з акумулятором.
Відкликання батареї {#batteryrecall}
==============
------------------------------------
[21 квітня 2015 року, Lenovo розширила відкликання акумуляторів Lenovo, які були встановлені в деяких моделях Thinkpad, зокрема X200 та X200S.](https://pcsupport.lenovo.com/cr/en/solutions/hf004122)
Щоб дізнатися, чи вас це стосується, використовуйте [цей інструмент Lenovo.](https://lenovobattery2014.orderz.com/)
@ -103,8 +103,7 @@ Lenovo радить власникам відкликаних моделей "в
Після перевірки батареї, Lenovo безкоштовно замінить відкликані батареї.
Інструкції щодо заміни батареї для X200/X200s [можна знайти на цій сторінці.](https://pcsupport.lenovo.com/cr/en/parts/pd003507/)
Список сумісності LCD {#lcd_supported_list}
----------------------
### Список сумісності LCD {#lcd_supported_list}
Список РК-панелей (там перераховані панелі X200):
<http://www.thinkwiki.org/wiki/TFT_display>
@ -153,14 +152,13 @@ Lenovo радить власникам відкликаних моделей "в
Mod](http://forum.thinkpads.com/viewtopic.php?p=660662#p660662)
- [ThinkWiki.de - X200 Displayumbau](http://thinkwiki.de/X200_Displayumbau)
### X200S
#### X200S
<http://forum.thinkpads.com/viewtopic.php?p=618928#p618928> пояснює, що
екрани/блоки X200S тонші. Вам потрібно замінити всю кришку на одну від
звичайного X200/X201.
Як визначити, чи у нього LED, чи CCFL? {#led_howtotell}
-------------------------------------
### Як визначити, чи у нього LED, чи CCFL? {#led_howtotell}
Деякі X200 мають підсвічування CCFL, а деякі - світлодіодне підсвічування на РК-панелі.
Це також означає, що інвертори відрізнятимуться, тому ви повинні бути обережними,
@ -174,7 +172,7 @@ CCFL містять меркурій. На X200 з CCFL підсвіткою (я
законів"* (на тому, що має світлодіодне підсвічування, буде написано щось інше).
Installation notes
==================
------------------
[External flashing](spi.md) required, if running Lenovo BIOS.
@ -191,19 +189,18 @@ Installation notes
будь-ласка прочитайте інші посібники, доступні на libreboot.org.
Розмір флеш-чіпа
===============
----------------
Виконайте цю команду на x200, щоб дізнатися модель флеш-чіпа та його розмір:
flashprog -p internal
MAC адреса
===========
----------
Зверніться до [mac\_address.md](mac_address.md).
Процедура
-------------
### Процедура
Цей розділ стосується X200. Цей не стосується X200S або X200
Tablet (для цих систем потрібно повністю видалити материнську плату,
@ -238,7 +235,7 @@ Tablet (для цих систем потрібно повністю видал
модулі оперативної пам'яті, тому що raminit дуже ненадійний на цій платформі (в coreboot).
Пам'ять
======
-------
У машинах DDR3 з Cantiga (GM45/GS45/PM45), північний міст потребує стіків,
які працюватимуть як PC3-8500 (швидші стіки PC3/PC3L можуть працювати як PC3-8500).
@ -255,8 +252,7 @@ Tablet (для цих систем потрібно повністю видал
![](https://av.libreboot.org/x200/disassembly/0018.jpg)
Завантажуйтесь!
--------
### Завантажуйтесь!
Ви маєте побачити щось подібне цьому:
@ -264,8 +260,7 @@ Tablet (для цих систем потрібно повністю видал
Тепер [встановлюйте Linux](../linux/).
Користувачі X200S та X200 Tablet: трюк GPIO33 не спрацює.
--------------------------------------------------------
### Користувачі X200S та X200 Tablet: трюк GPIO33 не спрацює.
sgsit дізнався про контакт під назвою GPIO33, який можна заземлити,
щоб вимкнути захист прошивки за допомогою дескриптора та зупинити ME від

View File

@ -1,8 +1,15 @@
---
title: ThinkPad X60 Recovery guide
title: Install Canoeboot on Lenovo ThinkPad X60
x-toc-enable: true
...
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on your
Lenovo ThinkPad X60 laptop motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware.
"Unbricking" means flashing a known-good (working) ROM. The problem:
you can't boot the system, making this difficult. In this situation,
external hardware is needed which can flash the SPI chip (where Canoeboot

View File

@ -1,8 +1,15 @@
---
title: ThinkPad X60 Tablet Recovery guide
title: Install Canoeboot on Lenovo ThinkPad X60 Tablet
x-toc-enable: true
...
Open source BIOS/UEFI firmware
------------------------------
This document will teach you how to install Canoeboot, on your
Lenovo Thinkpad X60 Tablet laptop motherboard. Canoeboot replaces proprietary
BIOS/UEFI firmware.
"Unbricking" means flashing a known-good (working) ROM. The problem:
you can't boot the system, making this difficult. In this situation,
external hardware is needed which can flash the SPI chip (where Canoeboot

View File

@ -1,9 +1,10 @@
---
title: Installing Linux
title: Boot Linux distro installers on Canoeboot
x-toc-enable: true
...
# Introduction
GRUB payload assumed
--------------------
This guide assumes that you are using the GRUB bootloader directly.
If you're using SeaBIOS, it's quite intuitive and works similarly to other BIOS
@ -17,7 +18,9 @@ Linux distributions, by default).
These instructions are intended to be generic, applicable to just about any
Linux distribution.
## Prepare the USB Drive in Linux
Prepare the USB Drive in Linux
------------------------------
If you downloaded your ISO while on an existing Linux system, here is how
to create the bootable Linux USB drive:
@ -40,19 +43,25 @@ folder, this is the command we would run:
That's it! You should now be able to boot the installer from your USB drive
(the instructions for doing so will be given later).
## Prepare the USB drive in NetBSD
Prepare the USB drive in NetBSD
-------------------------------
[This page](https://wiki.netbsd.org/tutorials/how_to_install_netbsd_from_an_usb_memory_stick/)
on the NetBSD website shows how to create a NetBSD bootable USB drive, from
within NetBSD itself. You should the `dd` method documented there. This will
work with any Linux ISO image.
## Prepare the USB drive in FreeBSD
Prepare the USB drive in FreeBSD
--------------------------------
[This page](https://www.freebsd.org/doc/handbook/bsdinstall-pre.html) on the
FreeBSD website shows how to create a bootable USB drive for installing
FreeBSD. Use the `dd` method documented. This will work with any Linux ISO
image.
## Prepare the USB drive in LibertyBSD or OpenBSD
Prepare the USB drive in OpenBSD
--------------------------------
If you downloaded your ISO on a LibertyBSD or OpenBSD system, here is how to
create the bootable Linux USB drive:
@ -78,12 +87,14 @@ the OpenBSD installer to it with `dd`. Here's an example:
That's it! You should now be able to boot the installer from your USB drive
(the instructions for doing so will be given later).
## GRUB2 config on external media
GRUB2 config on external media
-------------------------------
If the distro installer image has a `grub.cfg` file inside, this menuentry is
scripted to find it. This works well for many distros.
## Debian or Devuan net install
Debian or Devuan net installation
---------------------------------
Download the Debian or Devuan net installer. You can download the Debian ISO
from [the Debian homepage](https://www.debian.org/), or the Devuan ISO from
@ -96,12 +107,16 @@ You can select the option, in the Canoeboot GRUB menu, to load GRUB config
from external media, and that should work just fine. Alternatively, pick one
of the ISOLINUX-related menu options.
## Booting ISOLINUX Images (Automatic Method)
Booting ISOLINUX Images (Automatic Method)
------------------------------------------
Boot it in GRUB using the `Parse ISOLINUX config (USB)` option. A new menu
should appear in GRUB, showing the boot options for that distro; this is a GRUB
menu, converted from the usual ISOLINUX menu provided by that distro.
## Booting ISOLINUX Images (Manual Method)
Booting ISOLINUX Images (Manual Method)
---------------------------------------
These are generic instructions. They may or may not be correct for your
distribution. You must adapt them appropriately, for whatever Linux
distribution it is that you are trying to install.
@ -151,7 +166,11 @@ to see a list of USB devices/partitions. Of course, this will vary from distro
to distro. If you did all of that correctly, then it should now be booting your
USB drive in the way that you specified.
## Troubleshooting
Troubleshooting
---------------
### Display modes
Most of these issues occur when using Canoeboot with coreboot's `text-mode`
with libgfxinit for video initialization. This mode is useful for text mode
payloads, like `MemTest86+`, which expect `text-mode`, but for Linux
@ -161,6 +180,7 @@ do Kernel Mode Setting, so they are able to initialize a frame buffer in bare
metal regardless of whatever coreboot is doing).
### debian-installer Graphical Corruption in Text-Mode (Debian and Devuan)
When using the ROM images that use Coreboot's `text mode`, instead of the
coreboot framebuffer, while using libgfxinit, booting the Debian or Devuan net
installer results in graphical corruption, because it is trying to switch to a

View File

@ -3,12 +3,21 @@ title: Modifying grub.cfg in CBFS
x-toc-enable: true
...
Configure boot order and so on
------------------------------
Read [Canoeboot flashing guides](../install/) before continuing, and make sure
to back up the current flash contents before you consider following this guide.
Before you follow this guide, it is advisable that you have the ability to
[flash externally](../install/spi.md), just in case something goes wrong.
Canoeboot's *GRUB* payload is much more flexible than most other types of boot
payload, but can sometimes require hands-on configuration depending on what you
want to do.
### Why modify the configuration?
Canoeboot's own GRUB configuration automatically scans for one provided by
your distro, and this automation will usually work. Sometimes, you might wish
to override it with your own custom menuentry or additional logic in the GRUB
@ -16,11 +25,12 @@ config. You can configure GRUB however you like, and this topic is vast so what
to actually *put in the config* will not be covered here.
This guide will simply teach you how to modify the config, but not what to put,
whereas the [GRUB hardening](grub_hardening.md) guide specifically
says what to modify; cross reference that page and this page.
whereas the [GRUB hardening](../linux/grub_hardening.md) guide specifically
says what to modify; cross reference that page and this page, if you want to
follow the GRUB hardening guide. Otherwise, this page contains generic guidance.
**Disable security before continuing**
================================
--------------------------------------
**Before internal flashing, you must first disable `/dev/mem` protections. Make
sure to re-enable them after you're finished.**
@ -32,12 +42,11 @@ flashing, from an existing installation. If you're externally flashing the
machine, you can ignore this advice.
Build dependencies
==================
------------------
**Please first [install build dependencies](../build/).**
Coreboot utilities
------------------
### Coreboot utilities
You need `cbfstool` from coreboot. For whatever board you have, check which
coreboot tree it uses in Canoeboot's build system, cbmk. For example, let's
@ -59,8 +68,7 @@ This will result in the following binary: `elf/cbfstool/default/cbfstool`
We won't assume the path to cbfstool, in the remainder of this guide, so
adapt accordingly.
GRUB utilities
--------------
### GRUB utilities
Again, let's assume the coreboot board is `x200_8mb`. Check the
file `config/coreboot/x200_8mb/target.cfg` for `grubtree` - if it's not set,
@ -72,8 +80,7 @@ This will compile GRUB for the given tree. If you need to use any of the GRUB
utilities, this command will build them and in this example, they will be
available under `src/grub/default/`.
Flashprog
---------
### Flashprog
Compile flashprog like so:
@ -82,7 +89,7 @@ Compile flashprog like so:
A binary will appear at `elf/flashprog/flashprog`.
Default GRUB config
===================
-------------------
The coreboot image has its own filesystem, CBFS, and within CBFS is the GRUB
binary, and within the GRUB binary is another filesystem called memdisk, where
@ -91,10 +98,9 @@ the default GRUB configuration is located.
You can override it by inserting your own GRUB config within CBFS.
Acquiring a GRUB config
=======================
-----------------------
Dump the boot flash
-------------------
### Dump the boot flash
This is only useful if you already inserted a GRUB config in CBFS. Otherwise,
you can grab it from Canoeboot's build system, cbmk.
@ -105,8 +111,7 @@ look at the [main flashing guide](../install/).
Those guides show how to dump the flash contents, which you are advised to do.
Default GRUB config location
----------------------------
### Default GRUB config location
We'll assume that your GRUB tree is `default`, so the
file `config/grub/default/config/payload` is your GRUB config; this will be the
@ -116,7 +121,7 @@ Modify *that* file, or the one you extracted if you already inserted a custom
one before, and you will re-insert it when you're done.
Insert grubtest.cfg
===================
-------------------
Before reading the next section, please note: if you only have the fallback
GRUB config in memdisk, and no configs in CBFS, you can test the modified
@ -128,7 +133,7 @@ Canoeboot will not automatically load it, but it will be available from the
default GRUB menu. This can be useful for test purposes, hence the name.
Insert new grub.cfg
===================
-------------------
If you already have a `grub.cfg` in cbfstool, you can extract and modify that
one, e.g.:
@ -155,7 +160,7 @@ test config from the default menu, before deciding whether to make it the
main config, as `grub.cfg`, overriding the one in GRUB memdisk.
Flash the modified ROM image
============================
----------------------------
Check the [Canoeboot flashing guide](../install/) which says how to flash the
new image.

View File

@ -1,18 +1,47 @@
---
title: Hardening GRUB
title: Hardening GRUB (i.e. Secure canoeBoot)
x-toc-enable: true
...
What is Secure canoeBoot?
-------------------------
Canoeboot provides open source BIOS/UEFI firmware, replacing proprietary
BIOS/UEFI firmware, and that precisely is Canoeboot primary mission; Canoeboot
is a [Free Software](https://writefreesoftware.org/learn) project, *first*.
Our *next* priority is to provide you with *highly secure* boot firmware, free
from backdoors and with well-audited code. *This* document does just that, by
telling you how to *harden* your Canoeboot installation against various physical
access attacks.
### Not UEFI SecureBoot!
UEFI SecureBoot was invented by Microsoft for booting Microsoft Windows. We
don't use UEFI SecureBoot in the Canoeboot project, because UEFI SecureBoot
is *completely inferior* to Canoeboot's security model. We call our own
security model *Secure canoeBoot* and we use neither BIOS nor UEFI; we use GRUB!
*Strong encryption* is the name of the game. You will use the *GRUB payload*.
GRUB supports various security mechanisms that are not enabled by default.
This page will tell you how to enable them, for the purpose of boot security,
both detecting and attempting to prevent certain types of attack.
Please also expect to brick your machine at least once, because many of these
changes are highly invasive and may even require you to *modify source code*.
**Make sure you have an [external SPI programmer](../install/spi.md), for
recovery purposes, just in case you brick your machine. The modifications
documented here are highly invasive and it would be easy to make mistakes.**
documented here are highly invasive. An external SPI programmer can be used
to restore the previous working state, should a brick occur.**
Canoeboot's design philosophy is that the most non-technical user must be
catered to first, which means that certain security hardening steps are skipped
by default. With the steps documented here, you will be able to thwart many
types of physical attack on your machine. Many of the types of configurations
documented here are *unique*, and available only in Canoeboot! (or otherwise
only *practical* in Canoeboot)
Full disk encryption
====================
--------------------
[Encrypted /boot with LUKS2 on argon2 key derivation is now
possible](../../news/argon2.md) - the work is based on that done by
@ -34,7 +63,7 @@ You are advised to do this *first*, because steps below depend on certain
configuration changes to be made on your installed Linux distro.
**Dependencies (do this first)**
=============================
--------------------------------
**Please read this: [Modifying GRUB in CBFS](grub_cbfs.md)**
@ -43,15 +72,14 @@ which tells you what modifications to actually perform, whereas the guide
linked above tells you how to apply your modifications for flashing.**
Flash write protection
======================
----------------------
Although not strictly related to GRUB, flash protection will prevent anyone
except you from overwriting the flash without permission. This is important,
because you don't want some malicious software running as root from overwriting
your flash, thus removing any of the above protections.
Build-time write protect
---------------------------
### Build-time write protect
Let's assume your board is `x200_8mb`, do:
@ -83,8 +111,7 @@ Anyway, when you're done, save the config and then build it from source in cbmk.
See: [build from source](../build/)
IFD-based flash protection
--------------------------
### IFD-based flash protection
**NOTE: This CAN cause bricks on a lot of machines. You should use this with
care. The FLILL and/or PRx based methods are more reliable - also SMM methods.
@ -104,8 +131,7 @@ version matching the coreboot tree for your mainboard.
Note that this only works for Intel-based systems that use an Intel Flash
Descriptor, which is actually most Intel systems that Canoeboot supports.
Other facts
-----------
### Other facts
Strapping `HDA_SDO` or `HDA_DOCK_EN` requires physical access, because you have
to short a pin on the HDA chip on the motherboard, or there will be a header
@ -122,8 +148,7 @@ Enable `CONFIG_STRICT_DEVMEM` in your Linux kernel, or set `securelevel` above
zero on your BSD setup (but BSD cannot be booted with GRUB very easily so
it's a moot point).
FLILL
-----
### FLILL
On Intel Flash Descriptor, you can insert up to four (4) commands on a list
within, called *FLILL*; not yet documented, but any SPI command listed here
@ -131,14 +156,13 @@ would no longer work during internal flash operations. For example, you could
use it to disable certain erase/write commands. You could also use it to
disable *reads*.
PRx registers
-------------
### PRx registers
Protected Range registers are available on Intel platforms, to disable flash
writes. This is not yet documented, and it varies per platform.
GRUB Password
=============
GRUB password
-------------
The security of this setup depends on a good GRUB password as GPG signature
checking can be disabled through the GRUB console with this command:
@ -176,7 +200,7 @@ GRUB will also ask for a username in addition to the password; the "root" user
is specified above, but you can cahnge it to whatever you want.
Unset superusers
================
----------------
Find this line in `grub.cfg`:
@ -191,7 +215,7 @@ because `unset superusers` in fact disables passwordh authentication, so it's
very important that you comment out this line.
Disable the SeaBIOS menu
====================
------------------------
**Very important. Make sure you read this carefully.**
@ -219,8 +243,7 @@ Release images with `seagrub` in the name already have this bootorder file,
so you only need to disable the menu on these images. If you have the
image with `seabios` in the name (instead of `seagrub`), you must do both.
SeaBIOS option ROMs
-------------------
### SeaBIOS option ROMs
SeaBIOS will also still execute PCI option ROMs. Depending on your preference,
you may wish to disable this, but please note that this will break certain
@ -230,8 +253,7 @@ things like graphics cards. More information is available here:
If you're using a graphics card, you *need* VGA option ROMs at least.
GRUBSEA
-------
### GRUBSEA
Another option is to make it so that GRUB is the primary payload on your board.
In this setup, SeaBIOS and U-Boot are still available.
@ -251,7 +273,7 @@ and disable the SeaBIOS menu, making SeaBIOS load only GRUB; SeaGRUB is useful
because GRUB will piggyback off of the VGA setup done by SeaBIOS first.
GPG keys
========
--------
First, generate a GPG keypair to use for signing. Option RSA (sign only)
is ok.
@ -293,7 +315,7 @@ into CBFS, using instructions already provided on the GRUB CBFS guide linked
above, earlier on in this guide.
Enforce GPG check in GRUB
=========================
-------------------------
The following must be present in `grub.cfg`, but please note that the
background image used by GRUB is in the memdisk by default, not CBFS, so you
@ -312,7 +334,7 @@ the GRUB CBFS guide that was also linked above, earlier on in the article
you're currently reading.
Install the new image
=====================
---------------------
Now simply flash the new image, using
the [flashing instructions](../install/).
@ -323,8 +345,29 @@ and the system is now unbootable, that's OK because you can use an
external flasher; please
read [external flashing instructions](../install/spi.md)
Linux kernel hardening
----------------------
You may also wish to compile your own kernel, because distro kernels will always
have code in the same place, so attackers are more easily able to know exactly
where to attack your kernel (ROP-based attacks).
The Whonix/KickSecure Linux projects have guidance about Linux kernel
hardening:
* <https://www.kicksecure.com/wiki/System_Hardening_Checklist>
* <https://www.whonix.org/wiki/System_Hardening_Checklist>
* <https://www.kicksecure.com/wiki/Operating_System_Hardening>
There's info there about userspace too, but start with kernel first. Canoeboot
is a boot firmware project, so Linux kernel hardening is beyond the scope of
the Canoeboot project documentation, **for now**.
(for now, because Canoeboot may in fact provide a Linux distro in the flash
at some point, and this page will definitely be updated when that happens)
References
==========
----------
* [GRUB manual](https://www.gnu.org/software/grub/manual/html_node/Security.html#Security)
* [GRUB info pages](http://git.savannah.gnu.org/cgit/grub.git/tree/docs/grub.texi)

View File

@ -1,10 +1,15 @@
---
title: Linux guides
title: Install Linux on a Canoeboot system
x-toc-enable: true
...
Booting Linux from GRUB payload
-------------------------------
NOTE: This guide pertains to x86 hosts, and does not cover supported CrOS/ARM
chromebooks. For ARM targets, you should refer to u-boot documentation.
chromebooks. For ARM targets, you should refer
to [u-boot documentation](../uboot/) - separate [U-Boot x86
documentation](../uboot/uboot-x86.md) is also available.
GRUB
--------
@ -17,51 +22,19 @@ on <https://seabios.org/SeaBIOS>
Linux is generally assumed, especially for Canoeboot development, but Canoeboot
also works quite nicely with [BSD systems](../bsd/).
Useful links
============
### Useful links
Refer to the following pages:
Refer to these pages, hosted by the Canoeboot project:
* [How to Prepare and Boot a USB Installer in Canoeboot Systems](grub_boot_installer.md)
* [Modifying the GRUB Configuration in Canoeboot Systems](grub_cbfs.md)
* [How to Harden Your GRUB Configuration, for Security](grub_hardening.md)
NOTE ABOUT VGA MODES and GRUB
=============================
Canoeboot does not support switching VGA modes, when coreboot's libgfxinit is
used on Intel GPUs. Many distros will install GRUB, which Canoeboot then finds
and executes, if running SeaBIOS payload; if using GRUB, just the distro's
grub.cfg file is loaded instead, by Canoeboot's own GRUB in flash.
Canoeboot GRUB boots in text mode or uses the coreboot framebuffer. Anyway,
set `GRUB_TERMINAL=console` in GRUB and you should be fine. This avoids GRUB,
the one provided by your distro, switching video modes.
In Debian for example (steps largely the same on other distros):
Edit `/etc/default/grub` as root, and uncomment or add the line:
GRUB_TERMINAL=console
Then still as root, do these commands:
export PATH="$PATH:/sbin"
update-grub
NOTE: `update-grub` is very much Debian-centric. Not all distros will have it.
On Arch-based distros for instance, you might do:
grub-mkconfig -o /boot/grub/grub.cfg
The `update-grub` command is provided on Debian for user convenience, but on
all distros, you may want to just use `grub-mkconfig`. Use what works for you.
Now your distro's GRUB menu should work, when your distro's GRUB bootloader is
executed from Canoeboot's SeaBIOS payload.
They will provide specific information; the information below pertains mostly
to troubleshooting, and there are some notes about Full Disk Encryption:
Encrypted /boot via LUKS2 with argon2
=======================================
-------------------------------------
Full encryption for basic LUKS2 (with PBKDF or argon2 key derivation) is
supported in Canoeboot. Legacy LUKS1 is also supported. On *most* other
@ -109,8 +82,7 @@ At the time of the Canoeboot 20231026 release, the GRUB upstream (on gnu.org)
did not have these argon2 patches in its source tree, but Canoeboot merges and
maintains them out of tree.
argon2id
--------
### argon2id
You should *specifically* use argon2id. Please ensure this, because some
older LUKS2 setups defaulted to the weaker *argon2i*. This post by Matthew
@ -118,10 +90,46 @@ Garret contains information about that:
<https://mjg59.dreamwidth.org/66429.html>
Canoeboot's GRUB Argon2id implementation was created by Patrick Steinhardt,
who adapted PHC's Argon2 implementation for use in GRUB; Ax33l later added it
to Arch Linux AUR for GRUB 2.06, and Nicholas Johnson rebased *that* for
GRUB 2.12 so that Canoeboot could use it; Canoeboot later inherited it.
NOTE: You should also read the instructions about about `GRUB_TERMINAL`.
NOTE ABOUT VGA MODES and GRUB
-----------------------------
Canoeboot does not support switching VGA modes, when coreboot's libgfxinit is
used on Intel GPUs. Many distros will install GRUB, which Canoeboot then finds
and executes, if running SeaBIOS payload; if using GRUB, just the distro's
grub.cfg file is loaded instead, by Canoeboot's own GRUB in flash.
Canoeboot GRUB boots in text mode or uses the coreboot framebuffer. Anyway,
set `GRUB_TERMINAL=console` in GRUB and you should be fine. This avoids GRUB,
the one provided by your distro, switching video modes.
In Debian for example (steps largely the same on other distros):
Edit `/etc/default/grub` as root, and uncomment or add the line:
GRUB_TERMINAL=console
Then still as root, do these commands:
export PATH="$PATH:/sbin"
update-grub
NOTE: `update-grub` is very much Debian-centric. Not all distros will have it.
On Arch-based distros for instance, you might do:
grub-mkconfig -o /boot/grub/grub.cfg
Now your distro's GRUB menu should work, when your distro's GRUB bootloader is
executed from Canoeboot's SeaBIOS payload.
Rebooting system in case of freeze
===================================
----------------------------------
Linux kernel has a feature to do actions to the system any time, even
with it freezes, this is called a
@ -139,13 +147,12 @@ command line paramter. So append `sysrq_always_enabled=1` to your
You can also run `# sysctl kernel.sysrq=1` to enable them.
Fedora won't boot?
==================
------------------
This may also apply to CentOS or Redhat. Chroot guide can be found on
[fedora website](https://docs.fedoraproject.org/en-US/quick-docs/bootloading-with-grub2/#restoring-bootloader-using-live-disk)
linux16 issue
-------------
### linux16 issue
Canoeboot's default GRUB config sources fedora's grub config
`grub.cfg` (in `/boot/grub2/grub.cfg`), fedora by default makes use of the
@ -159,8 +166,7 @@ Set the `sixteenbit` variable to an empty string, then run:
grub2-mkconfig -o /boot/grub2/grub.cfg
BLS issue
---------
### BLS issue
With [newer versions of fedora](https://fedoraproject.org/wiki/Changes/BootLoaderSpecByDefault),
scripts from grub package default to generating [BLS](https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/)
@ -172,3 +178,6 @@ to `/etc/default/grub` (or modify existing one if it already exists):
Then generate `grub.cfg` with:
grub2-mkconfig -o /boot/grub2/grub.cfg
These idiosyncrasies aside, Fedora is a great distro. It's well-tested with the
Canoeboot build system, and it boots up just fine.

View File

@ -1,10 +1,16 @@
---
title: cbmk maintenance manual
title: CanoeBoot MaKe (cbmk) build system design and maintenance manual
x-toc-enable: true
...
NOTE: Canoeboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog)
now, as of 3 May 2024, which is a fork of flashrom.
Open source BIOS/UEFI firmware
------------------------------
Canoeboot is a [Free Software](https://writefreesoftware.org/learn) project,
replacing proprietary BIOS/UEFI firmware. It provides coreboot and a number
of *payloads* such as GRUB, U-Boot or SeaBIOS, which boot your operating system.
This document describes the very essence of Canoeboot's design, how the project
functions and how releases are made.
In addition to this manual, you should also refer to [porting.md](porting.md)
and [testing.md](testing.md).
@ -19,7 +25,7 @@ are kept in sync. You should therefore also read Libreboot's own
about the porting process is written on the [about](../../about.md) page.
Automated coreboot build system
===============================
-------------------------------
This document describes the entire Canoeboot build system, its design philosophy
and how it's used to prepare Canoeboot releases; it is provided as a *reference*
@ -45,7 +51,7 @@ first, it will do so automatically. Therefore, you can run any part of cbmk
on its own, and the entire design is modular.
Best practises for learning cbmk
================================
--------------------------------
The follow sections will cover subdirectories, within cbmk. Contrary to what
some may otherwise assume, it's best to learn about everything *except* scripts
@ -63,8 +69,7 @@ bottom-up; most documents take the latter approach, in other projects, but
most people naturally want to learn how a specific thing works first, hence
the approach taken here.
Don't be deceived by simplicity
-------------------------------
### Don't be deceived by simplicity
Canoeboot's build system is powerful, and highly configurable, yet deceptively
simple at the same time. Remember this rule, a rule that applies to *all*
@ -75,12 +80,11 @@ Many people will be shocked by how *small* Canoeboot is, at its core. You will
be surprised by just how much can be done with so little. Continue reading!
System requirements
===================
-------------------
This concerns system requirements when *building* Canoeboot.
Operating system
----------------
### Operating system
Any sensible Linux distribution will do. Canoeboot's build system is regularly
testing on all the major distros. Please do report bugs if you encounter
@ -97,18 +101,16 @@ Alpine, though we currently do not have an automated way to install
build dependencies for these distros.
NOTE: **Linux** is assumed. BSD systems may work, for parts of the build system,
but BSD systems are currently not well-tested with lbmk.
but BSD systems are currently not well-tested with cbmk.
**Dependencies**
----------------
### **Dependencies**
**Make sure you have dependencies installed!**
**The [main build guide](../build) will tell you how to install dependencies,
such as GNU toolchains and various libraries.**
Host CPU
--------
### Host CPU
At least an Intel Core 2 Duo, though we recommend much faster CPUs if building
entire release archives, e.g. quad-core Haswell CPU or better.
@ -123,8 +125,7 @@ NOTE3: *32-bit* x86 (i686) machines can be used to compile Canoeboot, but
MemTest86\+ is only compiled for 64-bit, and not cross compiled, so builds
are disabled when cbmk detects a 32-bit host CPU.
Memory
------
### Memory
At least 2GB per CPU core, ideally 4GB; for example, 16GB RAM is recommended
if you're compiling an a quad-core CPU.
@ -135,8 +136,7 @@ For example, when you're building on a quad-core, do this prior to building:
export XBMK_THREADS=4
Disk space
----------
### Disk space
About 20GB bare minimum, if only compiling for 1 board. The sources take up a
lot of space. However, Canoeboot is always expanding as it's developed.
@ -149,10 +149,9 @@ major bottleneck, so any HDD or SSD will do, but we obviously recommend a
fast NVMe (PCI-E) SSD if you can.
Environmental variables
=======================
-----------------------
XBMK\_THREADS
-------------
### XBMK\_THREADS
For example:
@ -163,8 +162,7 @@ This would build on two threads, when running cbmk. It defaults to 1.
Previous revisions of cbmk used `nproc` by default, but this was set to 1
instead, because nproc is not available on every operating system.
XBMK\_RELEASE
-------------
### XBMK\_RELEASE
If set to `y`, it signals to `script/roms` that a release is being built,
and it will honour `release="n"` in target.cfg files. You could also set this
@ -174,7 +172,7 @@ behaves running it in release mode. Do this if you want to:
export XBMK_RELEASE=y
Projects/files downloaded/generated by cbmk
===========================================
--------------------------------------------
The following sections will describe files and directories that are not
included in `cbmk.git`, but *are* created by running various cbmk commands;
@ -183,8 +181,7 @@ many of these will also be provided, pre-generated, under release archives.
Some of these are *downloaded* by Canoeboot's build system, automatically, while
others are created during the build process based on these downloaded programs.
bin/
---------------
### bin/
This directory is created when running any of the following commands, with the
right arguments:
@ -208,14 +205,12 @@ now only puts coreboot images in `bin/`, with payloads included.
If you still have `elf/` coreboot images in your cbmk tree, please do not
use them (and you may aswell delete them).
cache/
---------------
### cache/
Certain files are cached here automatically, by cbmk. The user need not touch
these files.
cache/file/
--------------
### cache/file/
Files that are downloaded are hashed, and the cached version of the file
is stored there, named as the SHA512 checksum. This is used for submodule Git
@ -229,8 +224,7 @@ files relative to the directory locations for those repositories, but subfiles
are not downloaded to the *cached git repository*, only the work directory used
for building in cbmk.
cache/hash
---------------
### cache/hash/
When cbmk is handling any project, it sorts a list of files under `config/`
including `config/project` (or `config/project/TREE`) and `config/data/project`.
@ -243,14 +237,12 @@ If the currently stored hash differs from what's calculated, it means that
the project has changed, and the source directories plus builds are deleted.
The project source is then re-prepared and re-build.
cache/repo
--------------
### cache/repo/
Git repositories are cached here. This avoids wasting bandwidth, when downloading
multiple repositories. **Git submodules are also cached here!**
elf/
---------------
### elf/
**DO NOT flash coreboot ROM images contained under `elf/`. Please use ROM images
under `bin/` instead! - In modern cbmk, only the ones under `bin/` are ever
@ -285,8 +277,7 @@ As of Canoeboot 20240612, the `elf/` directory must be used by default for all
builds, in an effort to make exclusive use of *out-of-source builds*. As such,
the `cbutils` directory is no longer used.
release/
---------------
### release/
The script at `build` create tarballs in here, which
constitute regular Canoeboot releases. It is meticulously maintained, as per
@ -315,13 +306,11 @@ Or with a custom directory:
The build system expects there to be a *git tag*, so make sure there is one.
This is used to create the version number for a given release.
src/
----
### src/
Third-party source trees are downloaded into this directory, by cbmk.
src/coreboot/
---------------
### src/coreboot/
Please also visit: <https://coreboot.org/>
@ -340,8 +329,7 @@ This may be less efficient on disk usage, but it simplifies the logic greatly.
Coreboot also uses its own toolchain called *crossgcc*, and crossgcc is in fact
compiled *per tree* in Canoeboot.
src/flashprog/
---------------
### src/flashprog/
Please also visit: <https://flashprog.org/>
@ -350,8 +338,7 @@ convenience of users, and this is copied to release archives. Flashprog is the
program that you will use to read, erase and write the flash, containing
coreboot firmware.
src/gpio-scripts
----------------
### src/gpio-scripts
This is a fork of the original gpio-scripts. The fork is maintained by Riku
Viitanen, based on code written by Angel Pons (author of the Haswell native
@ -362,8 +349,7 @@ machines, when porting new boards to coreboot.
NOTE: Not included in Canoeboot yet, but `intelp2m` is used instead for this
purpose, on much newer Intel systems (from around Skylake era or later).
src/grub/TREE
---------------
### src/grub/TREE
Please also visit: <https://www.gnu.org/software/grub/>
@ -396,25 +382,19 @@ tree contains NVMe SSD support but not xHCI support. The `default` tree contains
no NVMe or xHCI support. All trees otherwise have the same fixes on top of
upstream GRUB, e.g. fix for Dell Latitude keyboard controllers.
src/int/
--------
### src/int/
Riku Viitanen wrote this tool for debugging, when implementing MXM option ROM
support in coreboot and SeaBIOS, for the HP EliteBook 8560w.
NOTE: The EliteBook 8560w isn't actually supported in Canoeboot yet, but this
could be used for other boards in the future.
src/memtest86plus/
---------------
### src/memtest86plus/
Please also visit: <https://www.memtest.org/>
This is provided inside ROM images, as a payload executed from main GRUB or
SeaBIOS payload. It checks for corrupted memory.
src/mxmdump/
------------
### src/mxmdump/
Riku Viitanen wrote this utility, for dumping the MXM config on graphics cards
that use it. The HP EliteBook 8560w uses these cards, and normally you would
@ -430,8 +410,7 @@ this fact, but such hacks are no longer required because of Riku's tool.
NOTE: The EliteBook 8560w isn't supported in Canoeboot yet, but this tool
could be used for other machines in the future.
src/seabios/
---------------
### src/seabios/
Please also visit: <https://www.seabios.org/SeaBIOS>
@ -443,8 +422,7 @@ particular, the BSD bootloaders can be executed from SeaBIOS.
This is provided as a coreboot payload, either as first payload or it can be
executed from GRUB (if GRUB is the main payload, on a given target).
src/u-boot/
---------------
### src/u-boot/
Please also visit: <https://www.denx.de/project/u-boot/>
@ -461,8 +439,7 @@ More information can be found on the [U-Boot x86 page](../install/uboot-x86.md);
it is available as an alternative to the traditional SeaBIOS and GRUB payloads,
and it can successfully boot UEFI applications on x86 Canoeboot systems.
src/pcsx-redux
----------------
### src/pcsx-redux/
PCSX-Redux is a Sony Playstation (PS1/PSX) emulator, but Canoeboot only uses
one part from it: the Open BIOS. This is used by Canoeboot to provide an
@ -473,8 +450,7 @@ More information available on the [PlayStation page](../install/playstation.md).
This is automatically compiled by the main build script, and the resulting
BIOS image is provided in Canoeboot release archives.
src/pico-serprog
---------------------------
### src/pico-serprog/
Used by cbmk, to build firmware for serprog-based SPI flashers with RP2040 SoC.
Alongside this, `util-fw/rp2040/pico-sdk` is imported which is required for
@ -485,8 +461,7 @@ Please visit these pages:
* <https://github.com/raspberrypi/pico-sdk>
* <https://codeberg.org/libreboot/pico-serprog>
src/stm32-vserprog
----------------------
### src/stm32-vserprog/
Used by cbmk, to build firmware for serprog-based SPI flashers with STM32 MCU.
Alongside this, `libopencm3` is imported which is required for building it.
@ -501,8 +476,7 @@ Before moving onto configurations, we will now cover *utilities* provided by
Canoeboot itself (included within cbmk, rather than being downloaded like the
third party projects listed above):
tmp/
---------------
### tmp/
The `TMPDIR` environmental variable is set by cbmk, to a location under `/tmp`,
but some users may have `/tmp` mounted as a *tmpfs* (file system in RAM), and
@ -512,7 +486,7 @@ Where large files (or a large number of files) are handled by cbmk on a
temporary basis, this `tmp/` directory is created and then used.
util/
===============
-----
If a codebase is not frequently used by Canoeboot, is actively developed (making
it not viable to maintain in Canoeboot) or the codebase is very large, we would
@ -522,8 +496,7 @@ where the intention is that `cbmk.git` itself should be small and efficient.
Where appropriate, and where the code is small enough, or it is otherwise deemed
desirable, `cbmk.git` provides a few utilities as part of itself, namely:
util/dell-flash-unlock/
---------------
### util/dell-flash-unlock/
This program, written by Nicholas Chin, unlocks the boot flash on Dell Latitude
E6400; it permits internal flashing, from factory firmware to Canoeboot, so that
@ -532,8 +505,7 @@ the user need not disassemble and flash externally.
It also supports several other Dell laptops, with similar ECs. Check the
README file included in this directory, for more information.
util/nvmutil/
---------------
### util/nvmutil/
The `nvmutil` software allows you to set the MAC address on Intel GbE NVM
files. It also allows you to set *random* MAC addresses, in addition to
@ -544,8 +516,7 @@ about here:
[nvmutil manual](../install/nvmutil.md)
util/spkmodem\_recv/
---------------
### util/spkmodem\_recv/
Canoeboot imported this from coreboot, who is turn imported it from GRUB with
little to no modification.
@ -582,13 +553,12 @@ do this. Other improvemnts include:
by cbmk:
config/
=======
-------
This directory contains configuration files, used by the Canoeboot build
system. These next sections will cover specific configuration files.
config/PROJECT\*/nuke.list
--------------------------
### config/PROJECT\*/nuke.list
The script `include/git.sh` handles deletion of certain files, for downloaded
projects, based on a `nuke.list` file that can (for single-tree projects) be
@ -606,10 +576,9 @@ foo/bar.txt
Ditto `src/flashprog/`, if you wanted to delete a file from in there, as one
other example. Deletions occur when the source tree is created.
config/coreboot
---------------
### config/coreboot/
### config/coreboot/BOARDNAME/
#### config/coreboot/BOARDNAME/
Each target name (e.g. `x200_8mb`) has its own directory under here. Targets
that do not define defconfigs also exist here; for example, the `default`
@ -621,14 +590,14 @@ for example, be `default`. In other words, they can refer to other trees.
The coreboot downloads are based on scanning of these directories, and ROM
images are also built based on them.
### config/coreboot/BOARDNAME/patches/
#### config/coreboot/BOARDNAME/patches/
For any given coreboot tree, patches with the `patch` file extension are placed
here, alphanumerically in the order that they should be applied.
These patches are then so applied, when cbmk downloads the given source tree.
### config/coreboot/BOARDNAME/target.cfg
#### config/coreboot/BOARDNAME/target.cfg
This file can contain several configuration lines, each being a string, such
as:
@ -738,7 +707,7 @@ by this variable, to also be present.
The `grubtree` option specifies which GRUB tree to use. If unset, it defers to
the `default` GRUB tree.
### config/coreboot/BOARDNAME/config/
#### config/coreboot/BOARDNAME/config/
Files in this directory are *coreboot* configuration files.
@ -816,8 +785,7 @@ Even if your board doesn't actually use `libgfxinit`, the config for it should
still be named as such. From a user's perspective, it really makes no
difference.
config/dependencies/
---------------
### config/dependencies/
Files here are so named, and called like so: e.g. the `debian` file would be
referenced when running:
@ -828,8 +796,7 @@ These files define a list of packages, and the correct package manager command
to use on a given distro. This can be used to install build dependencies, which
are required for compiling Canoeboot from source code.
config/git/
---------------
### config/git/
Configuration related to third-party Git repositories, that Canoeboot makes
use of.
@ -844,8 +811,7 @@ of their own; for example, `config/grub/` exists.
Multiple files exist here, and they are *concatenated* in a temporary file by
cbmk, which is then scanned to find information about projects.
config/data/PROJECT/mkhelper.cfg
--------------------------------
### config/data/PROJECT/mkhelper.cfg
These `mkhelper.cfg` files define common configuration that can be supplied
for any single- or multi-tree project. Arguments available are as follows:
@ -890,18 +856,17 @@ In the simplest of terms, you may regard mkhelpers as *plugins*, of a sort.
They simply extend the core functionality of the build system, in a way that
can differ flexibly between projects.
GRUB config
---------------
### GRUB config
### config/data/grub/background
#### config/data/grub/background/
Splash screen images applied duing startup when using the GRUB payload.
### config/data/grub/background/background1024x768.png
#### config/data/grub/background/background1024x768.png
Used on ThinkPad X60 and T60.
### config/data/grub/background/background1280x800.png
#### config/data/grub/background/background1280x800.png
Used on all other machines, besides X60 and T60 thinkpads.
@ -911,23 +876,23 @@ example, `config/coreboot/x60/target.cfg` specifies this:
grub_background="background1024x768.png"
### config/data/grub/background/COPYING
#### config/data/grub/background/COPYING
Licensing info for GRUB bootsplash images.
### config/grub/TREE/config/
#### config/grub/TREE/config/
GRUB configuration files.
### config/grub/config/AUTHORS
#### config/grub/config/AUTHORS
Author info for GRUB configuration files.
### config/grub/config/COPYING
#### config/grub/config/COPYING
Licensing info for GRUB configuration files.
### config/grub/TREE/config/payload
#### config/grub/TREE/config/payload
This is a configuration file. It is used to program GRUB's shell.
@ -941,7 +906,7 @@ A `grubtest.cfg` can be inserted into CBFS, but it will not override the
default `grub.cfg` (either in CBFS or on memdisk); however, the one in memdisk
will provide a menuentry for switching to this, if available.
### config/data/grub/memdisk.cfg
#### config/data/grub/memdisk.cfg
This GRUB configuration checks whether `grub.cfg` exists in CBFS and switches
to that first (not provided by default) or, if one is not available in CBFS,
@ -951,12 +916,12 @@ The GRUB memdisk is a file system within `grub.elf`, itself stored within the
coreboot file system named *CBFS*, which is part of the coreboot ROM image on
every coreboot target.
### config/data/grub/keymap/
#### config/data/grub/keymap/
Keymap files used by GRUB. They can alter the character set corresponding to
inputted scancodes.
### config/data/grub/keymap/\*.gkb
#### config/data/grub/keymap/\*.gkb
The keymap files themselves. These are inserted into the GRUB memdisk, and
the `grub.cfg` file can specify which one is to be used.
@ -965,7 +930,7 @@ These files are binary-encoded, defining which characters correspond to which
scancodes. It is handled by `grub-core/commands/keylayouts.c` in the GRUB source
code.
### config/data/grub/module/TREE
#### config/data/grub/module/TREE
This defines which modules are inserted into `grub.elf`. These modules can be
anything from file systems, small applications/utilities, launchers (e.g.
@ -979,7 +944,7 @@ This list is used by cbmk when it runs `grub-mkstandalone`, which is the utility
from GRUB that generates `grub.elf` files (to be compressed inside CBFS and then
executed as a coreboot payload).
### config/grub/TREE/patches/
#### config/grub/TREE/patches/
For a given GRUB revision, patches with the `patch` file extension are placed
here, alphanumerically in the order that they should be applied. For example,
@ -988,69 +953,66 @@ partitions to be decrypted by GRUB.
These patches are then so applied, when cbmk downloads the given source tree.
config/ifd/\*
---------------
### config/ifd/\*
Intel Flash Descriptors and GbE NVM images, which are binary-encoded
configuration files. These files are referenced in coreboot defconfigs, used
by cbmk to build coreboot ROM images.
config/seabios/
---------------
### config/seabios/
### config/data/seabios/build.list
#### config/data/seabios/build.list
When a given SeaBIOS tree is compiled, for a given target, this file defines
which files to copy from the `seabios/` directory, which are then copied to
a location under `elf/seabios`.
### config/seabios/default/
#### config/seabios/default/
Currently the only tree in use, this defines what SeaBIOS revision is to be
used, when the SeaBIOS payload is enabled on a given coreboot target.
### config/seabios/default/config/
#### config/seabios/default/config/
Configuration files go in here.
### config/seabios/default/config/libgfxinit
#### config/seabios/default/config/libgfxinit
Configuration file for when native video initialisation is available in
coreboot.
### config/seabios/default/config/normal
#### config/seabios/default/config/normal
Configuration file for when native video initialisation is unavailable in
coreboot, and VGA ROM initialisation is also not provided by coreboot (in
this configuration, the usual setup will be that *SeaBIOS* finds and
executes them, instead of coreboot).
### config/seabios/default/config/vgarom
#### config/seabios/default/config/vgarom
Configuration file for when native video initialisation is unavailable in
coreboot, and VGA ROM initialisation is provided by coreboot; in this setup,
SeaBIOS should not execute VGA ROMs.
### config/seabios/default/target.cfg
#### config/seabios/default/target.cfg
Similar concept to `target.cfg` files provided by coreboot. This specifies
which SeaBIOS revision (from Git) is to be used, when compiling SeaBIOS images.
config/u-boot/
---------------
### config/u-boot/
This directory contains configuration, patches and so on, for each mainboard
that can use U-Boot as a payload in the `cbmk` build system. U-Boot doesn't yet
have reliable generic configurations that can work across all coreboot boards
(per-architecture), so these are used to build it per-board.
### config/data/u-boot/build.list
#### config/data/u-boot/build.list
When a given U-Boot tree is compiled, for a given target, this file defines
which files to copy from the U-Boot source build, which are then copied to
a location under `elf/u-boot/`.
### config/u-boot/TREENAME/
#### config/u-boot/TREENAME/
Each `TREENAME` directory defines configuration for a corresponding mainboard.
It doesn't actually have to be for a board; it can also be used to just define
@ -1058,14 +1020,14 @@ a U-Boot revision, with patches and so on. To enable use as a payload in ROM
images, this must have the same name as its `config/coreboot/TREENAME/`
counterpart.
### config/u-boot/TREENAME/patches/
#### config/u-boot/TREENAME/patches/
For any given U-Boot tree, patches with the `patch` file extension are placed
here, alphanumerically in the order that they should be applied.
These patches are then so applied, when cbmk downloads the given source tree.
### config/u-boot/TREENAME/target.cfg
#### config/u-boot/TREENAME/target.cfg
This file can contain several configuration lines, each being a string, such
as:
@ -1101,7 +1063,7 @@ to a non-native arch means that necessary crossgcc-arch will be compiled and be
available when building roms, but not necessarily built or discovered when
individual scripts are called manually.*
### config/u-boot/TREENAME/config/
#### config/u-boot/TREENAME/config/
Files in this directory are *U-Boot* configuration files. Configuration file
names can be anything, but for now `default` is the only one used.
@ -1131,8 +1093,7 @@ Another interesting config option is `CONFIG_POSITION_INDEPENDENT` for ARM
boards, which has been so far enabled in the ones `cbmk` supports, just to be
safe.
config/submodule
----------------
### config/submodule/
In here you can find submodule configurations for projects. It works for both
single- and multi-tree projects. Use the existing examples as reference.
@ -1175,14 +1136,12 @@ because files are not extracted, only placed at their configured destination).
The destination path in `module.list` is relative to the location of the main
Git repository under which it is placed.
config/data/PROJECT
-------------------
### config/data/PROJECT/
Random configuration data provided on a per-project basis. Complements
the `config/PROJECT` directory.
U-Boot build system
-------------------
### U-Boot build system
If you wish to know about U-Boot, refer here:\
<https://u-boot.readthedocs.io/en/latest/>
@ -1214,28 +1173,24 @@ configs, but not for adding them. Adding them is to be done manually, based on
the above guidance.
Config files in cbmk root directory
===================================
-----------------------------------
projectsite
-------------
### projectsite
Domain name linking to the project home page (e.g. canoeboot.org).
projectname
---------------
### projectname
This is a text file, containing a single line that says `canoeboot`. This string
is used by the build system, when naming releases alongside the version number.
version
---------------
### version
Updated each time cbmk runs, based on either `git describe` or, on release
archives, this file is static and never changes. It says what Canoeboot revision
is currently in use (or was in use, if cbmk isn't running).
versiondate
---------------
### versiondate
Updated each time cbmk runs, based on either `git describe` or, on release
archives, this file is static and never changes. It says the *time* of
@ -1245,10 +1200,9 @@ At last, you will now learn about the *scripts* (exclusively written as
posix shell scripts) that constitute the entire Canoeboot build system, cbmk:
Scripts in root directory of cbmk
=================================
---------------------------------
build
---------------
### build
This is the main build script.
@ -1271,14 +1225,13 @@ You can also know what build system revision you have by running:
This script is the beating heart of Canoeboot. Break it and you break Canoeboot.
include/
===============
--------
This directory contains *helper scripts*, to be included
by main scripts using the `.` command (called the `source`
command in `bash`, but we rely upon posix `sh` only).
include/git.sh
--------------
### include/git.sh
These functions in here previously existed as independent scripts, but they
were unified here, and they are used when you pass the `-f` argument
@ -1288,8 +1241,7 @@ These functions deal with git cloning, submodule updates, revision resets and
the application of patch files via `git am`. *Every* git repository downloaded
by cbmk is handled by the functions in this file.
include/lib.sh
---------------
### include/lib.sh
Several other parts of cbmk also use this file. It is added to as little as
possible, and contains miscallaneous functions that don't belong anywhere else.
@ -1314,8 +1266,7 @@ so if for example you say `mk coreboot`, it would build every coreboot target.
This is useful for the release build logic, because now it can much more simply
build all of Canoeboot, while still being flexible about it.
include/rom.sh
-----------
### include/rom.sh
This builds coreboot ROM images. Specifically, this contains mkhelper functions.
It also builds serprog images, and it could be used to provide functions for
@ -1386,8 +1337,7 @@ CCACHE is automatically used, when building coreboot, but not currently for
other projects. This is done by cooking coreboot configs at build time, enabling
coreboot's build option for it.
Serprog images:
--------------
### Serprog images:
Build firmware images for serprog-based SPI programmers, where they use an
STM32 MCU. It also builds for RP2040-based programmers like Raspberry Pi Pico.
@ -1405,10 +1355,9 @@ include/inject.sh
Functions for modifying the intel GbE MAC address on IFD-based Intel systems.
script/
=======
-------
script/trees
------------
### script/trees
*This* is the other beating heart of Canoeboot. Used heavily by Canoeboot, this
script is what handles defconfig files for SeaBIOS, U-Boot *and* coreboot; it

View File

@ -13,7 +13,7 @@ and several practises may persist in spite of it; nonetheless, this article
shall serve as a reference for cbmk development.
NO BASHISMS
===========
-----------
Canoeboot's build system, cbmk (CanoeBoot MaKe) is written entirely in POSIX
shell (sh) scripts. This is thanks to the work done by Ferass El Hafidi on
@ -28,15 +28,14 @@ and an even more excellent introduction:
(seriously, it's good. Read it!)
Design
======
------
Canoeboot's build system design is very simple: put as much as possible
under `config/`, and keep actual logic to a minimum.
You can read about that design in the [cbmk maintenance manual](index.md).
No Makefiles
------------
### No Makefiles
We have Makefiles in some C programs, under `util/`, and projects that we import
may use Makefiles, but cbmk itself does not contain any Makefiles. Instead, we
@ -47,7 +46,7 @@ code is more readable. It's easier to implement a cleaner coding style, which
the next sections will cover.
Coding style
============
------------
Read <https://man.openbsd.org/style.9> and go read a few userland program source
trees in OpenBSD's main CVS tree. This is the style that inspires the cbmk
@ -61,19 +60,17 @@ Canoeboot scripts, and also C programs like `nvmutil`, are heavily inspired by
this style. We insist on its use, because this style is extremely readable and
forces you to write better code.
main on top
-----------
### main on top
In every cbmk script, it is our intention that there be a `main()` function.
All logic should be inside a function, and `main()` should be the function that
executes first; at the bottom of each script, insert this line:
main $@
main "$@"
This will execute `main()`, passing any arguments (from the user's shell) to it.
Top-down logic
--------------
### Top-down logic
*Every* function called from main should always be *below* the calling function.
Therefore, if multiple functions call a given function, that function should be
@ -119,11 +116,10 @@ complicated_function()
do_some_complicated_stuff || return 1
}
main $@
main "$@"
```
PWD is always root of cbmk
--------------------------
### PWD is always root of cbmk
In any script executed by cbmk, under `script/`, the work directory is relative
to the main `cbmk` script. In other words, all scripts under `script/` also
@ -132,8 +128,7 @@ assume this.
This is actually one of the reasons for that design, as also alluded to in
the main [cbmk maintenance manual](index.md).
main should only be a simple skeleton
-------------------------------------
### main should only be a simple skeleton
The `main()` function should not implement much logic itself. Each script in
cbmk is its own program. The `main()` function should contain the overall
@ -145,7 +140,7 @@ be below a function that builds ROM images with SeaBIOS payloads inside them,
when building coreboot ROM images.
One task, one script
====================
--------------------
Not literally *one task*, but one theme, one *kind* of overall task. For
example, `script/build/roms` builds final ROM images of coreboot,
@ -156,7 +151,7 @@ another program that does another thing very well; programs communicate with
each other via the universal method, namely text.
Error handling
==============
--------------
Where feasible, a script should do:
@ -184,8 +179,7 @@ For example:
$err "function_name: this shit doesn't work. fix it."
Do not directly exit
--------------------
### Do not directly exit
Please try to use `err` for all error exits.
@ -197,8 +191,7 @@ A script should either return zero status, or call `err()`.
An individual function may, in some cases, return 1 or 0 itself, which would
then be handled accordingly by the calling function.
How to handle errors
--------------------
### How to handle errors
There are some instances where errors should be *ignored*, in which case you
might do:
@ -212,7 +205,7 @@ command succeeded, then do this.
Never mix `&&` and `||`
If/else blocks
==============
--------------
Keep these simple, and where possible, maybe don't use them at all! For
example:
@ -237,8 +230,7 @@ or
do something
```
Warnings
--------
### Warnings
In C, the `stderr` file is 2 as represented by `int fd` style. In shell scripts,
it's the same: 1 for standard output, 2 for errors/warnings. The `err` function
@ -250,25 +242,24 @@ should not yield an exit, you should do something like this:
printf "function_name: this is dodgy stuff. fix it maybe?\n" 1>&2
Avoid passing arguments excessively
===================================
-----------------------------------
In functions, use of arguments passed to them can be useful, but in general,
they should be avoided; use global variables when feasible.
Do not exceed 80 characters per line
====================================
------------------------------------
See: RFC 3676
Excessively long code lines are really annoying to read.
Use tab-based indendation
=========================
-------------------------
A new line should begin with tab indentation, in a function.
Multi-line commands
-------------------
### Multi-line commands
Use \\ at the end, as you would, but use *four spaces* to indent on the
follow-up line. For example:
@ -282,14 +273,14 @@ function_name()
```
Use printf!
===========
-----------
Don't use `echo` unless there's some compelling reason to do so.
The `printf` functionality is more standard, across various sh implementations.
env
===
---
Don't do:
@ -302,7 +293,7 @@ Do:
This is more portable, between various Unix systems.
Be portable!
============
------------
In addition to not using bashisms, commands that cbmk uses must also
be portable; where possible, third party projects should be tweaked.
@ -317,7 +308,7 @@ Work+testing is sorely needed, in this area. It would be nice if Canoeboot
could be built on BSD systems, for example.
Do as little as possible
========================
------------------------
Don't over-engineer anything. Write as simply as you can, to perform a single
task. This is basically the same as what has been written elsewhere, but it's

View File

@ -35,7 +35,7 @@ provide testing for the same mainboard if that's what you have. The more the
merrier!
Be Contactable
==============
--------------
You should monitor whatever email you provide in your application.
There is no specific time-frame for how long it should take after
@ -45,7 +45,7 @@ If you are the *only* maintainer for your board then please take
into consideration that your input is especially vital.
Have External Flashing Equipment
================================
--------------------------------
The roms you test will of course be untested.
To avoid having a bricked machine, you need to have external flashing
@ -57,7 +57,7 @@ Refer to [Coreboot's documentation](https://doc.coreboot.org/)
or ask on IRC if you are unsure.
Testing Procedure
=================
-----------------
You will receive an email when roms are ready for testing.
The email will link to an open issue on our [current git hosting platform.](/git.html#cbmk-canoeboot-make)
@ -78,6 +78,6 @@ note: [insert any notes if relevant]
For example, a board status comment might look like this:
board: t440p_12mb
status: fail
note: GRUB throws error 'something_is_b0rked'
board: t440p_12mb
status: fail
note: GRUB throws error 'something_is_b0rked'

View File

@ -32,7 +32,7 @@ Canoeboot намагається зробити Coreboot доступним дл
краще!
Будьте доступними для зв'язку
==============
--------------------------
Вам варто відслідковувати будь-яку електронну пошту, що ви вкажете в вашому поданні.
Немає конкретного часового проміжку для того, скільки має пройти часу після того, як
@ -42,27 +42,27 @@ Canoeboot намагається зробити Coreboot доступним дл
врахуйте, що ваш внесок є особливо значущим.
Майте обладнання для зовнішньої прошивки
================================
-------------------------------------
Образи rom, які ви випробуєте, будуть звісно невипробуваними.
Задля уникнення отримання непрацездатної машини, вам потрібно мати обладнання для зовнішньої
прошивки в наявності для відновлення вашої плати з поламаного rom.
В більшості випадків ви можете посилатися на [керівництво SPI.](../install/spi.html)
В більшості випадків ви можете посилатися на [керівництво SPI](../install/spi.md).
В менш частих випадках -таких як, деякі ARM chromebook- ваша плата може бути прошита іншим чином.
Посилайтесь на [документацію Coreboot](https://doc.coreboot.org/)
або спитайте в IRC, якщо не впевнені.
Процедура випробування
=================
---------------------
Ви отримаєте лист електронною поштою, коли образи rom будуть готовими для випробування.
Лист електронною поштою буде посилатися на відкритий issue на нашій [поточній платформі розміщення git.](/git.html#cbmk-canoeboot-make)
Лист електронною поштою буде посилатися на відкритий issue на нашій [поточній платформі розміщення git.](../../git.md#cbmk-canoeboot-make)
Чи ви отримаєте лист електронною поштою через поштовий домен canoeboot.org,
або один з email розробників, вам варто перевірити (для
вашої власної безпеки),
що завантажені rom підписано з [офіційним ключем.](/download.html#gpg-signing-key)
що завантажені rom підписано з [офіційним ключем.](../../download.md#gpg-signing-key)
Коли ваше випробування закінчено, прокоментуйте в issue, на яке наведено посилання
в вашому відправленому листі електронною поштою, таким чином:
@ -75,6 +75,6 @@ note: [вставьте будь-які приміткі, якщо релева
Наприклад, відгук про статус плати міг би виглядати подібним чином:
board: t440p_12mb
status: fail
note: GRUB throws error 'something_is_b0rked'
board: t440p_12mb
status: fail
note: GRUB throws error 'something_is_b0rked'

View File

@ -6,7 +6,7 @@ x-toc-enable: true
TODO: this page could do with an update. More info, about more boards
Introduction
============
------------
This document lists product codenames for some hardware.
Please note that just because a certain device is listed here does NOT mean
@ -28,7 +28,7 @@ of reliability):
they will appear silver.
List of models and codenames
============================
----------------------------
### Codenames
@ -101,6 +101,7 @@ under RAM sticks.
- Port Replicator II - Seville-lite
### Miscellaneous
- [Calistoga](https://ark.intel.com/products/codename/5950/Calistoga):
945GM/945PM chipset family name
- Napa: calistoga based platform
@ -118,7 +119,8 @@ GM45/GS45/PM45 chipset family name.
of it fully describes its operation.
See also
========
--------
- Many more Intel codenames can be found at
[Wikipedia](https://en.wikipedia.org/wiki/List_of_Intel_codenames).
- For ThinkPads see [Documentation/thinkpad/codenames.csv @ Coreboot]

View File

@ -3,8 +3,8 @@ title: Building Canoeboot for Emulation
x-toc-enable: true
...
Introduction
============
Canoeboot on QEMU
-----------------
Canoeboot supports building for qemu as a target board.
The resulting rom can then be tested using qemu.
@ -13,7 +13,7 @@ The qemu board is mostly intended to speed up development by removing the need t
Qemu may also be useful for end users who intend to make changes to their Canoeboot rom without having to flash and reboot their machine.
Building and Testing
====================
--------------------
Canoeboot can be built for qemu just like any other board.
@ -57,7 +57,7 @@ qemu-system-aarch64 \
```
Use Cases
=========
---------
While development is the primary motivation for qemu support, the board makes it easy to test minor changes to release roms.
For example one can use *cbfstool* from coreboot to edit the background image in a Canoeboot rom as follows:

View File

@ -11,7 +11,7 @@ You should assume that these instructions no longer work. Otherwise, if you
wish to test them and send changes, patches are very much welcome!
High Pitched Whining Noise on Idle in Arch-based distros
==============================================================
--------------------------------------------------------
**NOTE: VERY OLD advice (years old), it may not be relevant for modern Arch.**
@ -69,7 +69,6 @@ using [this guide](../linux/grub_cbfs.md).
X60/T60: Serial port - how to use (for dock owners)
[Note: using a grsec enabled kernel will disable the powertop function. ](https://en.wikibooks.org/wiki/Grsecurity/Appendix/Grsecurity_and_PaX_Configuration_Options)
===================================================
For the Thinkpad X60 you can use the "UltraBase X6" dock (for the
X60 Tablet it is called X6 Tablet UltraBase). For the ThinkPad T60, you
@ -103,8 +102,8 @@ Note: part of the tutorial above requires changing your grub.cfg. Just
change the `linux` line to add instructions for enabling getty. See
[../linux/grub\_cbfs.md](../linux/grub_cbfs.md).
Finetune backlight control on intel gpu's
=========================================
Finetune backlight control on intel GPUs
----------------------------------------
Sometimes the backlight control value (BLC\_PWM\_CTL) set by Canoeboot
is not ideal. The result is either flicker, which could cause nausea or
@ -196,7 +195,7 @@ on page 94. More research needs to be done on this target so proceed
with care.
Power Management Beeps on Thinkpads
===================================
-----------------------------------
When disconnecting or connecting the charger, a beep occurs. When the
battery goes to a critically low charge level, a beep occurs. Nvramtool
@ -231,7 +230,7 @@ Finally, you need to flash the rom with this new image. See here
for a detailed explanation.
Get EDID: Find out the name (model) of your LCD panel
=====================================================
-----------------------------------------------------
Get the panel name:
@ -254,7 +253,7 @@ removing the LCD panel is an option. Usually, there will be information
printed on the back.
e1000e driver trouble shooting (Intel NICs)
===========================================
-------------------------------------------
Example error, ¿may happen on weird and complex routing schemes(citation
needed for cause):

View File

@ -6,30 +6,20 @@ x-toc-enable: true
**NOTE: This documentation refers only to ARM64. For AMD64/i386 (Intel/AMD)
U-Boot setups, please read [uboot-x86.md](uboot-x86.md).**
Canoeboot has experimental support for using U-Boot as a coreboot
payload since the the project was launched, and on x86 since late 2024.
U-Boot integration in Canoeboot is currently at a proof-of-concept
stage, with most boards completely untested and most likely not working.
ROM images for them are mostly intended for further testing and
development. If you have one of these machines and want to help fix
things, you can ping `alpernebbi` on Libera IRC, who ported these boards
to Canoeboot.
Make sure you have the latest `cbmk` from the Git repository,
and the build dependencies are installed like so, from `cbmk/` as root:
./mk dependencies debian
This installs everything needed for `./mk -b coreboot`, and part of the
build process makes use of coreboot's own cross-compile toolchain.
Emulation
---------
[QEMU x86/ARM64 virtual machines](../misc/emulation.md) are also
supported, which should be easy targets to start tinkering on if you
want to contribute.
Usage
=====
-----
When your board is powered on, U-Boot will ideally turn on the display
and start printing console messages there. After a countdown of a few
@ -63,7 +53,7 @@ table, unexpected parts of the SPI ROM image, or do something else
entirely.
Known issues
============
------------
U-Boot integration in Canoeboot is incomplete. Here is a list of known
issues that affect all boards:
@ -81,7 +71,8 @@ issues that affect all boards:
- UEFI support is incomplete
See also
========
--------
- [U-Boot documentation](https://u-boot.readthedocs.io/en/latest/)
- [U-Boot documentation (unmigrated files)](https://source.denx.de/u-boot/u-boot/-/tree/master/doc)
- [U-Boot and generic distro boot](https://marcin.juszkiewicz.com.pl/2021/03/14/u-boot-and-generic-distro-boot/)

View File

@ -4,7 +4,7 @@ x-toc-enable: true
...
Background
==========
----------
The following process should theoretically be applicable to other U-Boot devices and Linux distributions, but the focus here is specifically on ArchLinuxARM.
@ -16,7 +16,7 @@ And the the instructions from the ArchLinuxARM wiki [here](https://archlinuxarm.
The purpose of this guide is to instruct users on how to install an ArchLinuxARM on an external disk that will boot on a gru_bob chromebook, and optionally on the internal eMMC. Many concepts covered in this guide may be familiar to prospective and veteran Canoeboot users, with the scope being comprehensive.
Boot Method
===========
-----------
There are (at least) three methods that can be used to boot into a Linux distribution from u-boot:
1) EFI - common, modern boot method for amd64 architecture machines. This is not distribution-specific, so if you intend to make a portable drive that is compatible across multiple systems, you may have a use case.
@ -34,7 +34,7 @@ For more information about what actually goes into a boot.scr script, check [thi
Since extlinux.conf is supported by multiple bootloaders, making your system more portable, is natively supported by u-boot, and requires no binary blobs or extra software, it seems to be the best choice for a chromebook.
Creating extlinux.conf
======================
----------------------
Here is an example template of extlinux.conf, [similar examples are found in the u-boot docs](https://u-boot.readthedocs.io/en/latest/develop/distro.html):
@ -44,7 +44,6 @@ menu title Libre-U-Boot menu
prompt 0
timeout 50
label arch
menu label Arch Linux ARM
linux /Image
@ -61,7 +60,7 @@ label archfallback
```
Formatting and Partitioning Your External Media
===============================================
-----------------------------------------------
Now it's time partition the boot disk. During testing, a microSD card was used in the microSD card slot of the gru-bob chromebook.
The Canoeboot configuration will boot the microSD card above the onboard eMMC if both are present and bootable. This is useful because it means no knowledge or use of the u-boot console is required.
@ -73,10 +72,12 @@ Find your device with my favourite command, `lsblk` and open it with `fdisk`
```
fdisk /dev/sdX
```
For users creating a bootable SD card, your device may show up as `/dev/mmcblkX` - if this is the case, make sure to change the commands in this guide to
contain that path instead of `/dev/sdX`.
In the fdisk tui, create two partitions on a Master Boot Record:
- create a new MBR label
- create boot partition of approx. 200MB or greater
- set bootable flag on this partition
@ -86,27 +87,32 @@ In the fdisk tui, create two partitions on a Master Boot Record:
You will find the appropriate options by typing `m` when using the fdisk tui on Linux distros.
Now make the filesystems:
```
mkfs.vfat /dev/sdX1
mkfs.ext4 /dev/sdX2
```
It's now time to get the PARTUUID of `/dev/sdX2`:
```
sudo blkid | grep "/dev/sdX2"
```
make sure to note down the PARTUUID of your second partition; not your boot partition.
paste this into your extlinux.conf file in the `append` section, e.g.:
```
append console=ttyS0,115200 console=tty1 rw root=PARTUUID=fc0d0284-ca84-4194-bf8a-4b9da8d66908
```
in the template provided above, replace `$PARTUUID` with your own. It's possible to specify root in other ways - check the u-boot docs for more examples.
Boot-Disk Creation
==================
------------------
Now that we've got an extlinux.conf file, copy it to your /tmp directory, and we'll begin.
```
cd /tmp
curl -LO http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz
@ -123,6 +129,7 @@ sync
umount boot
umount root
```
Note the use of ArchLinuxARM-aarch64-latest.tar.gz and not ArchLinuxARM-gru-latest.tar.gz
The current gru build only supports a depthcharge payload and, of course, we're not using depthcharge are we?
@ -133,7 +140,7 @@ Extensive testing with ArchLinuxARM-latest release, showed that booting the fall
If you create an extlinux.conf file with paths to both images - like in the template above - you can select either by number at boot.
Going Live - Necessary Tweaks
=============================
-----------------------------
Once you're at the login prompt, the fun isn't over! Login & password for root are both `root` by default.
Most Arch users will likely try to update their system now - don't update just yet.
@ -142,10 +149,12 @@ Run `lsblk` and you'll see that the boot partition is not mounted by default.
Updating with `pacman -Syu` at this stage will cause driver problems if you update without your boot partition mounted, likely meaning you cannot connect to the internet with a USB peripheral.
To prevent this becoming a problem:
```
mkdir /boot
mount /dev/sdX1 /boot
```
With that out of the way, yes, you may now update.
It's worth creating a basic filesystem table to automate mounting at boot - it's blank by default so here's another template:
@ -160,18 +169,22 @@ UUID=$UUID1 / ext4 rw,relatime 0 1
# /dev/mmcblk1p1 boot
UUID=$UUID0 /boot vfat rw,relatime 0 2
```
It should go without saying that you'll replace `$UUID0` and `UUID1` with your boot and root filesystem UUID.
To get the right information in there:
```
lsblk -o NAME,UUID,FSTYPE,SIZE
```
`NAME` and `SIZE` are not necessary, but they will help you tell which partition is which.
Final Steps
===========
-----------
At this stage, you now have a fully functional ArchLinuxARM system on an external disk, and are ready to configure your system.
If you intend to install onto the eMMC module, you can make your changes permanent with:
```
dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=4M status=progress
```

View File

@ -4,7 +4,7 @@ x-toc-enable: true
...
System Configuration
====================
--------------------
Hardware: Samsung Chromebook Plus XE513C24 (gru\_kevin)
@ -15,7 +15,7 @@ Operating System: Debian Bookworm RC2
[https://wiki.debian.org/Firmware](https://wiki.debian.org/Firmware)
Install Media Preparation
=========================
-------------------------
Follow the Debian installation instructions in the link below:
@ -26,16 +26,17 @@ page and I selected the DVD image to have all the packages available when
offline (3.7 gigabyte iso). See the notes below about alternately using the
netinst version.
[https://cdimage.debian.org/cdimage/bookworm_di_rc2/arm64/iso-dvd/](https://cdimage.debian.org/cdimage/bookworm_di_rc2/arm64/iso-dvd/)
[https://cdimage.debian.org/cdimage/bookworm\_di\_rc2/arm64/iso-dvd/](https://cdimage.debian.org/cdimage/bookworm_di_rc2/arm64/iso-dvd/)
Write the iso file to a micro sdcard. Replace `sdcard_device` below
with the appropriate device path on your system.
```
# dd if=debian-bookworm-DI-rc2-arm64-DVD-1.img of=/dev/sdcard_device bs=1M status=progress; sync
```
Installation
============
------------
1. Insert the micro sdcard into the slot on the Chromebook.
2. Power on the Chromebook.
@ -149,7 +150,7 @@ internal emmc.
![](https://av.canoeboot.org/xe513c24/debbook-firefox.jpg)
System Functionality
====================
--------------------
Things that work:

View File

@ -4,7 +4,7 @@ x-toc-enable: true
...
System Configuration
====================
--------------------
Hardware: Samsung Chromebook Plus XE513C24 (gru\_kevin)
@ -13,7 +13,7 @@ Tested on [Libreboot 20230423](https://libreboot.org/news/libreboot20230423.html
Operating System: OpenBSD 7.3
Install Media Preparation
=========================
-------------------------
Follow the OpenBSD arm64 installation instructions in the link below:
@ -26,7 +26,7 @@ with the appropriate device path on your system.
```
Installation Attempt
====================
--------------------
1. Insert the micro sdcard into the slot on the Chromebook.
2. Power on the Chromebook.

View File

@ -3,8 +3,8 @@ title: U-Boot payload (x86 specific)
x-toc-enable: true
...
Introduction
============
U-Boot UEFI on x86
------------------
<img tabindex=1 class="r" src="https://av.vimuser.org/x200-uboot.jpg" /><span class="f"><img src="https://av.vimuser.org/x200-uboot.jpg" /></span>
@ -25,8 +25,7 @@ payload. It has several boot methods but the most interesting (in an x86
context) is UEFI. U-Boot provides a very sensible UEFI implementation that can
reliably boot many Linux and BSD systems.
Availability
------------
### Availability
<img tabindex=1 class="r" src="https://av.vimuser.org/uboot-canoe.png" /><span class="f"><img src="https://av.vimuser.org/uboot-canoe.png" /></span>
@ -52,8 +51,7 @@ Here is an example of what it looks like on the boot menu:
<https://mas.to/@libreleah/113596262378713418>
Errors
------
### Errors
If you see error `-25` in the bootflow menu, it's because there's nothing
installed that i t can use e.g. EFI bootloader such as GRUB.
@ -62,8 +60,7 @@ If you see error `-2` it's likely that you have tried to boot a USB drive
automatically; sometimes you have to do it manually (see the section below
about using the bootflow command manually, via `bootflow select`).
Boot Linux or BSD installer (USB)
---------------------------
### Boot Linux/BSD installer (USB)
Just stick your formatted USB stick in. U-Boot should detect it. Sometimes some
USB flash drives are broken, because many of them violate specifications and
@ -84,8 +81,7 @@ After selecting the device, you can do:
bootflow boot
Booting installed system
------------------------
### Booting installed system
It should just work. If all is well, it'll show the bootflow menu. Simply
select your device. If you see error, perhaps try:
@ -93,10 +89,9 @@ select your device. If you see error, perhaps try:
bootefi bootmgr
Tested operating systems
========================
------------------------
Linux/BSD
---------
### Linux/BSD
Arch Linux, Debian Linux and OpenBSD have been tested.
@ -110,8 +105,7 @@ bootloader in the installed system).
EFI-based GRUB menus like in the Debian installer seemed to work just fine,
that is: setups that use the EFI framebuffer instead of a text console.
Windows
-------
### Windows
Windows was tested, and doesn't work yet. Simon Glass maintains the x86
coreboot payload, and has informed me that he still has some work to do
@ -120,7 +114,7 @@ there.
Obviously using Windows would be extremely unGNU, so we advise against it.
SecureBoot
==========
----------
Supported by U-Boot, though U-Boot does not currently have a robust way of
storing EFI variables, and Canoeboot disables SecureBoot by default. However,
@ -135,7 +129,7 @@ sense to Canoeboot's GRUB hardening setup, though the latter is more flexible,
albeit not widely used by the mainstream, but it does work (I use it myself!).
ThinkPad X60/T60
================
----------------
The 32-bit U-Boot payload is only useful for 32-bit setups, and 32-bit UEFI
isn't really that common on x86; the 64-bit U-Boot payload is much more useful,
@ -172,7 +166,7 @@ interesting in the future, as more distros stop supporting BIOS-based methods,
or where the latter may become untested in the future.
Bugs
====
----
Limited testing, at least as of 5 December 2024, but some issues that appeared
included:
@ -192,7 +186,7 @@ but some don't very well; the GM45 machines work well, e.g. a ThinkPad X200 was
tested.
Mitigating instability
=======================
----------------------
U-Boot is not a primary payload on any board where it's enabled. It's instead
chainloaded from SeaBIOS on 64-bit x86, and from GRUB on 32-bit x86. You select

View File

@ -1,5 +1,5 @@
---
title: Downloads
title: Download Canoeboot
x-toc-enable: true
...

View File

@ -6,7 +6,7 @@ x-toc-enable: true
AKA Frequently Questioned Answers
Disable security before flashing
================================
--------------------------------
Before internal flashing, you must first disable `/dev/mem` protections. Make
sure to re-enable them after you're finished.
@ -14,20 +14,17 @@ sure to re-enable them after you're finished.
See: [Disabling /dev/mem protection](docs/install/devmem.md)
Important issues
================
----------------
How to compile Canoeboot from source
------------------------------------
### How to compile Canoeboot from source
Refer to the [cbmk build instructions](docs/build/).
How does the build system work?
-------------------------------
### How does the build system work?
Refer to the [cbmk maintenance manual](docs/maintain/).
Do not use CH341A!
------------------
### Do not use CH341A!
This SPI flasher will damage your chip, and the mainboard that it is connected
to.
@ -35,8 +32,7 @@ to.
Read the notes about CH341A on [docs/install/spi.md](docs/install/spi.md) to
learn more.
How Can I Help
--------------
### How Can I Help
If you have a board supported in Canoeboot then please consider becoming a
tester.
@ -44,8 +40,7 @@ Testing involves minimal effort and really helps out the project.
See the [board maintainers documentation](/docs/maintain/testing.md)
if you are interested in testing roms before they are released.
Uneven backlight on GM45 ThinkPads
----------------------------------
### Uneven backlight on GM45 ThinkPads
We don't know how to detect the correct PWM value to use in
coreboot, so we just use the default one in coreboot which has
@ -54,8 +49,7 @@ this issue on some CCFL panels, but not LED panels.
You can work around this in your distribution, by following the notes at
[docs: backlight control](../docs/misc/#finetune-backlight-control-on-intel-gpus).
Dead ethernet port on X200/T400/X60/T60
---------------------------------------
### GM45 thinkpad ethernet port doesn't autoconnect
This was observed on some systems using network-manager. This happens
both on the original BIOS and in Canoeboot. It's a quirk in the
@ -71,8 +65,7 @@ On systemd-based distros, you might try:
(the service name might be different for you, depending on your
configuration)
KCMA-D8/KGPE-D16: doesn't boot with PIKE2008
---------------------------------------
### PIKE2008 module hangs KGPE-D16 / KCMA-D8
Loading the option ROM from the PIKE2008 module on either ASUS KCMA-D8
or KGPE-D16 causes the system to hang at boot. It's possible to use
@ -81,8 +74,7 @@ or to boot (with SeaGRUB and/or SeaBIOS) from regular SATA and then use
it in Linux. The Linux kernel is capable of using the PIKE2008
module without loading the option ROM.
How to save kernel panic logs on thinkpad laptops?
--------------------------------------------------
### How to save kernel panic logs on thinkpad laptops?
The easiest method of doing so is by using the kernel's netconsole
and reproducing the panic. Netconsole requires two machines, the one that is
@ -147,23 +139,21 @@ the target (`target$`):
7. Try to reproduce the kernel panic.
Hardware compatibility
======================
----------------------
What systems are compatible with Canoeboot?
-----------------------------------------------------------------------------------
### What systems are compatible with Canoeboot?
Any system can easily be added, so *compatibility* merely refers to whatever
boards are integrated in the `cbmk` build system, which Canoeboot uses.
The [installation page](docs/install/) lists compatible machines.
Freedom pitfalls with modern Intel hardware {#intel}
----------------------------------------------------
### Freedom pitfalls with modern Intel hardware {#intel}
Coreboot is nominally Free Software, but requires binary blobs on most x86
targets that it supports, on both Intel and AMD.
### Intel Management Engine (ME) {#intelme}
#### Intel Management Engine (ME) {#intelme}
NOTE: The information below is slightly out of date. Nowadays, Intel ME does
not run on an ARC coprocessor, but instead runs on a modified Intel 486 based
@ -328,7 +318,11 @@ The book ***[Platform Embedded Security Technology
Revealed](https://www.apress.com/9781430265719)*** describes in great
detail the ME's hardware architecture and firmware application modules.
### Firmware Support Package (FSP) {#fsp}
If you're stuck with the ME (non-canoeboot system), you might find this
interesting:
<https://hardenedlinux.github.io/firmware/2016/11/17/neutralize_ME_firmware_on_sandybridge_and_ivybridge.html>
#### Firmware Support Package (FSP) {#fsp}
On all recent Intel systems, coreboot support has revolved around
integrating a blob (for each system) called the *FSP* (firmware support
@ -342,7 +336,7 @@ Since the FSP is responsible for the early hardware initialization, that
means it also handles SMM (System Management Mode). This is a special
mode that operates below the operating system level.
### CPU microcode updates {#microcode}
#### CPU microcode updates {#microcode}
The microcode configures logic gates in your CPU, to implement an instruction
set architecture. Your CPU will already contain them, but it also supplies a
@ -365,8 +359,7 @@ The git repository for that project is here:
Both the video and the repository give some further insight about CPU
microcode. The way it works on AMD will be very similar to Intel.
Freedom pitfalls to consider on AMD hardware {#amd}
----------------------------------------------------------------------------
### Freedom pitfalls to consider on AMD hardware {#amd}
NOTE: Nowadays there's openSIL <https://github.com/openSIL/openSIL> - it's
AMD's attempt to provide some source code again, that projects like coreboot
@ -376,7 +369,7 @@ be "neutered" (nothing like `me_cleaner`, or *psp\_cleaner*) exists yet.
AMD has more or less the same problem as Intel, when it comes to software
freedom.
### AMD Platform Security Processor (PSP)
#### AMD Platform Security Processor (PSP)
This is basically AMD's own version of the [Intel Management
Engine](#intelme). It has all of the same basic security and freedom
@ -419,13 +412,13 @@ anecdotal reports indicate that AMD's boot guard counterpart will be
used on most OEM hardware, disabled only on so-called "enthusiast"
CPUs.
### AMD IMC firmware
#### AMD IMC firmware
Read <https://www.coreboot.org/AMD_IMC>.
NOTE: This section is oudated, and it is in need of cleanup.
### AMD SMU firmware
#### AMD SMU firmware
NOTE: This section may be outdated, and it is in need of cleanup.
@ -443,7 +436,7 @@ and based on this work, Damien Zammit (another coreboot hacker)
firmware, but on the relevant system (ASUS F2A85-M) there were still
other such files present (Video BIOS, and others).
### AMD AGESA firmware
#### AMD AGESA firmware
NOTE: More needs to be written about this, to reflect the current reality.
The situation with AMD has evolved in recent years. The information on this FAQ
@ -455,29 +448,26 @@ project, releasing this as source code under a free license. In 2014,
they stopped releasing source code and started releasing AGESA as binary
blobs instead. This makes AGESA now equivalent to [Intel FSP](#fsp).
### AMD CPU microcode updates
#### AMD CPU microcode updates
Read the Intel section
practically the same, though it was found with much later hardware in
AMD that you could run without microcode updates. It's unknown whether
the updates are needed on all AMD boards (depends on CPU).
Hi, I have &lt;insert random system here&gt;, is it supported?
--------------------------------------------------------------------------------------------------------
### Hi, I have &lt;insert random system here&gt;, is it supported?
If coreboot lacks support for your hardware, you must add support for it.
Please consult the coreboot project for guidance.
General questions
=================
-----------------
How do I install Canoeboot?
-------------------------------------------------------
### How do I install Canoeboot?
See [installation guide](docs/install/)
How do I program an SPI flash chip?
---------------------------------------------------------------------------------
### How do I program an SPI flash chip?
Refer to:\
[Externally rewrite 25xx NOR flash via SPI protocol](docs/install/spi.md)
@ -485,8 +475,7 @@ Refer to:\
It's possible to use a 16-pin SOIC test clip on an 8-pin SOIC chip, if you
align the pins properly. The connection is generally more sturdy.
How do I write-protect the flash chip?
----------------------------------------------------------------------------
### How do I write-protect the flash chip?
By default, there is no write-protection on a Canoeboot system. This is
for usability reasons, because most people do not have easy access to an
@ -506,8 +495,7 @@ welcome to submit patches adding these instructions.
TODO: Document PRx based flash protection on Intel platforms, and investigate
other methods on AMD systems.
How do I change the BIOS settings?
------------------------------------------------------------------------
### How do I change the BIOS settings?
Most Canoeboot setups actually use the [GRUB
payload](http://www.coreboot.org/GRUB2). More information about payloads
@ -541,8 +529,7 @@ To get a full list of available options, do this:
This will change the default inside that ROM image, and then you can
re-flash it.
How do I pad a ROM before flashing?
--------------------------------------
### How do I pad a ROM before flashing?
It is advisable to simply use a larger ROM image. This section was written
mostly for ASUS KCMA-D8 and KGPE-D16 mainboards, where previously we only
@ -581,8 +568,7 @@ padded 16MiB image do the following:
With padding removed cbfstool will be able to operate on the image as usual.
Do I need a bootloader in my distro?
---------------------------------------------------------------------------------------------------
### Do I need to install a bootloader when installing a distribution?
Most Canoeboot setups integrate the GRUB bootloader already, as a
*[payload](http://www.coreboot.org/Payloads)*. This means that the GRUB
@ -600,8 +586,7 @@ Nowadays, other payloads are also provided. If you're using the SeaBIOS payload,
then the normal MBR bootsector is used on your HDD or SSD, like you would
expect. So the above paragraphs only apply to the GRUB payload.
Do I need to re-flash when I re-install a distribution?
-------------------------------------------------------------------------------------------
### Do I need to re-flash when I re-install a distribution?
Not anymore. Recent versions of Canoeboot (using the GRUB payload) will
automatically switch to a GRUB configuration on the HDD or SSD, if it
@ -613,14 +598,38 @@ more information, see
If you're using the SeaBIOS payload, it's even easier. It works just like you
would expect. SeaBIOS implements a normal x86 BIOS interface.
What does a flash chip look like?
-----------------------------------------------------------------
### What does a flash chip look like?
You can find photos of various chip types on the following page:\
[External 25xx NOR flashing guide](docs/install/spi.md)
### tlp
You can install the `tlp` package and start that service. For example, on
Debian:
```
apt-get install tlp tlp-rdw
systemctl enable tlp
systemctl start tlp
```
Now read the manual:
```
man tlp-stat
```
As root, you can do:
```
tlp-stat -b
```
This will provide information about the battery.
What other firmware exists outside of Canoeboot?
==================================================
------------------------------------------------
### External GPUs
@ -830,10 +839,9 @@ Use of ethernet or wifi is recommended, as opposed to mobile networks,
as these are generally much safer.
Operating Systems
=================
-----------------
Can I use Linux?
--------------------------------------------------
### Can I use Linux?
Absolutely! It is well-tested in Canoeboot, and highly recommended. See
[installing Linux](../docs/linux/grub_boot_installer.md) and
@ -842,15 +850,13 @@ Absolutely! It is well-tested in Canoeboot, and highly recommended. See
Any recent distribution should work, as long as it uses KMS (kernel mode
setting) for the graphics.
Fedora won't boot? (maybe Redhat/CentOS)
-----------------------------------------------------------
### Fedora won't boot? (may also be applicable to Redhat/CentOS)
On Fedora, by default the grub.cfg tries to boot linux in 16-bit mode. You
just have to modify Fedora's GRUB configuration.
Refer to [the Linux page](docs/linux/).
Can I use BSD?
----------------------------------
### Can I use BSD?
Absolutely! The Canoeboot firmware has good support for FreeBSD, NetBSD and
OpenBSD. Other systems are untested, but should work just fine.
@ -858,13 +864,49 @@ OpenBSD. Other systems are untested, but should work just fine.
See:
[docs/bsd/](docs/bsd/)
Are other operating systems compatible?
-------------------------------------------------------------------
### Windows??
Yes, you can use Windows 10 and 11. They are not officially supported and the
Canoeboot project recommends that you *avoid* this choice, because Windows is
proprietary software. What this means is that you do *not* have the freedom
to use, study, adapt and share the software in any reasonable way. You are
entirely at the mercy of Microsoft, whose motive is profit, as opposed to the
general advancement of computer science and the welfare of everyone.
See: [What is Free Software?](https://writefreesoftware.org/learn)
In addition to being proprietary software, Windows is known to be full of bugs,
including *backdoors*. When you *use* Windows, it will send information about
you to third parties, used for a variety of purposes such as advertising, but
it's quite possible that three-letter agencies may also receive your data if
you use Windows.
For the sake of your freedom, you should never, ever use Windows. Use Linux or
BSD systems, which are well-supported. Anyway:
[Video of Windows 10 booting up](https://yewtu.be/watch?v=BWq6XnWKQnM)
[Video of Windows 11 booting up](https://yewtu.be/watch?v=OFHiMfVNNeA)
Of note: Windows 11 officially requires at least TPM 1.2 to be supported, and
it requires use of UEFI SecureBoot. To bypass this requirement, MajorGeeks has
a guide, see: <https://www.majorgeeks.com/content/page/bypass_tpm.html>
The person who tested this also stated that they were unable to perform an
in-place upgrade from 10 to 11, so they had to wipe the drive and perform a
clean (note: not clean, because Windows is full of NSA spyware) installation.
In both cases, as shown above, the Windows operating system was booting from
SeaBIOS, with the coreboot framebuffer initialised at startup, on an Intel GPU
initialised via coreboot's *libgfxinit*, on November 2023 versions of Canoeboot.
We do not yet support booting with UEFI on x86 machines.
### Are other operating systems compatible?
Unknown. Perhaps so, but it's impossible to say without further testing.
What level of freedom does Canoeboot give me?
===================================================
What level of software freedom does Canoeboot give me?
--------------------------------------------------
Canoeboot firmware provides host hardware initialisation inside ROM files,
that can be written to NOR flash, but on many systems there exist
@ -908,7 +950,7 @@ exist, for example, the work done by Sam Zeloof and the Libre Silicon project:
(Sam literally makes CPUs in his garage)
Where can I learn more about electronics
==========================================
----------------------------------------
* Basics of soldering and rework by PACE
Both series of videos are mandatory regardless of your soldering skill.

View File

@ -6,20 +6,17 @@ x-toc-enable: true
Також відомо як Відповіді на часті питання
Важливі питання
================
---------------
Як скомпілювати Canoeboot з джерельного коду
------------------------------------
### Як скомпілювати Canoeboot з джерельного коду
Зверніться до [інструкцій зі збірки cbmk](docs/build/).
Як працює система збірки?
-------------------------------
### Як працює система збірки?
Зверніться до [посібника з обслуговування cbmk](docs/maintain/).
Не використовуйте CH341A!
------------------
### Не використовуйте CH341A!
Цей програматор SPI пошкодить ваш чіп і материнську плату, до якої він
підключений.
@ -27,8 +24,7 @@ x-toc-enable: true
Прочитайте примітки щодо CH341A на [docs/install/spi.md](docs/install/spi.md), щоб
вивчити більше.
Flashprog скаржиться на доступ DEVMEM
--------------------------------------
### Flashprog скаржиться на доступ DEVMEM
Якщо запущено `flashprog -p internal` для програмної перепрошивки та
ви отримуєте помилку, пов'язану з доступом до /dev/mem, вам слід перезавантажити систему з
@ -48,8 +44,7 @@ Error accessing DMI Table, 0x1000 bytes at 0x000000007fb27000
/dev/mem mmap failed: Operation not permitted
```
Підсвічування в лівій частині екрана стає темнішим
---------------------------------------------------------------------------------------------------------------
### Підсвічування в лівій частині екрана стає темнішим
Ми не знаємо, як визначити правильне значення ШІМ для використання в
coreboot, тому ми просто використовуємо стандартне в coreboot, який має
@ -58,8 +53,7 @@ coreboot, тому ми просто використовуємо стандар
Ви можете вирішити цю проблему у своєму дистрибутиві, дотримуючись приміток на
[документація: контроль підсвічуванням](../docs/misc/#finetune-backlight-control-on-intel-gpus).
Ethernet не працює на моєму X200/T400/X60/T60, коли я його підключаю
-------------------------------------------------------------------
### Ethernet не працює на моєму X200/T400/X60/T60, коли я його підключаю
Це спостерігалося в деяких системах, які використовують network-manager. Таке буває
як в оригінальному BIOS, так і в Canoeboot. Це примха в
@ -75,8 +69,7 @@ Ethernet не працює на моєму X200/T400/X60/T60, коли я йог
(назва служби може відрізнятися для вас, залежно від вашої
конфігурації)
які слід враховувати на апаратному забезпеченні AMD
---------------------------------------------------
### Мій KCMA-D8 або KGPE-D16 не завантажується з встановленим модулем PIKE2008
Завантаження Option ROM з модуля PIKE2008 на ASUS KCMA-D8
або KGPE-D16 викликає зависання системи під час завантаження. Можна використовувати
@ -85,8 +78,7 @@ Ethernet не працює на моєму X200/T400/X60/T60, коли я йог
це в Linux. Ядро Linux здатне використовувати PIKE2008
модуль без завантаження Option ROM.
Як зберегти журнали паніки ядра на ноутбуках Thinkpad?
--------------------------------------------------
### Як зберегти журнали паніки ядра на ноутбуках Thinkpad?
Найпростіший спосіб зробити це за допомогою netconsole ядра
і відтворення паніки. Netconsole вимагає двох машин, тієї, що є
@ -151,23 +143,21 @@ Ethernet не працює на моєму X200/T400/X60/T60, коли я йог
7. Спробуйте відтворити паніку ядра.
Апаратна сумісність
======================
-------------------
Які системи сумісні з Canoeboot?
-----------------------------------------------------------------------------------
### Які системи сумісні з Canoeboot?
Будь-яку систему можна легко додати, тому *сумісність* посилається до будь-якої
інтегрованої до системи побудови `cbmk` плати, яку Canoeboot використовує.
The [installation page](docs/install/) lists compatible machines.
Пастки свободи з сучасним обладнанням Intel {#intel}
----------------------------------------------------
### Пастки свободи з сучасним обладнанням Intel {#intel}
Coreboot номінально є вільним програмним забезпеченням, але для більшості x86
цілей, які він підтримує, потрібні двійкові блоби, як на Intel, так і на AMD.
### Intel Management Engine (ME) {#intelme}
#### Intel Management Engine (ME) {#intelme}
ПРИМІТКА: Інформація нижче трохи застаріла. Зараз Intel ME не
працює на співпроцесорі ARC, а працює на архітектурі модифікованого процесора Intel 486,
@ -328,7 +318,7 @@ wiki](http://www.coreboot.org/Intel_Management_Engine), та
Revealed (Розкрито вбудовану технологію безпеки платформи)](https://www.apress.com/9781430265719)*** чудово описує в
значних подробицях архітектуру апаратного забезпечення ME та прикладні модулі мікропрограми.
### Firmware Support Package (FSP) {#fsp}
#### Firmware Support Package (FSP) {#fsp}
У всіх останніх системах Intel, підтримка coreboot обертається навколо
інтеграції блоба (для кожної системи) під назвою *FSP* (Firmware Support Package, пакет підтримки
@ -347,7 +337,7 @@ Revealed (Розкрито вбудовану технологію безпек
руткітів SMM було продемонстровано в природі (використайте пошукову систему,
щоб знайти їх).
### Оновлення мікрокода ЦП {#microcode}
#### Оновлення мікрокода ЦП {#microcode}
Мікрокод налаштовує логічні вентилі у вашому ЦП, щоб реалізувати архітектуру
набору інструкцій. Ваш ЦП уже містить їх, але він також надає спосіб оновлення
@ -366,34 +356,12 @@ Revealed (Розкрито вбудовану технологію безпек
І відео, і репозиторій дають деяку додаткову інформацію про мікрокод
ЦП. Те, як це працює на AMD, буде дуже схожим на Intel.
### Intel не співпрацює
Роками coreboot бореться з Intel. Виявилося, що Intel загалом
вкрай відмовляється від співпраці. Багато розробників coreboot
і компаній намагалися залучити Intel до співпраці; а саме,
випуск джерельного коду для компонентів мікропрограми. Навіть Google, що
продає мільйони *хромбуків* (з попередньо встановленим coreboot) не змогла їх
переконати.
Навіть коли Intel співпрацює, вони все одно не надають джерельний код.
Вони можуть надавати обмежену інформацію (таблиці даних) відповідно до суворої
корпоративної NDA (угоди про нерозголошення), але навіть це не
гарантується. Навіть ODM та IBV не можуть отримати джерельний код від Intel, в
більшості випадків (вони просто інтегрують блоки, надані Intel).
Новіші графічні чіпсети Intel [вимагають блобів
прошивки](https://01.org/linuxgraphics/intel-linux-graphics-firmwares?langredirect=1).
Проект Canoeboot *надає* деяку підтримку для новіших платформ Intel, але
вам варто знати про ці проблемні питання, якщо ви вибираєте використовувати ці машини.
Підводні камені свободи, які слід враховувати на апаратному забезпеченні AMD {#amd}
----------------------------------------------------------------------------
### Підводні камені свободи, які слід враховувати на апаратному забезпеченні AMD {#amd}
AMD має більш-менш ту саму проблему, що й Intel, коли справа
стосується свободи програмного забезпечення.
### AMD Platform Security Processor (PSP)
#### AMD Platform Security Processor (PSP)
По суті, це власна версія [Intel Management
Engine](#intelme) від AMD. Він має ті самі базові проблеми безпеки та свободи,
@ -436,13 +404,13 @@ Management Engine), PSP від AMD також може діяти як тира
на більшості апаратного забезпечення OEM, відключений лише на так званих процесорах
"ентузіастів".
### Прошивка AMD IMC
#### Прошивка AMD IMC
Прочитайте <https://www.coreboot.org/AMD_IMC>.
ПРИМІТКА: Ця секція є застарілою, та потребує очищення.
### Прошивка AMD SMU
#### Прошивка AMD SMU
ПРИМІТКА: Ця секція є застарілою, та потребує очищення.
@ -460,7 +428,7 @@ Management Engine), PSP від AMD також може діяти як тира
прошивкою, але у відповідній системі (ASUS F2A85-M) все ще були присутні
інші блоби (Відео BIOS та інші).
### Прошивка AMD AGESA
#### Прошивка AMD AGESA
ПРИМІТКА: Більше має бути написано про це, щоб відобразити сучасну реальність.
Ситуація з AMD в останні роки змінилась. Інформація на цій сторінці поширених
@ -472,14 +440,18 @@ Management Engine), PSP від AMD також може діяти як тира
вони припинили випускати джерельний код і замість цього почали випускати AGESA у вигляді
бінарних блобів. Це робить AGESA еквівалентом [Intel FSP](#fsp).
### Оновлення мікрокоду ЦП AMD
#### Оновлення мікрокоду ЦП AMD
Прочитайте розділ Intel
практично так само, хоча було виявлено, що з набагато пізнішим апаратним забезпеченням
AMD можна працювати без оновлень мікрокоду. Невідомо, чи потрібні оновлення на всіх
платах AMD (залежить від ЦП).
### AMD не співпрацює
Проект Canoeboot не розцінює оновлення мікрокоду проблемою, і він
вмикає їх за замовчуванням на всьому апаратному забезпеченні,
яке підтримується.
#### AMD не співпрацює
Здавалося, що AMD була на правильному шляху в 2011 році, коли вони почала
співпрацювати та випускати джерельний код для кількох критичних
@ -506,22 +478,19 @@ Family 15h (на стороні AMD) або будь-яке інше, випущ
Це також стосується викривачів або будь-кого, кому потрібна справжня конфіденційність та
безпека.
&lt;вставте сюди випадкову систему&gt;, чи підтримується вона?
--------------------------------------------------------------------------------------------------------
### Привіт, у мене &lt;вставте сюди випадкову систему&gt;, чи підтримується вона?
Якщо в coreboot бракує підтримки для вашого апаратного забезпечення, ви мусите додати підтримку для нього.
Будь-ласка, проконсультуйтесь з проектом coreboot для наставництва.
Загальні питання
=================
----------------
Як встановити Canoeboot?
-------------------------------------------------------
### Як встановити Canoeboot?
Подивіться [посібник з встановлення](docs/install/)
Як запрограмувати флеш-чіп SPI?
---------------------------------------------------------------------------------
### Як запрограмувати флеш-чіп SPI?
Зверніться до:\
[Зовнішній перезапис 25xx NOR flash через протокол SPI](docs/install/spi.md)
@ -529,8 +498,7 @@ Family 15h (на стороні AMD) або будь-яке інше, випущ
Можна використовувати 16-контактний затискач SOIC на 8-контактній мікросхемі SOIC, якщо
правильно впорядкувати контакти. Як правило, з'єднання більш міцне.
Як захистити флеш-чіп від запису?
----------------------------------------------------------------------------
### Як захистити флеш-чіп від запису?
За замовчуванням немає захисту від запису на системі Canoeboot. Це
з міркувань зручності використання, оскільки більшість людей не мають легкого доступу до зовнішнього
@ -550,8 +518,7 @@ Family 15h (на стороні AMD) або будь-яке інше, випущ
ЗРОБИТИ: Задокументувати захист флеш-пам'яті на основі PRx на платформах Intel і дослідити інші
методи на системах AMD.
Як змінити налаштування BIOS?
------------------------------------------------------------------------
### Як змінити налаштування BIOS?
Більшість налаштувань Canoeboot насправді використовує [корисне навантаження
GRUB](http://www.coreboot.org/GRUB2). Більше інформації про корисні навантаження
@ -585,8 +552,7 @@ coreboot вікі для більшої інформації.
Це змінить за замовчуванням всередині образа ROM, і потім ви можете
перепрошити його.
Як заповнити ROM перед перепрошивкою?
--------------------------------------
### Як заповнити ROM перед перепрошивкою?
Бажано просто використовувати більший образ ROM. Цей розділ був написаний здебільшого для
материнських плат ASUS KCMA-D8 та KGPE-D16, де раніше ми надавали
@ -625,8 +591,7 @@ ROM та флеш-чіпом. Випадок вище, наприклад:
Після видалення заповнення cbfstool зможе працювати із образом як зазвичай.
Чи потрібно встановлювати завантажувач під час встановлення дистрибутива?
---------------------------------------------------------------------------------------------------
### Чи потрібно встановлювати завантажувач під час встановлення дистрибутива?
Більшість налаштувань Canoeboot уже інтегрують завантажувач GRUB як
*[корисне навантаження](http://www.coreboot.org/Payloads)*. Це означає, що завантажувач GRUB
@ -644,8 +609,7 @@ HDD або SSD під час встановлення нового дистри
тоді на вашому HDD або SSD використовується звичайний завантажувальний сектор MBR, як і слід було
очікувати. Отже, наведені вище параграфи стосуються лише корисного навантаження GRUB.
Чи потрібно мені перепрошивати, коли я перевстановлю дистрибутив?
-------------------------------------------------------------------------------------------
### Чи потрібно мені перепрошивати, коли я перевстановлю дистрибутив?
Більше ні. Останні версії Canoeboot (з використанням корисного навантаження GRUB)
автоматично переключатимуться на конфігурацію GRUB на HDD або SSD, якщо
@ -657,16 +621,40 @@ GRUB (наприклад, флеш-накопичувач USB). Для
Якщо ви використовуєте корисне навантаження SeaBIOS, це ще простіше. Це працює так, як ви
очікували. SeaBIOS реалізує звичайний інтерфейс x86 BIOS.
Як виглядає флеш-чіп?
-----------------------------------------------------------------
### Як виглядає флеш-чіп?
Ви можете знайти фотографії різних видів чипів на наступній сторінці:\
[Керівництво зовнішньої прошивки 25xx NOR](docs/install/spi.md)
Яке ще мікропрограмне забезпечення існує за межами Canoeboot?
==================================================
### tlp
### Зовнішні графічні карти
Ви можете встановити пакет `tlp` та розпочати той сервіс. Наприклад, на
Debian:
```
apt-get install tlp tlp-rdw
systemctl enable tlp
systemctl start tlp
```
Тепер прочитайте документацію:
```
man tlp-stat
```
Від імені root, ви можете зробити:
```
tlp-stat -b
```
Це надасть інформацію про батарею.
Яке ще мікропрограмне забезпечення існує за межами Canoeboot?
------------------------------------------------------
#### Зовнішні графічні карти
Відео BIOS наявний на більшості графічних карт. Для інтегрованої графіки
VBIOS (спеціальний вид OptionROM) зазвичай вбудовано
@ -682,7 +670,7 @@ Canoeboot буде використовувати цей код, коли він
В конфігураціях, де SeaBIOS і власна ініціалізація GPU використовуються разом,
додається спеціальна прокладка VBIOS, яка використовує лінійний кадровий буфер coreboot.
### Прошивка EC (вбудований контролер)
#### Прошивка EC (вбудований контролер)
Це є у більшості (всіх?) ноутбуків. EC (вбудований контролер) - це невеликий,
окремий процесор, який в основному обробляє вхідні/вихідні дані, характерні
@ -702,7 +690,7 @@ Canoeboot буде використовувати цей код, коли він
EC присутній ледь не на всіх ноутбуках. Інші пристрої використовують, залежно від складності,
або EC, або варіант із прошивкою в Mask ROM - SuperIO.
### Прошивка HDD/SSD
#### Прошивка HDD/SSD
Жорсткі диски та твердотільні накопичувачі містять вбудоване програмне забезпечення,
призначене для обробки внутрішньої роботи пристрою, водночас відкриваючи простий, стандартний інтерфейс (наприклад,
@ -797,7 +785,6 @@ SATA через USB, і проект Canoeboot здатний завантажу
звичайним чином. Проконсультуйтесь з документацією для вашої операційної системи Linux/BSD,
щоб знати те, як встановити їх з *повнодисковим шифруванням*:
Поточна теорія (недоведена) полягає в тому, що це принаймні запобіжить
зловмисним дискам неправильно маніпулювати даними, які зчитуються з диска
або записуються на диск, оскільки він не може отримати доступ до вашого ключа LUKS,
@ -807,7 +794,7 @@ SATA через USB, і проект Canoeboot здатний завантажу
**Сприймайте сказане в цьому абзаці з дрібкою солі. Це все ще обговорюється
і нічого з цього не доведено.**
### NIC (контролер ethernet)
#### NIC (контролер ethernet)
Мережеві карти Ethernet зазвичай запускають вбудоване програмне забезпечення, яке відповідає
за внутрішню ініціалізацію пристрою. Теоретично його можна налаштувати
@ -816,19 +803,19 @@ SATA через USB, і проект Canoeboot здатний завантажу
З належним IOMMU можна було би пом'якшити проблеми, пов'язані з DMA.
Також можна використовувати мережевий адаптер USB, який не має DMA.
### Мікрокод процесора
#### Мікрокод процесора
Мікрокод налаштовує масиви логічних вентилів у мікропроцесорі для реалізації
архітектури набору інструкцій. Спеціальні *декодери* в мікропроцесорі налаштують
схему на основі цього мікрокоду.
### Звукова карта
#### Звукова карта
Звукове обладнання (інтегроване чи дискретне) зазвичай має вбудоване програмне забезпечення
(DSP) для обробки введення/виведення. Знову ж таки, USB DAC є хорошим
обхідним шляхом.
### Веб-камера
#### Веб-камера
Веб-камери мають вбудоване програмне забезпечення, яке обробляє зображення, що вводиться
в камеру; налаштування фокуса, балансу білого тощо. Можна використовувати апаратне забезпечення
@ -836,12 +823,12 @@ SATA через USB, і проект Canoeboot здатний завантажу
(наприклад, на ноутбуках) не рекомендовані проектом Canoeboot з
міркувань безпеки.
### Хост-контролер USB
#### Хост-контролер USB
Хост-контролери USB потребують мікропрограми. Іноді це потрібно надати
самому coreboot.
### Прошивка WWAN
#### Прошивка WWAN
Деякі ноутбуки можуть мати пристрій для зчитування SIM-карт із карткою для роботи з
WWAN, підключення до мережі 3g/4g (наприклад, GSM). Це та
@ -868,10 +855,9 @@ WWAN, підключення до мережі 3g/4g (наприклад, GSM).
оскільки вони, як правило, набагато безпечніші.
Операційні системи
=================
------------------
Чи я можу використовувати Linux?
--------------------------------------------------
### Чи я можу використовувати Linux?
Абсолютно! Він добре перевірений в Canoeboot, та дуже рекомендований. Подивіться
[встановлення Linux](../docs/linux/grub_boot_installer.md) та
@ -880,15 +866,13 @@ WWAN, підключення до мережі 3g/4g (наприклад, GSM).
Будь-який сучасний дистрибутив має працювати, допоки він використовує KMS (kernel mode
setting) для графіки.
Fedora не завантажується? (також може бути застосовано до Redhat/CentOS)
-----------------------------------------------------------
### Fedora не завантажується? (також може бути застосовано до Redhat/CentOS)
У Fedora типово grub.cfg намагається завантажити linux в 16-розрядному режимі.
Вам просто потрібно змінити конфігурацію GRUB Fedora.
Зверніться до [сторінки Linux](docs/linux/).
Чи я можу використовувати BSD?
----------------------------------
### Чи я можу використовувати BSD?
Абсолютно! Прошивка Canoeboot має добру підтримку для FreeBSD, NetBSD та
OpenBSD. Інші системи не перевірені, але мають працювти нормально.
@ -896,13 +880,49 @@ OpenBSD. Інші системи не перевірені, але мають п
Дивіться:
[docs/bsd/](docs/bsd/index.uk.md)
Чи підтримуються інші операційні системи?
-------------------------------------------------------------------
### Windows??
Yes, you can use Windows 10 and 11. They are not officially supported and the
Canoeboot project recommends that you *avoid* this choice, because Windows is
proprietary software. What this means is that you do *not* have the freedom
to use, study, adapt and share the software in any reasonable way. You are
entirely at the mercy of Microsoft, whose motive is profit, as opposed to the
general advancement of computer science and the welfare of everyone.
See: [What is Free Software?](https://writefreesoftware.org/learn)
In addition to being proprietary software, Windows is known to be full of bugs,
including *backdoors*. When you *use* Windows, it will send information about
you to third parties, used for a variety of purposes such as advertising, but
it's quite possible that three-letter agencies may also receive your data if
you use Windows.
For the sake of your freedom, you should never, ever use Windows. Use Linux or
BSD systems, which are well-supported. Anyway:
[Video of Windows 10 booting up](https://yewtu.be/watch?v=BWq6XnWKQnM)
[Video of Windows 11 booting up](https://yewtu.be/watch?v=OFHiMfVNNeA)
Of note: Windows 11 officially requires at least TPM 1.2 to be supported, and
it requires use of UEFI SecureBoot. To bypass this requirement, MajorGeeks has
a guide, see: <https://www.majorgeeks.com/content/page/bypass_tpm.html>
The person who tested this also stated that they were unable to perform an
in-place upgrade from 10 to 11, so they had to wipe the drive and perform a
clean (note: not clean, because Windows is full of NSA spyware) installation.
In both cases, as shown above, the Windows operating system was booting from
SeaBIOS, with the coreboot framebuffer initialised at startup, on an Intel GPU
initialised via coreboot's *libgfxinit*, on November 2023 versions of Canoeboot.
We do not yet support booting with UEFI on x86 machines.
### Чи підтримуються інші операційні системи?
Невідомо. Можливо, але неможливо сказати без подальшого випробовування.
Який рівень програмної свободи дає мені Canoeboot?
===================================================
--------------------------------------------------
Прошивка Canoeboot надає ініціалізацію апаратного забезпечення хоста всередині файлів ROM,
що може бути записано на флеш NOR, але на багатьох системах існує
@ -946,7 +966,7 @@ OpenBSD. Інші системи не перевірені, але мають п
(Сем буквально робить процесори в своєму гаражі)
Де я можу вивчати більше про електроніку
==========================================
----------------------------------------
* Основи пайки та переробки від PACE
Обидві серії відео є обов'язковими незалежно від ваших навичок паяння.

View File

@ -3,11 +3,8 @@ title: Code review
x-toc-enable: true
...
If you wish to submit patches, you can. Submit them, using the instructions
provided in the following sections:
Canoeboot Repositories
===================
---------------------
Informationen darüber wer an Canoeboot arbeitet und wer das Projekt betreibt
sind unter [who.de.md](who.de.md) zu finden.
@ -22,8 +19,23 @@ Die Entwicklung von Canoeboot findet mithilfe der Versionskontrolle von
Git statt. Sieh in der [offiziellen Git Dokumentation](https://git-scm.com/doc)
nach, sofern Du nicht weisst wie man Git verwendet.
cbmk (canoeboot-make)
---------------------
Das `bucts` Repository wird auch vom Canoeboot Projekt gehostet, da das
Original Repository auf `stuge.se` nicht mehr verfügbar ist, seit wie dies
zuletzt geprüft haben. Das `bucts` Programm wurde von Peter Stuge geschrieben.
Du benötigst `bucts` sofern Du ein Canoeboot ROM intern auf ein Thinkpad X60
oder T60 flashen möchtest, welches (derzeit) noch ein nicht-freies Lenovo
BIOS verwendet. Anleitungen hierfür findest Du hier:\
[Canoeboot Installations Anleitungen](docs/install/)
Das `ich9utils` Repository wird erheblich vom `cbmk` build system verwendet.
Du kannst `ich9utils` allerdings auch separat herunterladen und verwenden.
Es erzeugt ICH9M descriptor+GbE Images für GM45 ThinkPads welche die ICH9M
Southbridge verwenden. Es könnte auch für andere Systeme funktionieren,
welche dieselbe Platform bzw. denselben Chipsatz verwenden.
Dokumentation für `ich9utils` ist hier verfügbar:\
[ich9utils Dokumentation](docs/install/ich9utils.md)
### cbmk (canoeboot-make)
Dies ist das zentrale build system in Canoeboot. Man könnte auch sagen `cbmk` *ist*
Canoeboot! Das Git repository herunterladen:
@ -42,8 +54,7 @@ Für Anleitungen bzgl. `cbmk` build, siehe [build Anleitungen](docs/build/).
Informationen über das build system selbst und wie es funktioniert, sind
verfügbar unter dem [cbmk maintenance guide](docs/maintain/).
cbwww and cbwww-img
-------------------
### cbwww and cbwww-img
Die *gesamte* Canoeboot Website sowie Dokumentation befindet sich in einem
Git Repository.
@ -112,8 +123,7 @@ Repository dorthin. Konfiguriere deinen lokalen HTTP Server entsprechend.
Nochmal, Anleitungen hierfür findest Du auf der Untitled Webseite.
Name nicht erforderlich
-----------------
### Name nicht erforderlich
Beiträge die Du hinzufügst, werden in einem für jeden zugänglichen Git
Repository öffentlich aufgezeichnet. Dies betrifft ebenso den Namen sowie
@ -141,8 +151,37 @@ Commits/Patches verwendest dann solltest Du anonym sein. Verwende
und [git show](https://git-scm.com/docs/git-show) um dies zu überprüfen
bevor Du einem öffentlichen Git Repository Änderungen hinzufügst.
Patches senden
------------
### Lizenzen (für Mitwirkende)
Stelle sicher, dass deine Beiträge mit einer libre Lizenz frei lizensiert
sind. Canoeboot schreibt nicht mehr vor, welche Lizenzen akzeptiert werden,
und es existieren einige Lizenzen. Wir werden deinen Beitrag prüfen und
dir mitteilen sofern es ein Problem damit gibt (z.B. keine Lizenz).
Gib *immer* eine Lizenz an für deine Arbeit! Keine Lizenz anzugeben bedeutet
das deine Arbeit unter die Standard Urheberrechte fällt, was deine Arbeit
proprietär macht und somit von denselben Einschränkungen betroffen ist.
Die MIT Lizenz ist ein guter Start, und sie ist die bevorzugte Lizenz
für sämtliche Arbeit an Canoeboot, aber wir sind nicht pingelig. Canoeboot
hat in der Vergangenheit GNU Lizenzen so wie GPL verwendet; vieles davon
besteht nach wie vor und wird auch weiterhin bestehen.
Es ist deine Arbeit; sofern deine Arbeit auf der Arbeit eines anderen basiert,
ist es aufgrund der Lizenz-Kompatibilität ggfs. naheliegend diesselbe Lizenz zu
verwenden.
[Hier](https://opensource.org/licenses) findest Du übliche Beispiele für Lizenzen.
*Wenn* deine Arbeit auf bestehender Arbeit basiert, dann ist es wichtig
(für deinen Beitrag) das die Lizenz deiner Arbeit kompatibel ist mit der
Lizenz der Arbeit auf der sie beruht. Die MIT Lizenz ist hierfür gut geeignet,
weil sie mit vielen anderen Lizenen kompatibel ist, und Freiheit zulässt
(wie zum Beispiel die Freiheit einer SubLizenz) was bei vielen anderen
Lizenzen nicht der Fall ist:
<https://opensource.org/licenses/MIT>
### Patches senden
Erstelle einen Account unter <https://codeberg.org/> und navigiere (während
Du eingeloggt bist) zu dem Repository das Du bearbeiten möchtest. Klicke
@ -173,9 +212,6 @@ Ein weiterer Weg Patches zu senden ist Leah Rowe direkt eine email zu senden:
Um den Prozess der Quelltext Überprüfung transparent zu gestalten,
wird jedoch empfohlen künftig Codeberg zu verwenden.
Git mirrors
===========
Mirrors für cbmk.git
--------------------
@ -193,8 +229,12 @@ angeklickt werden, um Änderungen in deinem Web Browser anzusehen):
* <https://gitlab.com/canoeboot/cbmk>
* <https://notabug.org/canoeboot/cbmk>
cbwww.git Mirror
----------------
Mirrors fur pico-serprog.git
----------------------------
* <https://notabug.org/libreboot/pico-serprog>
### cbwww.git Mirror
Das `cbwww` Repository enthält Markdown Dateien (Pandoc Variant), für die
Verwendung mit dem [Untitled Static Site Generator](https://untitled.vimuser.org/);
@ -215,9 +255,6 @@ anklicken um Änderungen in deinem Web Browser anzusehen). Siehe:
cbwww-img.git Mirror
----------------
Du kannst `git clone` für diese Links ausführen und/oder die Links
anklicken um Änderungen in deinem Web Browser anzusehen). Siehe:
* <https://git.sr.ht/~canoeboot/cbwww-img>
* <https://git.disroot.org/canoeboot/cbwww-img>
* <https://gitea.treehouse.systems/canoeboot/cbwww-img>

View File

@ -3,11 +3,8 @@ title: Code review
x-toc-enable: true
...
If you wish to submit patches, you can. Submit them, using the instructions
provided in the following sections:
Canoeboot repositories
===================
----------------------
Information about who works on canoeboot and who runs the project can be
found on [who.md](who.md)
@ -22,8 +19,14 @@ Development of canoeboot is done using the Git version control system.
Refer to the [official Git documentation](https://git-scm.com/doc) if you don't
know how to use Git.
cbmk (canoeboot-make)
---------------------
The `bucts` repository is hosted by the Canoeboot project, because the original
repository on `stuge.se` is no longer available, last time we checked. The
`bucts` program was written by Peter Stuge. You need `bucts` if you're flashing
internally an Canoeboot ROM onto a ThinkPad X60 or T60 that is currently running
the original Lenovo BIOS. Instructions for that are available here:\
[Canoeboot installation guides](docs/install/)
### cbmk (canoeboot-make)
This is the core build system in canoeboot. You could say that `cbmk` *is*
canoeboot! Download the Git repository:
@ -41,8 +44,7 @@ build `cbmk`, refer to the [build instructions](docs/build/).
Information about the build system itself, and how it works, is available in
the [cbmk maintenance guide](docs/maintain/).
cbwww and cbwww-img
-------------------
### cbwww and cbwww-img
The *entire* canoeboot website and documentation is hosted in a Git repository.
Download it like so:
@ -107,8 +109,7 @@ repository there. Configure your local HTTP server accordingly.
Again, instructions are available on the Untitled website for this purpose.
Name not required
-----------------
### Name not required
Contributions that you make are publicly recorded, in a Git repository which
everyone can access. This includes the name and email address of the
@ -133,8 +134,36 @@ should be fairly anonymous. Use
and [git show](https://git-scm.com/docs/git-show) to confirm that before you
push changes to a public Git repository.
Send patches
------------
### Licenses (for contributors)
Make sure to freely license your work, under a libre license. Canoeboot no
longer sets arbitrary restrictions on what licenses are accepted, and many
licenses out there already exist. We will audit your contribution and tell
you if there are problems with it (e.g. no license).
*Always* declare a license on your work! Not declaring a license means that
the default, restrictive copyright laws apply, which would make your work
proprietary, subject to all of the same restrictions.
The MIT license is a good one to start with, and it is the preferred license
for all new works in Canoeboot, but we're not picky. Canoeboot has historically
used mostly GPL licensing; much of that remains, and is likely to remain.
It's your work; obviously, if you're deriving from an existing work,
it may make sense to use the same license on your contribution, for license
compatibility.
You can find common examples of licenses
[here](https://opensource.org/licenses).
If you *are* deriving from an existing work, it's important that your license
(for your contribution) be compatible with the licensing of the work from which
yours was derived. The MIT license is good because it's widely compatible
with many other licenses, and permits many freedoms (such as the freedom to
sublicense) that other licenses do not:
<https://opensource.org/licenses/MIT>
### Send patches
Make an account on <https://codeberg.org/> and navigate (while logged in) to the
repository that you wish to work on. Click *Fork* and in your account,
@ -160,9 +189,6 @@ Another way to submit patches is to email Leah Rowe directly:
However, for transparency of the code review process, it's recommended that you
use Codeberg, for the time being.
Git mirrors
===========
Mirrors of cbmk.git
-------------------
@ -180,8 +206,12 @@ to view changes in your Web browser):
* <https://gitlab.com/canoeboot/cbmk>
* <https://notabug.org/canoeboot/cbmk>
cbwww.git mirror
----------------
Mirrors of pico-serprog.git
--------------------------
* <https://notabug.org/libreboot/pico-serprog>
### cbwww.git mirror
The `cbwww` repository contains Markdown files (pandoc variant), for use
with the [Untitled Static Site Generator](https://untitled.vimuser.org/); this
@ -202,9 +232,6 @@ Web browser. See:
cbwww-img.git mirror
----------------
You can run `git clone` on these links, and/or click to view changes in your
Web browser. See:
* <https://git.sr.ht/~canoeboot/cbwww-img>
* <https://git.disroot.org/canoeboot/cbwww-img>
* <https://gitea.treehouse.systems/canoeboot/cbwww-img>

View File

@ -7,7 +7,7 @@ If you wish to submit patches, you can. Submit them, using the instructions
provided in the following sections:
репозиторії Canoeboot
===================
--------------------
Інформацію про те, хто працює над canoeboot і хто керує проектом, можна
знайти на [who.uk.md](who.uk.md)
@ -22,8 +22,7 @@ provided in the following sections:
Зверніться до [офіційної документації Git](https://git-scm.com/doc), якщо ви не
знаєте, як користуватися Git.
cbmk (canoeboot-make)
---------------------
### cbmk (canoeboot-make)
Це основна система збирання в canoeboot. Можна сказати, що `cbmk` *це*
canoeboot! Завантажте репозиторій Git:
@ -41,8 +40,7 @@ canoeboot! Завантажте репозиторій Git:
Інформація про саму систему збірки та про те, як вона працює, доступна в
[посібнику обслуговування cbmk](docs/maintain/).
cbwww та cbwww-img
-------------------
### cbwww та cbwww-img
*Весь* веб-сайт і документація canoeboot розміщені в репозиторії Git.
Завантажте так:
@ -107,8 +105,7 @@ Untitled.
Знову ж таки, інструкції для цього доступні на веб-сайті Untitled.
Ім'я не вимагається
-----------------
#### Ім'я не вимагається
Внески, які ви робите, реєструються публічно в репозиторії Git, доступ
до якого мають всі. Це включає ім'я та електронну адресу
@ -133,8 +130,7 @@ Untitled.
та [git show](https://git-scm.com/docs/git-show), щоб підтвердити це перед тим, як ви
надсилаєте зміни до загальнодоступного сховища Git.
Надсилайте виправлення
------------
### Надсилайте виправлення
Створіть обліковий запис на <https://codeberg.org/> і перейдіть (увійшовши в систему) до
репозиторію, над яким ви хочете працювати. Натисніть *Fork*, і у вашому обліковому записі,
@ -161,10 +157,9 @@ IRC-канал canoeboot і повідомити канал, які виправ
використовувати Codeberg.
Дзеркала Git
============
------------
Дзеркала cbmk.git
----------------
### Дзеркала cbmk.git
Репозиторій `cbmk` містить автоматизовану систему побудови Canoeboot, що
створює випуски Canoeboot (включаючи зібрані образи ROM).
@ -180,8 +175,7 @@ IRC-канал canoeboot і повідомити канал, які виправ
* <https://gitlab.com/canoeboot/cbmk>
* <https://notabug.org/canoeboot/cbmk>
дзеркало cbwww.git
----------------
### дзеркало cbwww.git
Репозиторій `cbwww` містить файли Markdown (варіант pandoc), для використання
з [генератором статичних сайтів Untitled](https://untitled.vimuser.org/); це те,
@ -199,8 +193,7 @@ IRC-канал canoeboot і повідомити канал, які виправ
* <https://gitlab.com/canoeboot/cbwww>
* <https://notabug.org/canoeboot/cbwww>
дзеркало cbwww-img.git
----------------
### дзеркало cbwww-img.git
Ви можете виконати `git clone` на цих посиланнях, та/або натиснути для перегляду змін в вашому
веб-браузері. Дивіться:

View File

@ -42,7 +42,7 @@ you continue to use your hardware, with continued firmware updates. All of this
is *why* Canoeboot exists.
Overview of Canoeboot design
============================
----------------------------
<img tabindex=1 class="l" src="https://av.canoeboot.org/dip8/adapter.jpg" /><span class="f"><img src="https://av.canoeboot.org/dip8/adapter.jpg" /></span>
@ -70,7 +70,7 @@ Canoeboot, coreboot would be inaccessible for most users; you can also
still [reconfigure](docs/maintain/) Canoeboot however you wish.
Why use Canoeboot?
==================
------------------
<img tabindex=1 class="r" style="max-width:25%;" src="https://av.vimuser.org/uboot-canoe.png" /><span class="f"><img src="https://av.vimuser.org/uboot-canoe.png" /></span>
@ -84,7 +84,7 @@ whereas Canoeboot is specifically crafted for end users. In other words, the
purpose of Canoeboot is to *Just Work*. Direct configuration and installation
of coreboot is also possible, but Canoeboot makes it *much* easier.
Canoeboot gives you [freedoms](https://writefreesoftware.org/) that
Canoeboot gives you [Free Software](https://writefreesoftware.org/) that
you otherwise can't get with most other boot firmware, plus faster boot speeds
and [better security](docs/linux/grub_hardening.md). It's extremely powerful
and [configurable](docs/maintain/) for many use cases. If you're unhappy with
@ -119,7 +119,7 @@ over your own property (your computer), and so, we make it our mission to help
you [wrest](https://trmm.net/TOCTOU/) back such control.
Canoeboot is not a fork of coreboot
===================================
-----------------------------------
<img tabindex=1 class="r" style="max-width:15%;" src="https://av.canoeboot.org/e6400/e6400-seabios.jpg" /><span class="f"><img src="https://av.canoeboot.org/e6400/e6400-seabios.jpg" /></span>
@ -146,8 +146,7 @@ knowledge or skill except the ability to
follow [simplified instructions, written for non-technical
users](docs/install/).
How to help Canoeboot
=====================
### How to help Canoeboot
The [Libreboot tasks page](https://libreboot.org/tasks/) lists tasks that
could (will) be worked on. It will be updated over time as more tasks are
@ -212,8 +211,7 @@ you can send patches.
Any and all development discussion and user support are all done on the IRC
channel. More information is on the [contact page](contact.md).
Translations needed, for canoeboot.org
--------------------------------------
### Translations needed, for canoeboot.org
If you want to help with translations, you can translate pages, update existing
translations and submit your translated versions. For instructions, please

View File

@ -10,7 +10,7 @@ published on 12 June 2024; nonetheless, the article date is set to June 9th.
For changes up to June 12th, please read the Canoeboot 20240612 announcement.
Introduction
============
------------
Canoeboot is a free/libre boot firmware project. It replaces your
proprietary BIOS/UEFI firmware, on supported x86 and ARM computers. It does
@ -51,8 +51,7 @@ one as the *first* official Canoeboot Build System Audit, or *audit 1*.
ALSO: Canoeboot 20240510 was released *during* the audit; this changelog is in
reference to Canoeboot 20240504, *not* 20240510.
Modest code size reduction
--------------------------
### Modest code size reduction
There are 1054 lines of shell script in the build system, versus 1208 in the
Canoeboot 20240504 release. Canoeboot's build system is written purely in
@ -62,12 +61,11 @@ This is a difference of 154 lines, or a 13% reduction. Despite the reduction,
numerous features have been added and a large number of bugs were fixed.
Summarised list of changes
==========================
--------------------------
Changes are in order per category, from newest to oldest:
Feature changes
---------------
### Feature changes
* **Download crossgcc tarballs as dependencies, when cloning coreboot.** We
previously relied on the coreboot build system, which automatically fetches
@ -191,8 +189,7 @@ Feature changes
* Removed all status checks from script/roms (formerly script/build/roms),
because it's better to document this instead, and rely on testing regardless.
Bug fixes
---------
### Bug fixes
Some of these changes fix actual issues that were found in testing, while
others were fixed *before* being triggered/reported and are thus *preventative
@ -405,8 +402,7 @@ The changes are, from newest to earliest:
* Main build script: exit (with error status) if not running directly from
the root of the cbmk work directory.
General code cleanup
--------------------
### General code cleanup
In addition to *general* very sweeping code cleanup, condensing code lines
where possible and so on:
@ -523,13 +519,12 @@ where possible and so on:
* script/build/roms: split up `main()` into multiple smaller functions
Revision updates
================
----------------
Some revisions were updated as part of standard routine, but happened to be
done during this audit. Those updates are as follows:
SeaBIOS
-------
### SeaBIOS
Bump SeaBIOS to revision `e5f2e4c69643bc3cd385306a9e5d29e11578148c`, which has
these changes relative to the old one:
@ -559,8 +554,7 @@ these changes relative to the old one:
* a6ed6b70 limit address space used for pci devices.
```
Flashprog
---------
### Flashprog
Updated to revision 5b4fdd1 from 2 May 2024, rebasing the MX workaround patch.
@ -631,7 +625,7 @@ Flashrom, lead by Nico Huber after a dispute with the new leadership of
Flashrom, and it was felt that Flashprog is a better choice for Canoeboot.
Git log
=======
-------
This entire set of changelogs is based on the precise Git history in cbmk,
relative to Canoeboot 20240504 which is from where the audit began.

View File

@ -5,8 +5,8 @@
Heavy amount of code reduction in this audit, and general cleanup. A new
Canoeboot release is planned, for the early days of August 2024.
Introduction
============
Free as in freedom!
--------------------
Canoeboot is a free/opensource boot firmware project. It replaces your
proprietary BIOS/UEFI firmware, on supported x86 and ARM computers. It does

View File

@ -7,8 +7,8 @@ a de-blobbed configuration on *fewer mainboards*; Libreboot supports more
hardware, and much newer hardware. More information can be found on Canoeboot's
[about](../about.html) page and by reading Libreboot's [Binary Blob Reduction Policy](https://libreboot.org/news/policy.html).
Introduction
============
Open source BIOS/UEFI firmware
-----------------------------
*This* new release, Canoeboot 20231026, released today 26 October 2023, is
based on [Libreboot 20231021](https://libreboot.org/news/libreboot20231021.html).
@ -44,7 +44,7 @@ Libreboot supports *a lot more hardware*, but Canoeboot is provided for the
purists out there who are OK using slightly older hardware as a result.
Work done since last release
============================
----------------------------
Canoeboot is a *special fork* of Libreboot, maintained in parallel by the
Canoeboot [removes all binary blobs](policy.md) from coreboot, unlike
@ -60,8 +60,7 @@ things like memory controller initialisation. Canoeboot is provided for purists
who only want free software; it even removes CPU microcode updates, regardless
of the negative impact this has on system stability.
GRUB LUKS2 now supported (with argon2 key derivation)
---------------------------------------------------
### GRUB LUKS2 now supported (with argon2 key derivation)
*This* new Canoeboot release imports the [PHC argon2
implementation](https://github.com/P-H-C/phc-winner-argon2) into GRUB,
@ -84,15 +83,13 @@ in this 20231026 release:
This means that you can now boot from encrypted `/boot` partitions. I'm very
grateful to everyone who made this possible!
Simplified commands (build system)
-------------------------
### Simplified commands (build system)
You can find information about *using* the build system in
the [Canoeboot build instructions](../docs/build/) and in the [cbmk
maintenance manual](../docs/maintain/).
TWO massive audits. 50% code size reduction in cbmk.
--------------------------------------------
### TWO massive audits. 50% code size reduction in cbmk.
Canoeboot's build system, cbmk, is written entirely in shell scripts. It is
an automatic build system that downloads, patches, configures and compiles
@ -109,8 +106,7 @@ Changes include things like vastly reduced code complexity (while not
sacrificing functionality), greater speed (at compiling, and boot speeds are
higher when you use the GRUB payload), many bug fixes and more.
Serprog firmware building (RP2040 and STM32)
-----------------------------------
### Serprog firmware building (RP2040 and STM32)
In addition to coreboot firmware, the Canoeboot build system (cbmk) can now
build *serprog* firmware, specifically `pico-serprog` and `stm32-vserprog`, on
@ -124,8 +120,7 @@ Pre-compiled firmware images are available, for many of these devices, under
the `roms/` directory in this Canoeboot 20231026 release! Riku Viitanen is the
one who added this capability to Libreboot, which was then ported to Canoeboot.
Updated U-Boot revision (2023.10)
----------------------------
### Updated U-Boot revision (2023.10)
Alper Nebi Yasak submitted patches that update the U-Boot revision in
Libreboot, on `gru_bob` and `gru_kevin` chromebooks. Additionally, the `cros`
@ -152,8 +147,7 @@ reading these diffs:
All of these patches have been ported to this Canoeboot release.
Coreboot, GRUB, U-Boot and SeaBIOS revisions
------------------------------------
### Coreboot, GRUB, U-Boot and SeaBIOS revisions
In Canoeboot 20231026 (*this release*):
@ -165,10 +159,9 @@ In Canoeboot 20231026 (*this release*):
* U-Boot: commit ID `4459ed60cb1e0562bc5b40405e2b4b9bbf766d57`, 2 October 2023
Build system tweaks
===================
-------------------
resources/ now config/
----------------------
### resources/ now config/
The `resources/scripts/` directory is now `script/`, and what was `resources/`
now only contains configuration data plus code patches for various projects,
@ -181,8 +174,7 @@ always be ge-generated if the user wants to, using ich9gen, or using a
combination of bincfg and ifdtool from coreboot, and nvmutil (to change the
mac address) from Canoeboot or Libreboot.
Full list of changes (detail)
--------------------
### Full list of changes (detail)
These changes have been ported from the Libreboot 20231021 release, which are
mostly the results of the two audits (mentioned above):
@ -443,7 +435,7 @@ mostly the results of the two audits (mentioned above):
not cleanly handle `/tmp` at all, but now it's pretty reliable.
Hardware supported in this release
==================================
----------------------------------
All of the following are believed to *boot*, but if you have any issues,
please contact the Canoeboot project. They are:
@ -453,8 +445,7 @@ please contact the Canoeboot project. They are:
- [ASUS KFSN4-DRE motherboard](../docs/hardware/kfsn4-dre.md)
- [ASUS KGPE-D16 motherboard](../docs/hardware/kgpe-d16.md)
Desktops (AMD, Intel, x86)
-----------------------
### Desktops (AMD, Intel, x86)
- [Gigabyte GA-G41M-ES2L motherboard](../docs/hardware/ga-g41m-es2l.md)
- [Acer G43T-AM3](../docs/hardware/acer_g43t-am3.md)
@ -483,14 +474,14 @@ Desktops (AMD, Intel, x86)
- [Samsung Chromebook Plus (v1) (gru-kevin)](../docs/install/chromebooks.md)
Downloads
=========
---------
You can find this release on the downloads page. At the time of this
announcement, some of the rsync mirrors may not have it yet, so please check
another one if your favourite one doesn't have it.
Special changes
===============
---------------
Besides deblobbing, there are two critical differences in how Canoeboot's
build system works in this release, versus the Libreboot 20231021 build system:
@ -515,7 +506,7 @@ with). The build system in Canoeboot 20231026 is *[extremely
efficient](../docs/maintain/)*.
Backports
=========
--------
In addition to the Libreboot 20231021 changes, the following Libreboot patches
were backported into this Canoeboot release, from Libreboot revisions pushed
@ -532,7 +523,7 @@ after the Libreboot 20231021 release came out:
* <https://browse.libreboot.org/lbmk.git/commit/?id=5f6ba01d414e2d98d7db049347b8c5c5d125ba61>
Excluded mainboards
===================
-------------------
The following boards are *missing* in Canoeboot 20231026, but are supported in
the Libreboot 20231021 release:
@ -558,7 +549,7 @@ the Libreboot 20231021 release:
* Lenovo ThinkPad X230/X230T
Post-release errata
===================
-------------------
The following binary blobs were overlooked, and are still present in the
release archive for Canoeboot 20231101 and 20231026; this mistake was
@ -598,8 +589,7 @@ people know of the above issue.
You are advised, therefore, to use the [Canoeboot 20231103
release](canoeboot20231103.md).
Update on 12 November 2023:
---------------------------
### Update on 12 November 2023:
This file was also overlooked, and is still present in the release tarball:

View File

@ -7,8 +7,8 @@ a de-blobbed configuration on *fewer mainboards*; Libreboot supports more
hardware, and much newer hardware. More information can be found on Canoeboot's
[about](../about.html) page and by reading Libreboot's [Binary Blob Reduction Policy](https://libreboot.org/news/policy.html).
Introduction
============
Open source BIOS/UEFI firmware
---------------------------
*This* new release, Canoeboot 20231101, released today 1 November 2023, is
based on the [Libreboot 20231101](https://libreboot.org/news/libreboot20231101.html) release, porting changes in it on top of
@ -46,15 +46,14 @@ Libreboot supports *a lot more hardware*, but Canoeboot is provided for the
purists out there who are OK using slightly older hardware as a result.
Work done since last release
============================
---------------------------
This changelog is based on the Libreboot 20231101 changelog; changes from
Libreboot 20231101 that are suitable for Canoeboot have been included in
this release, and so, this changelog has been modified (based on the
Libreboot one):
Coreboot, GRUB, U-Boot and SeaBIOS revisions
------------------------------------
### Coreboot, GRUB, U-Boot and SeaBIOS revisions
Canoeboot 20231026 and 20231101 are both based on these revisions:
@ -69,7 +68,7 @@ of these, that fix certain bugs or improve certain functionalities. More
information is available elsewhere in this page.
Build system tweaks
===================
------------------
These changes were made:
@ -105,7 +104,7 @@ This is only about 1 week's worth of changes; this Canoeboot release is
largely a bugfix release.
Hardware supported in this release
==================================
---------------------------------
All of the following are believed to *boot*, but if you have any issues,
please contact the Canoeboot project. They are:
@ -115,8 +114,7 @@ please contact the Canoeboot project. They are:
- [ASUS KFSN4-DRE motherboard](../docs/hardware/kfsn4-dre.md)
- [ASUS KGPE-D16 motherboard](../docs/hardware/kgpe-d16.md)
Desktops (AMD, Intel, x86)
-----------------------
### Desktops (AMD, Intel, x86)
- [Gigabyte GA-G41M-ES2L motherboard](../docs/hardware/ga-g41m-es2l.md)
- [Acer G43T-AM3](../docs/hardware/acer_g43t-am3.md)
@ -146,14 +144,14 @@ Desktops (AMD, Intel, x86)
- [Samsung Chromebook Plus (v1) (gru-kevin)](../docs/install/chromebooks.md)
Downloads
=========
---------
You can find this release on the downloads page. At the time of this
announcement, some of the rsync mirrors may not have it yet, so please check
another one if your favourite one doesn't have it.
Post-release errata
===================
-------------------
The following binary blobs were overlooked, and are still present in the
release archive for Canoeboot 20231101 and 20231026; this mistake was
@ -193,8 +191,7 @@ people know of the above issue.
You are advised, therefore, to use the [Canoeboot 20231103
release](canoeboot20231103.md).
Update on 12 November 2023:
---------------------------
### Update on 12 November 2023:
This file was also overlooked, and is still present in the release tarball:

View File

@ -7,8 +7,8 @@ a de-blobbed configuration on *fewer mainboards*; Libreboot supports more
hardware, and much newer hardware. More information can be found on Canoeboot's
[about](../about.html) page and by reading Libreboot's [Binary Blob Reduction Policy](https://libreboot.org/news/policy.html).
Introduction
============
Open source BIOS/UEFI firmware
----------------------------
*This* new release, Canoeboot 20231103, released today 3 November 2023, is
based on the [Canoeboot 20231101](https://canoeboot.org/news/canoeboot20231101.html)
@ -47,7 +47,7 @@ Libreboot supports *a lot more hardware*, but Canoeboot is provided for the
purists out there who are OK using slightly older hardware as a result.
Work done since last release
============================
----------------------------
There have been no code changes whatsoever, on any of the current builds, but
a major oversight has been corrected.
@ -89,7 +89,7 @@ people know of the above issue.
Those files, listed above, have been removed in today's release.
Hardware supported in this release
==================================
------------------------------------
All of the following are believed to *boot*, but if you have any issues,
please contact the Canoeboot project. They are:
@ -99,8 +99,7 @@ please contact the Canoeboot project. They are:
- [ASUS KFSN4-DRE motherboard](../docs/hardware/kfsn4-dre.md)
- [ASUS KGPE-D16 motherboard](../docs/hardware/kgpe-d16.md)
Desktops (AMD, Intel, x86)
-----------------------
### Desktops (AMD, Intel, x86)
- [Gigabyte GA-G41M-ES2L motherboard](../docs/hardware/ga-g41m-es2l.md)
- [Acer G43T-AM3](../docs/hardware/acer_g43t-am3.md)
@ -130,17 +129,16 @@ Desktops (AMD, Intel, x86)
- [Samsung Chromebook Plus (v1) (gru-kevin)](../docs/install/chromebooks.md)
Downloads
=========
---------
You can find this release on the downloads page. At the time of this
announcement, some of the rsync mirrors may not have it yet, so please check
another one if your favourite one doesn't have it.
Errata
======
------
Update on 12 November 2023:
---------------------------
### Update on 12 November 2023:
This file was also overlooked, and is still present in the release tarball:

View File

@ -7,8 +7,8 @@ a de-blobbed configuration on *fewer mainboards*; Libreboot supports more
hardware, and much newer hardware. More information can be found on Canoeboot's
[about](../about.html) page and by reading Libreboot's [Binary Blob Reduction Policy](https://libreboot.org/news/policy.html).
Introduction
============
Open source BIOS/UEFI firmware
------------------------------
*This* new release, Canoeboot 20231107, released today 7 November 2023, is
based on the recent [Libreboot 20231106](https://libreboot.org/news/libreboot20231106.html) release.
@ -41,13 +41,12 @@ firmware, but not Canoeboot! Booting Linux/BSD is also [well](../docs/linux/)
[supported](../docs/bsd/).
Work done since last release
============================
---------------------------
This is largely a bugfix release. Most notably, boot issues on GM45 thinkpads
present in the 20231103 release have been resolved.
Dell E6400 on its own tree
-----------------------------
### Dell E6400 on its own tree
Canoeboot contains a DDR2 raminit patch for Dell Latitude E6400, that increases
reliability on coldboot, but it negatively affects other GM45 machines that use
@ -65,8 +64,7 @@ from those release archives). Today's Canoeboot release solves that problem,
so these machines can be used reliably once again (and ROM images are provided,
in this Canoeboot 20231107 release).
Coreboot, GRUB, U-Boot and SeaBIOS revisions
------------------------------------
### Coreboot, GRUB, U-Boot and SeaBIOS revisions
Canoeboot 20231107 and 20231103 are both based on these revisions:
@ -82,7 +80,7 @@ Several other fixes and tweaks have been made, in addition to this and the
E6400 patch mentioned above.
Build system tweaks
===================
----------------
These changes were made:
@ -126,7 +124,7 @@ f12f5c3a nvmutil: fix makefile
This is a very conservative changelog, because this is largely a bugfix release.
Hardware supported in this release
==================================
--------------------------------
All of the following are believed to *boot*, but if you have any issues,
please contact the Canoeboot project. They are:
@ -136,8 +134,7 @@ please contact the Canoeboot project. They are:
- [ASUS KFSN4-DRE motherboard](../docs/hardware/kfsn4-dre.md)
- [ASUS KGPE-D16 motherboard](../docs/hardware/kgpe-d16.md)
Desktops (AMD, Intel, x86)
-----------------------
### Desktops (AMD, Intel, x86)
- [Gigabyte GA-G41M-ES2L motherboard](../docs/hardware/ga-g41m-es2l.md)
- [Acer G43T-AM3](../docs/hardware/acer_g43t-am3.md)
@ -167,17 +164,16 @@ Desktops (AMD, Intel, x86)
- [Samsung Chromebook Plus (v1) (gru-kevin)](../docs/install/chromebooks.md)
Downloads
=========
---------
You can find this release on the downloads page. At the time of this
announcement, some of the rsync mirrors may not have it yet, so please check
another one if your favourite one doesn't have it.
Errata
======
------
Update on 12 November 2023:
---------------------------
### Update on 12 November 2023:
This file was also overlooked, and is still present in the release tarball:

View File

@ -10,8 +10,8 @@ hardware, and much newer hardware. More information can be found on Canoeboot's
**Do not use the Canoeboot 20240504 release, because it had problems with it.
Please use the [Canoeboot 20240612 release](canoeboot20240612.md) instead.**
Introduction
============
Free software BIOS/UEFI
------------------------
Canoeboot is a free/libre BIOS/UEFI replacement on x86 and ARM, providing
boot firmware that initialises the hardware in your computer, to then load an
@ -67,7 +67,7 @@ Your computer is *your property* to use as you wish. Free Software protects you,
by ensuring that you always have control of the machine.
Hardware supported in this release
==================================
---------------------------------
This release supports the following hardware:
@ -105,17 +105,15 @@ This release supports the following hardware:
- [Samsung Chromebook Plus (v1) (gru-kevin)](../docs/install/chromebooks.md)
Highlights
==========
-----------
S3 fixed on GM45 thinkpads
-----------------------
### S3 fixed on GM45 thinkpads
This was broken in the previous Canoeboot release, but now it works again.
S3 suspend/resume (when you put the laptop to sleep and later wake it up).
Modest code size reduction
--------------------------
### Modest code size reduction
See: [Libreboot build system audit 4](https://libreboot.org/news/audit4.html)
@ -138,15 +136,13 @@ things like memory controller initialisation. Canoeboot is provided for purists
who only want free software; it even removes CPU microcode updates, regardless
of the negative impact this has on system stability.
GRUB 2.12 revision now used
---------------------------
### GRUB 2.12 revision now used
The previous Canoeboot release used a revision from GRUB 2.12-rc1, but now
it uses the GRUB 2.12 released during December 2023, with some additional
revisions and patches on top of that.
GRUB support for EFI System Partition
-------------------------------------
### GRUB support for EFI System Partition
We don't use UEFI on x86, but the GRUB config in Canoeboot's GRUB payload
has now been modified, to also scan `grub.cfg` from `EFI/` directories.
@ -160,8 +156,7 @@ installers (e.g. USB media). Syslinux/Extlinux/GRUB config scanning has been
merged together there, so now a lot more distro installers should boot
automatically, without manual tweaking/intervention from the user.
U-Boot release script
---------------------
### U-Boot release script
The script at `script/update/release` now supports generating standalone
U-Boot source archives, like so:
@ -173,8 +168,7 @@ than `release/`. Canoeboot still provides U-Boot embedded within the larger
source release archive, and does not yet actually provide U-Boot as a
standalone project, but some people may find this useful.
Flashprog now used, not flashrom
---------------------------
### Flashprog now used, not flashrom
Essentially, flashprog has better leadership and is more stable than flashrom;
flashrom has had new leadership for a while now, and in my view they are not
@ -190,7 +184,7 @@ stable.
Canoeboot will use flashprog from now on, not flashrom.
Work done since Canoeboot 20231107
============================
---------------------------
The following log will now acount for changes since Canoeboot 20231107, from
most recent descending to very earliest commits. The most interesting changes
@ -476,7 +470,7 @@ are highlighted in bold:
properly formatted to include `nvmutil.c`, when running make-all.
Disabled boards
===============
-------------
Canoeboot's build system can be configured to exclude certain boards in
release archives, while still permitting them to be re-built.
@ -488,7 +482,7 @@ D510MO and D945GCLF images not included either, due to lack of testing.
*All other boards have ROM images in this release.*
Errata
======
----
See: <https://codeberg.org/libreboot/lbmk/issues/216>

View File

@ -10,8 +10,8 @@ hardware, and much newer hardware. More information can be found on Canoeboot's
**Do not use the Canoeboot 20240510 release, because it had problems with it.
Please use the [Canoeboot 20240612 release](canoeboot20240612.md) instead.**
Introduction
============
Free software BIOS/UEFI
----------------------
Canoeboot is a [free/libre](https://writefreesoftware.org/) BIOS/UEFI replacement
on x86 and ARM, providing
@ -55,7 +55,7 @@ changes; if you already installed Canoeboot 20240504, you probably don't need
to update, but the *SeaBIOS* revision was updated, and has some fixes.
Changes in this release
=======================
----------------------
*Extensive* changes have been made to the documentation and website!
@ -63,8 +63,7 @@ Very large and sweeping changes.
ALSO:
Build system changes
-------------------
### Build system changes
The following improvements have been made, most of them not affecting the
final build (the actual code that goes in-flash):
@ -113,7 +112,7 @@ to update to today's release. If you *didn't* install 20240504, then you may
aswell update to today's release (Canoeboot 20240510).
Hardware supported in this release
==================================
--------------------------
This release supports the following hardware:
@ -156,7 +155,7 @@ the last Canoeboot release, so I decided to another quick one.
That is all.
Errata
======
-----
See: <https://codeberg.org/libreboot/lbmk/issues/216>

View File

@ -7,8 +7,8 @@ a de-blobbed configuration on *fewer mainboards*; Libreboot supports more
hardware, and much newer hardware. More information can be found on Canoeboot's
[about](../about.html) page and by reading Libreboot's [Binary Blob Reduction Policy](https://libreboot.org/news/policy.html).
Introduction
============
Open source BIOS/UEFI firmware
-----------------------------
Canoeboot is a free/libre BIOS/UEFI replacement on x86 and ARM, providing
boot firmware that initialises the hardware in your computer, to then load an
@ -46,7 +46,7 @@ announcement for Canoeboot 20240612 is in reference to 20240504, *not* 20240510,
so it also includes changes from the 20240510 release, with fixes made after it.
Changes since Audit 1
=====================
--------------------
Audit 1 was only recent, and forms most of the changes in this release, so look
further down for a list of those changes or read [the audit 1 page](audit1.md).
@ -72,13 +72,12 @@ precisely to avoid any potential issues if a board doesn't need it. The NVMe
patch has been extensively tested, on all of the boards that actually have it.
Audit 1 changes
===============
---------------
Since the recent audit 1 changes are included in this release, the changelog
of that audit has simply been copied for sake of efficiency. Firstly:
Modest code size reduction
--------------------------
### Modest code size reduction
There are 1054 lines of shell script in the build system, versus 1208 in the
Canoeboot 20240504 release. Canoeboot's build system is written purely in
@ -88,12 +87,11 @@ This is a difference of 154 lines, or a 13% reduction. Despite the reduction,
numerous features have been added and a large number of bugs were fixed.
Summarised list of changes
==========================
--------------------------
Changes are in order per category, from newest to oldest:
Feature changes
---------------
### Feature changes
* **Download crossgcc tarballs as dependencies, when cloning coreboot.** We
previously relied on the coreboot build system, which automatically fetches
@ -217,8 +215,7 @@ Feature changes
* Removed all status checks from script/roms (formerly script/build/roms),
because it's better to document this instead, and rely on testing regardless.
Bug fixes
---------
### Bug fixes
Some of these changes fix actual issues that were found in testing, while
others were fixed *before* being triggered/reported and are thus *preventative
@ -431,8 +428,7 @@ The changes are, from newest to earliest:
* Main build script: exit (with error status) if not running directly from
the root of the cbmk work directory.
General code cleanup
--------------------
### General code cleanup
In addition to *general* very sweeping code cleanup, condensing code lines
where possible and so on:
@ -549,13 +545,12 @@ where possible and so on:
* script/build/roms: split up `main()` into multiple smaller functions
Revision updates
================
----------------
Some revisions were updated as part of standard routine, but happened to be
done during this audit. Those updates are as follows:
SeaBIOS
-------
### SeaBIOS
Bump SeaBIOS to revision `e5f2e4c69643bc3cd385306a9e5d29e11578148c`, which has
these changes relative to the old one:
@ -585,8 +580,7 @@ these changes relative to the old one:
* a6ed6b70 limit address space used for pci devices.
```
Flashprog
---------
### Flashprog
Updated to revision 5b4fdd1 from 2 May 2024, rebasing the MX workaround patch.
@ -657,7 +651,7 @@ Flashrom, lead by Nico Huber after a dispute with the new leadership of
Flashrom, and it was felt that Flashprog is a better choice for Canoeboot.
Git log
=======
------
This entire set of changelogs is based on the precise Git history in cbmk,
relative to Canoeboot 20240504 which is from where the audit began.

View File

@ -7,8 +7,8 @@ a de-blobbed configuration on *fewer mainboards*; Libreboot supports more
hardware, and much newer hardware. More information can be found on Canoeboot's
[about](../about.html) page and by reading Libreboot's [Binary Blob Reduction Policy](https://libreboot.org/news/policy.html).
Introduction
============
Open source BIOS/UEFI firmware
--------------------------
Canoeboot is a free/libre BIOS/UEFI replacement on x86 and ARM, providing
boot firmware that initialises the hardware in your computer, to then load an
@ -26,12 +26,11 @@ or [GRUB](https://www.gnu.org/software/grub/) to boot your operating
system; on ARM(chromebooks), we provide *U-Boot* (as a coreboot payload).
Summarised list of changes
==========================
--------------------------
Changes are in order per category, from newest to oldest:
Board support
-------------
### Board support
The following boards have been added since the Canoeboot 20240612 release:
@ -46,8 +45,7 @@ modified Intel Flash Descriptors similar to that seen on ThinkPad X200/T400.
E4300 has the same installation procedure as the E6400.
About the PlayStation BIOS
--------------------------
### About the PlayStation BIOS
This is *not* coreboot, but it is a fully free/opensource BIOS with source code
under MIT license, provided by
@ -63,8 +61,7 @@ other modifications, it basically becomes a very hackable classic 90s computer,
that also happens to play games. More info is on the Libreboot page about it,
linked above.
Feature changes
---------------
### Feature changes
Some unused features have been removed, and yet more added. The overall focus of
Audit 2 has been to remove legacy cruft from cbmk, and in general to simplify
@ -263,8 +260,7 @@ The changes are as follows:
avoiding such configurations. NOTE: This issue never affected *Canoeboot*,
but Canoeboot keeps in sync with Libreboot where possible.
Configuration changes
---------------------
### Configuration changes
This pertains to anything under `config/`, for any changes that are of note,
but it does not pertain to *revisions* for specific projects, nor does it
@ -323,8 +319,7 @@ The changes are as follows:
which is loaded per-project on multi-tree projects, before each target
file. It allows easier configuration tree-wide on multi-tree projects.
Bug fixes
---------
### Bug fixes
There are fewer *acute* bug fixes in Audit 2, because bugfixes was the primary
focus of *Audit 1*. The word *acute* is used, referring to triggered bugs, because
@ -501,8 +496,7 @@ The changes are as follows:
could create situations where the user can longer run cbmk without intervention
such as changing permission on certain files. Avoid the issue entirely.
General code cleanup
--------------------
### General code cleanup
Extensive code cleanup has been performed, as was the main purpose of Audit 2.
@ -778,10 +772,9 @@ The changes are as follows:
* `script/roms`: shorter variable names, condensed several functions.
Revision updates
================
----------------
Coreboot
--------
### Coreboot
The `default` tree was updated to commit ID `97bc693ab` from 29 July 2024.
Several patches were merged upstream and therefore no longer needed in cbmk.
@ -798,8 +791,7 @@ a single `fam15h` tree. This contains the ASUS KGPE-D16 and KCMA-D8 ports,
based on coreboot's `4.11_branch` tree, with Canoeboot's special build fixes
that make it compile on modern distros, such as Debian Sid or Arch.
U-Boot
------
### U-Boot
Alper Nebi Yasak is the maintainer of U-Boot, within *Libreboot*, and a Libreboot
patch of his updated U-Boot to v2024.07, on the `gru_bob` and `gru_kevin`
@ -813,20 +805,17 @@ boards, but revision updates will be done *immediately after* Audit 2
is announced, as a priority for further work that is to be completed for
the next Canoeboot release, ETA August 2024.
GRUB
----
### GRUB
Updated the revision to commit ID b53ec06a1 from 17 June 2024. This fixes
several bugs in the LUKS implementation. Several virtual memory fixes, and
numerous fixes to file system drivers in the GRUB kernel.
Flashprog
---------
### Flashprog
Updated the revision to commit ID `639d563` from 2 August 2024.
PCSX Redux
----------
### PCSX Redux
This was added git commit ID `6ec5348058413619b290b069adbdae68180ce8c0`. It is
a *Sony PlayStation* emulator, but we only need one part of it: the BIOS.
@ -838,7 +827,7 @@ the open BIOS image, which is compatible with every PlayStation emulator and
also real PlayStations (soldering required).
Git log
=======
--------
This git log covers all changes in this audit, relative to Canoeboot 20240612.

View File

@ -14,8 +14,8 @@ Therefore, this can be considered a stable release of Canoeboot.
This page lists all changes since Canoeboot 20241102.
Introduction
============
Open source BIOS/UEFI firmware
------------------------------
<img tabindex=1 class="r" src="https://av.vimuser.org/x200-uboot.jpg" /><span class="f"><img src="https://av.vimuser.org/x200-uboot.jpg" /></span>
@ -34,8 +34,7 @@ and then a payload such as [SeaBIOS](https://www.seabios.org/SeaBIOS)
or [GRUB](https://www.gnu.org/software/grub/) to boot your operating
system; on ARM(chromebooks), we provide *U-Boot* (as a coreboot payload).
U-Boot UEFI payload on x86\_64
------------------------------
### U-Boot UEFI payload on x86\_64
For Canoeboot 20241207, today's release, U-Boot is *also* provided as an
optional coreboot payload on x86 machines. This provides a sensible UEFI
@ -51,14 +50,13 @@ Since this is based on a stable release, not much has changed; the focus has
been on bug fixes. However, the U-Boot x86 payload is a notable new feature.
Summarised list of changes
==========================
-------------------------
<img tabindex=1 class="r" src="https://av.vimuser.org/uboot-canoe.png" /><span class="f"><img src="https://av.vimuser.org/uboot-canoe.png" /></span>
Changes are in order per category, from newest to oldest:
Feature changes
---------------
### Feature changes
* U-Boot support, for both x86 and x86\_64, provided as a coreboot payload.
This complements the existing ARM64 U-Boot support present in Canoeboot.
@ -66,16 +64,14 @@ Feature changes
timeout for the first selected entry on the bootflow menu (upstream does
not currently support this feature, at the time of this Canoeboot release).
Configuration changes
---------------------
### Configuration changes
* Enabled the serial console by default, on these machines: Thinkpad X60, T60.
* U-Boot x86 enabled on almost every x86 board, chainloaded from SeaBIOS.
The `seauboot` images boot directly into U-Boot first, from SeaBIOS, but
U-Boot can be bypassed by using the ESC menu in SeaBIOS.
Bug fixes
---------
### Bug fixes
* `script/trees`: reset `PATH` per target, to avoid it being wrong in the next
target, because we manipulate this when enabling cross compilation (by using
@ -100,8 +96,7 @@ Bug fixes
payload.
* Added `arm-none-eabi-gcc-cs-c++` to Fedora dependencies.
Revision updates
================
### Revision updates
* Updated U-Boot to v2024.10, on both ARM64 and x86 boards.
* Bumped coreboot/next to the latest coreboot revision, from several days
@ -109,7 +104,7 @@ Revision updates
OptiPlex 780 ports.
Git log
=======
-------
This git log covers all changes in this audit, relative to Canoeboot 20241102.

View File

@ -14,8 +14,8 @@ January 2025. Therefore, this can be considered a stable release of Canoeboot.
This page lists all changes since Canoeboot 20241207.
Introduction
============
Open source BIOS/UEFI firmware
------------------------
<img tabindex=1 class="r" src="https://av.vimuser.org/x200-uboot.jpg" /><span class="f"><img src="https://av.vimuser.org/x200-uboot.jpg" /></span>
@ -36,10 +36,9 @@ system; on ARM(chromebooks), we provide *U-Boot* (as a coreboot payload).
Experimental x86 U-Boot support is also available.
Summarised list of changes
==========================
--------------------
Board support
-------------
### Board support
RP2530 devices now supported in `pico-serprog`, e.g. Raspberry Pi Pico 2.
@ -50,8 +49,7 @@ The documentation has been updated, to reflect this improvement. Canoeboot also
now imports `picotool` which is now used to compile the UF2 binaries for
installation, when building them from `pico-sdk`.
Revision updates
----------------
### Revision updates
In descending order from latest changes to earliest changes:
@ -66,8 +64,7 @@ In descending order from latest changes to earliest changes:
* Bumped flashprog to revision eb2c041 (14 Nov 2024). This brings in several
important fixes from upstream.
Feature changes
---------------
### Feature changes
In descending order from latest changes to earliest changes:
@ -89,16 +86,14 @@ In descending order from latest changes to earliest changes:
on any boards, nor will it be, on release images, but the user can do it
themselves when compiling from source.
Configuration changes
---------------------
### Configuration changes
In descending order from the latest changes to the earliest changes:
None of note; some other entries in this release log could be considered
configuration changes.
Bug fixes
---------
### Bug fixes
Several fixes were made to prevent build errors on the latest Debian Sid
and Arch, as of 6 January 2025. Fedora 41 was also tested, fixing
@ -178,8 +173,7 @@ changes to the earliest changes):
because otherwise GRUB prefers the memdisk one and adding one in CBFS
didn't change the background image, when users attempted this.
General code cleanup
--------------------
### General code cleanup
In descending order from the latest changes to the earliest changes:
@ -189,7 +183,7 @@ In descending order from the latest changes to the earliest changes:
improvement).
Git log
=======
-------
This log is relative to Canoeboot 20241207:

View File

@ -26,8 +26,8 @@ Policy* on 17 November 2022, but Libreboot has existed since December 2013.
Canoeboot started in October 2023, because of a minority of users that still
demanded such a project exist as the old Libreboot did.
Introduction
============
Free as in freedom!
-----------------
Canoeboot intentionally *de-blobs* coreboot, which is to say that it does not
include binary blobs. The coreboot software otherwise requires binary blobs on
@ -43,7 +43,7 @@ they are removed. You can also read more about the de-blobbing process
on the [about](../about.md) page.
Background information
======================
----------------------
Canoeboot concerns itself only with what goes in the main boot flash IC, but
there are other pieces of firmware to take into consideration, as covered
@ -62,7 +62,7 @@ supports a handful of machines from coreboot.
For information about Intel Management Engine and AMD PSP, refer to the FAQ.
So what *is* Canoeboot's policy?
================================
-------------------------
Canoeboot follows a very conservative and *light touch* approach, when it comes
to deblobbing coreboot.
@ -108,7 +108,7 @@ not with free software. Other examples of firmware outside of the main boot
flash is covered in the Canoeboot FAQ.
More detailed insight about microcode
=====================================
---------------------------------
To be clear: it is preferable that microcode be free. The microcode on Intel
and AMD systems *are* non-free. Facts and feelings rarely coincide; the

View File

@ -3,8 +3,8 @@ title: Other coreboot distributions
x-toc-enable: true
...
Introduction
============
What is a coreboot distro?
--------------------------
Canoeboot is a *coreboot distribution* or *coreboot distro*, in the same way
that Debian is a *Linux distro*. Its purpose is to provide free/opensource boot
@ -28,13 +28,12 @@ It's thanks to the various coreboot distros that many people use coreboot today;
without them, many otherwise non-technical users might not use coreboot at all.
List of coreboot distros
========================
------------------------
Not all distros are listed; only those of high quality or otherwise of interest;
quality, not quantity. In alphabetical order:
Dasharo
-------
### Dasharo
Website: <https://docs.dasharo.com/>
@ -52,8 +51,7 @@ the Dasharo project, and later upstreamed into the regular coreboot project.
Dasharo has a special emphasis on commercial application, providing tailored
coreboot images for each supported mainboard, with an emphasis on stability.
Heads
-----
### Heads
Website: <https://osresearch.net/>
@ -77,8 +75,7 @@ ROM hashes on every build; for this purpose, it also auto-downloads vendor
files such as Intel ME at build time, instead of requiring you to dump from
the original boot firmware.
Libreboot
---------
### Libreboot
Website: <https://libreboot.org/>
@ -117,8 +114,7 @@ are in fact advised to use *Libreboot*, not Canoeboot. Canoeboot is meant only
as a proof of concept, and/or for purists who absolutely wish to have the purest
free software experience possible, regardless of these facts.
MrChromeBox
-----------
### MrChromeBox
Website: <https://docs.mrchromebox.tech/>
@ -154,8 +150,7 @@ the interview:
Libreboot largely avoids supporting Chromebooks, precisely because
MrChromebox is a perfectly viable option on these machines.
Skulls
------
### Skulls
Git repositories: <https://github.com/merge/skulls>
@ -171,8 +166,7 @@ aims to provide ease of use while also providing great power and flexibility.
So Libreboot is aimed specifically at power users, while also trying to
accomodate non-technical users; Skulls largely targets the latter.
System76 Open Firmware
----------------------
### System76 Open Firmware
Git repository: <https://github.com/system76/firmware-open>
@ -187,7 +181,7 @@ System76 provides the coreboot firmware, along with EDK2 UEFI payload. It can
boot Linux distros, BSD systems and even Windows perfectly.
Is your distro unlisted?
========================
------------------------
Please get in touch! We'd love to link your project here.
@ -203,7 +197,7 @@ firmware, which was the primary motivation behind this page, in promoting the
various projects.
Non-coreboot free firmware
==========================
--------------------------
Several other projects besides coreboot provide free hardware initialisation,
such as [U-Boot](https://www.u-boot.org/) (as own firmware, distinct from U-Boot

View File

@ -93,7 +93,7 @@ $return$
$endif$
$if(toc)$
<nav id="$idprefix$TOC">
<h1>Navigate this page:</h1>
<h2>Navigate this page:</h2>
$toc$
</nav>
$endif$

View File

@ -93,7 +93,7 @@ $return$
$endif$
$if(toc)$
<nav id="$idprefix$TOC">
<h1>Navigate this page:</h1>
<h2>Navigate this page:</h2>
$toc$
</nav>
$endif$

View File

@ -93,7 +93,7 @@ $return$
$endif$
$if(toc)$
<nav id="$idprefix$TOC">
<h1>Sfoglia questa pagina:</h1>
<h2>Sfoglia questa pagina:</h2>
$toc$
</nav>
$endif$

View File

@ -93,7 +93,7 @@ $return$
$endif$
$if(toc)$
<nav id="$idprefix$TOC">
<h1>Навігація цією сторінкою:</h1>
<h2>Навігація цією сторінкою:</h2>
$toc$
</nav>
$endif$

View File

@ -93,7 +93,7 @@ $return$
$endif$
$if(toc)$
<nav id="$idprefix$TOC">
<h1>本页导航:</h1>
<h2>本页导航:</h2>
$toc$
</nav>
$endif$