finestra mobile - come eseguire x desktop in un contenitore?


10

Sto cercando di configurare la mia macchina Linux per eseguire più SO guest, uno dei quali è una macchina virtuale Windows e un altro un contenitore Linux. L'obiettivo qui è impedirmi di rovinare il sistema host, pur essendo libero di utilizzare il sistema operativo di base e giocare con l'hardware host. Alla fine, oltre a far funzionare il mio desktop nel container, spero di eseguire simulazioni con accelerazione grafica, ecc. Dato che Docker ha un tale versioning dei container integrato, mi è sembrata una buona idea usarlo. Forse libvirt farebbe altrettanto bene con LXC, ma la modalità privilegiata della docker rende più semplice non dover configurare i dispositivi sul contenitore.

Ho fatto una piccola ricerca e ho già trovato alcune risposte, ma ho problemi a mettere tutto insieme.

Sfondo in LXC

L'esecuzione di X da LXC mi ha aiutato a vedere come posso configurare un contenitore con (es.):

lxc.cgroup.devices.allow = c 226:0 rwm

e usando

mknod -m 666 dri/card0 c 226 0

all'interno del contenitore per connettersi al dispositivo host.

docker

Da cuda - Usando la GPU da un contenitore docker , ho visto che posso ottenere la stessa configurazione per funzionare in Docker con il backend LXC.

Mi è sembrato che se un container docker viene eseguito in modalità privilegiata, può accedere normalmente alla GPU senza questa configurazione aggiuntiva. Quindi, ho avviato un sistema di base, ho installato driver di grafica, xorg-server, xorg-xinit e un gestore di finestre per testarlo.

Primo tentativo

# startx
Cannot run from a console (or some message like that)

Ok, pensavo di essere su tty2.

# tty
/dev/console

Non è quello che mi aspettavo.

# chvt 2
# tty
/dev/tty2

Bene, sembra che abbia funzionato. Proviamo # startxdi nuovo. Ha avviato il gestore delle finestre, con il cursore al centro. Nessuna risposta del mouse. Nessuna risposta da tastiera. Proviamo a cambiare il tty con Ctrl-Alt+F3. Nessuna risposta. Bene, sembra che dovrò riavviare a freddo.

Secondo tentativo

# tty
/dev/console
# chvt 2
# tty
/dev/console

Che cosa? Non posso cambiarlo ora?

Continua

Dopo aver provato un'altra volta, sono riuscito a cambiare tty e startx ha bloccato di nuovo il computer.

E adesso?

Quindi, ora sono impassibile. Voglio davvero essere in grado di usare un container - Docker preferito, anche LXC con libvirt è accettabile - per funzionare come il mio sistema operativo quotidiano mantenendo un sistema operativo host snello.

È preferibile utilizzare Docker con modalità privilegiata qui o utilizzare il back-end LXC esplicito e provare le opzioni sopra elencate?

Sto già pensando di usare libvirt (possibilmente sotto vagrant-libvirt) per gestire il mio vm di Windows, quindi sarebbe lo stesso per me usare libvirt o vagrant-LXC in questo caso?

Modifica: leggendo LXC vs. Docker , ho la sensazione che poiché i contenitori Docker e Docker sono pensati per ambienti a singola applicazione, forse sarebbe meglio usare LXC invece di Docker per funzionare come il mio sistema operativo quotidiano. Pensieri?

Modifica: ho scoperto che, come la finestra mobile, esiste un comando lxc-device che mi consente di bypassare i passaggi di cgroups e mknod. Considerando che prima ero in grado di avviare x e bloccare il mio sistema, ora è solo un errore. Forse alla fine riuscirò a capirlo, dal momento che nessuno sembra essere là fuori.

Aggiornamento: ho il mouse funzionante. Sul guest, ho installato xf86-input-mouse e xf86-input-keyboard. Sull'host, ho eseguito il seguente:

# lxc-device -n g1 add /dev/input/mice
# lxc-device -n g1 add /dev/dri/card0
# lxc-device -n g1 add /dev/dri/controlD64
# lxc-device -n g1 add /dev/dri/renderD128
# lxc-device -n g1 add /dev/fb0
# lxc-device -n g1 add /dev/tty2

Lavori!


Sono abbastanza convinto che LXC sia ciò che devo usare, e non Docker. Sfortunatamente, è un momento piuttosto difficile trovare una documentazione aggiornata sull'associazione di un tty specifico a un contenitore in modo che io possa eseguire X. Sia il mio host che il mio ospite usano systemd, mentre tutta la documentazione intorno è / etc / inittab. Qualcuno sa come lavorare correttamente con i contenitori LXC per farli "possedere" un tty sull'host?
Paul

Quando ho dato LXC il proprio testo, e schede video assegnare ad esso, ho provato startxcon exec twm, ma il tutto stato congelato dal mio punto di vista. Nessuna risposta alla tastiera o al mouse.
Paul,

unix.stackexchange.com/questions/18003/linux-lxc-deploying-images-with-tiniest-possible-x11 sembra avere una risposta pertinente. Penso di dover inoltrare la catena / dev / input. Ci proverò.
Paul,


Bene, ho pensato di avere risolto il problema con la tastiera. Ma ora non funziona più.
Paul,

Risposte:


1

Questa domanda aveva la risposta di cui avevo bisogno. Naturalmente, ho usato al lxc-deviceposto delle definizioni di cgroup nel file di configurazione. Tuttavia, nel mio caso, ho fatto in modo che la tastiera funzionasse in X solo se la avviavo su un diverso tty.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.