OpenRC : alternativa a systemd

From Manjaro Linux
Jump to: navigation, search

⇐ Torna alla Pagina Principale

Attenzione: Questa pagina si riferisce ad un sistema di init (OpenRC) non più supportato da Manjaro, si invita a consultare la documentazione del progetto Artix per la migrazione di un sistema Manjaro o per l'installazione di un sistema operativo che non preveda la presenza di systemd.

Panoramica

OpenRC è un sistema di init a dipendenze mantenuto dagli sviluppatori di Gentoo Linux, che lavora con il programma di init fornito dal sistema, di solito sysvinit. Quindi non è un sostituto di sysvinit. Vuole essere un alternativa a systemd per gli utenti che desiderano più controllo sul proprio sistema e che non vogliono tutte le funzionalità che systemd fornisce ed attiva automaticamente.

Installazione

OpenRC è disponibile nei repository di Manjaro. Si può installare l'intero gruppo di pacchetti necessario tramite

sudo pacman -S openrc-base

L'output del comando precedente dovrebbe assomigliare a:

$ sudo pacman -S openrc-base
 :: There are 10 members in group openrc-base:
 :: Repository community
    1) cronie-openrc  2) cryptsetup-openrc  3) dbus-openrc
    4) device-mapper-openrc  5) dhcpcd-openrc  6) glibc-openrc
    7) inetutils-openrc  8) lvm2-openrc  9) mdadm-openrc  10) openrc-core
 
 Enter a selection (default-all): 
 resolving dependencies...
 looking for inter-conflicts...
 :: openrc-core and systemd-sysvcompat are in conflict. Remove systemd-sysvcompat? [y/N] y
 
 Packages (12): systemd-sysvcompat-212-3 [removal]  sysvinit-2.88-15
                cronie-openrc-20140614-1  cryptsetup-openrc-20140614-1
                dbus-openrc-20140614-1  device-mapper-openrc-20140614-1
                dhcpcd-openrc-20140614-1  glibc-openrc-20140614-1
                inetutils-openrc-20140614-1  lvm2-openrc-20140614-1
                mdadm-openrc-20140614-1  openrc-core-0.12.4-16
 
 Total Download Size:    0.22 MiB
 Total Installed Size:   1.19 MiB
 
 :: Proceed with installation? [Y/n]

Dopo l'installazione del gruppo di pacchetti openrc-base, OpenRC dovrebbe avviarsi di default al posto di systemd.

Nota: Il sistema si avvierà senza interfaccia grafica, in modalità testuale, fintanto che il servizio per il display manager grafico non verrà installato ed attivato.

Durante l'installazione di openrc-base, si possono ottenere messaggi come

run 'rc-update add dbus default'
run 'rc-update add cronie default'

L'esecuzione di questi comandi aggiunge i servizi agli specifici runlevel. Per esempio eseguendo

sudo rc-update add dbus default

Il servizio dbus verrà aggiunto al runlevel di default e partirà automaticamente all'avvio del sistema. dbus (system message bus) e cronie (per cron) sono alcuni dei servizi che vengono comunemente abilitati.

Pacchetti Aggiuntivi

Display Manager

Per avviare con il display manager grafico, è possibile installare il pacchetto displaymanager-openrc. Dopo l'installazione è necessario modificare il file /etc/conf.d/xdm per lo specifico display manager. Per esempio, per utilizzare lightdm, cambiare la linea

DISPLAYMANAGER="xdm"

a

DISPLAYMANAGER="lightdm"

Infine il servizio xdm può essere aggiunto al runlevel di default:

sudo rc-update add xdm default
Nota: I pacchetti lightdm e lightdm-greeter (come lightdm-gtk-greeter) devono essere installati per utilizzare lightdm come display manager.

È disponibile una guida in inglese per installarli a questo indirizzo.

Un'alternativa a lightdm è LXDM. Tuttavia la versione disponibile nei repository non avvia automaticamente la ck-session al login; in alternativa può essere usato lxdm-consolekit dal repository AUR. Per maggiori informazioni su consolekit, dare uno sguardo alla sezione Consolekit.

Audio (ALSA)

