Signed-off-by: Leah Rowe <leah@libreboot.org>
master
Leah Rowe 2024-01-02 17:43:14 +00:00
parent a299f8afc5
commit 8c8df1d225
7 changed files with 203 additions and 58 deletions

View File

@ -3,21 +3,43 @@ title: Canoeboot vs GNU Boot
x-toc-enable: true
...
If you want to understand the beef Canoeboot has with GNU Boot, please
If you want to understand the issue Canoeboot had with GNU Boot, please
read the [about page](about.md), the [Libreboot Binary Blob Reduction
Policy](https://libreboot.org/news/policy.html) and the [GNU Boot article
on libreboot.org](https://libreboot.org/news/gnuboot.html) - all of that energy
has fuelled the creation of this page, and in fact the entire Canoeboot project.
The main purpose of Canoeboot is to be technically superior to GNU Boot, while
complying with all of its policies by providing ROM images and source tarballs
adhering to the GNU Free System Distribution Guidelines, [even though GNU FSDG is
deeply flawed](https://libreboot.org/news/policy.html#problems-with-fsdg); this
page describes precisely how that has been achieved, and it will be updated
over time as Canoeboot continues to develop.
on libreboot.org](https://libreboot.org/news/gnuboot.html). Basically, the FSF
decided to attempt a *hostile fork* of Libreboot, which they announced on 19
March 2023 at their 2023 *LibrePlanet* conference. You can read about *that*
and more of the history between GNU/FSF and Libreboot, by also reading
the [10-year anniversary history page on
libreboot.org](https://libreboot.org/news/10.html) - Canoeboot started in self
defense, to provide a project that is as technically superior to GNU Boot as
possible, while adhering to GNU Free System Distribution Guidelines as policy,
which is the same policy that GNU Boot uses, in contrast to
Libreboot's [Binary Blob Reduction Policy](https://libreboot.org/news/policy.html).
Canoeboot is *aggressively* developed, rebasing upon each new release of
Libreboot and, thus, maintaining absolute sync with Libreboot. It does this by
providing all of the same boards and features, minus those boards/features or
behaviours that are not in line with GNU policy. As a result, Canoeboot has
weaker hardware support, but it provides a solution to those hardcore diehards
who absolutely must have everything adhere to GNU.
Canoeboot is technically superior
----------------------------------
tl;dr as of 26 October 2023, Canoeboot code is about 1 year ahead of GNU Boot
in terms of development, and about 2 years ahead in terms of documentation.
Read on, if you want details. GNU Boot is also known as *gnuboot*.
Read on, if you want details. GNU Boot is also known as *gnuboot*. The purpose
of *Canoeboot* is to demonstrate the inferiority of GNU policy, by providing the
highest quality releases possible, based on Libreboot, keeping sync with
Libreboot while showing what boards/features would have to be removed from
Libreboot, if it were to comply with GNU Boot. In other words, Canoeboot is the
logical conclusion of what is *possible* under GNU policy.
Libreboot's [Binary Blob Reduction
Policy](https://libreboot.org/news/policy.html) provides an alternative, where
users have boot firmware that is as much free software as possible, while not
being dogmatic about it. You can learn more by reading that policy.
Canoeboot and GNU Boot are *both* forks of Libreboot, designed to comply with
the GNU Free System Distribution Guidelines. This page is maintained, to show
@ -148,6 +170,13 @@ security, because it reduces the chance of someone tampering with your data
successfully, and combined with [other steps](docs/gnulinux/grub_hardening.md),
can be used to reduce the risk of evil maid attacks (by making it infeasible).
GRUB detached LUKS headers
--------------------------
GRUB 2.12 also supports detached LUKS headers, whereas GRUB 2.06 does not.
GNU Boot *currently* uses GRUB 2.06 as its payload. Canoeboot and Libreboot
both use GRUB 2.12 as a payload.
Serprog support
---------------
@ -588,3 +617,125 @@ example of what would happen in the best-case scenario if Libreboot never change
its policy. The best possible release of Canoeboot will still be missing a ton
of boards and features from Libreboot. Indeed, the Canoeboot 20231026 and
nonGeNUine Boot 20230717 both illustrate that quite nicely.
GNU Boot 0.1 RC3 and Canoeboot 20240102
---------------------------------------
Dubbed *Canoeboot 20240102*, though it's not actually a release. For context,
first read: <https://libreboot.org/news/audit4.html>
Canoeboot imported these changes, in
revision `102ce12cea023783729d6a2cd1576afc95bf7540` on 2 January 2024. This
revision is referred to unofficially as *Canoeboot 20240102*.
These changes add the following noteworthy improvements, that benefit Canoeboot
users:
* GRUB 2.12 stable release, instead of GRUB 2.12-rc1. The stable release came
out on 20 December 2023.
* Generic cmake and autoconf handling now, in the build scripts. This means that
many more projects can be added more easily to the build system (utilities
and such)
* Higher default drive level of 12mA, instead of 4mA, when building serprog
images for RP2040-based MCUs
* Generic fixes in the build system, better error checking; failed Git patching
now actually exits, whereas in previous releases (and also in GNU Boot's
build system, because it inherits Libreboot which had this bug for years),
in many older releases, `git am` failing does not cause the build system to
exit. The build continues, erroneously. Libreboot fixed this in audit 4, and
Canoeboot has imported this.
* Crossgcc tarballs no longer bundled in releases, making them smaller. The
build system still downloads these at build time, but this means that now
you will only download what you need, when you build Canoeboot for a board.
* Single-tree projects are now configurable with `target.cfg` files. This could
enable use of crossgcc, if you set `xarch`, and make/cmake/autoconf arguments
are now all configurable in `target.cfg` - previously, this file was only
possible for multi-tree projects.
* `grub.cfg`: the default config scanning now also searches for syslinux configs,
in addition to extlinux, though it still looks for GRUB configs first. GRUB
can parse syslinux/extlinux configuration files. Canoeboot's GRUB is also now
configured to search for configs on the *ESP* (EFI System Partition), both
on USB media and on the installed system. With these changes, Canoeboot now
boots distros much more reliably, especially UEFI-based ones, even though
UEFI is not implemented in Caneoboot on x86 yet.
These and other/subsequent changes will be merged with the lists above, when
the next Canoeboot release comes out. The main lists of changes above are
for the current binary release of Canoeboot, versus GNU Boot.
GNU Boot 0.1 RC3
----------------
The article above compares Canoeboot 20231107 and GNU Boot 0.1 RC1. It should
be noted that 0.1 RC3 is now available, but it doesn't really add any major
changes, and most of the changes are documentation changes. Here is a brief list
of changes that would be beneficial to users:
* Removed a few binary blobs that GNU Boot overlooked, which were included in
the GNU Boot (these were also overlooked in Canoeboot releases, and have
been handled in Canoeboot, thanks to reports sent by Denis Carikli of GNUBoot)
* The `CONFIG_USE_BLOBS` setting was disabled on all coreboot configs - it
is an extra setting that reduces the chance of the coreboot build system
accidentally downloading blobs.
* Uses the coreboot build system to generate TOP SWAP bootblocks on i945,
rather than using dd. This means that the 2nd bootblock is present in CBFS,
reducing the chance that it will be overwritten at build time.
* They've started integrating the Guix package manager into their build system,
for example they now use Guix (not to be confused with Guix System, which
ironically cannot build GNU Boot due to lack of GCC-Gnat) to build GRUB.
This results in higher maintenance burden and slows down development of
GNU Boot - I considered using Nix in lbmk, but I need to be able to change
everything quickly. Extra complexity like that is overkill. The benefit
though is that users can more easily build the software, without thinking
about it as much.
GNU Boot 0.1 RC has not altered the coreboot code on any machines, nor the
GRUB code, and in fact it seems to be vanilla GRUB 2.06. Most of the changes
by 0.1 RC3 have been further integration of the Untitled Static Site Generator
maintained by Leah Rowe, adapting Untitled (which builds the Libreboot,
Canoeboot and GNU Boot websites) so that it can be used with the GNU Savannah
infrastructure more easily (as of 2 January 2024, the GNU Boot project is
considering adapting the website for use with Haunt instead of Untitled).
GNU Boot's code complexity increased, considerably. Counting build scripts,
the GNU Boot build system is **3216 lines of code**, as of 0.1 RC3 - whereas,
the Canoeboot *20240102* build system is **1127 lines of code**. That's about
3x smaller, but don't let size fool you. Canoeboot's [design](docs/maintain/)
is highly efficient. It does a lot more than GNU Boot currently does. You'll
note that this figure of 1127 is *lower* than the one given for Canoeboot
version 20231107, above. That is because Canoeboot became *more* efficient
since then!
Despite the considerable reduction in code size, by comparison, the Canoeboot
build system is *much* more powerful. It *does* a lot more, patching and
building a lot more projects, including U-Boot, and it handles cross compilation
too, for ARM - it also integrates Serprog firmware projects, for STM32
and RP2040 devices, and has much better support for autoconf/cmake-based projects.
The Canoeboot build system is so vastly efficient due to its design. GNU Boot
is based upon and expanded from Libreboot 20220710, which used a much more
complicated build system design. The *Canoeboot* build system inherits changes
from Libreboot Build System Audit [1](https://libreboot.org/news/audit.html),
[2](https://libreboot.org/news/audit2.html),
[3](https://libreboot.org/news/audit3.html) and
[4](https://libreboot.org/news/audit4.html), the purpose of which was (and is)
to reduce build system complexity, improving efficiency and reliability, while
adding many more features. Essentially, Canoeboot generalises a lot more logic,
handling codebases (download, patch, configure, compile) more generically with
a single script, whereas GNU Boot has separate scripts for each project, and
thus *duplicates* a lot of logic. While the latter design of GNU Boot is more
flexible in some ways, it does result in much higher complexity.
It should be noted that GNUBoot's code complexity *increased* a lot, relative
to Libreboot 20220710 which it forked, while not actually adding any new
functionality (none that will be beneficial to most users). The 20220710
build system was *2117* lines of code, versus GNU Boot's 3216,
Canoeboot's 1127 and Libreboot's (on 2 January 2024) 1562!
That's all. The information above, and more, will be properly merged into this
page when the next release of Canoeboot comes out, or when/if GNU Boot makes
considerable technical improvements to their project.
As of 2 January 2024, GNU Boot is *still* about 1 year behind on code and
about 2 years behind on documentation, when comparing to the technical
progress of Libreboot; the same numbers also apply to Canoeboot vs GNU Boot.

View File

@ -22,15 +22,14 @@ Siehe auch: [Canoeboot 20231107 release announcement](news/canoeboot20231107.md)
Canoeboot was *originally* named [nonGeNUine Boot](news/nongenuineboot20230717.html),
provided as a proof of concept for the [GNU Boot](https://libreboot.org/news/gnuboot.html)
or *gnuboot* project to use a more modern Libreboot base, but
they never did use it. As of 26 October 2023, GNU Boot is still based on
Libreboot 20220710 with few meaningful changes. Canoeboot 20231107 is based
on Libreboot 20231106. Look at the [Canoeboot vs GNU Boot](gnuboot.md) page for more info,
or read the [about page](about.md) for more general information.
they went in their own direction instead. Canoeboot development was continued,
and it maintains sync with the Libreboot project, as a parallel development
effort. See: [How are Canoeboot releases engineered?](about.md#how-releases-are-engineered)
Since the rename, Canoeboot is now an official sister project
of [Libreboot](https://libreboot.org/), and it
will be maintained meticulously, based upon each new Libreboot release whenever
feasible.
Canoeboot adheres to the *GNU Free System Distribution Guidelines* as policy,
whereas Libreboot adheres to its own [Binary Blob Reduction
Policy](https://libreboot.org/news/policy.html). Canoeboot and Libreboot
are *both* maintained by the same person, Leah Rowe, sharing code back and forth.
Warum solltest Du *Canoeboot* verwenden?
----------------------------

View File

@ -19,15 +19,14 @@ le 7 novembre 2023.**
Canoeboot was *originally* named [nonGeNUine Boot](news/nongenuineboot20230717.html),
provided as a proof of concept for the [GNU Boot](https://libreboot.org/news/gnuboot.html)
or *gnuboot* project to use a more modern Libreboot base, but
they never did use it. As of 26 October 2023, GNU Boot is still based on
Libreboot 20220710 with few meaningful changes. Canoeboot 20231107 is based
on Libreboot 20231106. Look at the [Canoeboot vs GNU Boot](gnuboot.md) page for more info,
or read the [about page](about.md) for more general information.
they went in their own direction instead. Canoeboot development was continued,
and it maintains sync with the Libreboot project, as a parallel development
effort. See: [How are Canoeboot releases engineered?](about.md#how-releases-are-engineered)
Since the rename, Canoeboot is now an official sister project
of [Libreboot](https://libreboot.org/), and it
will be maintained meticulously, based upon each new Libreboot release whenever
feasible.
Canoeboot adheres to the *GNU Free System Distribution Guidelines* as policy,
whereas Libreboot adheres to its own [Binary Blob Reduction
Policy](https://libreboot.org/news/policy.html). Canoeboot and Libreboot
are *both* maintained by the same person, Leah Rowe, sharing code back and forth.
Pourquoi devriez-vous utiliser *Canoeboot*?
-----------------------------------

View File

@ -20,15 +20,14 @@ Vedi: [Canoeboot 20231107 annuncio di rilascio](news/canoeboot20231107.md).**
Canoeboot was *originally* named [nonGeNUine Boot](news/nongenuineboot20230717.html),
provided as a proof of concept for the [GNU Boot](https://libreboot.org/news/gnuboot.html)
or *gnuboot* project to use a more modern Libreboot base, but
they never did use it. As of 26 October 2023, GNU Boot is still based on
Libreboot 20220710 with few meaningful changes. Canoeboot 20231107 is based
on Libreboot 20231106. Look at the [Canoeboot vs GNU Boot](gnuboot.md) page for more info,
or read the [about page](about.md) for more general information.
they went in their own direction instead. Canoeboot development was continued,
and it maintains sync with the Libreboot project, as a parallel development
effort. See: [How are Canoeboot releases engineered?](about.md#how-releases-are-engineered)
Since the rename, Canoeboot is now an official sister project
of [Libreboot](https://libreboot.org/), and it
will be maintained meticulously, based upon each new Libreboot release whenever
feasible.
Canoeboot adheres to the *GNU Free System Distribution Guidelines* as policy,
whereas Libreboot adheres to its own [Binary Blob Reduction
Policy](https://libreboot.org/news/policy.html). Canoeboot and Libreboot
are *both* maintained by the same person, Leah Rowe, sharing code back and forth.
Per quale ragione utilizzare *Canoeboot*?
-----------------------------------------

View File

@ -22,15 +22,14 @@ See: [Canoeboot 20231107 release announcement](news/canoeboot20231107.md).**
Canoeboot was *originally* named [nonGeNUine Boot](news/nongenuineboot20230717.html),
provided as a proof of concept for the [GNU Boot](https://libreboot.org/news/gnuboot.html)
or *gnuboot* project to use a more modern Libreboot base, but
they never did use it. As of 26 October 2023, GNU Boot is still based on
Libreboot 20220710 with few meaningful changes. Canoeboot 20231107 is based
on Libreboot 20231106. Look at the [Canoeboot vs GNU Boot](gnuboot.md) page for more info,
or read the [about page](about.md) for more general information.
they went in their own direction instead. Canoeboot development was continued,
and it maintains sync with the Libreboot project, as a parallel development
effort. See: [How are Canoeboot releases engineered?](about.md#how-releases-are-engineered)
Since the rename, Canoeboot is now an official sister project
of [Libreboot](https://libreboot.org/), and it
will be maintained meticulously, based upon each new Libreboot release whenever
feasible.
Canoeboot adheres to the *GNU Free System Distribution Guidelines* as policy,
whereas Libreboot adheres to its own [Binary Blob Reduction
Policy](https://libreboot.org/news/policy.html). Canoeboot and Libreboot
are *both* maintained by the same person, Leah Rowe, sharing code back and forth.
Why should you use *Canoeboot*?
----------------------------

View File

@ -21,15 +21,14 @@ x-toc-enable: true
Canoeboot was *originally* named [nonGeNUine Boot](news/nongenuineboot20230717.html),
provided as a proof of concept for the [GNU Boot](https://libreboot.org/news/gnuboot.html)
or *gnuboot* project to use a more modern Libreboot base, but
they never did use it. As of 26 October 2023, GNU Boot is still based on
Libreboot 20220710 with few meaningful changes. Canoeboot 20231107 is based
on Libreboot 20231106. Look at the [Canoeboot vs GNU Boot](gnuboot.md) page for more info,
or read the [about page](about.md) for more general information.
they went in their own direction instead. Canoeboot development was continued,
and it maintains sync with the Libreboot project, as a parallel development
effort. See: [How are Canoeboot releases engineered?](about.md#how-releases-are-engineered)
Since the rename, Canoeboot is now an official sister project
of [Libreboot](https://libreboot.org/), and it
will be maintained meticulously, based upon each new Libreboot release whenever
feasible.
Canoeboot adheres to the *GNU Free System Distribution Guidelines* as policy,
whereas Libreboot adheres to its own [Binary Blob Reduction
Policy](https://libreboot.org/news/policy.html). Canoeboot and Libreboot
are *both* maintained by the same person, Leah Rowe, sharing code back and forth.
Чому вам варто використовувати *Canoeboot*?
----------------------------

View File

@ -12,15 +12,14 @@ x-toc-enable: true
Canoeboot was *originally* named [nonGeNUine Boot](news/nongenuineboot20230717.html),
provided as a proof of concept for the [GNU Boot](https://libreboot.org/news/gnuboot.html)
or *gnuboot* project to use a more modern Libreboot base, but
they never did use it. As of 26 October 2023, GNU Boot is still based on
Libreboot 20220710 with few meaningful changes. Canoeboot 20231107 is based
on Libreboot 20231106. Look at the [Canoeboot vs GNU Boot](gnuboot.md) page for more info,
or read the [about page](about.md) for more general information.
they went in their own direction instead. Canoeboot development was continued,
and it maintains sync with the Libreboot project, as a parallel development
effort. See: [How are Canoeboot releases engineered?](about.md#how-releases-are-engineered)
Since the rename, Canoeboot is now an official sister project
of [Libreboot](https://libreboot.org/), and it
will be maintained meticulously, based upon each new Libreboot release whenever
feasible.
Canoeboot adheres to the *GNU Free System Distribution Guidelines* as policy,
whereas Libreboot adheres to its own [Binary Blob Reduction
Policy](https://libreboot.org/news/policy.html). Canoeboot and Libreboot
are *both* maintained by the same person, Leah Rowe, sharing code back and forth.
为什么要使用 *Canoeboot*?
----------------------------