Máquina Virtual no SteamDeck

De forma nativa é possível executar uma máquina virtual no SteamDeck! Veja as opções e possibilidades para tal.


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. Introdução

Já abordamos como proceder e quais os resultados de quando se executa Ubuntu no SteamDeck e também o Windows no SteamDeck, além claro de como é o próprio sistema SteamOS no aparelho.

Já abordamos em nossa análise que é possível rodar máquinas virtuais, porque o hardware do SteamDeck vem com IOMMU podendo ser ativada na Firmware UEFI e há a flag KVM no processador. Então, de que maneira se dá tal procedimento?

2. Sistema

Para rodar máquina virtual no steamdeck, faça uma pequena modificação no sistema: Abra o Modo Área de Trabalho, abra o terminal Konsole e defina uma senha para o usuário padrão Deck:

$ passwd

Agora, no console ainda, execute em sequencia estes comandos para permitir que o SteamOS seja escrito, os repositórios do ArchLinux sejam verificados e os pacotes podman e fuse-overlayfs sejam instalados; por fim, será tudo tornado somente-leitura novamente, evitando problemas:

$ sudo steamos-readonly disable
$ sudo pacman-key --init
$ sudo pacman-key --populate archlinux
$ sudo pacman -Sy
$ sudo pacman -S podman
$ sudo pacman -S fuse-overlayfs
$ sudo steamos-readonly enable

Defina o SUID e GUID:

$ sudo touch /etc/subuid
$ sudo touch /etc/subgid
$ sudo chmod 664 /etc/subuid /etc/subgid
$ sudo usermod --add-subuids 10000-75535 deck
$ sudo usermod --add-subgids 10000-75535 deck

Por fim, edite o arquivo /etc/containers/storage.conf e altere as respectivas linhas abaixo conforme desejado:

[storage]
runroot = "/run/media/deck/Storage"
graphroot = "/run/media/deck/Volume"
[storage.options.overlay]
mount_program = "/usr/bin/fuse-overlayfs"
mountopt = "nodev,index=off"

As linhas runroot e graphroot podem apontar para qualquer outro diretório. No caso do SteamDeck, eu sugiro que instale em um microSD Card externo para não consumir espaço no dispositivo interno! Um sistema linux bem recheado de aplicações/recursos vai consumir mais ou menos 12 Gb.

Lembre-se: SEMPRE que o SteamOS receber um update de sistema operacional, estes passos deverão ser refeitos!

Precisamos instalar o Podman como SUDO para ter acesso privilegiado ao SteamOS e acessar dispositivos especiais como o /dev/kvm para que as máquinas virtuais executem.

E por quê não usar o Docker?

Porque o Docker tem uma natureza de criar o docker.service que fica em execução em segundo plano. O Podman executa de forma independente como uma pequena aplicação que só vai executar se você inicia-la! Assim, reduz o risco de esquecer um container em execução, entrar em um game e perder desempenho por consequência.

3. Containers

3.1 Distrobox

Daqui em diante, mesmo se o SteamOS for atualizado, tudo se manterá por estar em $HOME!

Agora configure o Distrobox conforme abordamos anteriormente nesta publicação! Utilize a opção de instalar o distrobox sem root, enviando seu binário para $HOME/.local.

E crie um container, também conforme abordamos na publicação anterior aqui! Para os fins deste tutorial utilizarei a imagem do Ubuntu 22.04 por ser relativamente leve, simples e funcionou em nossos testes. Para tal, execute:

$ distrobox create ubuntu --image docker.io/library/ubuntu:22.04 --root

Os sistemas podem ser quaisquer listados como suportados pelo Distrobox! Para todos os efeitos, vamos de Ubuntu por quê sim.

3.2 Dentro do container

Entre no container com:

$ distrobox enter --root ubuntu

Uma vez lá dentro, atualize o sistema normalmente com “sudo apt update && sudo apt upgrade” e instale os seguintes pacotes:

$ sudo apt install nano build-essential x11-xserver-utils qemu qemu-kvm qemu-system qemu-guest-agent libvirt-clients libvirt-daemon-system bridge-utils virt-manager ovmf dnsmasq

Ao término da instalação, você estará pronto para executar as máquinas virtuais que desejar!

4. Virt-Manager

Execute os serviços do libvirt. Terá que repetir esses passos SEMPRE que iniciar o container e for mexer nas máquinas virtuais!

$ sudo service dbus start
$ libvirtd -d
$ sudo libvirtd -d
$ virtlogd -d
$ sudo virtlogd -d

Por algum motivo eu precisei iniciar os serviços como usuário comum e depois como root! Apenas um ou outro não funcionou bem.

Agora crie um script bash.sh e cole o seguinte código nele:

#!/bin/bash
virt-install \
-n W10Pro \
--description "W10Pro" \
--os-variant=win10 \
--ram=4096 \
--vcpus=4 \
--disk path=/CAMINHO/DO/DISCO/w10.img,bus=virtio,size=60,format=raw \
--boot cdrom,hd \
--graphics vnc,listen=0.0.0.0 \
--cdrom /CAMINHO/DO/ISO/Windows10.iso \
--network default \
--check all=off

Aonde você deve definir o caminho para a .img de disco; Se ela não existir, será criada. E o caminho da .ISO do sistema! Se for um usuário mais avançado, poderá alterar as demais opções a seu bel prazer.

Ao iniciar esse script, você será agraciado com a seguinte tela:

Mas você me pergunta: E o virt-manager? Use-o!

Por algum bug do sistema eu não consegui inicializar nenhuma máquina virtual através da interface do virt-manager. No fim das contas, só funcionou “manualmente” conforme abordado acima.

Quais máquinas virtuais posso inicializar?

Com esse esquema, qualquer uma que seu coração pedir! KaliLinux, Ubuntu Server, ParrotSecurity OS, Manjaro, TAILS, Windows 98, 95, 11, 10, 9, 8, 7, 6… qualquer um. Basta configurar.

5. Comandos úteis

Fechou a janela mas a máquina virtual continua em execução em segundo plano? Acesse-a novamente com:

$ virt-viewer

Listar VM’s em execução:

$ virsh list --all

Desligar ou iniciar uma VM:

$ virsh shutdown VMNAME
$ virsh start VMNAME

Forçar o desligamento de uma VM (risco de corromper):

$ virsh destroy VMNAME

Remover a máquina virtual, o disco .img e a imagem .ISO:

$ virsh undefine VMNAME --remove-all-storage

6. Drivers para o Windows

Quem quiser utilizar Windows na máquina virtual, precisará instalar os drivers VirtIO que podem ser baixados na última versão estável aqui ou baixar a build mais recente aqui.

Na hora de iniciar a VM, adicione um segundo driver de CD-ROM e coloque essa mini .ISO! Se o armazenamento for virtio, carregue o driver manualmente pelo instalador do Windows para que o disco apareça para o sistema.

7. Conclusão

Com certeza ter a possibilidade de configurar máquinas virtuais no steamdeck alivia o hardware e permite que você execute qualquer outro sistema sem remover ou fazer grandes alterações no SteamOS.

O interessante é que o display touchscreen também responderá dentro das máquinas virtuais, tornando sistemas como o Windows 11 ou Ubuntu com interface Gnome Shell mais responsivos para serem usados com a tela!

#UrbanCompassPony

Deixe um comentário