Si può installare il pacchetto alsa-utils-openrc. Quindi lanciare da terminale

sudo rc-update add alsasound default

per avviare automaticamente alsa al boot.

Gestore di Rete

Di default è abilitato dhcpcd tramite netifrc. Tuttavia se si utilizza il Wifi per la connesione a internet o si necessita di un applet di rete grafico, si può installare networkmanager-openrc.

networkmanager-openrc sostituisce il consueto pacchetto networkmanager nei repos (abbr. di repository). È richiesto anche consolekit e polkit-consolekit, che rimpiazzano il consueto polkit dei repos.

Sono disponibili anche altre alternative come wicd-openrc e connman-openrc.

Consolekit

Può essere installato il pacchetto consolekit-openrc. Consolekit supporta la configurazione multiutente, il montaggio delle partizioni da parte degli utenti non-autorizzati, ecc. Vedere Gentoo-Wiki per maggiori dettagli.

ConsoleKit consente inoltre ad un normale utente (non-root), se questa funzione è supportata dall'ambiente desktop, di spegnere e riavviare il sistema.

Vedi la sezione Utilizzare ConsoleKit sulla sua installazione e per maggiori informazioni.

openrc-desktop

Il gruppo di pacchetti openrc-desktop è usato per installare molti dei precedenti pacchetti relativi al desktop in una operazione. Per esempio:

$ sudo pacman -S openrc-desktop
Template:META Error

Ulteriori pacchetti utili

ACPI

Per la gestione degli eventi ACPI, può essere installato ed abilitato acpid-openrc (Vedere questa pagina per maggiori dettagli su acpid).

Logging (registrazione eventi di sistema)

Per la registrazione dei log, si può scegliere un logger tra metalog-openrc, syslog-ng-openrc, e rsyslog-openrc, installando il pacchetto e abilitando il rispettivo servizio.

Sospensione/Ibernazione

Per sospendere e ibernare da linea di comando può essere installato pm-utils. Potrebbe essere necessario anche il pacchetto upower-pm-utils se la sospensione e l'ibernazione non funzionano. Vedere la sezione Risoluzione dei Problemi per alcuni possibili rimedi a problemi che si potrebbero incontrare.

Nota

Se nel sistema con systemd, veniva utilizzato plymouth, allora /etc/mkinitcpio.conf ha bisogno di essere modificato per eliminare l'hook plymouth, poiché plymouth non funziona correttamente con OpenRC. La riga contenente gli hooks dovrebbe assomigliare a:

HOOKS="base udev autodetect modconf block resume filesystems keyboard keymap fsck"

Dopodiché si deve rigenerare l'initrd con il comando

sudo mkinitcpio -p linux<version>

Per esempio

sudo mkinitcpio -p linux314

oppure per tutti le versioni di kernel installate

sudo mkinitcpio -P

Configurazione

Aggiungere o Rimuovere i servizi

I servizi possono essere aggiunti all'avvio tramite

sudo rc-update add <service> <runlevel>

Per esempio

sudo rc-update add sshd default

il runlevel può essere tralasciato se si aggiunge un servizio al runlevel corrente, ad esempio

sudo rc-update add sshd

Un servizio può essere rimosso dall'avvio con:

sudo rc-update del <service> <runlevel>

Controllare i servizi in esecuzione

Per controllare i servizi in esecuzione, si può digitare

rc-status

Avviare / fermare / riavviare i servizi

Per avviare / fermare / riavviare i servizi immediatamente, si può usare il comando rc-service. Per esempio

sudo rc-service networkmanager restart

Servizi comunemente utilizzati

Per abilitare il supporto per la stampa, può essere installato il pacchetto cups-openrc. Per esempio

sudo pacman -S cups-openrc
 resolving dependencies...
 looking for inter-conflicts...
 
 Packages (1): cups-openrc-20141014-1
 
 Total Installed Size:   0.01 MiB
 Net Upgrade Size:       0.00 MiB
 
 :: Proceed with installation? [Y/n] 

Il nome del servizio è cupsd.

sudo rc-service cupsd start

Per ssh, può essere installato il pacchetto openssh-openrc.

Il nome del servizio è sshd.

