[Risolto]systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Problemi e discussioni inerenti ad Archlinux su architetture non ufficialmente supportate
Rispondi
sanzoghenzo
Newbie
Messaggi: 10
Iscritto il: 21 luglio 2013, 14:54
Architettura: x86_64 (64bit)

[Risolto]systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da sanzoghenzo » 24 dicembre 2014, 21:20

Ciao a tutti, è un bel po' che non mi faccio vivo (e purtroppo dall'ultima richiesta d'aiuto non ho più avuto modo/voglia di usare arch sul mio macbook... ma questa è un'altra storia!), spero che questa sia la sezione giusta...

Ho installato Arch su Olinuxino A20 micro, un'embedded basato su architettura arm, e lo scorso weekend mi sono "divertito" a installare mopidy, shairport, upmpdcli per utilizzare il sistema come jukebox e ricevitore audio (dlna e airplay).
Ora posso ascoltarmi la musica sparata dalle casse sulla scrivania anche quando sono spaparanzato sul letto con il portatile (e probabilmente è più un male che un bene :( ), ma ho un problema: systemd sembra ignorare i servizi utente, quindi ad ogni avvio del sistema devo collegarmi con ssh per accenderli manualmente.

per mopidy ho creato il file ~/.config/systemd/user/mopidy.service:

Codice: Seleziona tutto

[Unit]
Description=mopidy
After=network.target

[Service]
Type=simple
# User=mopidy # this should be removed
ExecStart=/usr/bin/mopidy

[Install]
WantedBy=multi-user.target
questo invece è ~/.config/systemd/user/upmpdcli.service:

Codice: Seleziona tutto

[Unit]
Description=Upmpdcli UPnP/dlna receiver
After=sound.target
Requires=mopidy.service
After=mopidy.service

[Service]
ExecStart=/usr/bin/upmpdcli
Restart=always

[Install]
WantedBy=multi-user.target
ho anche un timer per eseguire uno script ogni notte, e prevedo di aggiungere altri servizi (appena fornisco il tutto di un disco sata, diverterà una sorta di NAS; inoltre avevo intenzione di smanettare con node-RED e sfruttare i moltissimi pin GPIO e altre interfacce disponibili...)

multi-user.target è il mio target predefinito:

Codice: Seleziona tutto

# systemctl set-default multi-user.target
ovviamente ho abilitato i servizi con

Codice: Seleziona tutto

$ systemctl --user enable mopidy
$ systemctl --user enable upmpdcli
e come da guida archwiki ho attivato il lingering:

Codice: Seleziona tutto

# loginctl enable-linger sanzo
ma sembra che systemd se ne sbatta bellamente di queste config.
se riavvio e provo a interrogare systemd sullo stato dei servizi (connesso via ssh come utente sanzo) ottengo:

Codice: Seleziona tutto

$ systemctl --user status mopidy
● mopidy.service - mopidy
   Loaded: loaded (/home/sanzo/.config/systemd/user/mopidy.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

$ systemctl --user status upmpdcli
● upmpdcli.service - Upmpdcli UPnP/dlna receiver
   Loaded: loaded (/home/sanzo/.config/systemd/user/upmpdcli.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
in journalctl -b non trovo nulla che possa indicare errori o tentativi di caricare i servizi utente.

dopo qualche serata a risvoltare archwiki e mezzo internet non riesco a trovare quale possa essere la causa... qualcuno ha dei consigli, o meglio ancora delle soluzioni? :)

Grazie per l'attenzione e buon Natale!
Ultima modifica di sanzoghenzo il 27 dicembre 2014, 4:15, modificato 1 volta in totale.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7409
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da TheSaint » 24 dicembre 2014, 22:27

ARM, non è la stessa architettura. Guarda caso hanno il loro forum

Secondo me, l 'errore è quello di avviare come utente. Ma il sistema ha un utente loggato?
Per scambio DLNA io uso minidlna ed il server mi da il servizio anche se non ho utenti entrati e registrati.
Certi servizi non li puoi avviare come user. Tal servizio dovrebbe esserci del tipo nomeservizio@utente.service e nel file service ci dovrebbe essere qualcosa come

Codice: Seleziona tutto

User=%i
Poi i service modificati, dovrebbero risiedere in /etc/systemd/system.

Prova avviare i servizi come root e riporta il risultato.
Prova avviare il servizio da console come utente e ri-verifica lo stato. Magari lo posti qui.
F the saint
10 anni da questo forum ;)

sanzoghenzo
Newbie
Messaggi: 10
Iscritto il: 21 luglio 2013, 14:54
Architettura: x86_64 (64bit)

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da sanzoghenzo » 25 dicembre 2014, 0:45

Ciao Saint, grazie per la tempestiva risposta.
TheSaint ha scritto:ARM, non è la stessa architettura. Guarda caso hanno il loro forum
avevo visto il forum! Ho scritto qui perché non credo sia un problema di architettura, e anche perché ero già registrato :P
Per scambio DLNA io uso minidlna ed il server mi da il servizio anche se non ho utenti entrati e registrati.
upmpdcli è un dlna renderer, non un server; utilizza mpd per riprodurre i media che ho sullo smartphone.
Quando aggiungerò il disco sata installerò senz'altro anche minidlna!
Secondo me, l 'errore è quello di avviare come utente. Ma il sistema ha un utente loggato?
...
Certi servizi non li puoi avviare come user. Tal servizio dovrebbe esserci del tipo nomeservizio@utente.service e nel file service ci dovrebbe essere qualcosa come

Codice: Seleziona tutto

User=%i
Poi i service modificati, dovrebbero risiedere in /etc/systemd/system.
Non c'è nessun utente loggato, è un sistema headless e se mi loggo è solo attraverso ssh.
Comunque ho seguito le istruzioni che ho trovato in giro per internet, in cui si spiega come far partire mopidy tramite servizio utente, e sulla wiki di arch linux in inglese si dice che per far partire i servizi utente senza che sia loggato basta attivare il lingering, cosa che ho fatto.
anche ~/.config/systemd/user è una cartella letta da systemd (e infatti la vede, leggi dopo...)
Prova avviare i servizi come root e riporta il risultato.
probabilmente questi due servizi potrei anche farli partire come root, ma il timer di cui ho accennato deve eseguire un programma ruby installato nella cartella utente, per quello ho bisogno di un servizio utente. E comunque...
Prova avviare il servizio da console come utente e ri-verifica lo stato. Magari lo posti qui.
...come ho scritto nel primo post, ma forse non era chiarissimo, i servizi si avviano tranquillamente: se uso

Codice: Seleziona tutto

 systemctl --user start mopidy
 systemctl --user start upmpdcli
loggandomi come utente non ho alcun messaggio di errore.

Grazie ancora per l'aiuto, proverò a spostare quello che posso nei servizi di sistema. Però questo non risolve il problema, lo evita :P

Avatar utente
TheSaint
Robin Hood
Messaggi: 7409
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da TheSaint » 25 dicembre 2014, 15:46

Se vuoi un transcode completo allora installa ps3mediaserver, ma ci vuole una certa potenza.
sanzoghenzo ha scritto:Non c'è nessun utente loggato, è un sistema headless e se mi loggo è solo attraverso ssh.
Se non c'è nessuno loggato i service devono essere avviati da systemd come root, ovvero servizio per il sistema, non per utente specifico. Nel caso specifico che ci sia uno script creato ad hoc, anche questo deve diventare ad uso del sistema, lo metti in percorso della shell (/usr/bin) e lo rendi eseguibile come root.

Quello che hai trovato nel github è chiaramente ovvio che deve avere un utente registrato e quell' utente fa uso del servizio per sé stesso.

Anch' io ho trovato il service per aria2, ma come ho potuto notare, è solo ad uso dell' utente registrato. Allora io ho modificato il service in modo che come per minidlna avvio i servizi ed il server accetta gli URI da tutti per scaricarli.

Poi hai dato i comandi ma non hai riportato

Codice: Seleziona tutto

systemctl status mopidy
systemctl status upmpdcli
Forse l' opzione --user, serve per parlare al servizio come utente, non proprio per avviarlo.
F the saint
10 anni da questo forum ;)

