Skip to content

Latest commit

 

History

History
68 lines (45 loc) · 1.89 KB

README.md

File metadata and controls

68 lines (45 loc) · 1.89 KB

beastie boot

A project written in C++ that boots FreeBSD on Linux using Kexec

Beastie is a tool for booting FreeBSD. The main value of this program is adding support for FreeBSD within UEFI bootloader's. It was originally written to add FreeBSD support to ZFS Boot Menu.

How to build

cmake -B build -S .
cmake --build build -j30

If you want the disassembler listing (for debugging the boot ROM):

cmake -B build -S . -DBEASTIE_USE_LLVM=true
cmake --build build -j30

Example usage

beastie /mnt/freebsd-root

Debugging

Debugging variables can be inspected,

beastie --debug --pretend /mnt/freebsd-root

There is a lot to write about the art of debugging. A basic starting point is to run qemu with a debug server, qemu-system-x86_64 -s -S, connect to it using gdb -iex "target remote :1234" and then set a breakpoint:

symbol-file /mnt/freebsd-root/boot/kernel/kernel
hbreak hammer_time
continue

Screenshots

Running Beastie

Running beastie

FreeBSD Booting, with Font Support

FreeBSD booting

Waiting for Root Device

FreeBSD booting

Welcome!

FreeBSD booting

Known Problems

Graphics Cards and Framebuffers are Complicated

QEMU in VGA mode seems to work well. VMWare Workstation1 also seems to work well in its native VMSVGAII mode. However beastie does not seem to work yet on real hardware. This is because of VGA issues. Work is ongoing and I hope to add more support for different systems.

  • QEMU VGA
  • VMware SVGA-II
  • Alienware M18 R2 (Xe card)

Footnotes

  1. VMware Fusion and Workstation are Now Free for All Users