Skip to content
Bjorn Stahl edited this page May 16, 2018 · 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. It tries to grab keyboard layout and so on from the current active wscons.

Depending on your build specifics, you might want to go through the process of cloning the special gits (external/git/clone.sh) and build with -DSTATIC_OPENAL=ON as well as disabling the JIT, -DDISABLE_JIT=ON to avoid some linking issues.

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 /dev/drm and others, chowning the device nodes themselves doesn't work. This setup is similar to 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/posix/psep_open.c)

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.

./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, The kernel port seems to be missing support for render nodes and dma-buffers.