Keep both the CallProtocol and AccountProtocol bridges. Keep our pointer hold and catalog validation. Re-apply our JNI local-frame counting, singleton handles, class handle cache, handle-table report and thread detach release on upstream's split jnivm files.
FreeBSD Linuxulator
FreeBSD Linuxulator support is experimental. I tested it on FreeBSD 15.1-RELEASE-p2 with a Fedora 44 x86_64 userspace.
FreeBSD returns the wrong filesystem type for /proc. Roblox treats this as a
broken install and disconnects with Error 304 after about a minute.
linuxulator.patch makes Linuxulator return the same
value as Linux.
Patch FreeBSD
Use a clean Git checkout that exactly matches the running FreeBSD kernel. The
tested source revision is aadd58dddcbc78f4d5594827b46b5633552b15ce. Run
the following commands as root.
fetch -o /root/linuxulator.patch https://raw.githubusercontent.com/CoderDayton/nightcap/main/packaging/freebsd/linuxulator.patch
cd /usr/src
git apply /root/linuxulator.patch
make -j2 kernel-toolchain
make -j2 buildkernel KERNCONF=GENERIC MODULES_OVERRIDE=linux64
Install only the rebuilt module. Keep a backup and reboot instead of unloading a live Linuxulator module.
cp -p /boot/kernel/linux64.ko /boot/kernel/linux64.ko.mocktail-backup
install -o root -g wheel -m 0444 /usr/obj/usr/src/amd64.amd64/sys/GENERIC/modules/usr/src/sys/modules/linux64/linux64.ko /boot/kernel/linux64.ko.mocktail-new
mv /boot/kernel/linux64.ko.mocktail-new /boot/kernel/linux64.ko
kldxref /boot/kernel
reboot
After reboot, verify the result from the Fedora userspace. It must print
9fa0.
chroot /compat/linux stat -f -c %t /proc
Run Nightcap
You can simply run the Nightcap AppImage from the latest release inside the Fedora userspace.
Audio
Install the ALSA OSS plugin inside the Fedora userspace.
dnf install -y alsa-lib alsa-plugins-oss
On the FreeBSD host, use cat /dev/sndstat to find the correct audio device.
The number is system-specific: it may be /dev/dsp0, /dev/dsp1,
/dev/dsp2, or another device. Replace /dev/dsp3 below with yours.
cat << 'EOF' > /etc/asound.conf
pcm.!default {
type oss
device /dev/dsp3
}
ctl.!default {
type oss
device /dev/dsp3
}
EOF
Launch Nightcap with the ALSA audio driver.
SDL_AUDIO_DRIVER=alsa ./Nightcap-x86_64.AppImage
Nightcap cannot override this check because Roblox reads /proc directly. The
Linuxulator patch fixes the value before Roblox sees it.