Rename the desktop entry, metainfo, icons, Flatpak manifest, and SDL app identity so Nightcap installs side by side with upstream. Build a signed Flatpak on v* tags, publish the OSTree repo and landing page to GitHub Pages, and attach the bundle to the release. Release creation tolerates the AppImage and Flatpak workflows racing on the same tag.
2.4 KiB
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.