sanzoghenzo
Newbie
Messaggi: 10
Iscritto il: 21 luglio 2013, 14:54
Architettura: x86_64 (64bit)

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da sanzoghenzo » 25 dicembre 2014, 20:21

Forse non ho spiegato bene il problema, ma la questione è che systemd non avvia i miei servizi, nemmeno se sono loggato (lascia perdere l'avvio al boot per un momento). Se li avvio manualmente non c'è nessun problema.
Ho anche provato a collegarmi tramite interfaccia seriale e si ripresenta il problema: servizi inattivi (dead) quando mi loggo (l'output l'ho postato alla fine del primo post), se li avvio manualmente tutto ok (non ho postato l'output perché va tutto bene, non c'è niente da vedere :) )

L'opzione --user è utilizzata per interagire con il processo "/usr/bin/systemd --user", che è la sessione utente di systemd.
Questo è il suo stato appena loggato:

Codice: Seleziona tutto

$ systemctl --user status                                        
?● alarm                                                                        
    State: running                                                              
     Jobs: 0 queued                                                             
   Failed: 0 units                                                              
    Since: gio 2014-12-25 20:06:31 CET; 4min 31s ago                            
   CGroup: /user.slice/user-1000.slice/user@1000.service                        
           ?├?─111 /usr/lib/systemd/systemd --user                              
           ?└?─118 (sd-pam)
