parent
77198f7f5d
commit
e4b30750d1
|
@ -429,7 +429,7 @@ Mate Kukri
|
|||
|
||||
Mate Kukri is a *major* contributor to Libreboot, and several of the upstreams
|
||||
that it uses; he is a coreboot developer, and also contributes heavily to the
|
||||
GNU GRUB project.
|
||||
GRUB bootloader project.
|
||||
|
||||
Off the top of my head, here are just a few of the contributions that he has
|
||||
made:
|
||||
|
|
|
@ -139,7 +139,7 @@ MAC address
|
|||
This has a Realtek NIC inside, instead of Intel, so the MAC address will not
|
||||
change. This means: there is no GbE region in the flash.
|
||||
|
||||
You can still use something like GNU MAC Changer to change your MAC address
|
||||
You can still use something like `macchanger` to change your MAC address
|
||||
from Linux if you want to.
|
||||
|
||||
This is great, because that's one less complexity to deal with during
|
||||
|
|
|
@ -58,7 +58,7 @@ build system can be found in the [lbmk maintenance manual](../maintain/),
|
|||
and information about porting new systems in
|
||||
the [porting manual](../maintain/porting.md).
|
||||
|
||||
With x86 machines, you can use the SeaBIOS or GNU GRUB payloads. On ARM
|
||||
With x86 machines, you can use the SeaBIOS or GRUB bootloader payloads. On ARM
|
||||
systems, you can use the U-Boot payload (coreboot still initialises hardware).
|
||||
|
||||
Libreboot currently supports the following systems:
|
||||
|
|
|
@ -44,7 +44,7 @@ linked above tells you how to apply your modifications for flashing.**
|
|||
Flash write protection
|
||||
======================
|
||||
|
||||
Although not strictly related to GNU GRUB, flash protection will prevent anyone
|
||||
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.
|
||||
|
|
|
@ -453,7 +453,7 @@ src/grub/TREE
|
|||
|
||||
Please also visit: <https://www.gnu.org/software/grub/>
|
||||
|
||||
The GNU GRUB bootloader, a reference multiboot implementation with its own
|
||||
The GRUB bootloader, a reference multiboot implementation with its own
|
||||
small kernel/OS and drivers (e.g. file systems, cryptography). This is the
|
||||
default recommended [coreboot payload](https://doc.coreboot.org/payloads.html)
|
||||
on x86-based Libreboot systems. GRUB will load and execute your Linux kernel,
|
||||
|
@ -681,7 +681,7 @@ directly into `lbmk.git`, and thoroughly cleaned. The lbmk version has been
|
|||
more or less re-written, using the original logic as a base; variables are
|
||||
more clearly named. A top-down, OpenBSD-inspired coding style is used,
|
||||
replacing the GNU coding style implemented in the original code. The [OpenBSD
|
||||
coding style][https://man.openbsd.org/style.9] is much easier to read.
|
||||
coding style](https://man.openbsd.org/style.9) is much easier to read.
|
||||
|
||||
This code has been modified to make use of the `pledge()` system call, when used
|
||||
on [OpenBSD](https://www.openbsd.org/); the original version from GRUB did not
|
||||
|
|
|
@ -307,10 +307,9 @@ In addition to not using bashisms, commands that lbmk uses must also
|
|||
be portable; where possible, third party projects should be tweaked.
|
||||
|
||||
This is actually something that is currently lacking or otherwise untested
|
||||
in Libreboot; it's currently assumed that only Linux (specifically GNU+Linux)
|
||||
in Libreboot; it's currently assumed that only common Linux distributions
|
||||
will work, because many of the projects that Libreboot makes use of will use
|
||||
bashisms, or other GNUisms (e.g. GNU-specific C extensions or GNU Make specific
|
||||
behaviour in Makefiles).
|
||||
bashisms, and/or rely on idiosyncrasies of glibc.
|
||||
|
||||
Work+testing is sorely needed, in this area. It would be nice if Libreboot
|
||||
could be built on BSD systems, for example.
|
||||
|
|
|
@ -8,7 +8,7 @@ Background
|
|||
|
||||
ArchLinuxARM Latest (as of May 1st 2023) boots and can be installed successfully using libreboot 20230319 on a gru_bob chromebook.
|
||||
|
||||
The following process should theoretically be applicable to other U-Boot devices and GNU/Linux distributions, but the focus here is specifically on ArchLinuxARM.
|
||||
The following process should theoretically be applicable to other U-Boot devices and Linux distributions, but the focus here is specifically on ArchLinuxARM.
|
||||
|
||||
Sources used for this guide include the [following guide to install ArchLinuxARM on a RockPro64,](https://jforberg.se/blog/posts/2023-02-19-rockpro64/rockpro64.html)
|
||||
|
||||
|
@ -85,7 +85,7 @@ In the fdisk tui, create two partitions on a Master Boot Record:
|
|||
- set type to fat32 (ext2 is also supported by extlinux I believe, but I used fat32)
|
||||
- create a second partition of up to 15.8GB
|
||||
|
||||
You will find the appropriate options by typing `m` when using the fdisk tui on GNU/Linux distros.
|
||||
You will find the appropriate options by typing `m` when using the fdisk tui on Linux distros.
|
||||
|
||||
Now make the filesystems:
|
||||
```
|
||||
|
|
|
@ -189,7 +189,7 @@ 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 Libreboot, but we're not picky. Libreboot has historically
|
||||
used GNU licensing such as GPL; much of that remains, and is likely to remain.
|
||||
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.
|
||||
|
|
|
@ -46,7 +46,7 @@ Libreboot provides [coreboot](https://coreboot.org/) for [machine
|
|||
initialisation](https://doc.coreboot.org/getting_started/architecture.html),
|
||||
which then jumps to a [payload](https://doc.coreboot.org/payloads.html) in
|
||||
the boot flash; coreboot works with many payloads, but Libreboot specifically
|
||||
provides SeaBIOS, GNU GRUB and U-Boot as options. Memtest86+ is also provided
|
||||
provides SeaBIOS, GRUB and U-Boot as options. Memtest86+ is also provided
|
||||
in flash, on some mainboards. The payload is the program in flash that provides
|
||||
the early user interface, for booting an operating system. This *payload*
|
||||
infrastructure means you can run whatever you want (even Linux!) from the
|
||||
|
|
|
@ -18,7 +18,7 @@ x-toc-enable: true
|
|||
|
||||
<img tabindex=1 class="l" src="https://av.libreboot.org/hp9470m/9470m+2560p.jpg" /><span class="f"><img src="https://av.libreboot.org/hp9470m/9470m+2560p.jpg" /></span>
|
||||
|
||||
Libreboot предоставляет [coreboot](https://coreboot.org/) для [инициализации машины](https://doc.coreboot.org/getting_started/architecture.html), которая затем переходит к [полезной нагрузке](https://doc.coreboot.org/payloads.html) в загрузочной флэш-памяти; coreboot работает со многими программами, но Libreboot предоставляет только SeaBIOS, GNU GRUB и U-Boot. Memtest86+ также предоставляется, но только на некоторых материнских платах. Полезная нагрузка - программа во флэш-памяти, которая предоставляет "ранний" пользовательский интерфейс для загрузки операционной системы. Это значит, что вы можете запустить все что угодно из загрузочной флэш-памяти (даже Linux!).
|
||||
Libreboot предоставляет [coreboot](https://coreboot.org/) для [инициализации машины](https://doc.coreboot.org/getting_started/architecture.html), которая затем переходит к [полезной нагрузке](https://doc.coreboot.org/payloads.html) в загрузочной флэш-памяти; coreboot работает со многими программами, но Libreboot предоставляет только SeaBIOS, GRUB и U-Boot. Memtest86+ также предоставляется, но только на некоторых материнских платах. Полезная нагрузка - программа во флэш-памяти, которая предоставляет "ранний" пользовательский интерфейс для загрузки операционной системы. Это значит, что вы можете запустить все что угодно из загрузочной флэш-памяти (даже Linux!).
|
||||
|
||||
Libreboot - это *дистрибутив coreboot* также, как и Debian - *диструбутив Linux*. Libreboot делает coreboot простым к использованию для обычных пользователей, предоставляя [полностью автоматизированную систему сборки](docs/build/) и [дружелюбные к пользователю инструкции к установке](docs/install/), в дополении к регулярному бинарному релизу, дающему скомпилированные ROM образы для установки на поддерживаемом оборудовании. Без автоматизации, предоставляемой Libreboot, coreboot был бы недоступен для большинства пользователей; однако вы также можете [сконфигурировать](docs/mantain) Libreboot как вы желаете.
|
||||
|
||||
|
|
|
@ -141,7 +141,7 @@ so you can think of it like a *[coreboot distribution](../docs/maintain/)*;
|
|||
Libreboot's build
|
||||
system is essentially a source-based package manager, for coreboot components.
|
||||
|
||||
The very first Libreboot releases only provided a *GNU GRUB* payload. The
|
||||
The very first Libreboot releases only provided a *GRUB* bootloader payload. The
|
||||
GRUB bootloader had been adapted for coreboot many years before then, but there
|
||||
weren't any ready-made coreboot images available that used it, and it wasn't
|
||||
very well-developed for end users. GRUB is a lot more complex than many people
|
||||
|
@ -162,13 +162,8 @@ use today.
|
|||
Libreboot logo
|
||||
--------------
|
||||
|
||||
Of note, though it doesn't fit anywhere else in the article, so I'll just say
|
||||
it now:
|
||||
|
||||
I went on the GNU mailing lists during 2014, asking people to make a logo for
|
||||
the project. Several people then emailed me their submissions. I finally picked
|
||||
the logo design that Libreboot now uses, and has used since then. That design
|
||||
was created by a person named Marcus Moeller, for use in the Libreboot project.
|
||||
Marcus Moeller designed the Libreboot logo in 2014, after I publicly requested
|
||||
that samples be prepared for my review. Marcus's logo was the one I chose.
|
||||
|
||||
Why GRUB?
|
||||
---------
|
||||
|
@ -429,8 +424,8 @@ Several other desktop boards were also added during this period, such as
|
|||
the Gigabyte GA-G41M-ES2L board that was ported to coreboot by Damien Zammit.
|
||||
He was compensated for his work; I paid him 4000 AUD for the trouble. Arthur
|
||||
Heymans contributed several ports aswell, and today still does extensive work
|
||||
on coreboot - both Damien and Arthur left the Libreboot project, after its
|
||||
departure from GNU (more on this next).
|
||||
on coreboot - both Damien and Arthur left the Libreboot project, after Libreboot
|
||||
became independent again.
|
||||
|
||||
This period was a watershed moment in general, for the Libreboot project. Many
|
||||
people contributed to the project, during this period. You can check
|
||||
|
|
|
@ -106,10 +106,10 @@ spkmodem-recv
|
|||
-------------
|
||||
|
||||
This utility was *added* after the last release. It was imported from coreboot,
|
||||
which in turn previously forked it from GNU GRUB. It is a receiving client for
|
||||
which in turn previously forked it from GRUB. It is a receiving client for
|
||||
spkmodem, to provide a serial console via pulses on the standard *PC speaker*.
|
||||
|
||||
Libreboot's version is *heavily* re-factored, doing away with the GNU coding
|
||||
Libreboot's version is *heavily* re-factored, doing away with the messy GNU coding
|
||||
style and replacing it with a BSD coding style (the licensing is unchanged).
|
||||
|
||||
For reference, here is the original version from GRUB:
|
||||
|
|
|
@ -187,14 +187,14 @@ Newest changes first, oldest changes last:
|
|||
namely `-d`, which can be passed to the program. The code for debug is now
|
||||
present in any build. Usage: `spkmodem-recv -d`
|
||||
* New util: `util/spkmodem_recv` - imported from coreboot, which in turn forked
|
||||
it originally from GNU GRUB. This is a receiving client for *spkmodem*, a type
|
||||
it originally from GRUB. This is a receiving client for *spkmodem*, a type
|
||||
of serial console provided via pulses over PC speaker. Libreboot's version
|
||||
greatly improves the error handling, and it has been re-factored for OpenBSD
|
||||
coding style, to replace the (very horrible) GNU coding style.
|
||||
coding style, to replace the (very horrible, very messy) GNU coding style.
|
||||
It is also [pledged](https://man.openbsd.org/pledge.2) in
|
||||
Libreboot's version. For reference,
|
||||
[here](https://git.savannah.gnu.org/cgit/grub.git/plain/util/spkmodem-recv.c?id=822b726b33b8dc07dd01b257a2dfcc7b07d12e2f)
|
||||
is the GNU version, and
|
||||
is the GRUB version, and
|
||||
[here](https://raw.githubusercontent.com/coreboot/coreboot/8febc91b3041a1d027bf0d36d30ccb119496524f/util/spkmodem_recv/spkmodem-recv.c) is coreboot's version of it. And now to blow your mind,
|
||||
[here](https://browse.libreboot.org/lbmk.git/tree/util/spkmodem_recv/spkmodem-recv.c?id=b508245451b71b3443fa3202f3863a6de731e9c8)
|
||||
is the Libreboot version present in release 20230625. A very much GNU program,
|
||||
|
|
|
@ -11,7 +11,7 @@ operating system (e.g. Linux/BSD). It is specifically
|
|||
a *[coreboot distribution](../docs/maintain/)*,
|
||||
in the same way that Debian is a Linux distribution. It provides an automated
|
||||
build system to produce coreboot ROM images with a variety of payloads such as
|
||||
GNU GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
to use as possible for non-technical users.
|
||||
|
||||
Libreboot provides many additional benefits such as fast boot speeds, greater
|
||||
|
|
|
@ -15,13 +15,13 @@ operating system (e.g. Linux/BSD). It is specifically
|
|||
a *[coreboot distribution](../docs/maintain/)*,
|
||||
in the same way that Debian is a Linux distribution. It provides an automated
|
||||
build system to produce coreboot ROM images with a variety of payloads such as
|
||||
GNU GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
to use as possible for non-technical users. From a project management perspective,
|
||||
this works in *exactly* the same way as a Linux distro, providing the same type
|
||||
of infrastructure, but for your boot firmware instead of your operating system.
|
||||
It makes use of [coreboot](https://www.coreboot.org/) for hardware initialisation,
|
||||
and then a payload such as [SeaBIOS](https://www.seabios.org/SeaBIOS)
|
||||
or [GNU GRUB](https://www.gnu.org/software/grub/) to boot your operating
|
||||
or [GRUB](https://www.gnu.org/software/grub/) to boot your operating
|
||||
system; on ARM(chromebooks), we provide *U-Boot* (as a coreboot payload).
|
||||
|
||||
Libreboot provides many additional benefits such as fast boot speeds, greater
|
||||
|
|
|
@ -16,7 +16,7 @@ operating system (e.g. Linux/BSD). It is specifically
|
|||
a *[coreboot distribution](../docs/maintain/)*,
|
||||
in the same way that Debian is a Linux distribution. It provides an automated
|
||||
build system to produce coreboot ROM images with a variety of payloads such as
|
||||
GNU GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
to use as possible for non-technical users. From a project management perspective,
|
||||
this works in *exactly* the same way as a Linux distro, providing the same type
|
||||
of infrastructure, but for your boot firmware instead of your operating system.
|
||||
|
|
|
@ -19,13 +19,13 @@ operating system (e.g. Linux/BSD). It is specifically
|
|||
a *[coreboot distribution](../docs/maintain/)*,
|
||||
in the same way that Debian is a Linux distribution. It provides an automated
|
||||
build system to produce coreboot ROM images with a variety of payloads such as
|
||||
GNU GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
to use as possible for non-technical users. From a project management perspective,
|
||||
this works in *exactly* the same way as a Linux distro, providing a source-based
|
||||
package manager (called lbmk) which patches sources and compiles coreboot images.
|
||||
It makes use of [coreboot](https://www.coreboot.org/) for hardware initialisation,
|
||||
and then a payload such as [SeaBIOS](https://www.seabios.org/SeaBIOS)
|
||||
or [GNU GRUB](https://www.gnu.org/software/grub/) to boot your operating
|
||||
or [GRUB](https://www.gnu.org/software/grub/) to boot your operating
|
||||
system; on ARM(chromebooks), we provide *U-Boot* (as a coreboot payload).
|
||||
|
||||
The changes of the recent [6th build system audit](audit6.md) are included, in
|
||||
|
@ -450,8 +450,8 @@ The changes are as follows:
|
|||
where the BIOS region ends at 4MB; you would then flash the full image
|
||||
internally, after the fact.
|
||||
* Relative to audit6: Patch uefitool for musl libc. The code was making use
|
||||
of `ACCESSPERMS`, which is a define in BSD libc (also available in the GNU
|
||||
C Library) for use with chmod when setting 777 permission on files. The musl
|
||||
of `ACCESSPERMS`, which is a define in BSD libc (also available in glibc)
|
||||
for use with chmod when setting 777 permission on files. The musl
|
||||
libc doesn't have this, so the code was modified to explicitly define it in
|
||||
the same way, but only if not already defined. Useful for Alpine Linux users.
|
||||
* Relative to audit6: Don't dry-run `mkcorebootbin` when using the `-d` switch
|
||||
|
|
|
@ -30,13 +30,13 @@ operating system (e.g. Linux/BSD). It is specifically
|
|||
a *[coreboot distribution](../docs/maintain/)*,
|
||||
in the same way that Debian is a Linux distribution. It provides an automated
|
||||
build system to produce coreboot ROM images with a variety of payloads such as
|
||||
GNU GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
to use as possible for non-technical users. From a project management perspective,
|
||||
this works in *exactly* the same way as a Linux distro, providing a source-based
|
||||
package manager (called lbmk) which patches sources and compiles coreboot images.
|
||||
It makes use of [coreboot](https://www.coreboot.org/) for hardware initialisation,
|
||||
and then a payload such as [SeaBIOS](https://www.seabios.org/SeaBIOS)
|
||||
or [GNU GRUB](https://www.gnu.org/software/grub/) to boot your operating
|
||||
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
|
||||
|
|
|
@ -18,13 +18,13 @@ operating system (e.g. Linux/BSD). It is specifically
|
|||
a *[coreboot distribution](../docs/maintain/)*,
|
||||
in the same way that Debian is a Linux distribution. It provides an automated
|
||||
build system to produce coreboot ROM images with a variety of payloads such as
|
||||
GNU GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy
|
||||
to use as possible for non-technical users. From a project management perspective,
|
||||
this works in *exactly* the same way as a Linux distro, providing a source-based
|
||||
package manager (called lbmk) which patches sources and compiles coreboot images.
|
||||
It makes use of [coreboot](https://www.coreboot.org/) for hardware initialisation,
|
||||
and then a payload such as [SeaBIOS](https://www.seabios.org/SeaBIOS)
|
||||
or [GNU GRUB](https://www.gnu.org/software/grub/) to boot your operating
|
||||
or [GRUB](https://www.gnu.org/software/grub/) to boot your operating
|
||||
system; on ARM(chromebooks), we provide *U-Boot* (as a coreboot payload).
|
||||
|
||||
We also provide an experimental U-Boot setup on x86, as a coreboot payload for
|
||||
|
|
|
@ -385,7 +385,7 @@ have more - for now.
|
|||
|
||||
Let's take an extreme example: what if coreboot was entirely binary blobs
|
||||
for a given mainboard? Coreboot itself only initialises the hardware, and
|
||||
jumps to a payload in the flash; in this case, the payload (e.g. GNU GRUB)
|
||||
jumps to a payload in the flash; in this case, the payload (e.g. GRUB)
|
||||
would still be free software. Surely, all free firmware would be better,
|
||||
but this is still an improvement over the original vendor firmware. The
|
||||
original vendor firmware will have non-free boot firmware *and* its analog
|
||||
|
|
|
@ -447,7 +447,7 @@ have more - for now.
|
|||
|
||||
Let's take an extreme example: what if coreboot was entirely binary blobs
|
||||
for a given mainboard? Coreboot itself only initialises the hardware, and
|
||||
jumps to a payload in the flash; in this case, the payload (e.g. GNU GRUB)
|
||||
jumps to a payload in the flash; in this case, the payload (e.g. GRUB)
|
||||
would still be free software. Surely, all free firmware would be better,
|
||||
but this is still an improvement over the original vendor firmware. The
|
||||
original vendor firmware will have non-free boot firmware *and* its analog
|
||||
|
|
|
@ -376,7 +376,7 @@ have more - for now.
|
|||
|
||||
Let's take an extreme example: what if coreboot was entirely binary blobs
|
||||
for a given mainboard? Coreboot itself only initialises the hardware, and
|
||||
jumps to a payload in the flash; in this case, the payload (e.g. GNU GRUB)
|
||||
jumps to a payload in the flash; in this case, the payload (e.g. GRUB)
|
||||
would still be free software. Surely, all free firmware would be better,
|
||||
but this is still an improvement over the original vendor firmware. The
|
||||
original vendor firmware will have non-free boot firmware *and* its analog
|
||||
|
|
|
@ -405,7 +405,7 @@ the [u-root](https://github.com/u-root/u-root) project.
|
|||
Libreboot's current choice of coreboot payloads are:
|
||||
|
||||
* SeaBIOS (x86 only), provides a traditional PC BIOS implementation
|
||||
* GNU GRUB (x86 only), provides a multiboot implementation, can boot Linux and
|
||||
* GRUB (x86 only), provides a multiboot implementation, can boot Linux and
|
||||
BSD. This is the preferred default payload on x86, especially for Linux
|
||||
distros, because it provides many security features like GPG signature
|
||||
checking on Linux kernels, and password protection.
|
||||
|
@ -418,7 +418,7 @@ Libreboot's current choice of coreboot payloads are:
|
|||
|
||||
U-Root in particular (not to be confused with U-boot has parsers in it for
|
||||
GRUB and Syslinux config files. GRUB also has a parser for syslinux configs.
|
||||
This makes it a useful drop-in replacement for the GNU GRUB payload that
|
||||
This makes it a useful drop-in replacement for the GRUB bootloader payload that
|
||||
Libreboot currently uses. Linux has much better drivers than GRUB, especially
|
||||
for things like LUKS2 and networking.
|
||||
|
||||
|
@ -1211,9 +1211,7 @@ Sanity checks
|
|||
-------------
|
||||
|
||||
We basically should have startup sanity checks in general, such as checking
|
||||
whether all the right dependencies are installed on the host system - similar
|
||||
to autoconf setups used by many GNU projects, though we don't want to use
|
||||
autoconf, it's bloat.
|
||||
whether all the right dependencies are installed on the host system.
|
||||
|
||||
If a sanity check is passed, a configuration file can then be provided, which
|
||||
can be used to control how lbmk runs. For example, if a certain version of a
|
||||
|
|
Loading…
Reference in New Issue