Linux Juke-Box: qualche idea?

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
ilmich
Master
Master
Messaggi: 1646
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: Linux Juke-Box: qualche idea?

Messaggio da ilmich »

le strade per fare questa cosa sono diverse, io per il mio htpc uso il sistema del link che ti ho postato (tranne la configurazione dentro login.defs) unito ad un bash_profile che fa lo startx + uno .xinitrc che avvia xbmc.

mi rendo conto che non è la via piu 'elegante'.. pero' funziona bene :D
un altro suggerimento che mi è venuto in mente per ottimizzare e recuperare un po' di ram è togliere le console aggiuntive, lasciane al piu' una per le emergenze .. mi pare di aver letto(un sacco di tempo fa quindi potrei sbagliarmi) che ognuna occupa circa 2mb di ram

ciau
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

rik70
Iper Master
Iper Master
Messaggi: 2557
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Linux Juke-Box: qualche idea?

Messaggio da rik70 »

Lanciare cmus da utente specifico tramite inittab è fattibile.

Si può usare il runlevel 5 per testare il tutto, dato che è sostanzialmente inutilizzato.

Prendi un inittab "pulito" della slack e modificalo in questo modo:

Prima

Codice: Seleziona tutto

# These are the standard console login getties in multiuser mode:
c1:1235:respawn:/sbin/agetty 38400 tty1 linux
Dopo

Codice: Seleziona tutto

# These are the standard console login getties in multiuser mode:
c1:123:respawn:/sbin/agetty 38400 tty1 linux
In sostanza elimini il respawn di agetty sulla tty1 al runlevel 5, in modo che non appaia il prompt del login.

Poi alla fine del file inittab aggiungi:

Codice: Seleziona tutto

a5:5:respawn:/bin/su USERNAME -l -c "/bin/bash --login -c cmus 2>/dev/null"
sostituendo a USERNAME il nome utente.

Riavvii al runlevel 5 e dovrebbe partire cmus.

Potrebbe però non essere una soluzione elegante e forse nemmeno tecnicamente corretta.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3978
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Linux Juke-Box: qualche idea?

Messaggio da joe »

La soluzione migliore o più elegante non so quale sia. Potremmo considerare qualche opzione:

Codice: Seleziona tutto

$ cat /usr/local/sbin/autostartup
#!/bin/sh
#
/usr/bin/autologin &
su - joe -c "/usr/bin/cmus"
#USER=joe
#HOME=/home/joe
#/usr/bin/startx
Lo script poi si fa partire come visto da inittab
Questa soluzione sembra buona, ma non si esce più da cmus, ovvero quando si esce il programma, lui riparte.
Potrebbe anche essere un comportamento utile per certi scopi... anche nel mio caso andrebbe bene.
Come diceva qualcuno prima vi si potrebbe aggiungere in coda il comando "halt" in modo che chiudendo il programma, venga arrestato tutto il sistema. Ma... c'è forse un'opzione più semplice:
perchè chiudere il programma cmus e non arrestare semplicemente il sistema col tasto power? Mi sembra più intutitivo e diretto soprattutto uno non deve ricordarsi di schiacciare "q" e poi "y": schiaccia direttamente il tasto power cui deve però essere associato lo script di halt....
Per i miei scopi questa soluzione è bouna. Fa quello che serve ecc.
Per quanto riguarda l'amministrazione, si può lasciare la tty2 in cui loggarsi come root. Ma volendo potremmo anche loggarci come utente semplice anche là magari per mettere mano a qualche configurazione specifica.
Se si riuscisse ad uscire da cmus senza intoppi forse si potrebbe anche risparmaiare la tty2... Forse basta modificare in qualche modo lo script autostartup. Magari faccio qualche prova...

Proverò senz'altro anche l'avvio diretto via intittab suggerito da rik70, anche se non ho capito queli potrebbero essere gli effetti collaterali.... proverò

rik70
Iper Master
Iper Master
Messaggi: 2557
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Linux Juke-Box: qualche idea?