controllando con journalctl vedo che all'ora segnata arch si stava ancora avviando (ho visto lo stesso messaggio al boot):

Codice: Seleziona tutto

dic 25 20:06:31 alarm systemd[1]: Started User Manager for UID 1000.
Quindi a quanto pare il lingering funziona come descritto nella wiki di arch in inglese e systemctl --user parte al boot anziché al login.
Per scrupolo ho provato a disabilitare il lingering per controllare che non fosse quello a fare casino, ma non cambia nulla! quindi si ritorna al mio problema di partenza: perché la mia sessione utente di systemd non avvia i servizi?

grazie mille per la disponibilità, magari attendiamo qualcuno più ferrato di noi su systemd :)

Avatar utente
TheSaint
Robin Hood
Messaggi: 7409
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da TheSaint » 25 dicembre 2014, 21:21

OK, aspetta quelli del raspberry, magari scrivi una riga con riferimento a questo topico.
Rimango del parere che se non fai i service da usare per il sistema, difficilmente risolvi.

Buon Anno!
F the saint
10 anni da questo forum ;)

sanzoghenzo
Newbie
Messaggi: 10
Iscritto il: 21 luglio 2013, 14:54
Architettura: x86_64 (64bit)

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da sanzoghenzo » 25 dicembre 2014, 22:27

TheSaint ha scritto:Rimango del parere che se non fai i service da usare per il sistema, difficilmente risolvi.
E infatti nel frattempo ho spostato mopidy e upmpdcli sotto il systemd globale ;) (ho dovuto creare un utente di nome upmpdcli altrimenti si rifiutava di partire, ma ora è tutto ok), per l'altro servizio ci penso più avanti dato che mi toccherà reinstallare la rubygem in root...

Però sarei curioso di capire perché non funziona... pobabilmente qualcosa a che fare con le modifiche dal systemd206? Boh...

grazie mille per il supporto (e per avermi ricordato di aria2, entrerà anche quello nella suite una volta comprato l'hard disk...)

Buone feste e felice anno nuovo!

pineout
Little John
Messaggi: 1264
Iscritto il: 10 luglio 2014, 9:08

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da pineout » 25 dicembre 2014, 22:47

Ho letto attentamente, mi sembra tutto ok.

Mi pare se dai l'enable con sudo, ti darebbe un errore, quindi non dovrebbe essere quello il problema.

L'unica cosa che mi verrebbe da provare e' di sostituire i multi-user.target con i vari runlevelX.target e poi dare l'enable (sempre senza sudo)
Se ti va di provare coi numeri da 2 a 5 :)

Avatar utente
TheSaint
Robin Hood
Messaggi: 7409
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da TheSaint » 25 dicembre 2014, 23:50

pineout ha scritto:L'unica cosa che mi verrebbe da provare e' di sostituire i multi-user.target con i vari runlevelX.target e poi dare l'enable (sempre senza sudo)
Se ti va di provare coi numeri da 2 a 5 :)
Non credo si possa fare coi runlevel. Non è da Arch che usa systemd. Sebbene, poi, c'è il pacchetto systemd-sysv-compat.
Mi potrei sbagliare, ma di poco.
F the saint
10 anni da questo forum ;)

