Installation de Calculate LXC Desktop

lxc-desktop

Attention

Projet fermé

Introduction

LXC-desktop est un environnement d'exécution complet et autonome avec une interface graphique. Calculer Linux Container (CLC) peut alors être utilisé comme système hôte. Vous pouvez l'installer dans un conteneur à partir de Calculate Container Desktop Xfce (CCDX). Alors que CLC n'a pas d'interface graphique et vient avec le strict minimum de paquets prêts à l'emploi, CCDX est presque une réplique complète de Calculate Linux Desktop Xfce - à l'exception du noyau, du chargeur de démarrage et de certains outils système.

Avec un bureau LXC, vous bénéficiez de tous les avantages de travailler avec des conteneurs, tels que l'isolation du système, la configuration minimale requise au démarrage de plusieurs conteneurs, la possibilité d'installer, configurer, démarrer, etc. en un rien de temps. Les systèmes fonctionnant dans un conteneur ne sont en aucun cas connectés au système hôte. Vous pouvez les relier à un ou plusieurs moniteurs (si vous utilisez plusieurs cartes vidéo), tout en bénéficiant des capacités matérielles des deux cartes vidéo.

Configuration du système hôte

Calculer Linux Container doit être utilisé comme système hôte. Si vous installez à partir d'un autre système, vous devrez d'abord installer app-emulation/lxc.

Installez Calculate sur le disque dur et faites comme décrit ci-dessus.

Configuration du réseau

Pour accéder au réseau de conteneurs, créez un pont eth0. Pour ce faire, appliquez les paramètres suivants:

/etc/conf.d/net

modules="!plug"
ifplugd="--no-beep"
config_eth0="null"
bridge_br0="eth0"
config_br0="dhcp"
bridge_stp_state_br0=0
bridge_hello_time_br0=1000
bridge_forward_delay_br0=0

Redémarrer le réseau:

/etc/init.d/net.eth0 stop

rm /etc/init.d/net.et*

ln -sf /etc/init.d/net.lo /etc/init.d/net.br0

/etc/init.d/net.br0 start

Installer lxc-desktop

Installons Calculer Container Desktop Xfce dans le conteneur. Pour ce faire, courez:

lxc-create -t download -n pc100 -- --server mirror.calculate-linux.org --no-validate -d CCDX --arch x86_64

(notez que vous devez spécifier le nom de la version)

pc100 est le conteneur qui sera configuré et utilisé comme nom de réseau.

Configuration du conteneur

Ajoutez les paramètres réseau pour le conteneur et ajoutez / sys permissions d'écriture, en ajoutant ce qui suit au fichier :

/var/calculate/lxc/pc100/config

# Network configuration
lxc.net.0.type = veth
lxc.net.0.flags = up
lxc.net.0.name = eth0
lxc.net.0.link = br0
lxc.net.0.hwaddr = 02:03:04:05:06:07

lxc.mount.auto = cgroup:mixed proc:mixed sys:rw
lxc.environment = LXC_DESKTOP=1

Remplacer 02:03:03:04:04:05:06:06:07 par autre chose. Notez que le premier chiffre doit être pair.

Configuration du système dans le conteneur

Maintenant, démarrez le conteneur:

lxc-start -n pc100

Un mot de passe vous sera demandé dans une fenêtre. Au premier démarrage, un utilisateur guest avec mot de passe "guest" sera créé. Appuyez sur Ctrl + Alt + F1 pour revenir à la ligne de commande.

Modifier les paramètres de base, comme le mot de passe root, le démarrage de ssh, locale système. Redémarrer le conteneur:

lxc-attach -n pc100 passwd

lxc-attach -n pc100 -- cl-setup-locale -l fr_FR --timezone Europe/Paris

lxc-stop -r -n pc100

Remplacez fr_FR et Europe/Paris par votre lieu et fuseau horaire.

Ajout du conteneur au démarrage automatique

Pour ajouter le conteneur au démarrage automatique, exécutez:

ln -sf /etc/init.d/lxc /etc/init.d/lxc.pc100

rc-update add lxc.pc100