Messaggio da rik70 »

Se il loop di cmus non è un problema, dato che il pc deve fare da GiùBocs, secondo me il metodo corretto è quello dell'autologin (anche col programma in C che funziona bene) + il .bash_profile.

Leggevo nel wiki di Arch che far partire programmi o la sessione X con inittab + su, bypassando il login, non è proprio il massimo.

Sempre nel suddetto wiki trovi quello che ti serve.

P.s.

Potresti anche avviare una sessione X, lanciando cmus con xterm una volta beccata la geometria corretta per riempire tutto lo schermo.

Es, con una risoluzione di 1024x768 su .xinitrc puoi mettere:

Codice: Seleziona tutto

exec xterm -geometry 116x40+0+2 -e cmus
E il .bash_profile in questo modo:

Codice: Seleziona tutto

if [[ -z $DISPLAY && ! -e /tmp/.X11-unix/X0 ]] && (( EUID )); then

 exec startx -- -dpi 96 vt7 2>/dev/null

fi

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3978
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Linux Juke-Box: qualche idea?

Messaggio da joe »

No, meglio di no, X non è indispensabile sul jukebox. Perche buttare della ram in più, tanto più avendone già pochina...?
Sono io che ho confuso le acque facendo l'esempio dello startx automatizzato all'avvio... ho fatto proprio quell'esempio perchè mi tornerebbe comodo sul portatile che uso tutti i giorni, preservare l'init in runlevel "3" ovvero in console, ma allo stesso tempo avviare al boot la sessione grafica.
Infatti quando sono davanti al monitor ho X avviato e fluxbox con browser client di posta e un terminale con una sessione screen... più altri eventuali programmi aperti. Spesso però me ne vado e lascio terminare alcune operazioni, per esempio qualche download o altro e il tutto cerco di infilarlo nella sessione screen. In questa fase non presidiata la sessione grafica è inutile e di solito termino l'X server, lasciando la sessione screen in background nell'ambiente testuale "runlevel 3".
Ma questo è un problema che esula dalla storia del jukebox. Che ha esigenze ben più limitate. Restiamo in tema quindi, eventualmente per l'avvio automatico di X apro un altro topic ad hoc.

Ricapitolando:

Codice: Seleziona tutto

0- Niente server X sul jukebox.
1- Dotazione di una console utilizzabile all'occorrenza in fase di manutenzione (anche aggiunta canzoni da un device esterno tipo usb storage).
Quindi ricapitolo nuovamente l'uso tipico dell'utente:

Codice: Seleziona tutto

1- accende il PC e si trova davanti cmus.
2- preme "2" per ottenere la playlist e quindi sceglie la canzone con le freccie e invio.
3- impara qualche tasto di controllo di cmus, per esempio il tasto pausa "c", il tasto stop "v"... non c'è molto altro.
4- finito l'ascolto spegne il pc premendo il pulsante power.
Ora vediamo l'uso dell'amministratore (io). Come accennavo le operazioni ordinarie saranno quelle di aggiungere brani ed eventualmente rimuoverne altri. In pratica mi serve una console da cui accedere come root e montare i vari filesystem esterni da cui copiare i nuovi brani da aggiungere.
Per quanto riguarda la manutenzione straordinaria, o l'utilizzo del PC per altri scopi usando un utente (io) semplice differente dall'utente interessato esclusivamente al jukebox, occorrerà in ogni caso ottenere almeno una console.
Pertanto l'utilizzo tipico che ne farò io potrebbe essere il seguente:

Codice: Seleziona tutto

