Regole del forum
1) Specificare nome e versione del porting.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
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.
Salve a tutti.
Da qualche giorno a questa parte, durante lo spegnimento del pc, è comparso il messaggio: "Cannot set hardware clock to system time (localtime)".
Indagando, ho scoperto tramite il comando
che il device /dev/rtc è occupato.
Una rapida occhiata ai processi che lo usano non ha restituito nulla.
In un primo momento ho pensato si trattasse di qualcosa inerente al kernel (il modulo RTC per esempio), ma non avendolo ricompilato o aggiornato di recente, lo escluderei (anche perchè fino a qualche giorno fa non avevo questo errore durante lo spegnimento).
Cercando tramite Google una risposta mi sono imbattuto in un bugzilla di Ubuntu nel quale un utente segnala l'interferenza di timidity++ (che ho installato da sorgenti un mesetto fa) con il RTC di sistema. Chiudendo timidity risulta di nuovo possibile accedere all'hardware clock.
Ho già in mente una soluzione temporanea al problema, ma vorrei sapere se qualcun altro è nella mia stessa situazione o ci è passato.
Ultima modifica di 414N il mer 19 mar 2008, 16:50, modificato 1 volta in totale.
Se a qualcuno può interessare ho anche preparato un file rc.timidity utile per lanciare/fermare/rilanciare timidity senza doverlo fare manualmente.
Non è il massimo della finezza ma sembra funzionare:
#!/bin/bash
# Variabili globali
TIMIDITYPID=""
TIMIDITYPATH="/usr/local/bin/timidity"
# Funzione che ricava il PID di timidity dall'output di ps
getpid () {
TIMIDITYPID=`ps aux | grep "$TIMIDITYPATH" | grep -v grep | awk '{ print $2}'`
}
# Funzione che lancia Timidity (se non è già in esecuzione)
start () {
if [ "$1" ]
then
echo "Timidity is already running (PID=$1)"
exit 1
else
if [ -x "$TIMIDITYPATH" ]
then
echo -n "Starting Timidity..."
"$TIMIDITYPATH" -iAD 1>/dev/null &
echo "done"
fi
fi
}
# Funzione che ferma Timidity (se è in esecuzione)
stop () {
if [ "$1" ]
then
echo -n "Stopping Timidity..."
kill -9 "$1"
echo "done"
else
echo "Timidity is not running"
exit 1
fi
}
# Funzione che rilancia Timidity (sia nel caso che sia
# in esecuzione, sia che non lo sia)
restart () {
echo "Restarting Timidity..."
getpid
if [ "$TIMIDITYPID" ]
then
stop "$TIMIDITYPID"
sleep 1
fi
start ""
echo "Timidity restarted"
}
# Ricavo innanzitutto il PID di Timidity se è in esecuzione
getpid
# Decido il da farsi
case "$1" in
start)
start "$TIMIDITYPID"
;;
stop)
stop "$TIMIDITYPID"
;;
restart)
restart "$TIMIDITYPID"
;;
*)
echo "Usage: `basename "$0"` start|restart|stop"
exit 1
;;
esac
exit 0
Andrebbe piazzato in /etc/rc.d insieme ai suoi compagni di merende e reso eseguibile (chmod +x rc.timidity da root).
Per lanciarlo all'avvio, aggiungete:
#!/bin/bash
# Uccide timidity
if [ -x /etc/rc.d/rc.timidity ]
then
/etc/rc.d/rc.timidity stop
fi
e spostando l'esecuzione di /etc/rc.d/rc.local_shutdown all'interno di rc.6 prima del salvataggio dell'ora attuale sul hardware clock.
La soluzione però mi sembra poco elegante e potrebbe portare ad avere altri problemi nel caso di altri comandi presenti in rc.local_shutdown.
Qualcuno ha un consiglio?