Configuration de plusieurs conteneurs avec un seul poste de travaPour que le système dans le conteneur démarre une fois que le réseau est en place, créez un fichier lxc:il

/etc/conf.d/lxc

rc_want="net.br0"

Configuration de plusieurs conteneurs avec un seul poste de travail

Configuration du système hôte

Créez un fichier avec des règles udev pour séparer les périphériques de sortie, en attribuant tty7 au conteneur pc100 et tty8 au conteneur pc101 :

/etc/udev/rules.d/95-id-lxc.rules

ACTION=="add|remove", KERNEL=="tty7", ENV{ID_LXC}="pc100"
ACTION=="add|remove", KERNEL=="tty8", ENV{ID_LXC}="pc101"

Important

Ne remplacez pas 95 dans le nom du fichier.

Relisez les règles udev pour confirmer les modifications:

/etc/init.d/udev reload

Configuration du premier conteneur

Modifiez les paramètres système du premier conteneur:

/var/calculate/lxc/pc100/rootfs/etc/calculate/ini.env

[xorg]
vt = 7

Mettez à jour les paramètres du système dans le conteneur:

lxc-attach -n pc100 cl-setup-system

Installation du deuxième conteneur

Pour installer le deuxième conteneur, exécutez:

lxc-create -t download -n pc101 -- --server mirror.calculate-linux.org --no-validate -d CCDX --arch x86_64

(notez que vous devez spécifier le nom de la version)

pc101 est le nom du conteneur utilisé pour la configuration ultérieure et utilisé comme nom de réseau.

Configuration du deuxième conteneur

Ajoutez les paramètres réseau pour le conteneur et ajoutez / sys permissions d'écriture, en ajoutant ce qui suit au fichier :

/var/calculate/lxc/pc101/config

# Network configuration
lxc.net.0.type = veth
lxc.net.0.flags = up
lxc.net.0.name = eth0
lxc.net.0.link = br0
lxc.net.0.hwaddr = 04:05:06:07:08:09

lxc.mount.auto = cgroup:mixed proc:mixed sys:rw
lxc.environment = LXC_DESKTOP=1

Remplacez04:05:05:06:07:07:08:09 par toute autre adresse MAC. Gardez à l'esprit que le premier nombre doit être pair.

Configurer le deuxième conteneur par analogie avec le premier, en lui spécifiant la borne 8:

/var/calculate/lxc/pc101/rootfs/etc/calculate/ini.env

[xorg]
vt = 8

Exécutez le second conteneur et effectuez les réglages de base, tels que la définition du mot de passe root, de la stratégie ssh, du locale système, etc. Maintenant, mettez à jour tous les paramètres :

lxc-start -n pc101

lxc-attach -n pc101 passwd

lxc-attach -n pc101 -- cl-setup-locale -l fr_FR --timezone Europe/Paris

Remplacez fr_FR et Europe/Paris par votre lieu et fuseau horaire.

Ajoutez le deuxième conteneur au démarrage automatique:

ln -sf /etc/init.d/lxc /etc/init.d/lxc.pc101

rc-update add lxc.pc101

Redémarrez les deux conteneurs:

lxc-stop -r -n pc100

lxc-stop -r -n pc101

Pour basculer entre deux sessions lxc-desktop en cours d'exécution, utilisez les raccourcis Ctrl + Alt + F7 etCtrl + Alt + F8.

Configuration de plusieurs conteneurs avec plusieurs postes de travail

lxc-desktop avec plusieurs postes de travail

Pour exécuter cette configuration, vous aurez besoin d'une unité système avec plusieurs cartes vidéo.

Répartir les périphériques USB

Il existe deux façons de répartir les périphériques entre deux postes de travail : soit en séparant les ports USB sur la carte mère, soit en séparant les périphériques hub USB pour chaque poste de travail.

Pour la première option, pensez à utiliser le moniteur des périphériques connectés et à connecter les périphériques alternativement à tous les ports USB. A la sortie, vous obtenez un journal qui vous permet de mapper le chemin système de l'appareil et le port USB:

udevadm monitor -u -s usb/usb_device
UDEV  [5101.730402] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)
UDEV  [5101.775152] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)
UDEV  [5101.775593] change   /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)
UDEV  [5101.780696] change   /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)
UDEV  [5103.337561] unbind   /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)
UDEV  [5103.337581] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)
UDEV  [5106.507789] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
UDEV  [5106.552851] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
UDEV  [5106.552960] change   /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
UDEV  [5106.559699] change   /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
UDEV  [5107.587480] unbind   /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
UDEV  [5107.587513] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
UDEV  [5109.653942] add      /devices/pci0000:00/0000:00:14.0/usb1/1-10 (usb)
UDEV  [5109.714358] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-10 (usb)
UDEV  [5109.714593] change   /devices/pci0000:00/0000:00:14.0/usb1/1-10 (usb)
UDEV  [5109.720462] change   /devices/pci0000:00/0000:00:14.0/usb1/1-10 (usb)
UDEV  [5110.624758] unbind   /devices/pci0000:00/0000:00:14.0/usb1/1-10 (usb)
UDEV  [5110.624792] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-10 (usb)
...

La difficulté de confronter les chemins d'accès du périphérique et du port USB est que les ports USB avec support USB3 sont identifiés de manière différente selon que vous les connectez à un périphérique USB3 (par exemple, une clé USB Flash) ou USB1 / USB2 (par exemple, une souris). C'est aussi ce que vous lisez dans le journal ci-dessus (une souris a d'abord été connectée, puis un disque dur USB). Ce que vous obtenez:

port Type USB appareil
PORT1 USB 1-3 /devices/pci0000:00/0000:00:14.0/usb1/1-9
PORT2 USB 1-3 /devices/pci0000:00/0000:00:14.0/usb1/1-10
PORT3 USB 2-3 /devices/pci0000:00/0000:00:14.0/usb2/1-2
PORT3 USB 1 /devices/pci0000:00/0000:00:14.0/usb2/2-2
PORT4 USB 2-3 /devices/pci0000:00/0000:00:14.0/usb1/1-1
PORT4 USB 1 /devices/pci0000:00/0000:00:14.0/usb2/2-1
PORT5 USB 1-3 /devices/pci0000:00/0000:00:14.0/usb1/1-12
PORT6 USB 1-3 /devices/pci0000:00/0000:00:14.0/usb1/1-11

Pour affecter des ports 1-3 au poste de travail pc100 et des ports 4-6 au poste de travail pc101, ajouter les règles suivantes:

/etc/udev/rules.d/95-id-lxc.rules

# USB devices
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:14.0/usb1/1-9/*", ENV{ID_LXC}="pc100"
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:14.0/usb1/1-10/*", ENV{ID_LXC}="pc100"
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:14.0/usb1/1-2/*", ENV{ID_LXC}="pc100"
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:14.0/usb2/2-2/*", ENV{ID_LXC}="pc100"

ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:14.0/usb1/1-1/*", ENV{ID_LXC}="pc101"
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:14.0/usb2/2-1/*", ENV{ID_LXC}="pc101"
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:14.0/usb1/1-12/*", ENV{ID_LXC}="pc101"
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:14.0/usb1/1-11/*", ENV{ID_LXC}="pc101"

C'est beaucoup plus simple avec les concentrateurs USB, car dans ce cas, tout ce que vous avez à faire est de définir et d'ajouter un port, celui auquel l'appareil est connecté. Tous les appareils connectés au concentrateur seront situés dans le chemin.

Séparation de cartes graphiques

Si vous utilisez des appareils vidéo de différents fabricants - par exemple, une carte Intel intégrée et une ATI externe, vous devez alors ajouter le module radeon à autostart. Pour ce faire, ajoutez:

/etc/modules-load.d/lxc-desktop.conf

radeon

Supprimer radeon de la liste des modules qui ne seront pas chargés :

/etc/modprobe.d/blacklist-calculate.conf

# hplip and cups 1.4+ use raw USB devices, so it requires usblp not be loaded
blacklist usblp

# You probably want this to not get the console beep loud on every tab :)
blacklist pcspkr

# Not using kernel video drivers
blacklist amdgpu
blacklist nouveau
blacklist nvidia
#blacklist radeon
blacklist uvesafb
blacklist vboxvideo

Redémarrer les modules - charger:

/etc/init.d/modules-load restart

Pour obtenir les chemins système des cartes vidéo, exécutez:

udevadm trigger -c add -nv -s drm | awk -F/drm/ '{print $1}' | uniq

udevadm trigger -c add -nv -s drm | awk -F/drm/ '{print $1}' | uniq

Pour afficher des informations sur la carte, exécutez:

udevadm trigger -c add -nv -s drm | awk -F/drm/ '{print $1}' | uniq

Pour affecter ATI au conteneur pc100 et Intel au conteneur pc101, ajoutez l'entrée suivante:

# Video
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:01.0/0000:01:00.0/*", ENV{ID_LXC}="pc100"
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:02.0/*", ENV{ID_LXC}="pc101"

Terminals

Pour que le serveur Xorg de conteneur pc100 fonctionne sur tty7 et celui de conteneur pc101 ontty8, vous devez ajouter les règles correspondantes:

/etc/udev/rules.d/95-id-lxc.rules

ACTION=="add|remove", KERNEL=="tty7", ENV{ID_LXC}="pc100"
ACTION=="add|remove", KERNEL=="tty8", ENV{ID_LXC}="pc101"

Son

Si vous n'avez qu'une seule carte audio, le sous-système audio ne peut être affecté qu'à un seul conteneur. Si vous avez deux cartes audio, consultez d'abord la liste des chemins d'accès aux périphériques respectifs:

udevadm trigger -c add -nv -s sound

Ajoutez ensuite les règles pertinentes à udev. N'oubliez pas d'activer le dispositif /sys/devices/virtual/sound/timer pour tous vos conteneurs qui ont du son.

Voici un exemple d'activation de tous les dispositifs sonores pour un conteneur:

/etc/udev/rules.d/95-id-lxc.rules

ACTION=="add|remove", SUBSYSTEM=="sound", ENV{ID_LXC}="pc100"  

Un de plus d'activer plusieurs cartes audio pour plusieurs conteneurs multiples:

/etc/udev/rules.d/95-id-lxc.rules

# audio (udevadm trigger -c add -nv -s sound)
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:1f.3/*", ENV{ID_LXC}="pc100"
ACTION=="add|remove", DEVPATH=="/devices/pci0000:00/0000:00:1f.4/*", ENV{ID_LXC}="pc101"
ACTION=="add|remove", DEVPATH=="/devices/virtual/sound/timer", ENV{ID_LXC}="pc100 pc101"

PS/2

Activez le port PS/2 pour conteneur pc101~ en ajoutant les règles correspondantes:

/etc/udev/rules.d/95-id-lxc.rules

# PS/2
ACTION=="add|remove", DEVPATH=="/devices/platform/i8042/*", ENV{ID_LXC}="pc101"

Configuration des conteneurs

Démarrez le premier conteneur et appliquez la configuration du système:

lxc-start -n pc100

/var/calculate/lxc/pc100/rootfs/etc/calculate/ini.env

[xorg]
busid = PCI:1:0:0
sharevts = on
vt = 7

Pour vérifier le paramètre +busid+, utilisez `lspci':

00:02.0 -> PCI:0:2:0
01:00.0 -> PCI:1:0:0

Ajustez les paramètres vidéo et les paramètres généraux du premier conteneur:

lxc-attach -n pc100 -- cl-setup-video --video radeon

lxc-attach -n pc100 cl-setup-system

Démarrez le deuxième conteneur comme le premier et appliquez la configuration du système. Spécifier la borne 8:

lxc-start -n pc101

/var/calculate/lxc/pc101/rootfs/etc/calculate/ini.env

[xorg]
busid = PCI:0:2:0
sharevts = on
vt = 8    

Démarrez le deuxième conteneur comme le premier et appliquez la configuration du système. Spécifier la borne 8:

lxc-attach -n pc101 -- cl-setup-video --video intel

lxc-attach -n pc101 cl-setup-system

Redémarrez les deux conteneurs.

lxc-stop -r -n pc100

lxc-stop -r -n pc101