Suggerimento: Tutti i servizi presenti si possono elencare tramite il comando rc-service --list.

Utilizzare Consolekit

Inoltre, se non è già stato fatto, può essere installato consolekit per eseguire azioni di root come spegnere o riavviare il sistema da utente non-root dal proprio ambiente desktop.

Consolekit può essere installato nel modo seguente

sudo pacman -S consolekit-openrc polkit-consolekit cgmanager-openrc

L'output del comando assomiglia a questo

sudo pacman -S consolekit-openrc polkit-consolekit cgmanager-openrc
 resolving dependencies...
 looking for inter-conflicts...
 :: polkit-consolekit and polkit are in conflict. Remove polkit? [y/N] y
 
 Packages (9): cgmanager-0.37-2  consolekit-1.0.0-3  libnih-1.0.3-2  openrc-core-0.17-2  polkit-0.112-2 [removal]  cgmanager-openrc-20150911-1
               consolekit-openrc-20150911-1  polkit-consolekit-0.113-1
 
 Total Download Size:    0.92 MiB
 Total Installed Size:   4.44 MiB
 Net Upgrade Size:       2.84 MiB
 
 :: Proceed with installation? [Y/n] 

Dopo l'installazione può essere abilitato con sudo rc-update add consolekit; l'attivazione avverrà dopo il riavvio del sistema. Per controllare che consolekit sia in esecuzione e che una ck-session sia stata avviata, si può utilizzare il seguente comando:

ck-list-sessions

L'output del comando assomiglierà al seguente

Session1:
	unix-user = '1000'
	realname = 'Aaditya Bagga'
	seat = 'Seat1'
	session-type = 
	active = TRUE
	x11-display = ':0'
	x11-display-device = '/dev/tty7'
	display-device = 
	remote-host-name = 
	is-local = TRUE
	on-since = '2014-06-15T13:29:58.652929Z'
	login-session-id = 

Se non viene ottienuto nessun output, allora è probabile che il proprio display manager non abbia avviato una ck-session.

Per avviare una ck-session e una sessione X da linea di comando può essere utilizzata la seguente sintassi

ck-launch-session <nome-sessione>

Per esempio

ck-launch-session startxfce4

Qualche consiglio

I display managers che notoriamente funzionano con consolekit sono lightdm, lxdm (da lxdm-consolekit), e mdm (da mdm-nosystemd). Fare riferimento alla sezione Display Manager per maggiori informazioni.

Se viene avviata una sessione grafica da linea di comando, questo post del forum di ArchBang potrà essere di aiuto.

Se si utilizza Openbox o un altro Window Manager affiancato a oblogout (Openbox logout script), allora può essere usato oblogout-consolekit da AUR per avere un interfaccia grafica di logout.

Sostituire systemd con eudev (utenti avanzati)

Quando OpenRC viene utilizzato come init di sistema, il ruolo di systemd si limita a quello di un provider udev, si occupa quindi solo della gestione dei device.

Per questa funzione di systemd può utilizzare come sostituto eudev, sviluppato dalla comunità di Gentoo. Notare che la rimozione di systemd potrebbe causare incompatibilità con alcuni software.

I passi per installare eudev sono i seguenti:

sudo pacman -S eudev eudev-systemdcompat

L'output del comando assomiglia al seguente:

sudo pacman -S eudev eudev-systemdcompat
 resolving dependencies...
 looking for conflicting packages...
 :: eudev and libsystemd are in conflict (libgudev-1.0.so). Remove libsystemd? [y/N] y
 :: eudev-systemdcompat and systemd are in conflict. Remove systemd? [y/N] y
 warning: dependency cycle detected:
 warning: eudev-systemdcompat will be installed before its eudev dependency
 
 Packages (4) libsystemd-219-6 [removal]  systemd-219-6 [removal]  eudev-3.0-1  eudev-systemdcompat-219-2
 
 Total Download Size:     0.95 MiB
 Total Installed Size:    7.09 MiB
 Net Upgrade Size:      -18.78 MiB
 
 :: Proceed with installation? [Y/n] 

