Installation de Calculate 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)
où 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)
où 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
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:
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