sanzoghenzo
Newbie
Messaggi: 10
Iscritto il: 21 luglio 2013, 14:54
Architettura: x86_64 (64bit)

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da sanzoghenzo » 26 dicembre 2014, 11:36

TheSaint ha scritto:
pineout ha scritto:L'unica cosa che mi verrebbe da provare e' di sostituire i multi-user.target con i vari runlevelX.target e poi dare l'enable (sempre senza sudo)
Se ti va di provare coi numeri da 2 a 5 :)
Non credo si possa fare coi runlevel. Non è da Arch che usa systemd. Sebbene, poi, c'è il pacchetto systemd-sysv-compat.
Mi potrei sbagliare, ma di poco.
credo stia parlando di questo...
mi confermi che i vari runlevelX.target non esistono di base (non li trovo in /usr/lib/systemd/system), e che dovrei crearmeli io? se sì, mi verrebbe da copiare il multi-user.target (o comunque basarmi su di lui), quindi cambierebbe poco o nulla... o no?

Avatar utente
TheSaint
Robin Hood
Messaggi: 7409
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da TheSaint » 26 dicembre 2014, 14:31

E' sempre stata prerogativa della Arch di non complicare con tanti run level, anche quando c' era SysV.
Non vedo necessità di runlevel, fai il multi-user.target e ti fermi lì. Salvo aver bisogno di lavori in grafica tramite VNC, non credo che serva installare Xorg.

Hai fatto bene a creare un utente, andrebbe bene anche il suo gruppo e magari crearci la home in /var. Quello che ho fatto io per aria2.
Con questo metodo ho potuto avviare il aria2 senza aver bisogno di utenti specifici. Nella sua home ho preparato le configurazioni specifiche per lo scopo.
Ecco com'è fatto

Codice: Seleziona tutto

[Unit]
Description=aria2 Service
Requires=network.target

[Service]
Type=forking
User=aria2
Group=aria2
EnvironmentFile=/etc/conf.d/aria2.conf
WorkingDirectory=/var/aria2
ExecStart=/usr/bin/aria2c $ARIACMD
ExecReload=/usr/bin/kill -HUP $MAINPID
RestartSec=1min
Restart=on-failure
Come sicurezza non ho problemi, dato che i permessi li ha solo aria2. Attacchi non ce ne sono e l' accesso ad aria2 in RPC è sotto password. Le variabili le ho messe in /etc che mi pare più adatto allo scopo.
Infine ho installato minidlna, che è veramente semplice da preparare, mettendo il percorso dei file da condividere nella configurazione ed attivare il service. Anche lì ho messo il riavvio se falliva.
Poi cosa ci fai con Upmpdcli ?
Se hai minidlna, i file video e audio saranno condivisi in DLNA. Mancherà la transcodifica, che potrebbe esserci al dispositivo finale. Normalmente io uso così.
Tra l' altro olinuxino non lo vedo di una potenza eccelsa da farti il lavoro di server e transcodifica realtime.
Siccome, sono supposizioni, meglio che provi.
F the saint
10 anni da questo forum ;)

pineout
Little John
Messaggi: 1264
Iscritto il: 10 luglio 2014, 9:08

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da pineout » 26 dicembre 2014, 18:06

Ehm scusate, ho detto una delle mie fesserie.

In effetti non esiste una configurazione per i runlevel, forse esiste una corrispondenza, ma col nome che ti ho dato non ci fai niente.
L'unico dubbio che mi dava era che l'avvio dei servizi in multi-user, quindi dopo basic (correggetemi se sbaglio) fosse troppo precoce per poter avviare il processo come altro utente.
Mi pareva di avere avuto un problema simile, ma chissiricorda.
copiare il multi-user.target (o comunque basarmi su di lui), quindi cambierebbe poco o nulla... o no?
piu' che il multiuser io copierei il graphical.target levandogli qualche dipendenza (tipo quella grafica)
e con questo potrei avere detto l'ultima castroneria :P

Avatar utente
TheSaint
Robin Hood
Messaggi: 7409
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da TheSaint » 27 dicembre 2014, 3:04

