Files
vii b60c43e8f0 chore(merge): merge upstream komaruworld/mocktail main
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.
2026-10-01 21:41:43 -05:00
..

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.