1- avvio il PC e mi trovo davanti cmus
2- chiudo cmus e ottengo una console o un prompt in cui fare il login (come root o come "joe" utente semplice)
3- effettuo le operazioni che mi occorre, solitamente lavoro con una sessione screen, pertanto non mi servirà più di una console...mi basta la tty1 per capirci.
4- quando ho finito, o premo il tasto power per arrestare il sistema, oppure faccio il logout e rientro come utente "jukebox" e avvio cmus in modo da aggiungere alla playlist i nuovi brani presenti nel filesystem del sistema.
5- infine premo il tasto power per arrestare il tutto... spero che questo preservi il salvataggio delle modifiche alla playlist di cmus.
Pertanto sarebbe il caso di eliminare il loop di cmus. Non tanto per l'utente normale quanto per me quando devo accedere al sistema per le operazioni descritte. Forse usando il .bash_profile dell'utente "jukebox" + il login automatico... dovrebbe accadere che spegnendo cmus torno alla console già aperta in precedenza. Non dovendola riaprire, non vado a rieseguire il bash_profile e riesco a fare il login come root ecc ecc.
Forse sarà la soluzione più semplice... provo e faccio sapere..

rik70
Iper Master
Iper Master
Messaggi: 2557
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Linux Juke-Box: qualche idea?

Messaggio da rik70 »

Bhè, l'autologin + il loop di cmus sulla tty1 non dovrebbero darti fastidio per questioni amministrative. Hai a disposizione le altre console, da cui puoi loggarti con un altro utente. Con semplici modifiche a inittab puoi scegliere quante e quali tty lasciare attive.

Ad es, tieni la tty1 per il loop+autologin e la tty2 per amministrare. Avviato il sistema, ti basta un semplice ALT+F2 per fare il login come utente "amministratore" senza bisogno di terminare cmus per "liberare" la tty1.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3978
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Linux Juke-Box: qualche idea?

Messaggio da joe »

Si questo d'accordo, ma tenere la tty2 costa qualcosina in termini di RAM. Più per pignoleria che altro, volevo evitarmi altre tty oltre la numero 1. Si può fare? sì.
Ecco una prova che ho fatto e il cui esito sembra funzionante.
inittab:

Codice: Seleziona tutto

c1:2345:respawn:/sbin/agetty -n -l /usr/bin/autologin 38400 tty1 linux
autologin è l'eseguibile ottenuto compilando il programmino in C con gcc.

.bash_profile

Codice: Seleziona tutto

. .bashrc
if [[ -z $DISPLAY && $(tty) = /dev/tty1 ]]; then
  cmus
  bash
  # Could use xinit instead of startx
  #exec xinit -- /usr/bin/X -nolisten tcp vt7
fi
E questo funziona così:
1- accendo il PC e ottengo cmus
2- esco da cmus e ottengo una shell (non di login... questo spezza finalmente il loop di cmus).
3- posso fare il login come root o altro utente ecc ecc....
4- chiudendo la shell riavvio il loop e riottengo cmus.... pazienza.

Il funzionamento è OK per l'uso jukebox+amministrazione+varie ed eventuali. Non necessita di altre tty oltre la 1.
Ma consuma realmente meno ram rispetto al lasciare aperta una tty in più? Non ne sono sicurissimo? voi che dite?

rik70
Iper Master
Iper Master
Messaggi: 2557
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Linux Juke-Box: qualche idea?

Messaggio da rik70 »

Il problema sai qual'è?

Se il tizio per sbaglio chiude cmus (premendo ad esempio q e poi y) si ritrova sulla console e poi presumo non sappia cosa fare.

Non credo che tenere due tty attive cambi in modo così radicale il consumo di ram rispetto ad una sola. Poi ovviamente sei tu che devi decidere ;)
Semmai, devi eliminare tutti quei processi caricati al boot che non servono allo scopo.

P.s.

Per il .bash_profile, a questo punto, se decidi di non usare X+xterm, non ti serve quel

Codice: Seleziona tutto

if [[ -z $DISPLAY && $(tty) = /dev/tty1 ]]; then
[...]
Dovrebbe bastare:

Codice: Seleziona tutto

cmus
o per il loop:

Codice: Seleziona tutto

exec cmus

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3978
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Linux Juke-Box: qualche idea?

Messaggio da joe »

No, ma ciò che mi salva dal loop penso sia l'aggiunta dell'invocazione di bash dopo cmus. Cioè se metto