Riferiti ai livelli di SysV, un multi-user.target è già completo per operare, uguale al SysV livello 3. Come dicevo sopra, non serve il graphical.target per un server DLNA, eccetto si voglia accederci per fare eseguire lavori di grafica.

Usare un A20 non lo vedo molto quotato per elaborazioni in grafica. Vedevo un mio collega che voleva convertire filmati in MP4 con un netbook Samsung (Atom 2 core); spendeva dalle 3 alle 7 ore per 800Mb. Quindi se fosse nel caso, può anche starci, tanto è li sempre acceso.

Caso classico, che facevo anch'io. Scaricare un filmato e convertirlo in MP4, in modo che tutti i dispositivi che accedevano potessero riprodurre il file, con un VNC avviavo Handbrake e preparavo la lista dei processi. Comunque io ho un desktop con i7, che spende anche lui una o due orette per lo stesso volume.
Ora ho smesso, tanto non ho trovato audience familiare.

PS Credo che questo non è nel topico. Se hai ottenuto il risultato, per favore marcare [Risolto].
F the saint
10 anni da questo forum ;)

sanzoghenzo
Newbie
Messaggi: 10
Iscritto il: 21 luglio 2013, 14:54
Architettura: x86_64 (64bit)

Re: systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da sanzoghenzo » 27 dicembre 2014, 4:14

Grazie Saint, grazie a te ho imparato una delle tante cose che ancora non conoscevo di systemd: posso specificare l'utente direttamente dal file .service, e questo mi risolve la preoccupazione di far girare processi con premessi troppo elevati...
Più che risolto però mi viene da marcare il thread [aggirato], dato che il problema iniziale rimane ancora: non sono riuscito ad avviare i servizi utente come descritto nella wiki inglese di arch linux (nel frattempo ho migrato anche l'ultimo timer+servizio che rimaneva all'utente, quindi ora sono utente-free :) )!

Per ora il mio olinuxino è attaccato alle casse della mia stanza, e lo uso per ascoltare musica (principalmente da spotify) tramite mopidy (che è un MPD con qualche funzionalità in più). upmpdcli è un renderer dlna audio (e solo audio!), ossia riceve audio in streaming dagli altri device (il mio laptop o smartphone) e sfrutta mpd per riprodurlo sulle casse, così non devo preoccuparmi di attaccare i miei dispositivi alle casse ogni volta... insomma è il contrario dei minidlna. E se qualche amico mi viene a trovare e vuole farmi ascoltare una canzone può farlo senza attaccare lo smartphone al cavo (se ha un iphone oppure un Android con installato AllStream o simili). Ottimo per fare i party in cui ognuno porta le sue canzoni :)

Appena mi prendo la briga di attaccarci un bel disco 2TB SATA, installerò senz'altro minidlna e caricherò tutti i media per fare da server verso la smart TV di casa, sperando di non dover effettuare transcodifiche (devo ancora sondare le capacità della tv). Interessante potrebbe essere riuscire a inviare alla TV dello streaming via bittorent...

Al momento il reparto grafico non mi interessa; inizialmente avevo comprato questa piattaforma per fare una macchina per il retrogaming, ma il reparto grafico lasciava a desiderare (o meglio la combinazione di cpu, gpu e driver bacati non mi permettevano nemmeno di giocare a metal slug :P ); non escludo però la possibilità di utilizzarlo come alternativa a chromecast/appletv/smartTv se si dimostrerà all'altezza. Intanto mi diverto con il terminale, ssh e l'interfaccia seriale :)
pineout ha scritto:piu' che il multiuser io copierei il graphical.target levandogli qualche dipendenza (tipo quella grafica)
ora capisco quello che intendevi; se ho un po' di tempo proverò a fare questo tentativo...

buone feste a tutti e grazie per l'aiuto!!

Avatar utente
TheSaint
Robin Hood
Messaggi: 7409
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: [Risolto]systemd non avvia i servizi utente su olinuxino A20 (linux-sunxi arm7)

Messaggio da TheSaint » 27 dicembre 2014, 11:07

Facciamo un altro topico come far funzionare il renderer DLNA ?
F the saint
10 anni da questo forum ;)

Rispondi