Articles plus anciens

Dernier article listant les possibilités pour démarrer freevo automatiquement au démarrage de votre HTPC.

Dans le premier article le démarrage se faisait via l’auto-login d’un utilisateur et l’utilisation du fichier bash_profil.

Enfin dans cet article, j’expliquai la mise en œuvre d’un script d’init, par contre freevo était lancé avec le user root et je concluais l’article en indiquant que j’expliqerai comment utiliser start-stop-deamon pour changer cet utilisateur.


Après pas mal d’essai je peux conclure que l’utilisation start-stop-deamon est un echec.

Pour des raisons qui m’échappent (surement des histoire de PID), on peut démarrer Freevo (et ses composants) avec start-stop-deamon mais pas l’arrêter.


Donc dans le script suivant j’ai contourné le problème à coup de su.


Création du fichier de configuration

Ce fichier permet de déterminer les processus freevo à lancer (recordserver, werserver, etc), le user réalisant ces lancements, et les option des différents composant.

Pour le différencier du précédent je l’ai nommé boot_freevo.conf et il est localisé dans /etc/freevo.


##############################################################################
# Component to start
##############################################################################
 
# Mode to start Freevo itself. Possible values are
#
# no:     don't start Freevo
# yes:    start Freevo on startup. You should only use this when the
#         computer is for Freevo only or you use Freevo with a DXR3
# daemon: start Freevo in daemon mode. The daemon will wait for you to
#         press QUIT or POWER on your remote and will than start
#         Freevo. After Freevo shut down, the daemon will wait again.
#
# You don't need a X server running to start Freevo from init. If
# needed, Freevo will start a X server on its own. Make sure your X
# server can handle the resolution defined in /etc/freevo/freevo.conf
FREEVO="yes"
 
# Mode the start the webserver. Possible values are "no" and "yes".
# If you start the webserver with Freevo itself, you should say "no" here.
WEBSERVER="no"
 
# Mode the start the recordserver. Possible values are "no" and "yes".
RECORDSERVER="yes"
 
# Mode the start the encodingserver. Possible values are "no" and "yes".
ENCODESERVER="no"
 
##############################################################################
# Options
 
##############################################################################
 
# User that freevo should be run as
# useless if ROOTUSERINFO=yes
FREEVO_USER="freevo"
 
# Set the root USER and HOME variables. Some distros need this to work.
# Possible values are "no" and "yes".
ROOTUSERINFO="no"
 
# Do we have a mouse and/or keyboard attached to this pc.
# this sets SDL variables for smooth operation if no keyboard or mouse.
# Possible values are "no" and "yes".
HAVEMOUSE="yes"
HAVEKEYBOARD="yes"
 
# Use setleds to set numlock before starting freevo. THis is necessary
# for some SDL fbcon setups.
# Possible values are "no" and "yes".
SETNUMLOCK="no"
 
##############################################################################
# Internals Options
##############################################################################
# change this if you know what you are doing
 
## where freevo shell script lives. used to call freevo
FREEVO_HOME="/usr/local/bin"
 
## Options for freevo daemon
F_DAEMON_OP="daemon"
 
## Options for freevo not as daemon
F_OP="-fs"
 
## Options for freevo record server
F_RECORD_OP="recordserver"
 
## Options for freevo encoding server
F_ENCODE_OP="encodingserver"
 
## Options for freevo webserver
F_WEBSERVER_OP="webserver"


Création du scripts d’init

Comme dans  l’article précédent créer ce fichier dans /etc/init.d et le nommer freevo

#! /bin/bash
 
### BEGIN INIT INFO
# Provides:          freevo
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4
# Default-Stop:      0 1 6
# Short-Description: starts Freevo
# Description:       starts the open source HTPC media centre software Freevo
### END INIT INFO
 
# Get startup config file
test -f /etc/freevo/boot_freevo.conf || exit 0
. /etc/freevo/boot_freevo.conf
 
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/games
DAEMON=$FREEVO_HOME/freevo
NAME=freevo
DESC=freevo
 
if [ "$ROOTUSERINFO" == "yes" ]; then
    USER=root
    HOME=/root/
    export USER HOME
fi
 
test -f $DAEMON || exit 0
 
