53 votes

Démarrer un service systemd à l'intérieur d'un chroot à partir d'un rootfs non basé sur systemd

Avec init scripts (ou avec openrc), j'ai toujours pu lancer des services à partir d'une racine d'installation différente.
mais quand je cours chroot /somepath/to_root /usr/bin/systemctl start someservice J'ai obtenu :

Running in chroot, ignoring request.

Existe-t-il un moyen de forcer systemd à lancer le service ?

更新しています。
J'ai oublié de dire que mon système hôte exécute des scripts init ou openrc, mais jamais systemd, et que j'utilise chroot pour dépanner des systèmes Unix qui ne peuvent même pas lancer un scripts minimal.

0voto

Définir un fichier de service en dehors du chroot qui exécute le service à l'intérieur du chroot avec les options RootDirectory=/path/to/chroot en liaison avec MountAPIVFS=on Le lien ci-dessus contient la magie.

Exécuter systemd script dans le chroot depuis l'extérieur du chroot

-1voto

chas Points 1

Si vous lancez un service de type inetd avec activation de socket, envisagez de lancer stunnel à la place avec un fichier de configuration qui spécifie à la fois un chroot et votre binaire en tant que cible de lancement de type inetd.

Notez que vous pouvez avoir des problèmes avec SELINUX. Sur un système Oracle Linux 7.1, j'ai dû "chcon -v --type=stunnel_etc_t" sur tous les fichiers que stunnel devait lire.

Vous devrez utiliser le cryptage TLS du côté client de la socket (c'est-à-dire un autre stunnel avec "client=yes" dans la configuration). Faites-moi savoir si vous voulez plus de détails à ce sujet.

-1voto

martinpelant Points 1055

Vous pouvez utiliser nohup pour démarrer les services dans le chroot. Pour démarrer httpd Par exemple, je procède de la manière suivante.

nohup httpd /dev/null &

pour l'arrêter pkill httpd

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X