Confused on Steam Play and Proton? Be sure to check out our guide.
HOWTO: SteamOS 3 on a VM
mr-victory Mar 5, 2022
SteamOS 3 is not as glorious as I expected but if you want to see it, here is how:

Preparation:
Download SteamOS 3 from here: link
It contains a single image file. Extract it. And backup the extracted image just in case, it keeps your changes and it seems to break very easily. Even clicking the "Steam" shortcut causes an "out of space" error at /home and breaks the image.
Install QEMU and edk2-ovmf. edk2-ovmf is UEFI firmware and SteamOS 3 boots only in UEFI.
Create an image file. I use
 
qemu-img create -f qcow2 /path/to/image.qcow2 64G

so I have a small image file that can grow up to 64 GB. With SteamOS 3 installed, my image file is currently at 15.7 GiB. Image creation might require root privileges. You may need to chown the image. Or probably I am doing something wrong regarding permissions

Boot & Install:
1. Boot up the image.
 
qemu-system-x86_64 -drive file=~/Downloads/steamdeck-recovery-1.img,format=raw,if=virtio -accel kvm -m 8G -bios /usr/share/ovmf/x64/OVMF.fd -smp cores=6,threads=2 -drive file=/path/to/image.qcow2,format=qcow2,if=virtio

* Using -cdrom won't work. I use -drive instead of -cdrom. if=virtio should speed up disk I/O operations a bit.
* -accel kvm enables HW acceleration for the VM. If it does not work, you may need to enable it in your firmware interface. Do not try to launch VM without KVM.
* -m 8G specifies the memory amount. 2G and above should work.
* -bios should point to edk2-ovmf firmware. This is the path on Arch (and derivates), change if necessary.
* -smp cores=x,threads=y defines number of cores and threads per core.
* the second -drive points to the qcow2 image you created.
* DO NOT USE SUDO.

The screen will go black for a while, you should eventually reach Plasma.

2. Set keyboard layout if neceaasry
You can do this from System Settings. Go to Input Devices > Keyboard > Layouts and click Add. Remove the default layout.i Apply changes.

3. Modify reimaging script
 
sudo fdisk -l

should show you a list of disks. Remember the device file of your disk. Open file ~/tools/repair_device.sh and change DISK and DISK_SUFFIX accordingly. They are near the beginning of the file. In my case I was
installing to /dev/vdb so DISK is /dev/vdb for me and DISK_SUFFIX is blank.

4. Install SteamOS

 
sh ~/tools/repair_reimage.sh

and wait as SteamOS dd's its partitions to your image file. Choose to stay in Recovery environment.

5. Chroot and modify

Replace /path/to/disk with the disk you installed SteamOS to.
sudo mount /path/to/disk4 (the 4 is not a typo) /mnt
sudo btrfs property set / ro false
sudo umount /mnt
sudo mount /path/to/disk5 /mnt
sudo btrfs property set / ro false
sudo umount /mnt
sudo steamos-chroot --disk /path/to/disk --partset A -- /bin/bash
sudo mount -o remount,rw /path/to/disk4 (the 4 is not a typo) /
sudo steamos-session-select plasma-persistent
* edit /etc/default/grub as noted below *
sudo update-grub
exit
sudo steamos-chroot --disk /path/to/disk --partset B -- /bin/bash
sudo mount -o remount,rw /path/to/disk5 /
sudo steamos-session-select plasma-persistent
* edit /etc/default/grub as noted below *
sudo update-grub
exit

The steamos-session-select command will make SteamOS start Plasma instead of gamescope. Replace with plasma-wayland-persistent if you wish.

Open /etc/default/grub (in both A and B) and remove the option fbcon:rotate=1 in GRUB_CMDLINELINUX_DEFAULT. Or... your ttys and splash screen will be rotated.

6. Restart
Power off the VM, remove  
-drive file=~/Downloads/steamdeck-recovery-1.img,format=raw,if=virtio

and restart the VM. You will see a black screen (again). Let it boot. The installed OS is terribly slow, I hope this is because I have my image file on my HDD.
I do not have a discrete AMD GPU and I don't want to mess up with the OS bare metal so no gamescope for me.

Feel free to write up your experiences.
This topic has an answer marked - jump to answer.
furaxhornyx Mar 6, 2022
Thank you for the detailed explanations, however I am stuck on

Open /etc/default/grub (in both A and B) and remove the option fbcon:rotate=1 in GRUB_CMDLINELINUX_DEFAULT. Or... your ttys and splash screen will be rotated.

When I open /etc/default/grub (with nano), there is an alert saying that the file is read-only, despite following all the previous step... any idea ?
mr-victory Mar 7, 2022
AFAIK inablity to modify that file can be caused by one of these:
1. Filesystem is mounted read-only. You can see mount options with  
mount

command. Look for ro (read-only) and rw (read-write)
2. Filesystem is read-only. If  
btrfs property get / ro

tells ro=true then filesystem is set to not be modified.

Also try  
steamos-readonly disable 

in chroot if nothing works.
furaxhornyx Mar 8, 2022
I tried again from scratch, following every instructions as I did before, and double-checking read-only state every time, and this time it worked

Boot time on an SSD is around 10-15 seconds, a bit slower than my other VMs. Also, I put 4 cores / 8Gb of ram, where most of my other VMs run on 2 cores / 4Gb of ram (but they don't run KDE, not sure if it can have this much impact on boot time ?)
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register