Calculate Container Games
Updated 11 Avril 2021
Introduction
Calculate Container Games est un conteneur permettant d'utiliser Steam sur un [Calculate Scratch Server] (cls). Il est possible d'utiliser [Steam Link] (https://support.steampowered.com/kb_article.php?ref=8082-YJBN-9141) sur un système Android/iOS, AppleTV, Raspberry Pi, Samsung Smart TV, ou un client [Steam] (https://old.calculate-linux.org/packages/games-util/steam-launcher) pour jouer aux jeux Steam en mode streaming. Calculate Container Games permet de faire tourner Steam à une résolution d'écran non prise en charge, ou sur un système sans écran connecté, pour profiter des capacités inutilisées de votre serveur domestique.
Configuration de l'hôte
Installez le micrologiciel permettant la prise en charge complète de la carte vidéo :
emerge -a sys-kernel/linux-firmware
Spécifiez "host" comme type de système pour prendre en charge l'exécution des conteneurs dans un environnement graphique :
/var/calculate/ini.env
[container] type=host
Mettez à jour les paramètres du système et redémarrez l'ordinateur hôte :
cl-setup-system
reboot
Installation et configuration de Calculate Container Games
Préparer un conteneur LXC
Installez Calculate Container Games et configurez-le comme expliqué dans le manuel. Le nom de la distribution serait CCG et le nom du conteneur, games~.
Réglages vidéo
Configurez votre carte vidéo avec cl-setup-video
. Pour obtenir la liste des pilotes pris en charge, veuillez lancer :
Video driver: [default] Auto * [radeon] AMD Radeon (radeon) [amdgpu] AMD AMDGPU (amdgpu) [modesetting] Framebuffer device (modesetting) [intel] Intel (intel) [nouveau] Nvidia Nouveau (nouveau)
Par exemple, pour sélectionner AMDGPU~ et 1920x1080~~, il suffit de lancer :
cl-setup-video --video amdgpu -X 1920x1080
Ajouter un utilisateur
Ajoutez l'utilisateur guest~ dans le conteneur, configurez son profil et ses paramètres de connexion automatique :
lxc-attach games
useradd --groups audio,input,video guest
cl-desktop guest
cl-setup-session -A guest
Vous aurez besoin d'un accès physique ou à distance au serveur avec un moniteur pour l'installation initiale de Steam. Pour activer l'accès VNC à distance, définissez un mot de passe pour l'utilisateur guest :
su guest -c "x11vnc -storepasswd"
Enter VNC password: Verify password: Write password to /home/guest/.vnc/passwd? [y]/n y Password written to: /home/guest/.vnc/passwd
Maintenant, le serveur VNC démarrera en même temps que le serveur Xorg.
Redémarrez le conteneur :
exit
lxc-stop -r games
Configurer le pilote propriétaire Nvidia
Installation et configuration
Contrairement aux pilotes open source, le pilote Nvidia doit être installé à la fois sur l'hôte et dans le conteneur, et ce, avec la même version. Vous devez également lier le répertoire contenant le code source du noyau sur l'ordinateur hôte pour compiler le pilote dans le conteneur, et autoriser la modification des périphériques 195 char
pour que le pilote fonctionne correctement.
Installez et configurez le pilote Nvidia sur le système hôte :
emerge -a x11-drivers/nvidia-drivers
cl-setup-video --video nvidia
Redémarrez l'hôte et vérifiez si le module Nvidia est bien chargé :
nvidia_drm 53248 5 nvidia_modeset 1175552 9 nvidia_drm nvidia 33525760 374 nvidia_modeset drm_kms_helper 200704 1 nvidia_drm drm 462848 8 drm_kms_helper,nvidia_drm i2c_core 49152 4 drm_kms_helper,nvidia,i2c_piix4,drm
Ajoutez l'accès à la carte vidéo et activez le code source du noyau dans le conteneur en décommentant deux lignes dans le fichier de configuration de ce dernier :
/var/calculate/lxc/games/config
# Nvidia driver support lxc.cgroup.devices.allow = c 195:* rwm lxc.mount.entry = /usr/src usr/src none bind,create=dir
Arrêtez le conteneur, puis relancez :
lxc-stop games
lxc-start games
Installez et configurez le pilote Nvidia dans le conteneur avec une résolution de 1920x1080 :
lxc-attach games
cl-update --sync-only
emerge -a x11-drivers/nvidia-drivers
cl-setup-video --video nvidia -X 1920x1080
exit
Mise à jour
Pour mettre à jour les pilotes Nvidia ou le noyau, mettez d'abord à jour le noyau sur l'hôte, puis le pilote graphique :
cl-update --sync-only
emerge -a sys-kernel/calculate-sources x11-drivers/nvidia-drivers
Redémarrez le conteneur. Arrêtez pour activer les sources du noyau :
lxc-stop games
lxc-start games
Mettez à jour le pilote Nvidia dans le conteneur :
lxc-attach games
cl-update --sync-only
emerge -a x11-drivers/nvidia-drivers
exit
Définir une résolution spécifique
Si votre moniteur ne prend pas en charge la résolution que vous souhaitez utiliser, vous pouvez la préciser dans le fichier de configuration Xorg. Dans les exemples ci-dessous, la résolution est Full HD (1920x1080~).
Nvidia
Si vous êtes utilisateur de Nvidia, décommentez les lignes suivantes :
# Nvidia settings Section "Screen" Identifier "Monitor" Option "UseEDID" "true" Option "CustomEDID" "DFP-0:/usr/share/edid/1920x1080.bin" EndSection
Intel et AMD
Si vous êtes un utilisateur AMD ou Intel, indiquez le port auquel le moniteur est connecté :
==> /sys/class/drm/card0-DP-1/status <== connected ==> /sys/class/drm/card0-DP-2/status <== disconnected ==> /sys/class/drm/card0-HDMI-A-1/status <== disconnected ==> /sys/class/drm/card0-HDMI-A-2/status <== disconnected ==> /sys/class/drm/card0-HDMI-A-3/status <== disconnected
Décommentez les lignes suivantes, en remplaçant Monitor-DVI-I-0 par votre valeur (Monitor-DP-1 dans l'exemple ci-dessus) :
# Intel, AMDGPU settings Section "Monitor" Identifier "StandardMonitor" ModeLine "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync EndSection Section "Device" Identifier "Video" Option "Monitor-DVI-I-0" "StandardMonitor" EndSection
Configuration Xorg sans écran
Si aucun écran n'est connecté, Steam ne reconnaîtra pas les résolutions prises en charge et n'exécutera aucun jeu.
Nvidia
Avec Nvidia, vous pouvez résoudre ce problème avec les moyens logiciels
# Nvidia displayless Section "Device" Identifier "Video" Option "ConnectedMonitor" "DFP-0" EndSection
Intel et AMD
Si vous souhaitez utiliser des graphiques Intel ou AMD sans perte de performance, la seule solution possible est une solution matérielle. N'hésitez pas à suivre ces [instructions] (https://rumorscity.com/2013/12/06/how-to-create-dummy-plugs-for-your-graphics-cards/). Ou alors utilisez un émulateur HDMI, comme montré ci-dessous :
Se connecter à une session graphique dans le conteneur
Pour accéder au conteneur, vous pouvez utiliser le moniteur connecté au serveur, ou vous connecter à distance via VNC, par exemple avec Remmina. Pour vous connecter, définissez VNC comme protocole et 192.168.0.10 comme IP du conteneur :
La première fois que vous démarrez le conteneur avec le compte utilisateur configuré guest, il installera automatiquement Steam sur le réseau :
Une fois que l'installation est terminée, Steam sera lancé en mode Big Picture :
Lancer un jeu
Pour diffuser des jeux à partir du serveur, le client et le serveur doivent être sur un même réseau. S'ils ne sont pas sur un même réseau, ils peuvent être combinés en un seul via [VPN] (wireguard).
Pour connecter Android OS à une instance de Steam en cours d'exécution, utilisez le client [Steam Link] (https://store.steampowered.com/steamlink/about/) :
Malheureusement, Steam Link ne peut pas être utilisé sous Linux. À la place, vous pouvez installer Steam, vous connecter avec le même compte puis vous connecter au serveur en sélectionnant Transmission pour utiliser sa puissance de traitement :
Pour installer Steam sur votre système Calculate Linux, exécutez la commande suivante :
emerge -a games-util/steam-launcher
Dépannage
Clignotement de l'écran
Il arrive que l'écran clignote sur Steam Link si vous avez une carte graphique Nvidia. Pour corriger ce problème, quittez Steam et exécutez NVIDIA X Server Settings. Dans les paramètres OpenGL, désactivez les options Sync to VBlank et Allow Flipping :
Ouvrez ensuite Steam dans le menu.
Graphismes de mauvaise qualité
La qualité de l'image diffusée sur le réseau peut être considérablement altérée. Certes, cela peut être dû à des problèmes de performance du réseau, mais aussi à la détection automatique de la vitesse du réseau faite par Steam, ce qui peut l'amener à réduire le transfert à 3 Mbit/s. Pour résoudre ce problème, il convient de fixer une vitesse minimale. Par exemple, une vitesse de 10 à 15 Mbit/s est tout à fait suffisante pour des émissions en Full HD. Vous pouvez régler cela dans Steam Link ou dans Steam sur le serveur, en sélectionnant Paramètres -> Jeu à distance -> Paramètres client avancés -> Limite de bande passante -> 15Mbps~ :
Configurer votre contrôleur Steam
Il se peut que vous rencontriez des problèmes en essayant de connecter le contrôleur Steam à un appareil Android avec un adaptateur USB. Dans ce cas, utilisez une connexion Bluetooth. Il faudra peut-être mettre à jour le microprogramme du contrôleur. Pour plus de détails, voir [ici] (https://support.steampowered.com/kb_article.php?ref=7728-QESJ-4420&l).
Vous devrez également activer la fonction Xbox dans Steam. Pour ce faire, allez dans le menu Paramètres, puis dans les paramètres du contrôleur pour activer les paramètres personnalisés pour xbox :