case "$1" in
  start)
 # Let configure environment
 if [ "$SETNUMLOCK" == "yes" ]; then
  echo "Setting NUMLock on"
  setleds +num
 fi
 if [ "$HAVEKEYBOARD" == "no" ]; then
  echo "Setting no keyboard"
  export SDL_NOKEYBOARD=true
 fi
 if [ "$HAVEMOUSE" == "no" ]; then
  echo "Setting no mouse"
  export SDL_NOMOUSE=true
 fi
 
 # Let start freevo and components
 if [ "$FREEVO" == "daemon" ]; then
  echo "Freevo start as a deamon..."
  su -l ${FREEVO_USER} -c "$DAEMON $F_DEAMON_OP &" &> /dev/null
 elif [ "$FREEVO" == "yes" ]; then
  echo "Freevo start..."
  su -l ${FREEVO_USER} -c "$DAEMON $F_OP &" &> /dev/null
 fi
 
 if [ "$RECORDSERVER" == "yes" ]; then
  echo "Record server start..."
  su -l ${FREEVO_USER} -c "$DAEMON $F_RECORD_OP --start &" &> /dev/null
 fi
 if [ "$WEBSERVER" == "yes" ]; then
  echo "Web server start..."
  su -l ${FREEVO_USER} -c "$DAEMON $F_WEBSERVER_OP --start &" &> /dev/null
 fi
 if [ "$ENCODESERVER" == "yes" ]; then
  echo "Encode server start..."
  su -l ${FREEVO_USER} -c "$DAEMON $F_ENCODE_OP --start &" &> /dev/null
 fi
 ;;
  stop)
 if [ "$FREEVO" != "no" ]; then
  echo "Freevo stop..."
  su -l ${FREEVO_USER} -c "$DAEMON --stop" &> /dev/null
  sleep 3
 fi
 if [ "$RECORDSERVER" == "yes" ]; then
  echo "Record server stop..."
  su -l ${FREEVO_USER} -c "$DAEMON $F_RECORD_OP --stop" &> /dev/null
  sleep 3
 fi
 if [ "$WEBSERVER" == "yes" ]; then
  echo "Web server stop..."
  su -l ${FREEVO_USER} -c "$DAEMON $F_WEBSERVER_OP --stop" &> /dev/null
 fi
 if [ "$ENCODESERVER" == "yes" ]; then
  echo "Encode server stop..."
  su -l ${FREEVO_USER} -c "$DAEMON $F_ENCODE_OP --stop" &> /dev/null
 fi
 
 if pgrep -f "python.*freevo" &> /dev/null ; then
  echo "At least one Freevo component still running, kill 'em all..."
  kill `pgrep -f "python.*freevo" -d" "` &> /dev/null
 fi
 ;;
  restart|force-reload)
 echo "Restarting..."
 $0 stop
 sleep 1
 $0 start
 ;;
  *)
 N=/etc/init.d/$NAME
 echo "Usage: $N {start|stop|restart|force-reload}" >&2
 exit 1
 ;;
esac
 
exit 0



Installation du script

Comme précedemment, on installera ce script avec  :

sudo update-rc.d freevo defaults 99


Puis on pourra démarrer freevo en faisant :

sudo /etc/init.d/freevo start


Conclusion :

Cette méthode est à mon avis la méthode ultime puisqu’elle cumule les avantages des 2 précédentes plus quelques une supplémentaire :

  • Il n’y pas d’utilisateur de loggué
  • Les “différents” processus freevo à lancer sont paramétrés dans un fichier de configuration
  • Les process sont exécutées avec le user paramétré dans le fichier de configuration
  • Le paramétrage des lignes de commandes à lancer est faite dans le fichier de configuration
  • Le kill des process résiduel est plus propre


Enfin pour finir quelques mots de précaution :

  • Ce script à été testé avec Freevo 1.9.0 sous Jaunty
  • Seul les composants recordserver et freevo lui-même ont été testé (pas l’encodingserver ni le webserver)
  • La configuration clavier/souris repris du script précédent, lui même repris des sources Freevo n’a pas été testé


Bref ce script est fournis « as is » je ne garantis pas qu’il fonctionnera sur toutes les plateformes….


Comme indiqué ici je viens de baculer complétement sur Ubuntu (adieu XP), le dernier point qui restait à traiter pour faire cette bascule était de trouver un remplaçant à MS Money.

Après avoir testé divers logiciel j’ai selectionné KMyMoney.

Ne voulant pas perdre tout mon historique (depuis 2002) il me fallait importer les comptes Money dans KMyMoney, voici la procédure suivie.

Pour info j’utilisais Money 2004, les procédures peuvent donc changer si vous utilisez une autre version.


Export Money

Sur Money, exporter les comptes un à un au format QIF

Copier les fichiers générés sous Windows vers Ubuntu.


Traitement des fichiers

Les fichiers QIF généré n’ont pas pu être importés tel quel sous KMyMoney, 2 raisons :

  • le format de date : jj/mm’aaaa
  • les caractères spéciaux (é, è, à, etc.) non reconnus


Formatter la date

On veut trnasformer une date au format jj/mm’aaaa en jj/mm/aaaa.

Pour cela en ligne de commande sous Ubuntu :

sed 's/\(D[0-9]\{2\}\/[0-9]\{2\}\)./\1\//g' fichierExport.qif > fichierExportDateOK.qif


Remplacer les caractère spéciaux

La solution a été trouvée ici : http://forum.ubuntu-fr.org/viewtopic.php?pid=2384768#p2384768


