Systemd/it

systemd è un sostituto moderno per init SysV-style e per rc (run command) per sistemi Linux. In Gentoo è supportato come sistema di init alternativo.

Kernel
systemd fa uso di molte caratteristiche moderne di Linux. Alla data attuale il limite inferiore per la versione del kernel è la ebuild 2.6.39. Nelle versioni recenti di c'è un sistema semplice per selezionare le opzioni obbligatorie e opzionali per systemd (vedi Kernel/Configurazione per ulteriori dettagli):

Per configurare manualmente le opzioni del kernel (che è l'unica soluzione laddove non si utilizzi ), sono richieste o consigliate le seguenti opzioni di configurazione del kernel:

In un sistema UEFI si abilitino anche le seguenti:

Se il sistema sta utilizzando lo scheduler BFQ, gli autori di BFQ consigliano di abilitare "BFQ hierarchical scheduling support" sotto "Enable the block layer -> IO Schedulers".

For an up-to-date list, see section "REQUIREMENTS" in the upstream README file.

Il progetto supporta solo il file come link simbolico a. Non creare questo link causerà problemi descritti nei bugreport  e. In passato alcune utilitiy scrivevano informazioni (come le opzioni di mount) in e quindi si presupponeva che fosse un file normale. Oggi si presuppone che i programmi evitino questo problema. Tuttavia, prima di modificare il file per convertirlo in un link simbolico, controlla il bugreport per essere certo che il sistema non sia affetto da alcuna delle regressioni descritte.

Per creare il link simbolico, eseguire:

Assicurati che /usr sia presente al boot
In una configurazione con separata, utilizza un initramfs per montare  prima di avviare systemd. Al momento questo significa utilizzare o  fintanto che il supporto per  non sia disponibile in. Trova il tempo per effettuare la migrazione:

Quando si utilizza dracut, si deve abilitare il modulo usrmount se non viene automaticamente abilitato per poter montare automaticamente.

Se si utilizza genkernel-next, prima di ricompilare il kernel, accertarsi di settare la variabile UDEV nel file di configurazione di a. In questo modo verrà inserito nell'initramfs:

Si veda La guida a Initramfs per ulteriori alternative.

Using LVM and initramfs
Se si utilizza sys-fs/lvm2 e il sistema viene avviato utilizzando una immagine initramfs, l'immagine initramfs deve essere creata utilizzando eseguendo il comando:

è  o uno degli altri targe di genkernel che implica la creazione di un'immagine initramfs. Per ulteriori informazioni, si veda l'output del comando :

Se è utilizzato LVM, deve essere avviato anche il demone, altrimenti systemd non sarà in grado di montare i volumi LVM. può essere abilitato tramite :

Installazione
Il pacchetto contiene udev. Una volta installato, potrà essere rimosso in quanto systemd fornisce.

Abilitare la USE flag  a livello globale (in ). La USE flag  dovrebbe essere disabilitata per evitare conflitti con il servizio. In alternativa è possibile passare ad un subprofilo con systemd per utilizzare USE flags predefinite più sicure, nel qual caso non è necessario modificare :

Da ultimo, si proceda all'aggiornamento del sistema con le nuove flag:

Se dovessero sorgere problemi di dipendenze (ad esempio che blocca ), la causa potrebbe essere la presenza nel file world di. Si può tentare di risolvere il problema, deselezionandolo:

Avviare il sistema con systemd
Per poter avviare systemd, si deve modificare l' utilizzato dall'eseguibile del kernel (o dall'immagine initramfs).

Le seguenti sottosezioni documentano come modificare l' in uno dei boot managers o nel kernel.

GRUB Legacy (0.x)
L'argomento  deve essere aggiunto alla linea di comando del kernel. Un esempio estratto da è il seguente:

Se il sistema deve essere utilizzato con OpenRC, si utilizzi  invece di.

GRUB 2
When is used, add the init option to GRUB_CMDLINE_LINUX :

Se il file di configurazione di GRUB 2 è modificato a mano (solo per esperti), si aggiunga il parametro  al comando   o al comando.

Se si utilizza una intrd generata con genkernel-next's initrd, si utilizzi  invece di.

Configurazione direttamente nel kernel
La configurazione di init può anche essere inserita direttamente nella configurazione del kernel. Si veda. Questa tecnica funziona sia per, sia per.

Configurazione post installazione
systemd supporta alcuni file di configurazione del sistema per impostare i dettagli del sistema di base.

ID Macchina
Si crei un ID macchina per consentire al journaling di funzionare. Ciò può essere fatto con il seguente comando:

Hostname
Per impostare il nome host, si crea/modifica  e semplicemente diventa disponibile il nome host impostato.

Quando il sistema viene avviato con systemd, è possibile utilizzare uno strumento chiamato per modificare  e. Per modificare il nome host, si esegua:

Si veda per ulteriori opzioni

Localizzazione
Solitamente, le localizzazioni dovrebbero venire correttamente migrate da OpenRc al momento di installazione di systemd. Quando necessario, la localizzazione dovrebbe essere impostata mediante come indicato nelle istruzioni del manuale Gentoo

Dopo che il sistema è stato avviato con systemd, verrà utilizzato per imposta la localizzazione e le mappe per la tastiera della console e di X11. Per modificare la localizzazione del sistema, eseguire il seguente comando:

Per modificare la keymap della console virtuale:

E da ultimo, per impostare la configurazione di X11:

Ove necessario, possono essere specificate sia la variante sia le opzioni:

Ora e data
Ora e data possono essere impostate utilizzando. Ciò consente agli utenti di impostare la sincronizzazione senza doversi appoggiare a o ad altri programmi diversi dall'implementazione diretta di systemd.

Per imparare ad utilizzare si esegua il comando:

Caricamento automatico dei moduli
Il caricamento automatico dei moduli viene configurato tramite un file, o una directory di files. I file di configurazione sono localizzati in. All'avvio viene caricato ogni file contenete una lista di moduli. Il formato dei file è una lista di moduli separati da un carattere di newline e può avere qualunque nome purché termini con. l modulo che deve essere caricato può essere separato da un programma, sevizio o un qualunque modo risponda alle proprie preferenze personali. Nel seguente listato, un esempio per

systemd-networkd
systemd-networkd è utile per semplici configurazioni di reti cablate. Per impostazione predefinita è disabilitato.

To configure systemd-networkd, create a file under. See systemd.network(5) for reference. A simple DHCP configuration is given below:

Si noti che systemd-networkd non aggiorna per impostazione predefinita. Per consentire a systemd di gestire le impostazioni DNS, si sostituisca con un link simbolico e si avvi systemd-resolved.

NetworkManager
Frequentemente viene utilizzato NetworkManager per configurare le impostazioni di rete. A tal fine, si esegua semplicemente il seguente comando se si utilizza un ambiente desktop con supporto a X11:

Se non è questo il calo e le reti devono essere configurate tramite una console, si legga il documento nmcli, oppure si avvii un processo di configurazione guidato tramite :

nmtui è un'interfacca curses che guiderà l'utente nel processo di configurazione tramite linea di comando.

Gestione dei file di log
systemd ha un suo modo per la gestione dei file di log e non necessita di appoggiardi ad alcun sistema esterno di log (tipo o ).I messaggi possono essere letti tramite. systemd può anche essere configurato per utilizzare uno strumento esterno per la gestione dei log. Si veda per imparare a configurare journald secondo le proprie esigenze personali.

Alcune opzioni comuni per :

Per maggiori informazioni e le ulteriori opzioni, si veda.

/tmp adesso è posizionata in tmpfs
Unless some other filesystem is explicitly mounted to in, systemd will mount  as tmpfs. That means it will be emptied on every boot and its size will be limited to 50% of the system's RAM size. To know why this is the desired behavior and how to modify it, take a look at API File Systems.

Configurare la verbosità del processo di avvio
Quando si passa a systemd, gli utenti notano differenze nella verbosità del processo di avvio:


 * L'opzione di avvio  non solo influenza l'output del kernel, ma anche quella dello stesso systemd. Per questa ragione, quando si sta installando sistemd, è necessario eliminare tale opzione per leggere in maniera più facile eventuali errori rilevati nella fase di avvio. Dopo sarà possibile ritornare ad un avvio più silenzioso (e veloce).
 * Anche se è impostat l'opzione di avvio, systemd può comunque essere configurato per mostrare i suoi messaggi di stato, mediante l'opzione di avvio.
 * Quando non si utilizza l'opzione di avvio, alcuni messaggi possono sovrascrivere le console. Ciò è provocato dalla configurazione del kernel (si veda  e si cerchi ). Per modificare questo comportamento trasmetta il parametro di avvio   al kernel (e si aggiorni il valore a secondo delle proprie preferenze, ad esempio fissandolo ad un valore inferiore, ad esempio: 1).

Servizi
Ad un certo punto il sistema dovrà essere riavviato per poter avere systemd in esecuzione (in modalità sistema). CI si assicuri di aver letto tutto questo documento erp essere sicuri che systemd sia configurato nella maniera il più completa possibile prima di riavviare. Si noti che funziona anche con systemd non avviato. Si completi la configurazione dei servizi (abilitando e avviando i servizi) dopo essersi loggati sul sistema con systemd avviato.

I servizi di OpenRC
Benché l'intenzione originaria di systemd fosse quella di supportare tutti i vecchi script init.d, tale supporto non si adatta bene ad un sistema di avvio dei servizi basato su delle dipendenze come OpenRC, e, per tale motivo, in Gentoo questo supporto è completamente disabilitato. OpenRC fornisce controlli ulteriori per assicurare che gli script init.d non vengano eseguiti quanto non è stato utilizzato OpenRC per avviare il sistema (altrimenti i risultati non sarebbero predicibili).

Elencare i servizi disponibili
Tutti le unità relative a servizi possono essere elencate utilizzando l'argomento  di

Sono di interesse le seguenti estensioni dei file:

In alternativa, si può utilizzare lo strumento per elencare tutti i servizi, (inclusi quelli impliciti):

E, da ultimo, è possibile controllare i servizi il cui avvio è fallito:

Abilitare, disabilitare, avviare e fermare i servizi
Il sistema normale per abilitare all'avvio un servizio è utilizzare il seguente comando

Allo stesso modo possono essere disabilitati i servizi:

Questi comandi abilitato i servizi utilizzando il loro nome predefinito nel target predefinito (entrambe specificati nella sezione "Install" del file del servizio). In alcuni casi i servizi non forniscono tali informazioni o gli utenti preferiscono avere un differente nome/target,

Si osservi che questi comandi abilitano o disabilitano un servizio in modo che lo stesso venga avviato o non avviato al successivo avvio del sistema; per avviare un servizio immediatamente si utilizzi:

Allo stesso modo, i servizi possono essere fermati:

Installazione di file di unità personalizzati
In possono esser posizionati dei file  unità personalizzati; questi verranno riconosciuti dopo aver eseguito :

è riservata per l'installazione di file di servizi effettuata dal gestore di pacchetti.

Personalizzare i file unità
Quando sono necessarie solo modifiche minime ad una unità, non c'è alcun bisogno di creare una copia totale del file unità originale in. E' possibile sovrascrivere le impostazioni predefinite di un file unità installato dal gestore di pacchetti, mediante la creazione di files in una directory, contenuta in , che abbia lo stesso nome dell'unità originaria (ad esempio: ).

E' necessario ricaricare systemd, per informarlo delle modifiche:

A questo punto il servizio deve essere riavviato, affinché le modifiche abbiano effetto:

Verificare che le impostazioni modificate siano state applicate al servizio:

Abilitare un servizio con un nome personalizzato
Se il nome fornito dalla direttiva "Alias" nella sezioni "[Install]" dell'unità non è quello voluto e non si desidera una modifica permanente del valore tramite una personalizzazione, si può creare manualmente un link simbolico in. Il nome della directory può specificare sia un target sia un altro servizio che dipenderà dal nuovo.

Ad esempio, perinstallare come  in :

Per disabilitare il servizio, si rimuova il collegamento simbolico:

Servizi nativi
Some of Gentoo packages already install systemd unit files. For these services, it is enough to enable them. A quick summary of packages installing unit files can be seen on systemd eclass users list.

La seguente tabella elenca i servizi systemd che corrispondono ai servizi OpenRC:

Servizi Timer
Sin dalla versione 197 systemd supporta i timer, rendendo cron inutile in un sistema con systemd. Sin dalla versione 212 vengono supportati i servizi persistenti, sostituendo, quindi anacron. I timer persistenti vengono avviati alla successiva occasione se il sistema è spento al momento in cui gli stessi sono programmati.

Il seguente è un esempio su come creare un semplice timer che giri in contesto utente. Quest verrà eseguito anche se l'utente non è loggato. Ogni servizio temporizzato necessita di un timer e di un file di servizio che viene avviato dal timer nel seguente modo:

Per primo, far eseguire una nuova scansione dei file dei servizi a systemd:

E' possibile avviare il backup manualmente eseguendo il seguente comando:

Avviare e fermare il timer, nel seguente modo:

In ultimo, per avviare il timer ad ogni avvio del sistema, eseguire:

Per controllare l'ultimo risultato del servizio in esecuzione:

Invio di email in caso di fallimenti
E' possibile inviare una mail nel caso in cui un servizio temporizzato venga avviato e fallisca l'esecuzione, in modo da informare l'utente o l'amministratore. Ciò è reso possibile dalla direttiva "OnFailure" che specifica cosa dovrebbe avvenire se l'avvio del servizio fallisce. Un fallimento viene individuato se lo script con cui il servizio viene invocato restituisce u valore diverso da zero.

A tal fine, si modifichi lo script come segue:

In questo caso, è necessario avere il servizio  installato; il servizio è disponibile in kylemanna's systemd-utils repository.

Sostituire cron
I suddetti file per timer e servizi possono anche essere aggiunti in  per renderli disponibili a tutti gli utenti del sistema. In questo caso la sezione Install dovrebbe contenere  per consentire l'avvio del servizio all'avvio del sistema.

In ogni caso, cron esegue comunque gli script in e in altre posizioni. Molti pacchetti posizionano in quelle cartelle gli script che si attendono vengano eseguiti quotidianamente. Questo comportamento può essere emulato con systemd, installando. A questo punto si attivi il nuovo sostituto di cron con il seguente comando:

Risoluzione dei problemi

 * Upstream debugging guide
 * Upstream debugging guide
 * Upstream debugging guide

/dev/kmsg buffer overrun, alcuni messaggi persi

 * Problema: All'avvio il sistema mostra un ciclo infinito di . La schermata di login non appare mai sulla console in quanto il sistema non arriva mai a quel punto del processo di avvio.


 * Soluzione: Nella maggior parte dei casi questo problema si verifica quanto è abilitata nel kernel l'opzione CONFIG_POWER_SUPPLY_DEBUG . Attualmente la soluzione è quella di disabilitare questa opzione nel kernel, ricompilare, installare e aviare il nuovo kernel. La soluzione può anche essere trovata all'indirizzo this thread sul forum di Gentoo. Secondo un utente del forum, questo problema è stato riscontrato utilizzando I2C EEPROM su un sistema embedded . La soluzione in questo caso è di disabilitare l'opzione del kernel CONFIG_I2C_DEBUG_CORE.

Sessioni Grafiche aperte in posizioni random
Per impostazione predefinita systemd avvia un processo solo quando lo stesso deve essere utilizzato. Questo causa ad alcuni gestori di display (come GDM) di utilizzare le restanti TTY per avviare sessioni grafiche a richiesta, il che può risultare in console e sessioni grafiche posizionate in maniera random, a secondo dell'ordine in cui sono state utilizzate.

Per costringere il sistema ad un comportamento più "classico"  (ad esempio, le console posizionate da  a  e le sessioni grafiche che utilizzano le restanti TTYs) si può chiedere che   venga eseguito su quelle TTY:

LVM
When switching from OpenRC to systemd and LVM is needed to properly mount the system volumes, activate the LVM service:

While it might not be needed for activation of the root volume (if LVM is integrated into the initramfs) it might not work for other LVM volumes, unless the service is activated.

systemd-bootchart
Ci si assicuri che siano abilitati CONFIG_DEBUG_KERNEL, CONFIG_SCHED_DEBUG e CONFIG_SCHEDSTATS.

Successivamente, si abiliti :

Il risultato delle modifiche produrrà un report bootchart in formato SVG posizionato in dopo ogni avvio. Il file può essere visualizzato tramite un moderno browser web.

As an alternative to systemd-bootchart the starting of services can be visualized with:

sorgenti syslog-ng per systemd
Non c'è "alcuna necessità" di aggiungere  al file di configurazione. Ciò causerà un errore in (almeno nella versione syslog-ng-3.7.2). Aggiornare la riga  menzionata, in syslog-ng article nel seguente modo:

configurazione sys-fs/cryptsetup
systemd sembra non rispettare (si veda ) e quindi deve essere configurato tramite il file :

In base al contenuto del file, potrebbe essere necessario creare un nuovo file servizio. Per fare ciò, si abiliti la USE flag  per. Verrà installato. L'esecuzione del comando crea un file di servizio in, che può essere copiato in ,modificato manualmente e aggiunto al runlevel desiderato.

Controllo delle unità il cui avvio è fallito
Si controllino le unità il cui avvio è fallito con:

Abilitazione modalità di Debug
Per ottenere maggiori informazioni si inserisca la seguente stringa in :

oppure può essere abilitata la console di debug che apre un terminale su tty9. Questo aiuta ad effettuare il debug dei servizi durante il processo di avvio.

usare e4rat
Ricordarsi di modificare impostando 'init' a, altrimenti e4rat continuerà ad avviare OpenRC.

aumento di sicurezza con GRSecurity
Se è abilitata grsecurity, systemd-networkd potrebbe registrare nei log il seguente errore:

La condizione di errore è generata dal fatto che systemd-networkd sta lavorando con un utente non-root user e grsecurity rifiuta l'accesso all'intera struttura per quell'utente. Per disabilitare questa opzione, si disabiliti l'opzione del kernel CONFIG_GRKERNSEC_SYSFS_RESTRICT.

Anche logind potrebbe avere dei problemi di permessi con CONFIG_GRKERNSEC_PROC attiva, si veda.

shutdown -rF non forza fsck
Il servizio è responsabile per l'esecuzione di  quando necessaria. Non tiene conto dell'opzione  di, ma onora i seguenti parametri di boot del kernel.

Si veda anche

 * Comparison of init systems - Un articolo che paragona e confronta le differenze tra i sistemi di init di Gentoo.
 * Sakaki's EFI Install Guide - Si veda in particolare il capitolo intitolato Configuring systemd and installing necessary tools
 * OpenRC to Systemd Cheatsheet

Risorse esterne

 * FAQ
 * Tips and tricks