parent
a299f8afc5
commit
8c8df1d225
171
site/gnuboot.md
171
site/gnuboot.md
|
@ -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.
|
||||
|
|
|
@ -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?
|
||||
----------------------------
|
||||
|
|
|
@ -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*?
|
||||
-----------------------------------
|
||||
|
|
|
@ -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*?
|
||||
-----------------------------------------
|
||||
|
|
|
@ -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*?
|
||||
----------------------------
|
||||
|
|
|
@ -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*?
|
||||
----------------------------
|
||||
|
|
|
@ -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*?
|
||||
----------------------------
|
||||
|
|
Loading…
Reference in New Issue