cmus

quando lo chiudo, lui poi riparte.... o no? mi fai venire il dubbio... riprovo và.
Inoltre la verifica che stiamo in tty1 penso vada fatta lo stesso, almeno se si decide di usare anche la tty2 perchè se accidentalmente io vado sulla tty2 e faccio il login come "jukebox" si avvia il loop anche sulla tty2 e me la gioco.

Per il resto hai ragione. Il loop di cmus può avere la sua utilità. Ed è vero anche che la tty2 non dovrebbe consumare che un paio di MB in più di ram.... si che ne abbiamo solo 64 in gioco, ma vi saranno pur sempre degli altri punti ben più ingombranti da limare.

Faccio ancora qualche prova, poi prendo una decisione... si può sempre trnare indietro e non è nulla di importante alla fine. Si faceva solo per discorrere su quali sono i pro e i contro di soluzioni diverse.,

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3978
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Linux Juke-Box: qualche idea?

Messaggio da joe »

Confermo, lo script bash_profile usato sta volta è il seguente:

Codice: Seleziona tutto

. .bashrc
if [[ -z $DISPLAY && $(tty) = /dev/tty1 ]]; then
  cmus
fi
Funziona e permette di riottenere la shell una volta chiuso cmus. Credo che userò questa soluzione almeno per il momento.


Ok, andiamo avanti.
Sarebbe interessante capire quali servizi e varie ed eventuali potrei escludere dall'avvio automatico al boot per risparmiare ram e tempo di avvio. Da dove partire?

rik70
Iper Master
Iper Master
Messaggi: 2557
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Linux Juke-Box: qualche idea?

Messaggio da rik70 »

Altrimenti c'è un'altra strada per tenere una sola console attiva con autologin+il loop di cmus:
usare i runlevel.

Cioè potresti fare in modo che l'autologin e il loop di cmus partano solo al runlevel 5.

In questo modo puoi tenere solo una tty attiva, e quando devi amministrare passi al bootloader un runlevel diverso dal 5: il 2 o il 3.

In questo modo, per esempio, al runlevel 3 potrai loggarti anche con l'utente che gestisce cmus senza che parta il loop.

I passaggi sono questi:

1 - impostare come runlevel predefinito il 5 (# modifica a '/etc/inittab')

2 - lanciare l'autologin su tty1 solo alrunlevel 5( # altra modifica a '/etc/inittab')

3 - impostare .bash_profile in questo modo:

Codice: Seleziona tutto

# loop di cmus solo al runlevel 5
if [ $(/sbin/runlevel 2>/dev/null | cut -d' ' -f2) = 5 ]; then
 exec cmus
fi

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3978
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Linux Juke-Box: qualche idea?

Messaggio da joe »

Ho un'obiezione (lo ammetto è un'obiezione puntigliosa... ma riguarda una situazione piuttosto probabile), immagina la scena.
L'utente jukebox sta ascoltando i suoi brani quando le/gli viene in mente "quel pezzo veramente bello".
Si precipita da me e mi dice: hey joe non è che potresti mettermi su quel pezzo là...
E io cosa faccio?
cerco e scarico il pezzo voluto o lo prendo da un CD.
Vado al jukebox e inserisco il supporto contente il nuovo brano.
Poi, come lo monto? serve root no? o l'automount (che non so sinceramente da dove iniziare per realizzarlo... meglio root che servirà anche per altre cose).
Ok, ma per entrare come root devo in qualche modo fare il login e la macchina è già accesa, cmus è già avviato e siamo in runlevel 5.
Per aggiungere un brano sono costretto a riavviare il PC e passare il runlevel 3 al bootloader.
Ora se si trattasse di un PC moderno e rapido nel boot non sarebbe poi un grosso problema (anche se non mi va giù di riavviare... questione di pelle...). Ma il PC è vecchio e lento, per riavviarsi macina macina e non finisce mai....
Per cui la soluzione del runlevel la vedo scomoda.
Molto meglio a quel punto tenersi la tty2 accesa anche se ciuccia un po' di ram in più, tanto non sarà quella a fare la differenza.
Secondo me ancora meglio è sostituire il loop di cmus con la possibilità di uscire dal programma e ottenere una shell in tty1. Non si deve riavviare, e non si lascia accesa una tty2 inutilmente.

