mirror of
https://codeberg.org/canoeboot/cbwww.git
synced 2025-07-03 03:57:22 +01:00
268 lines
11 KiB
Markdown
268 lines
11 KiB
Markdown
---
|
|
title: Install Canoeboot on Dell OptiPlex 9020 SFF/MT (or 7020), or XE2 MT/SFF
|
|
x-toc-enable: true
|
|
...
|
|
|
|
**NOTE: Dell XE2 MT/SFF are also known to work, using the 9020 images. Same
|
|
motherboards as the 9020 and 7020.**
|
|
|
|
**[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).**
|
|
|
|
<div class="specs">
|
|
<center>
|
|
<img tabindex=1 alt="Dell OptiPlex 9020" class="p" src="https://av.canoeboot.org/9020/9020sff.jpg" /><span class="f"><img src="https://av.canoeboot.org/9020/9020sff.jpg" /></span>
|
|
<img tabindex=1 alt="Dell OptiPlex 9020" class="p" src="https://av.canoeboot.org/9020/9020sff_ports.jpg" /><span class="f"><img src="https://av.canoeboot.org/9020/9020sff_ports.jpg" /></span>
|
|
<br/>
|
|
<img tabindex=1 alt="Dell OptiPlex 9020" class="p" src="https://av.canoeboot.org/9020/9020sff_inside.jpg" /><span class="f"><img src="https://av.canoeboot.org/9020/9020sff_inside.jpg" /></span>
|
|
<img tabindex=1 alt="Dell OptiPlex 9020" class="p" src="https://av.canoeboot.org/9020/9020mt.jpg" /><span class="f"><img src="https://av.canoeboot.org/9020/9020mt.jpg" /></span>
|
|
<br/>
|
|
<img tabindex=1 alt="Dell OptiPlex 9020" class="p" src="https://av.canoeboot.org/9020/9020mt_ports.jpg" /><span class="f"><img src="https://av.canoeboot.org/9020/9020mt_ports.jpg" /></span>
|
|
<img tabindex=1 alt="Dell OptiPlex 9020" class="p" src="https://av.canoeboot.org/9020/9020mt_inside.jpg" /><span class="f"><img src="https://av.canoeboot.org/9020/9020mt_inside.jpg" /></span>
|
|
</center>
|
|
|
|
| ***Specifications*** | |
|
|
|----------------------------|------------------------------------------------|
|
|
| **Manufacturer** | Dell |
|
|
| **Name** | OptiPlex 9020 SFF/MT |
|
|
| **Variants** | OptiPlex 9020 SFF/MT |
|
|
| **Chipset** | Intel Q87 Express |
|
|
| **CPU** | Intel Haswell |
|
|
| **Graphics** | Intel HD Graphics |
|
|
| **Memory** | DDR3 DIMMs (max 32GB, 4x8GB) |
|
|
| **Architecture** | x86\_64 |
|
|
| **Original boot firmware** | Dell UEFI firmware |
|
|
| **Intel ME/AMD PSP** | Present. Can be disabled with me\_cleaner. |
|
|
| **Flash chip** | 2x SOIC-8, 12MiB (8+4) (96Mbit) |
|
|
|
|
|
|
```
|
|
W+: Works without vendor firmware;
|
|
N: Doesn't work;
|
|
W*: Works with vendor firmware;
|
|
U: Untested;
|
|
P+: Partially works;
|
|
P*: Partially works with vendor firmware
|
|
?: UNKNOWN AT THIS TIME
|
|
```
|
|
|
|
| ***Features*** | |
|
|
|---------------------------------------------------|----|
|
|
| **Internal flashing with original boot firmware** | W+ |
|
|
| **Display (if Intel GPU)** | W+ |
|
|
| **Display (discrete GPU, SeaBIOS payload only)** | W* |
|
|
| **Audio** | W+ |
|
|
| **RAM Init** | W+ |
|
|
|
|
| ***Payloads supported*** | |
|
|
|----------------------------|-----------|
|
|
| **GRUB (libgfxinit only)** | Works |
|
|
| **SeaBIOS** | Works |
|
|
| **SeaBIOS with GRUB** | Works |
|
|
</div>
|
|
|
|
Open source BIOS/UEFI firmware
|
|
------------------------------
|
|
|
|
This document will teach you how to install Canoeboot, on your
|
|
Dell OptiPlex 9020/7020 SFF/MT or XE2 SFF/MT desktop motherboard.
|
|
Canoeboot is a [Free Software](https://writefreesoftware.org/learn) project
|
|
that replaces proprietary BIOS/UEFI firmware.
|
|
|
|
**Unavailable in Canoeboot 25.04 or earlier. You must [compile from
|
|
source](../build/), or use a version newer than Canoeboot 25.04.**
|
|
|
|
Official information about this machine can be found here:
|
|
<https://i.dell.com/sites/doccontent/shared-content/data-sheets/en/Documents/optiplex-9020-micro-technical-spec-sheet.pdf>
|
|
|
|
Patch
|
|
-----
|
|
|
|
Mate Kukri is the author of the original coreboot port. Thanks go to Kukri.
|
|
Kukri's patch is here:
|
|
|
|
<https://review.coreboot.org/c/coreboot/+/55232/31>
|
|
|
|
This patch, at this revision (patchset 31), is what Canoeboot uses for this
|
|
port.
|
|
|
|
### QUBES: how to get it working
|
|
|
|
Qubes requires IOMMU to be turned on. Please now read the next section.
|
|
Qubes *WILL* work, if you configure Canoeboot as directed below, but otherwise
|
|
it will fail by default. This is because Canoeboot *disables the IOMMU by
|
|
default*, on this board.
|
|
|
|
### Graphics cards and IOMMU
|
|
|
|
IOMMU is buggy for some reason (we don't know why yet), when you plug in
|
|
a graphics card. The graphics card simply won't work. On some of them,
|
|
you can use the console but as soon as you start xorg/wayland, it will just b0rk.
|
|
|
|
Current Canoeboot revisions *disable IOMMU by default*, on this board. The
|
|
coreboot code for initialising IOMMU was modified by the Canoeboot project, to
|
|
make it a toggle. IOMMU works fine if you use only Intel graphics.
|
|
|
|
If you want to use IOMMU *with a graphics card*, you also can. Use this Linux
|
|
kernel option at boot:
|
|
|
|
intel_iommu=enable,igfx_off
|
|
|
|
With the above option, IOMMU is enabled *except* for the Intel GPU. However,
|
|
Canoeboot also *disables the Intel GPU* in coreboot, entirely, when a graphics
|
|
card is used. With the above option, it's possible that something like Qubes
|
|
may work, which requires an IOMMU to be turned on.
|
|
|
|
If you are using Intel graphics, and not a graphics card, you can ignore the
|
|
above, and instead fully turn on the IOMMU, without any special kernel options.
|
|
|
|
The way coreboot works is this: if vt-d is present on the CPU, it enables an
|
|
IOMMU, and only if vt-d is present. This is still the behaviour in Canoeboot,
|
|
but Canoeboot adds an additional check: if `iommu` is not set in nvram, it
|
|
defaults to on, but if it's set to disabled, then IOMMU is not initialised.
|
|
|
|
### Enable IOMMU
|
|
|
|
IOMMU is *disabled by default*, universally, on this board. You can turn it on,
|
|
by modifying the ROM image prior to flashing, or modifying it prior to
|
|
re-flashing.
|
|
|
|
On all other Haswell boards, LIbreboot enables IOMMU by default. To enable
|
|
it on the 9020, do this on your ROM:
|
|
|
|
nvramtool -C canoeboot.rom -w iommu=Enable
|
|
|
|
If you're using a graphics card, please make sure to read the above notes
|
|
about how to use IOMMU; specifically, the part that talks about Linux kernel
|
|
option `intel_iommu=enable,igfx_off`
|
|
|
|
Then flash the ROM image. You can find nvramtool
|
|
under `src/coreboot/default/util/nvramtool`. Do this in cbmk if you don't
|
|
already havse `src/coreboot/default/`:
|
|
|
|
./mk -f coreboot default
|
|
|
|
Then do this:
|
|
|
|
make -C src/coreboot/default/util/nvramtool
|
|
|
|
The binary `nvramtool` will then live in that directory. More information
|
|
available in [Canoeboot build instructions](../build/). Information about
|
|
dumping/flashing the ROM can be found
|
|
in [Canoeboot flashing instructions](../install/)
|
|
and [Canoeboot external flashing instructions](../install/spi.md).
|
|
|
|
NOTE: If IOMMU is enabled, you can still use a graphics card, but you must
|
|
pass this on the Linux cmdline paramaters: `iommu=off` - or if you need
|
|
IOMMU (e.g. for Qubes), use `intel_iommu=enable,igfx_off` instead.
|
|
|
|
NOTE2: Canoeboot uses a *static option table* on all boards that have nvram,
|
|
which is why you must use the `-C` option on your ROM, to change the static
|
|
table that is baked into it.
|
|
|
|
Here is an example of the type of errors we got when testing graphics cards
|
|
with IOMMU enabled:
|
|
|
|
<https://av.vimuser.org/error.jpg>
|
|
|
|
Make sure to configure your image accordingly.
|
|
|
|
### 7020 compatibility
|
|
|
|
7020/9020 MT each have the same motherboard. Flash the 9020 ROM from Canoeboot
|
|
on your 7020, and it will work.
|
|
|
|
Ditto 7020/9020 SFF, it's the same motherboard. However, Canoeboot provides
|
|
separate targets for MT and SFF.
|
|
|
|
### Build ROM image from source
|
|
|
|
For the xx20 MT variant (7020 MT and 9020 MT):
|
|
|
|
./mk -b coreboot dell9020mt_nri_12mb
|
|
|
|
For the xx20 SFF variant (7020 SFF and 9020 SFF):
|
|
|
|
./mk -b coreboot dell9020sff_nri_12mb
|
|
|
|
It is important that you choose the right one. The MT variant is the full
|
|
MTX tower.
|
|
|
|
Installation
|
|
------------
|
|
|
|
### Avoid overwriting Intel ME
|
|
|
|
If you're installing Canoeboot, please ensure that you don't overwrite Intel ME;
|
|
required refer to the [guide](../install/ivy_has_common.md) for that. (failure
|
|
to adhere to this advice will result in a bricked machine)
|
|
|
|
Canoeboot's build system *does not* handle Intel ME, so the ME region is blank.
|
|
This differs from Libreboot, which auto-downloads and inserts Intel ME. Canoeboot
|
|
flashes around what's already there, setting only the HAP bit.
|
|
|
|
### 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).
|
|
|
|
### 4MB CBFS
|
|
|
|
CBFS is 4MB on this board, so when external flashing, you can just break off
|
|
the upper 4MB part of the image and flash that. Keep this in mind if you're
|
|
flashing externally.
|
|
|
|
When externally flashing the lower 8MB part, you can optionally flash the
|
|
IFD and GbE regions if that is appropriate for your setup.
|
|
|
|
### Flash a ROM image (software)
|
|
|
|
**BEFORE FLASHING, and/or if migrating from Libreboot: Read the article
|
|
about [16KB GbE regions](dell_gbe.md).**
|
|
|
|
If you're already running Canoeboot, and you don't have flash protection
|
|
turned on, [internal flashing](../install/) is possible.
|
|
|
|
Internal flashing can also be done with the original Dell BIOS, if the
|
|
SERVICE\_MODE jumper near the PCIe slots is installed. Before flashing,
|
|
|
|
rmmod spi-intel-platform
|
|
|
|
needs to be run to prevent errors. Once Canoeboot is installed, the
|
|
SERVICE\_MODE jumper can be removed.
|
|
|
|
**Note: The Dell BIOS can write EFI variables to flash when shutting
|
|
down, which could corrupt the newly flashed Canoeboot ROM and render
|
|
the system unusable. To prevent this, after flashing internally from
|
|
the original Dell BIOS, remove power from the computer instead of
|
|
shutting it down normally. It's recommended to use a live USB instead
|
|
of the internal drive to prevent potential filesystem corruption.**
|
|
|
|
### Flash a ROM image (hardware)
|
|
|
|
**BEFORE FLASHING, and/or if migrating from Libreboot: Read the article
|
|
about [16KB GbE regions](dell_gbe.md).**
|
|
|
|
**REMOVE all power sources and connectors from the machine, before doing this.
|
|
This is to prevent short circuiting and power surges while flashing.**
|
|
|
|
For general information, please refer to [25xx NOR flash
|
|
instructions](../install/spi.md) - that page refers to use of socketed flash.
|
|
|
|
There are two SOIC-8 chips. You can split up your 12MB ROM image
|
|
like so:
|
|
|
|
dd if=canoeboot.rom of=4mb.rom bs=1M skip=8
|
|
dd if=canoeboot.rom of=8mb.rom bs=1M count=8
|
|
|
|
The side cover comes off easily, and you can find the flash ICs next to the RAM.
|
|
|
|
Here's the SOIC8 ICs being flashed:
|
|
|
|
<img tabindex=1 alt="SOIC8 flash IC on 9020 SFF" style="max-width:35%" src="https://av.canoeboot.org/9020/9020sff_flash1.jpg" /><span class="f"><img src="https://av.canoeboot.org/9020/9020sff_flash1.jpg" /></span>
|
|
<img tabindex=1 alt="SOIC8 flash IC on 9020 SFF" style="max-width:35%" src="https://av.canoeboot.org/9020/9020sff_flash2.jpg" /><span class="f"><img src="https://av.canoeboot.org/9020/9020sff_flash2.jpg" /></span>
|
|
|
|
Enjoy!
|