Skip to content
Bjorn Stahl edited this page Dec 26, 2017 · 7 revisions

There is growing support for running on some major BSD distributions out there. Although the porting state is still quite experimental, this page covers ongoing notes on setup and quirks.

  1. FreeBSD/DragonFlyBSD
  2. OpenBSD

FreeBSD

(Dragonfly should work/behave similarly to FreeBSD). There is no ports/ style install or prepackaged binaries, only installation options for now are manual compilation. Special note that there are some unknown stability issues with the JIT backend to lua, so be sure to compile with -DDISABLE_JIT=ON.

If there are any crashes, chances are that your syscons will be in an unrecoverable state - so best to run arcan in a loop.

Video Platforms

SDL

Should work as normal with Xorg as the output backend.

egl-dri

Check that the drivers you need for kms support has been loaded, kldload i915kms.ko or so, and that the appropriate devices (/dev/dri/card0, /dev/dri/renderD128 etc.) are available.

Although nvidia binary based EGLStreams output mode is supported for the platform build as a whole; it seems like the support in the FreeBSD binary drivers is either disabled/lacking, or some yet-to-be-determined magic is needed to activate it - some reported luck has been with adding modeset=1 to the nvidia module.

Input Platforms

Though there are some patches floating around to add support for linux evdev like input devices, there is a already a dedicated freebsd input driver that should cover keyboard and mice support (src/platform/freebsd)

The input platform also requires you to set a keymap as an environment for now, so point ARCAN_INPUT_KEYMAPS to an existing keymap in /usr/share/vt/keymaps/something.kbd.

OpenBSD

The OpenBSD port will require a very recent (6.1+, preferably current) OpenBSD, and as recent an llvm build as possible.

The VIDEO_PLATFORM=egl-dri configuration should run out of the box, though it needs to either be run as root or set SUID in order to access the /dev/drm, chowning the device nodes themselves doesn't work. This setup mimics what xenocara is doing for privilege separation, and you can verify this yourself by checking the main entry point (first call to a platform_device_open which leads to src/platform/openbsd/open.c which re-uses the xenocara privsep.c code).

Getting Xarcan to build is a bit of a hurdle due to Xenocara being part of the system base packages and thus isn't split up into packages that can easily be reused. The following configuration works (if you take the time to manually build and install the required dependencies from source, eg. dri2proto, glproto, libX11, libXext, libXfont, libpciaccess, libxtrans, pixman, x11proto, Xutil, all of which can be found on the freedesktop xorg git.

The following configure command worked on my setup:

./configure --with-xkb-bin-directory=/usr/X11R6/bin --enable-kdrive --enable-xarcan
     --disable-xorg --disable-xnest --disable-xvfb --disable-glamor --enable-glx
     --disable-int10-module --disable-config-wscons

Also note that pkg-search dir should either point to /usr/local/libdata/pkgconfig or have the corresponding arcan-shmif related pc files be moved to wherever it is set to on your system.

Glamor is currently disabled in this build since I havn't figured out how to get the accelerated shmif- backend up and running on the adaptation of drm used in OpenBSD.

There are still some issues with xkb and interpretation of keycodes coming from arcan, chances are that either there has to be some other patching done to inject into the path used by wscons, or try and rework into evdev scancodes through yet another table.

Clone this wiki locally