File site/docs/install/index.md changed (mode: 100644) (index 1a98f70..0c4dff2) |
... |
... |
title: Installation instructions |
3 |
3 |
x-toc-enable: true |
x-toc-enable: true |
4 |
4 |
... |
... |
5 |
5 |
|
|
|
6 |
|
**GRUB payload warning** |
|
7 |
|
==================== |
|
8 |
|
|
|
9 |
|
Firstly, it should be stated: in almost all cases, GRUB works just fine, on |
|
10 |
|
all of the machines that we test, but as of 26 May 2024 we got the error |
|
11 |
|
report: |
|
12 |
|
|
|
13 |
|
See: <https://codeberg.org/libreboot/lbmk/issues/216> |
|
14 |
|
|
|
15 |
|
Although we've only seen this thus far (as per user reports) on Intel |
|
16 |
|
SandyBridge based Dell Latitude laptops, we advise: |
|
17 |
|
|
|
18 |
|
**DO NOT use a ROM image where GRUB is the first payload. If you want to |
|
19 |
|
use the GRUB payload, please use a ROM image with `seabios_` at the start |
|
20 |
|
of the file name. Avoid images with `grub_` at the start of the file name.** |
|
21 |
|
|
|
22 |
|
ROM images with `grubonly` in them should also be avoided; if you want GRUB |
|
23 |
|
to be the first thing you see (without interruption), use a ROM image |
|
24 |
|
with `seabios_` at the start of the file name, and `grubfirst` at the end; |
|
25 |
|
these place a bootorder file in CBFS, so that SeaBIOS loads GRUB first, but |
|
26 |
|
you can still press ESC to bring up the SeaBIOS boot select menu. |
|
27 |
|
|
|
28 |
|
The error above, in the linked bug report, occurs on `grub_free()` |
|
29 |
|
or `grub_realloc()` and could be caused by anything in GRUB; the user tested |
|
30 |
|
on memtest86plus and got no errors, and SeaBIOS works; BIOS GRUB (from a distro) |
|
31 |
|
also works, where GRUB doesn't need as many drivers; we suspect this may be |
|
32 |
|
a use-after-free in a GRUB driver, or otherwise something writing to heap memory |
|
33 |
|
wrongly. The bug is not yet known, only the symptom (the fatal error message). |
|
34 |
|
|
|
35 |
|
Libreboot releases after 20240504 will *only* (on x86) contain ROM images where |
|
36 |
|
SeaBIOS is the first payload, without disabling the SeaBIOS menu (no `grubonly`). You'll still be able to use GRUB, either by pressing ESC for the boot |
|
37 |
|
select menu, and/or using an image with `grubfirst` in the file name so that |
|
38 |
|
SeaBIOS loads it first (while still permitting boot select via ESC keypress). |
|
39 |
|
|
|
40 |
|
GRUB's code is vast, and complicated, so this policy change is permanent, |
|
41 |
|
until GRUB can be well-audited (likely forked, with dead/legacy code removed). |
|
42 |
|
SeaBIOS code is much smaller and more robust. Remember always: code equals bugs. |
|
43 |
|
|
6 |
44 |
Need help? |
Need help? |
7 |
45 |
========== |
========== |
8 |
46 |
|
|
|
... |
... |
an option in the boot menu. |
199 |
237 |
ROM images that have `seabios_withgrub` in the file name start with SeaBIOS |
ROM images that have `seabios_withgrub` in the file name start with SeaBIOS |
200 |
238 |
first, but also have GRUB available in the boot menu when you press ESC. |
first, but also have GRUB available in the boot menu when you press ESC. |
201 |
239 |
|
|
202 |
|
### seabios\_grubfirst (DEFUNCT) |
|
203 |
|
|
|
204 |
|
**DEFUNCT** |
|
205 |
|
|
|
206 |
|
This build option is obsolete, and should not be used. It was deleted |
|
207 |
|
in lbmk revision `e1bbdadc9584291cf062660d67128e9f17ab788e`. |
|
208 |
|
|
|
209 |
|
It was believed, in earlier theory, that VGA ROM initialisation could |
|
210 |
|
be used in SeaBIOS and then SeaBIOS boots into a GRUB payload (built |
|
211 |
|
for coreboot), where the initialisation would continue to be used, but |
|
212 |
|
it didn't work that way. |
|
213 |
|
|
|
214 |
|
It's best to use PC GRUB (normal BIOS GRUB), but compile it into a floppy |
|
215 |
|
image to insert inside CBFS, to then be executed by SeaBIOS. This is referred |
|
216 |
|
to as SeaGRUB by the Libreboot project, and it would be quite useful |
|
217 |
|
for desktop users, but it's largely irrelevant on laptops where |
|
218 |
|
coreboot's own `libgfxinit` is usually available (or the option ROM is |
|
219 |
|
easy to extract from vendor firmware and insert). |
|
220 |
|
|
|
221 |
|
Where direct bare metal GRUB is desired, but you use a desktop system with |
|
222 |
|
an add-on graphics card, you must extract the VGA ROM for your card and |
|
223 |
|
insert it into the coreboot ROM, for coreboot itself to execute. This will |
|
224 |
|
require custom configuration on your part, and it is thus beyond the scope |
|
225 |
|
of the Libreboot project, in context of lbmk (automated build system). |
|
226 |
|
|
|
227 |
|
Some older Libreboot releases included ROM images built using this option, |
|
228 |
|
and those specific ROM images (`seabios_grubfirst` ones) should not be |
|
229 |
|
used; you should only use `seabios_grubfirst` or `seabios`, in most |
|
230 |
|
scenarios, if SeaBIOS is required. |
|
231 |
|
|
|
232 |
|
For most desktop users, if running an external graphics card, it's easier |
|
233 |
|
to simply boot in text mode with a SeaBIOS payload and use only that. This |
|
234 |
|
will Just Work with almost all graphics cards, allowing you to use an |
|
235 |
|
operating system with a full display and (drivers permitting) full 2D/3D |
|
236 |
|
acceleration. |
|
|
240 |
|
ROM images with this and `grubonly` in the image start SeaBIOS, but only load |
|
241 |
|
GRUB from SeaBIOS and the SeaBIOS menu is disabled. Use these images if you |
|
242 |
|
only want GRUB; they are provided on systems that only have VGA ROM-based |
|
243 |
|
initialisation, usually discrete graphics cards on desktop machines. |
237 |
244 |
|
|
238 |
245 |
Which systems are supported? |
Which systems are supported? |
239 |
246 |
============================ |
============================ |
240 |
247 |
|
|
241 |
248 |
[Refer to the hardware compatibility page](../hardware/) |
[Refer to the hardware compatibility page](../hardware/) |
242 |
249 |
|
|
243 |
|
Sandy/Ivybridge/Haswell MAC address (e.g. X230, X220, T440p, W541, hp8200sff) |
|
244 |
250 |
Intel GbE MAC address (IFD-based systems) |
Intel GbE MAC address (IFD-based systems) |
245 |
251 |
===================================================================== |
===================================================================== |
246 |
252 |
|
|