web-dev-qa-db-fra.com

Comment puis-je configurer multiseat avec une seule carte graphique physique?

J'ai un ordinateur Ubuntu sous 16.04, et je n'ai qu'une seule carte graphique.

Specs

Mon frère et moi nous disputons constamment pour savoir qui peut l'utiliser, alors j'essaie de faire une faveur à tout le monde et d'installer des multiseat.

  • Je serais seat0, avec le port VGA, une souris, un clavier et les prises casque à l'arrière de l'ordinateur.

  • Il serait seat1, avec le port DVI-D, une souris, un clavier et les prises casque sur le devant de l'ordinateur.

  • Nous partagerions le dongle Wi-Fi pour se connecter à Internet.

Je ne sais vraiment pas comment faire. Quels fichiers est-ce que je crée, où vont-ils et qu'est-ce que je les mets? Une réponse bien formatée (pas un guide en ligne) serait agréable.

La sortie de lspci:

00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)
00:1c.1 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #2 (rev d5)
00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation C220 Series Chipset Family H81 Express LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
01:00.0 PCI bridge: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
01:00.1 System peripheral: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
02:01.0 PCI bridge: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
02:05.0 PCI bridge: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
02:07.0 PCI bridge: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
02:09.0 PCI bridge: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
03:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
04:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
05:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
06:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
08:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
09:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)

La sortie de ls /dev/input/by-path/:

pci-0000:00:14.0-usb-0:1:1.2-event-kbd
pci-0000:00:14.0-usb-0:2:1.0-event-kbd
pci-0000:00:14.0-usb-0:7:1.0-event-mouse
pci-0000:00:14.0-usb-0:1:1.2-event-mouse
pci-0000:00:14.0-usb-0:3.1:1.0-event-mouse
pci-0000:00:14.0-usb-0:7:1.0-mouse
pci-0000:00:14.0-usb-0:1:1.2-mouse
pci-0000:00:14.0-usb-0:3.1:1.0-mouse
platform-eeepc-wmi-event
13
Soren

Donc, ceci est un vieux guide, mais cela peut toujours fonctionner. MultiSeatOneCard .

Quelques notes avant de commencer à apporter des instructions sur:

  • Toute la configuration gdm qu'il vous demande de faire peut même ne pas être nécessaire. Si vous avez GNOME, vous avez déjà gdm (et une version beaucoup plus récente). Unity utilise lightdm, ce qui semble ne pas fonctionner. Vous devez installer gdm et l’utiliser pour essayer ce guide.

  • Juste un autre avertissement: OLD GUIDE. Cela pourrait ne pas fonctionner, cela pourrait casser Ubuntu, cela pourrait faire exploser votre machine (pas vraiment bien sûr). S'il vous plaît soyez prudent et de retour des trucs.

Maintenant pour le guide

Le wiki suggère de désactiver l'écran de démarrage avec les éléments suivants. Je ne sais pas si la procédure fonctionne toujours ou non.

Beaucoup de choses peuvent mal se passer avec cette configuration et l’écran de démarrage sophistiqué lors du démarrage n’aide en rien. Afin de le désactiver (peut-être temporairement), éditez le fichier/etc/default/grub et modifiez l'affectation GRUB_CMDLINE_LINUX_DEFAULT de quiet splash à nomodeset noplymouth. Ensuite, lancez Sudo update-grub.

La partie suivante, à propos de "bureau étendu" peut probablement aussi être ignorée. Il suffit de brancher les deux moniteurs et de les régler en "mode étendu" dans les paramètres de votre moniteur.

Maintenant, pour certaines configurations.

