The LinuxBoot project allows you to replace your server's firmware with Linux.
Make sure you have installed the dependencies uuid-dev
, nasm
, and
acpica-tools
(or equivalent for your distribution).
You need to provide:
CONFIG_EFI_BDS
option enabledinitrd.cpio
file with enough tools to kexec
the rest of the system.For the initrd
, the Heads firmware or
u-root systems work well.
Both will build minimal runtimes that can fit into the few megabytes
of space available.
For everything except qemu, you'll need to copy the vendor ROM dump
to boards/$(BOARD)/$(BOARD).rom
. Due to copyright restrictions, we can't
bundle the ROM images in this tree and you must supply your own ROM from
your own machine. qemu can built its own ROM from the edk2
tree,
so this is not necessary.
Configure the build system:
cp path/to/s2600wf.rom boards/s2600wf/
make \
BOARD=s2600wf \
KERNEL=../path/to/bzImage \
INITRD=../path/to/initrd.cpio.xz \
config
make
This will write the values into the .config
file so that you don't
need to specify them each time. If all goes well you will end up with
a file in build/$(BOARD)/linuxboot.rom
that can be flashed to your machine.
It will take a while since it also clones the LinuxBoot patched version
of tianocore/edk2
UDK2018 branch
and build it.
If you want to experiment with LinuxBoot you can run it under qemu. No ROM file is necessary, although you still need a Heads or NERF runtime kernel/initrd pair. You can launch the emulator by running:
make run
This will use your current terminal as the serial console, which
will likely mess with the settings. After killing qemu by closing
the window you will need to run stty sane
to restore the terminal
settings (echo is likely turned off, so you'll have to type this in
the blind).
Copy Makefile.board
from one of the other mainboards and edit it to match
your new board's ROM layout. The qemu one is not the best example since it has
to match the complex layout of OVMF; most real mainboards are not this messy.
You'll need to figure out which FVs have to be preserved, how much space can be recovered from the ME region, etc. The per-board makefile needs to set the following variables:
FVS
: an ordered list of IFD, firmware volumes and paddinglinuxboot-size
: the final size of the ROM image in bytes (we should verify this against the real ROM instead)此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型