Créer un fichier convertAccent.c et y copier :

 
 
  #include <stdio.h>
  int main(void)
  {
        int c = getchar();
 
        while (c != EOF)
 
                {
 
                switch (c)
 
                        {
                        case 224: putchar(195); putchar(160); break;
                        case 226: putchar(195); putchar(162); break;
                        case 231: putchar(195); putchar(167); break;
                        case 232: putchar(195); putchar(168); break;
                        case 233: putchar(195); putchar(169); break;
                        case 234: putchar(195); putchar(170); break;
                        case 235: putchar(195); putchar(171); break;
                        case 238: putchar(195); putchar(174); break;
                        case 239: putchar(195); putchar(175); break;
                        case 244: putchar(195); putchar(180); break;
                        case 246: putchar(195); putchar(182); break;
                        case 249: putchar(195); putchar(185); break;
                        case 251: putchar(195); putchar(187); break;
                        case 252: putchar(195); putchar(188); break;
 
                        case 192: putchar('A'); break;
                        case 194: putchar('A'); break;
                        case 200: putchar('E'); break;
                        case 201: putchar('E'); break;
                        case 202: putchar('E'); break;
                        case 203: putchar('E'); break;
                        case 206: putchar('I'); break;
                        case 207: putchar('I'); break;
                        case 212: putchar('O'); break;
                        case 214: putchar('O'); break;
                        case 217: putchar('U'); break;
                        case 219: putchar('U'); break;
                        case 220: putchar('U'); break;
 
                        case 128: putchar(226); putchar(130); putchar(172); break;
 
                        default: putchar(c);
                        }
 
                c = getchar();
 
                }
 
        return(1);
  }


Le compiler :

make removeAccent.c


Passer les fichiers qifs à la moulinette :

cat fichierExportDateOK.qif | ./convertAccent > fichierExportOK.qif


Importer dans KMyMoney

Il ne reste plus qu’a installer KMyMoney :

sudo aptitude install kmymoney2


Puis importer les fichiers QIF modifiés, Money n’ayant pas exporté les catégorie il conviendra de les recréer au fur et à mesure que le processus d’import en rencontre une nouvelle.



Grande nouvelle depuis 3 jours lorsque sweetHome boot, c’est Ubuntu qui apparait.

XP ne sera utilisé qu’en cas de nécessité absolue.


Dans la foulée j’ai mis l’article http://voidandany.free.fr/index.php/architecture-domestique à jour.

Lorsque l’on installe Jaunty on a le choix de crypter le home de son utilisateur, mais il se peut que l’on veuille enlever le cryptage (par exemple parce que l’autologin GDM ne marche pas avec)


La mauvaise nouvelle c’est que ce n’est pas possible, la bonne c’est qu’on peut contourner le problème en supprimant / re-créant l’utilisateur, voici comment.


Soit mon utilisateur mon_user dont le home est entièrement crypté.

Se connecter en mon_user sur Gnome, le simple fait de faire ça monte automatiquement le home et le rend accessible en clair.


Sauvegarder le home


Pour cela on crée un autre répertoire sous home et on copie le contenu de l’utilisateur en cours dedans :

sudo mkdir /home/mon_user-save
 
sudo chown mon_user:mon_user/home/mon_user-save/ -R
 
cd /home/mon_user
 
cp -ax . /home/mon_user-save/


Lister les groupes de votre utilisateur

Pour cela on utilise la commande :

groups

Qui renvoi quelque chose comme ça :

mon_user adm dialout cdrom plugdev lpadmin admin sambashare


Supprimer l’utilisateur

Se connecter avec un autre utilisateur ou en mode sans echec root, puis supprimer l’utilisateur « à décrypter » en supprimant son home :


sudo deluser --remove-home mon_user


Re-créer l’utilisateur

Mais cette fois sans home crypté :

sudo adduser mon_user

Lister les groupes du nouvel utilisateur :

groups mon_user


Normalement il ne devrait il avoir que :

mon_user


Lui ajouter ceux qui lui manque :

adduser mon_user adm
 
adduser mon_user dialout
 
adduser mon_user cdrom
 
adduser mon_user plugdev
 
adduser mon_user lpadmin
 
adduser mon_user admin
 
adduser mon_user sambashare


Restaurer les documents de l’ancien utilisateur (qui avait le même nom) :

sudo cp -ax /home/mon_user-save/* /home/mon_user/
 
sudo chown mon_user:mon_user/home/mon_user/ -R


Rebooter et se connecter avec mon_user, tout devrait être là et disponible sans cryptage….



Source / inspiration :

http://stesindus.blogspot.com/2009/04/encrypted-home-in-ubuntu-jaunty-with.html




Il y a peu j’ai travaillé sur sweetHome en vue de me passer définitivement de Windows XP, après avoir installé les logiciels qu’il me fallait, fait un peu de paramétrage et de cosmétique (thème Wild-shine), j’ai mis l’autologin GDM et fait un reboot final.

Et là surprise un bel écran noir…


Après quelque recherche il s’agit d’un bug référencé qui intervient quand on met en oeuvre l’autologin GDM avec un utilisateur dont le home est crypté (option par défaut sous Jaunty).


Tout d’abord voici comment reproduire aisément le bug puis ensuite comment s’en sortir.


Continuer la lecture