Dopo il passaggio precedente systemd sarà rimosso completamente e verrà sostuito da eudev nelle sue ultime funzioni rimaste.

Risoluzione dei Problemi

Generici

Alcuni pacchetti dipendono da componenti di systemd come systemd-tmpfiles e systemd-sysusers nei loro compiti di post-installzione; il pacchetto openrc-systemdcompat di AUR può essere installato per compensare queste componenti mancanti.

Logs di Boot

I logs di boot per OpenRC sono conservati in /var/log/rc.log.

Presenza di avvisi allo spegnimento

Se allo spegnimento si presenta un avviso simile a questo:

WARNING: /usr/lib/rc/cache is not writable!

Allora deve essere creata la cartella indicata, tramite il comando

sudo mkdir /usr/lib/rc/cache

Error about /etc/sysctl.conf not found

Questo file può essere creato semplicemente con

sudo touch /etc/sysctl.conf

Abilitare Swap (per partizioni GPT)

Se si stava utilizzando systemd su un hard disk partizionato con tabella GPT, allora si potrebbe avere la necessità di abilitare la swap tramite /etc/fstab. Questo perché systemd spesso gestisce automaticamente la swap sulle partizioni GPT, e produce errori se è montata anche tramite fstab.

Va aggiunta la seguente voce al proprio /etc/fstab

# /dev/sda10
UUID=0c3e9434-bc5c-461c-a5e4-4e9fe5f9a149	swap	swap	sw	0	0

Utilizzare tmpfs

systemd imposta in maniera predefinita un tmpfs; per impostarlo manualmente in /etc/fstab, può essere aggiunta la seguente riga

tmpfs		/tmp		tmpfs   nodev,nosuid          	0  	0

Vedere anche Arch Wiki per maggiori dettagli.

Caricamento automatico dei moduli

Per OpenRC, i moduli da caricare all'avvio sono specificati in /etc/conf.d/modules anziché essere presenti come singoli files dentro /etc/modules-load.d. I moduli richiesti possono essere spostati manualmente. Segue un esempio di come potrebbe essere il file /etc/conf.d/modules

# You should consult your kernel documentation and configuration
# for a list of modules and their options.

modules="vboxdrv"

Configurare l'hostname

Se il nome host viene visualizzato come localhost malgrago ci sia un hostname differente in /etc/hostname, allora probabilmente si avrà bisogno di cambiare il proprio hostname in nel file /etc/conf.d/hostname.

Impostazioni Mappatura della Tastiera

La mappatura dei tasti per la console si può modificare tramite /etc/conf.d/keymaps. Per X11 (la parte grafica del sistema), può essere modificata tramite /etc/X11/xorg.conf.d/20-keyboard.conf Per maggiori informazioni consultare la Gentoo wiki (con la differenza che in Arch/Manjaro la mappatura della tastiera è memorizzata in /usr/share/kbd/keymaps [1]).

Impostazione Orologio Hardware

Può essere fatto modificando il file /etc/conf.d/hwclock.

Spegnimento / Riavvio

Per spegnere il sistema, può essere usato il comando poweroff. Analogamente per riavviare, può essere usato il comando reboot.

Non si avvia X da un virtual terminal

A partire dalla versione di Xorg-1.16, Arch Linux ha deciso di rendere X rootless utilizzando systemd-logind [2]. Ciò comporta che l'utilizzo di startx dal virtual terminal potrebbe non funzionare per gli utenti che utilizzano OpenRC come init system. Una soluzione alternativa è crare un file /etc/X11/Xwrapper.config che contenga

# Xorg.wrap configuation file
needs_root_rights = yes

Riferimento: Arch forum

Le Periferiche di Input non Funzionano

Con la versione 3.0 di eudev, è stato introdotto il nuovo gruppo input; si può provare ad aggiungere il proprio utente ad esso.

sudo gpasswd -a <user> input

Riferimento: [3]

Il servizio MySQL non funziona

Consultare questo post sul forum internazionale. L'installazione di MySQL/MariaDB è in parte cambiata e può richiedere un ulteriore passaggio prima di avviare il servizio. Consultare anche la ArchWiki per maggiori dettagli.

Pagine correlate

Collegamenti esterni