L'unica pecca è come dici tu che l'utente "jukebox" può trovarsi spaesato qualora dovesse premere la sequenza di tasti "q", "y".
È un'ipotesi plausibile, può succedere.... e quando succederà mi armerò di pazienza e spiegherò come fare per tornare al jukebox:
ovvero digitare "cmus" e premere invio.
Comunque le possibilità per avviare il tutto in modo automatizzato, con rispettivi effetti collaterali mi sembrano chiare. E si tratta di sceglierne una. Quella che dicevo mi pare per il momento la più utile ai miei fini, o comunque quella che mi piace di più e la voglio provare per prima.
Grazie mille dell'aiuto, da solo avrei impiegato molto più tempo per trovarla... e avrei sicuramente molti più dubbi.


Adesso come dicevo, vorrei concentrare l'attenzione sui servizi non indispensabili che potrei tagliare.
Se doveste fare una classifica, qual è il demone inutilizzato che consuma più ram?
Pensando ad una slackware-12.2 standard installata senza X.

rik70
Iper Master
Iper Master
Messaggi: 2557
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Linux Juke-Box: qualche idea?

Messaggio da rik70 »

L'obiezione non è affatto puntigliosa, anzi... :)

Se il PC, com'è giusto che sia, arranca al boot, non ha senso la procedura che suggerivo. Era giusto un modo per cercare di tenere una sola console e avere comunque il controllo della macchina, nonostante il loop di cmus. Se togli il loop, quanto detto sopra ha poco senso.

Però, perdonami se insisto e faccio io il puntiglioso: ma sei sicuro che tenere 2 tty attive ti tira giù la poca ram che ha il piccoletto?
Ho fatto un boot sul runlevel 3 (passando al bootloader il parametro quiet) con sole 2 tty attive - la 1 e la 6 - e dopo il login `free -m` mi dice che la memoria allocata è 60MB.
Rifaccio lo stesso boot con la sola tty1 attiva e la ram utilizzata è 61MB.
Eppure ne ho di roba che parte da rc.local e che non è presente nella slack pulita.
So che tutto questo non è attendibile, e che la quantità di RAM installata è importante pure per l'avvio del sistema. Però mi chiedo: da te com'è la situazione? Quanta ram rimane libera dopo il login?

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3978
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Linux Juke-Box: qualche idea?

Messaggio da joe »

Sinceramente adesso non posso fare la prova perchè ho già trasferito il PC. Purtroppo non posso neanche andare a fare una prova rapida per il momento per via di un banalissimo problema: mi serve un riduttore di presa altrimenti non posso attaccare la ferraglia alla corrente.... oppure cambio presa... in entrambi i casi adesso non riesco a fare il lavoretto.
Tutte le prove che ho fatto adesso le ho fatte dal mio notebook con slack-13.1.
Infatti ora dovrò ricompilare cmus e il programmino autologin in chroot slack-12.2. Qundi metterò in una chiavetta quei due e la copia dell'inittab modificato... Poi metto tutto sul vecchio PC quando riesco a dargli corrente.

Appena ci metto mano mi annoto l'output di free -m e faccio sapere.
Ad ogni modo non penso che la presenza della tty2 assorba tutta sta memoria, sicuramente è più economica la soluzione che prevede la sola tty1... Poi come dicevamo è una scelta come un'altra... sia la tua con loop+tty2 che la mia senza loop e senza tty2 sono valide: l'importante è ottenere lo scopo.
Mi pare che ci siamo riusciti.... poi vedremo come va il test con l'utenza "caprina".

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Linux Juke-Box: qualche idea?

Messaggio da conraid »

per cambiare runlevel basta usare telinit

Rispondi