Tout d’abord, recherchez dans /etc/gdm/gdm.conf, dans la section [serveurs] une ligne commençant par 0 = ... (sans le # au début de la ligne). Mettez un # devant.

Cela devrait être possible sans trop de problèmes.

Puis éditez /etc/gdm/gdm.conf-custom. Recherchez la section [security] et ajoutez une ligne PamStack = gdm-2.20.

C'est là que vous pourriez avoir un problème. Au lieu de 2.20, vous devrez peut-être essayer la version 3.18 (il s’agit de la version 16.04).

recherchez la section [xdmcp] et ajoutez une ligne Enable = true.

Cela ne devrait causer aucun problème.

XDMCP n’est pas un protocole particulièrement sécurisé, c’est donc une bonne idée de faire en sorte que gdm refuse les connexions d’autres ordinateurs. Ajoutez une ligne gdm: 127. * dans /etc/hosts.allow et une ligne gdm: ALL dans /etc/hosts.deny.

Ceci, vous pouvez choisir de ne pas faire. Si vous vous souciez de la sécurité, je vous suggère de le faire, mais sinon, je pense que vous pouvez le laisser.

Maintenant, redémarrez gdm en redémarrant (probablement le moyen le plus simple). Si vous voyez l'écran de connexion GDM, il se passe quelque chose. Vérifiez par-dessus le guide d'origine et ajustez certains paramètres.

Si vous ne disposez pas d'un écran de connexion, accédez à un TTY et exécutez X -query 127.0.0.1. Si GDM se présente, tuez-le (revenez au téléscripteur et tuez-le là-bas).

Créez un nouvel utilisateur appelé monitor:

addgroup --gid 983 monitor
adduser --uid 983 --gid 983 monitor

Créez un fichier (le guide n'a pas de spécification de nom) dans /etc/udev/rules.d/my.rules et insérez ce qui suit:

SUBSYSTEM=="input", OWNER="monitor", GROUP="monitor"

Quelques installations de paquets:

apt-get install x11-utils xserver-xephyr

Nous devons séparer les moniteurs avec des alias:

ln -s xmessage /usr/bin/xmessage0
ln -s xmessage /usr/bin/xmessage1

Connectez-vous à l'utilisateur monitor dans le TTY et créez ~/.xsession.

Mettez ceci à l'intérieur:

runscreen () {
    # $1 = number
    # $2 = geometry
    local xpid winid k
    while :; do
        xmessage$1 -geometry $2 "Window $1" &
        xpid=$!
        k=10
        while \
            winid=`xwininfo -name xmessage$1|grep 'Window id'|cut -d' ' -f4` \
            && [ $k -gt 0 -a ! "$winid" ]
        do
            sleep 1
            k=$(($k - 1))
        done
        if [ "$winid" ]; then
            Xephyr :1$1 -parent "$winid" -dpms -keybd "evdev,,device=$3,$xkb" -mouse "evdev,,device=$4" -query 127.0.0.1 
        fi
        kill $xpid
        sleep 3
        kill -9 $xpid
    done 
}

# For some reason I was unable to set the following in xorg.conf
# We need to turn off power management of the main X server because it doesn't
# see either of the keyboards and the mice so it will enter power-saving mode
# after 10 minutes
xset s off
xset dpms 0 0 0
xset -dpms

xkb='xkbrules=xorg,xkbmodel=evdev,xkblayout=us'

# PS/2 keyboard and mouse
kbd1=`ls /dev/input/by-path/platform-*-event-kbd`
mouse1=`ls /dev/input/by-path/platform-*-event-mouse`

# USB keyboard and mouse
kbd2=`ls /dev/input/by-path/pci-*-event-kbd`
mouse2=`ls /dev/input/by-path/pci-*-event-mouse`

runscreen 1 1280x1024+1920+0 "$kbd2" "$mouse2" &
runscreen 0 1920x1080+0+0 "$kbd1" "$mouse1"

N'oubliez pas de l'éditer pour refléter vos résolutions.

Exécutez startx en tant qu'utilisateur monitor et voyez si cela fonctionne.

Cela doit être fait pour démarrer au démarrage si cela fonctionne, ajoutez donc ceci à la fin de ~/.profile (pour le compte du moniteur):

if [ "`tty`" = /dev/tty6 ]; then
    exec startx
fi

Tuez l'interface graphique et passez à TTY6. Connectez-vous en tant que monitor et il devrait démarrer.

Si cela fonctionne, éditez le fichier /etc/init/tty6.conf en tant que racine et remplacez la ligne commençant par /sbin/getty par

exec /bin/login -f monitor tty6 </dev/tty6 >/dev/tty6 2>&1

Si cela fonctionne, mais que vous souhaitez également séparer l'audio, le guide MultiSeatX lié a des options pour vous.

S'il vous plaît rappelez-vous que cela peut ne pas fonctionner. Je l'ai tapé assez rapidement et j'espère le modifier pour qu'il soit un peu plus clair si nécessaire. J'ai adapté des parties du guide pour être plus à jour et augmenter les chances de succès.

Bonne chance!

5
TheWanderer

Cela semble très cool, alors j'ai parcouru et trouvé cette entrée de wiki comme lié à cette entrée de wikipedia . Il utilise essentiellement un outil appelé xephyr pour organiser les entrées/sorties.

L'entrée est assez ancienne et seulement mise à jour pour Ubuntu 12.04, mais xephyr est toujours dans le dépôt standard (juste testé sa présence sur mon ordinateur). Les modifications de configuration semblent complexes, mais assez simples, cela pourrait toujours fonctionner. Here est un blog datant de 2014, qui donne de l'espoir.

S'il vous plaît laissez-nous savoir comment vous vous en sortez!

2
Jeroen

Je ne pense pas que cela soit possible car vous ne pouvez pas avoir deux ensembles de périphériques d'entrée. Il est possible qu'un outil comme la synergie puisse aider ici, mais ce sera compliqué.

Vous pouvez vous procurer une autre machine et l'utiliser comme terminal X. Il vous suffira d'être assez rapide pour mettre à jour l'écran. Demandez donc à vos amis leur vieux PC. Si vous configurez votre machine d'origine pour exécuter XDMCP, cela permettra à l'autre machine de se connecter à son propre bureau.

Il est prévu que cette fonctionnalité sera supprimée d'ubuntu lorsque X windows sera remplacée par Mir, ce sera probablement à peu près au moment de la publication de la prochaine version de LTS.

Voici le guide ubuntu sur XDMCP - https://wiki.ubuntu.com/xdmcp

1
Amias