Pour SysV init
, j'ai besoin de /etc/inittab
réapparaître les entrées de getty, le /sbin/init
binaire, les binaires et les bibliothèques partagées pour le shell login
, le getty
, le PAM / security / shadow et quelques fichiers de périphérique.
Car upstart
j'ai besoin à peu près des mêmes exigences, mais au lieu de /etc/inittab
, j'ai quelques *.conf
fichiers sous /etc/init
: un * .conf start on startup
qui définit un niveau d'exécution avec telinit
, et un * .conf pour chaque tty qui démarre / respawn getty
sur ce tty sur les niveaux d'exécution appropriés .
De quelle configuration et de quels fichiers binaires ai-je besoin systemd
init
?
La documentation que je trouve semble être axée sur la façon d'utiliser un système déjà installé pour démarrer et arrêter des services.
Une liste minimale de fichiers à copier (à l'exception du noyau / initrd) à partir d'une installation Arch ou fedora en cours d'exécution ferait l'affaire, mais je n'arrive pas à trouver ce genre d'informations systemd
.
Ce que je voudrais savoir, c'est, pour systemd
quels fichiers sont requis, et ce qu'ils doivent contenir, pour démarrer un shell de connexion après qu'un initramfs ait switch_root
appelé le systemd
/sbin/init
.
Exemple pour upstart
, les binaires et deux *.conf
fichiers:
Fichier /etc/init/whatever.conf
:
démarrer au démarrage émet le niveau d'exécution tâche scénario telinit 2 script de fin
Fichier /etc/init/tty1.conf
:
démarrer au niveau d'exécution [12345] respawn exec / sbin / agetty -8 --noclear 38400 tty1 linux
Exemple pour sysvinit
, les fichiers binaires et 1 fichier conf nommé /etc/inittab
:
id: 2: initdefault: c1: 12345: réapparition: / sbin / agetty 38400 tty1 linux
Maintenant, je cherche l' systemd
équivalent.
Je suppose qu'au moins 1 *.service
fichier est nécessaire quelque part, avec une [Service]
entrée contenant ExecStart=-/sbin/agetty --noclear %I linux
et Restart=always
, mais quoi d'autre est nécessaire?
Réponses:
Tout d'abord, ce
systemd
n'est pas un Unix traditionnelinit
. Systemd est tellement plus, il est donc un peu injuste de comparer les deux.Pour répondre à la question, ce qui semble nécessaire, ce sont quelques binaires et les fichiers de configuration suivants:
l'émission
systemctl enable console-getty.service [email protected]
crée ensuite ces liens symboliques:REMARQUE : Pour utiliser
systemd
les fonctionnalités spéciales de pour démarreragetty
dynamiquement, à la demande en appuyant sur Alt+ F3et ainsi de suite, il semble que vous devez également avoir au moins ces deux fichiers:où
[email protected]
est un lien symbolique vers[email protected]
.Contenu des fichiers de configuration:
Le
default.target
,getty.target
, lessysinit.target
fichiers peuvent être vides , sauf pour l'[Unit]
étiquette et (probablement)Description=xxx
.basic.target
contient également des informations de dépendance:Je ne sais pas si les références à des cibles qui n'existent pas en tant que fichiers sont nécessaires ou non. Ils sont décrits sur la
systemd.special(7)
page de manuel.console-getty.service
: (Cas particulier pour agetty sur la console)[email protected]
: (configuration générique pour tous les services de Getty sauf la console)Enfin, vous avez probablement besoin de quelques-uns de ces binaires spéciaux (je n'ai pas essayé ceux qui sont essentiels):
Pour résumer le processus de démarrage de systemd, je pense que cela fonctionne comme ceci:
basic.target
(ou tous les*.target
fichiers?)WantedBy=
,Wants=
,Before=
,After=
... directives dans la[Install]
section des*.service
et*.target
fichiers de configuration.*.service
s qui doivent démarrer (qui ne sont pas des services "spéciaux"), ont une[Service]
section avec uneExecStart=
directive, qui indique l'exécutable à démarrer.la source
[Install]
section n'est pas utilisée par la séquence de démarrage, seulement parsystemctl enable
. Ce que le démarrage regarde/etc/systemd/system/basic.target.wants/
, ce sont les liens symboliques dans , qui sont créés parsystemctl enable
.systemd
crée automatiquement un getty lorsque vous passez aux terminaux, jusqu'à un certain nombre maximum. La valeur par défaut est 6 (vous obtenez donc automatiquement un getty pour alt + f1 à alt + f6). Si vous voulez changer ce paramètre, vous pouvez le modifier/etc/systemd/logind.conf
pour changer leNAutoVTs
paramètre en un autre nombre (max 12)Si vous voulez qu'un getty apparaisse même si vous ne changez pas manuellement, vous pouvez ajouter un lien symbolique
/usr/lib/systemd/system/[email protected]
vers le/etc/systemd/system/getty.target.wants/
répertoire:cela entraînera la
getty.target
nécessité d'ungetty@
service de plus . Une cible est une collection de services qui doivent être générés, le remplacement des niveaux d'exécution qui prend en charge les dépendances. La cible par défaut dépend degetty.target
Voir la FAQ systemd dans ArchWiki
edit: j'ai fait des recherches un peu plus dans la documentation .
Au démarrage, le
systemd
démon charge tous les systèmes de ladefault
cible et leurs dépendances. Une cible est définie par les fichiersUne cible a une liste de services attachés spécifiés par des liens symboliques dans les répertoires
La
/etc
version remplace les valeurs par défaut de la distribution dans/usr/lib
. Un seul des.target
fichiers est requis, alors qu'aucun répertoire n'est requisgetty
n'est qu'un des services parmi d'autres qui peuvent être exécutés par des scripts d'initialisation. Dans la distribution que j'ai vérifiée (fedora, arch)getty
est exécutée de deux manières différentes:/usr/lib/systemd/system/[email protected]
fichier dans lequel le nom tty est remplacé parsystemd
par le lien nom de fichier )logind
lorsque l'utilisateur bascule vers un terminal virtuel (similaire à la manière dont les anciensinetd
services n'apparaissent que lorsqu'une demande arrive).logind
est un démon différent distribué avecsystemd
, et lit sa configuration dans le/etc/systemd/logind.conf
fichier.J'espère que c'est satisfaisant.
la source
systemd
. J'en recherche un peu et cela semble assez simple, une fois que vous comprenez comment les choses fonctionnentsystemd
- être hostile, comme lors d'une prise de contrôle hostile de la façon dont un système ouvert démarre. Il détourne GNU / Linux d'Unix. Je ne dis pas que c'est une mauvaise chose, mais c'est très différent de la façon dont les choses ont été traditionnellement. Et googler un peu indique que je ne suis pas seul.