Why is there a second one?
Well the original was outdated, and a lot of the things said in it, I no longer agree with, I believe it deserves a rewrite entirely, to make it more friendly for people to read and understand. Everything in this version will be sourced, and formatted nicely. I will be keeping the original for you to look at and laugh at.
What will we discuss?
We will discuss the following:
- Brief history of Roblox on Linux
- Will Roblox support Linux?
- How to run Roblox on Linux today (may be out of date in the future)
- How to run Roblox on LInux in the future (Qemu/KVM Single GPU Passthrough)
So let’s get started
Brief History of Roblox on Linux
Pre-2012
There’s not many reliable sources for pre-2012, at least from what I looked at
2012
On July 28th 2012, Roblox CEO David Baszucki released a QnA blog post found here where a user by the name of Oliver asked if Roblox would be supporting Roblox on Linux, David Baszucki replied with the following:
“We’re probably 97% of the way to a Linux port, now that we’ve all the work necessary to port ROBLOX to OSX – which, as you probably know, is based on the UNIX kernel. I think the problem that we would likely run into on Linux is poor video driver support. I’ve heard horror stories from other developers. However, as Linux becomes more popular, I expect this hurdle to disappear.”
2013
On December 10th 2013 Roblox released their Feedback Loop blog post, found here a user by the name of osd3001 asked the following:
Is it possible for ROBLOX to become available on Linux? I know that Mac OS X is UNIX-based, so why couldn’t you do it for Linux? John Shedletsky replied with this:
John Shedletsky replied with the following:
We could spend six months porting ROBLOX to Linux, or we could deliver other highly requested features. If we’re going to be porting ROBLOX to another platform, Android is definitely next in line. Consoles are a close second–maybe that would involve a Linux port, particularly if the Steam OS takes off. We’ll see.
2015 - 2021
in July 2015, Roblox has broken unofficial wine support, and Roblox no longer worked under Linux for years until 2021. Here’s a post linking to the time period where Roblox broke
2021
On June 11 2021, User ImSlappy826 created a patch for wine that allowed Roblox to run on Linux for the first time in years. This patch has this function: “ZwFilterToken”, BrinkerV ported this patch to Arch Linux & robigan ported it to Debian.
2022
On January 18th 2022, Wine officially includes the patch in their stable 7.0 release
2023
Roblox began to roll out it’s Hyperion Anticheat, breaking Roblox support on Linux
2024
In March 2024, Roblox started to see an increase in cheaters using Wine, and have blocked Wine from playing Roblox again.
In August 2024, VinegarHQ made a closed source software called Sober, which uses the Android version of Roblox to run under Linux.
Will roblox support Linux?
Quick answer
No. QnA Answers from YouTube here (skip to 1:08:00)
Long answer
Still no. But this time, not as strong of a no. While yes right now, there’s no real shot that Roblox would port to Linux, I do believe that in several years time, as Linux grows in marketshare, Roblox will change their minds.
Let’s start with an example, Roblox announced their port to Mac on January 2011, and released it on October 2011, In January 2011, MacOS had a marketshare of 6.56% growing at rapid rate, While LInux only had 0.74% and stagnant. It is only recently Linux started growing at a similar rate as MacOS was in 2009 to 2010.
Around the time of RDC 2020 QnA, Linux still looked like it wouldn’t reach 2% in years. fast forward a year and it’s at 2.3%, fast forward a year after that, it’s at 3.12% fast forward a year later and it’s at 4.44% in the present. source, and I am sure Roblox took note of this sudden rapid growth.
Comparing the Mac port for a second, Roblox officially ported Roblox to Mac on October 2011, it had 7.18% of the marketshare, which is a 2.74% difference when comparing to Linux today. There’s a very good chance they are already porting Roblox to Linux. (hugely speculative), I am not even mentioning that porting a game the size of Roblox takes ages, years in fact, and it’s very expensive. I am looking at it from an investment standpoint with reference to the Mac port.
We can’t even go around without talking about the Meta Quest port, as Linux already surpassed the Quest
-Meta Quest sold ~ 20,000,000 units (note: may be innacurate)
-Linux userbase ~ 74,200,000 users (note: may be innacurate)
The way we calculate this is by taking the total PC userbase and times that by Linux’s marketshare (4.44%)
Challenges
All that is fine and all but what kind of challenges will Roblox face should a Linux port be a thing?
-
Well Roblox is going to face a lot of API issues
things work differently on Linux, you have to go around and painstakingly get alternatives and dependencies that are built into Windows, Mac, Android ect. It isn’t impossible, just really really difficult. -
Roblox may, or will lose in profit.
Linux may be a growing market but Roblox is still a business in a capitalist society. A for-profit company, Roblox absolutely sees zero profit in Linux unless Linux starts to go absolutely ballistic in marketshare -
They can do literally anything else
Why spend potentially years on a port for a platform you aren’t even sure is worth your time when you can spend that manpower developing features people want to use - Just accept it’s not happening.
Is a port likely now? No. Is it likely in the distant future? Maybe.
How to run Roblox on Linux today
Run Roblox on Linux today (may be out of date in the future)
If you want to play Roblox today (writting this on 28th August 2024) We are going to use Sober, Which has been made by VinegarHQ. Note that Sober is closed source, if you don’t feel comfortable with that, then it’s fine I guess.
You can download Sober by following these steps:
- Ensure that Flatpak is installed on your system. You can setup flatpak here.https://sober.vinegarhq.org/
- After that, run this command:
flatpak install --user https://sober.vinegarhq.org/sober.flatpakref
- Reboot, and launch Sober, and follow the steps it shows you.
Note that Sober uses an x86_64 APK version of Roblox to run Roblox, which you can get here
!!!(Please note that this website may be untrusted, if you feel uncomfortable using it, I reccomend you get your own Android x86_64 device, or use virtual machine with Android x86 to get the file. I used this website and I haven’t gotten hacked but your mileage may wary.)!!!
-You then want to get the universal APK file listed with the “universal” architecture. After you download it, you can select it in Sober.
If Sober pops up with a error message complaining about how it can’t use a particular version, use the version before that using the same steps shown above.
After this the Android app of Roblox should show up, and you can start playing Roblox.
How to run Roblox in the future
VFIO Single GPU-Passthrough Guide
Note that not all hardware will support what we are going to do here, but the principle here is simple. We are going to pass a graphics card onto a virtual machine that way we can play Roblox.
Requirements:
- Your PC must support IOMMU
- Your PC must have Intel VT-x & Intel VT-d or NX mode SVM mode enabled in BIOS
- UEFI
For NVIDIA GPUs
You may require your GPUs BIOS to put it under a virtualized environment, I am not using an NVIDIA GPU, and I am not too familiar with the process. To obtain your GPU’s BIOS, check this tutorial to see how you can get the files.
Grub Config
Edit /etc/default/grub by the following command
sudo nano /etc/default/grub
and add the following to GRUB_CMDLINE_LINUX_DEFAULT:
On Intel systems add the following:
- intel_iommu=on
- iommu=pt
On AMD systems add the following
- amd_iommu=on
- iommu=pt
After this run the following:
sudo grub-mkconfig
and reboot your system after the command is done
To verify if IOMMU is enabled, paste the following into the terminal:
dmesg | grep IOMMU
The output should pop out with Intel-IOMMU: enabled
for Intel CPUs or AMD-Vi: AMD IOMMUv2 loaded and initialized
for AMD CPUs
Now that you have enabled IOMMU in grub, we can move on to actually installing packages for virtualization
Gentoo
sudo emerge -av qemu virt-manager libvirt ebtables dnsmasq
Arch Linux / arch based
sudo pacman -S qemu libvirt edk2-ovmf virt-manager dnsmasq ebtables
Fedora /Fedora-based
sudo dnf install @virtualization
Debian /debian based
sudo apt install qemu-kvm qemu-utils libvirt-daemon-system libvirt-clients bridge-utils virt-manager ovmf
After installing said packages, you should enable the libvirtd service.
SystemD (used on majority distros)
systemctl enable --now libvirtd
OpenRC
virsh net-start default
virsh net-autostart default
Now it is time to setup your virtual machine
Type in
usermod -aG kvm,input,libvirt username
Download the following:
VirtIO drivers ISO
Windows 11 ISO
Now before you instantly go and try to put your GPU into your VM, first let’s actually setup the VM.
After your ISO’s are downloaded you want to launch virt-manager and create a new virtual machine with your Windows 11 ISO, and name it “win11”
Follow the steps the prompt will give you until you see a button that says Customize before install. Press it.
In Overview change your Chipset to Q35 and Firmware to UEFI
In CPUs, set your CPU Model to be host-passthrough, and change the CPU Topology to whatever you think is best with your system.
Change the SATA disk section to VirtIO for high speed performance
In NIC Section, change Device model to virtio
Add hardware → Disk → CDROM, and put your virtIO iso in
Now begin installation
Windows will not be able to detect your disk, so press Load Driver, and select virtio-iso/amd64/win11 when prompted.
After this, you will be able to see your drive, and install Windows on that drive.
After Windows is installed, you can remove the VirtIO drive, and shut the VM down for now.
Now it is time for the fun part.
Edit your virtual machine and remove the following:
Channel Spice, Display Spice, Video QXL, Sound ich* along with other stuff you will never need.
Now click Add Hardware, Select PCI Devices, and choose your GPU.
Note: There may be multiple PCI GPUs under the same GPU, add all of them.
For NVIDIA users: edit the XML section of the file and add your rom below with this code:
<rom file='/path/to/your/patched.rom'/>
Do NOT start the virtual machine yet.
It’s time to add your libvirt hooks.
clone this repo:
git clone https://gitlab.com/risingprismtv/single-gpu-passthrough.git
cd single-gpu-passthrough
edit hooks/qemu, locate & change “win10” to “win11”
Make these files executable and run it via sudo
sudo chmod +x install_hooks.sh
sudo ./install_hooks.sh
Now verify that these hooks are installed properly by locating these files
/etc/systemd/system/libvirt-nosleep@.service
/usr/local/bin/vfio-startup
/usr/local/bin/vfio-teardown
/etc/libvirt/hooks/qemu
The location of logs, if needed
win11.log → /var/log/libvirt/qemu
custom_hooks.log → /var/log/libvirt/
libvirtd.log → /var/log/libvirt/
After you made your libvirt hooks, time to edit your xml file (which is in the virtual machine)
Scroll all the way down the xml file, and delete the following:
<graphics type="spice" autoport="yes">
<listen type="address"/>
<gl enable="no"/>
</graphics>
<audio id="1" type="none"/>
<video>
<model type="bochs" vram="16384" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
</video>
<channel type="spicevmc">
<target type="virtio" name="com.redhat.spice.0"/>
<address type="virtio-serial" controller="0" bus="0" port="1"/>
</channel>
At the very bottom add the following:
</qemu:commandline>
qemu:override
<qemu:device alias=‘hostdev0’>
qemu:frontend
<qemu:property name=‘x-pci-sub-vendor-id’ type=‘unsigned’ value=‘4136’/>
<qemu:property name=‘x-pci-sub-device-id’ type=‘unsigned’ value=‘1909’/>
</qemu:frontend>
</qemu:device>
</qemu:override>
Now scroll up and find < features >
place missing items in
<features>
<acpi/>
<apic/>
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
<vendor_id state='on' value='123456789123'/>
</hyperv>
<kvm>
<hidden state='on'/>
</kvm>
<vmport state='off'/>
<ioapic driver='kvm'/>
For mobile cards, it is neccesary to simulate a battery. change the first line to this:
<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm">
After this, you now are able to test your virtual machine with your GPU for the first time.
There should be a black screen for about 15 seconds until you see yourself on your very low res desktop.
You can now install your GPU drivers, install Roblox, whatever and you should run Roblox with only about 10-20% less FPS than running natively.
Sources
Sources
I want to end off with every single source used in this post, mostly for ease of access, but also show sources that I did not link in any hyperlink
-
Roblox Brief History
1 - Roblox on Linux Wiki -
Official Roblox Support?
1 - Statcounter (for Marketshare data)
2 - Mixed News (for Quest unit sold numbers, may be innacurate)
3 - Desktop usercounts (may be innacurate) -
How to play Roblox on Linux Today
1 - VinegarHQ
2 - Sober -
How to play Roblox in the future
1 - Risingprism’s Single GPU Passthrough Guide
2 - QaidVoid’s Single GPU Passthrough Guide
3 - Arch Linux - PCI passthrough via OVMF
4 - Coodos Single GPU passthrough guide
Thank you!
Thank you for reading & learning about this topic, I spent several days on this new updated guide (and a few months of procrastinating), I hope I got you to learn something new.
-Was this post helpful?
- Yes
- Somewhat yes
- 50/50
- Somewhat not
- No
0 voters
Please correct any incorrect statements here and I will edit this to fix the incorrect statements.