diff --git a/site/docs/install/index.md b/site/docs/install/index.md index 8c01724..c32f946 100644 --- a/site/docs/install/index.md +++ b/site/docs/install/index.md @@ -12,11 +12,47 @@ this notice. We will have more context at a future date.** This section relates to installing libreboot on supported targets. +FLASH ERRORS (and workarounds) +======================= + +Right out of the gate, some users may experience errors with flashrom when +using the internal programmer. They are: + +/dev/mem access error +--------------------- + NOTE: if running `flashrom -p internal` for software based flashing, and you get an error related to `/dev/mem` access, you should reboot with `iomem=relaxed` kernel parameter before running flashrom, or use a kernel that has `CONFIG_STRICT_DEVMEM` not enabled. +ERROR: Could not get I/O privileges +------------------------------------ + +Error message: `ERROR: Could not get I/O privileges (Function not implemented)` + +If you get this while running `flashrom -p internal -w filename.rom` (or any +internal flash operation), note: flashrom heavily uses ioperm/iopl functions +to operate the internal flasher, at least on x86 machines. + +See: + +Yeah, just enable `CONFIG_X86_IOPL_IOPERM` in your Linux kernel. This is +a *build-time* option, so you must re-compile your kernel, or find a build that +has this option enabled (IOPL emulation). + +Here's a handy-dandy guide for building a kernel from source: + + +**BSD users:** On OpenBSD and NetBSD if you get similar errors, note that it +should work here, but you need to boot with `kern.securelevel=-1`. +See: [NetBSD securelevel manual](https://wiki.netbsd.org/tutorials/kernel_secure_levels/) +and [OpenBSD securelevel manpage](https://man.openbsd.org/securelevel). + +Otherwise, if you get such errors, it may just be that you're not root. You +must run flashrom as root, at least to use the internal flasher (using external +USB flashing dongles doesn't normally require root). + SAFETY WARNING! ====================================================================