Mot-clé - Systemd

Fil des billets

lundi 22 décembre 2014

Upgrade sans filet !

logo openSUSE

Dans ce billet, je vais vous expliquer la procédure, que j'ai suivi pour mettre à jour (rapidement, et donc sans sauvegarde) mon système Linux (openSUSE).

Ceci a été décidé sur un coup de tête. Après un n-ième ras-le-bol suite à une mise à jour de sécurité, m'obligeant à démarrer uniquement en mode « dégradé » [1].

Note

[1] La mise à jour de sécurité n'a pourtant pas impacté la gestion de la carte graphique.

Lire la suite...

dimanche 29 janvier 2012

Exécuter une application WSGI avec systemd sous openSUSE

Ce billet est une « mise à jour » du précédent, concernant le déploiement de Mercurial, sous forme d'application WSGI.

Le fait de passer par le script /etc/init.d/after.local, pour lancer une telle application, ne m'a pas entièrement satisfait. C'est pourquoi j'ai décidé de me repencher sur ce point.

À la fin de l'article, j'évoqué, Gunicorn, comme serveur WSGI, en proposant même un exemple de fichier .service. Je me suis donc inspiré de celui-ci pour en créer un.

Le but c'est de pouvoir exécuter le script, hgweb.wsgi au démarrage.

Je vous propose donc, wsgi-hg.service. Il permet de lancer (ou d'arrêter) notre script WSGI. Il n'y a rien de particulier, à part la condition ConditionPathExistsGlob, qui me sert à tester si un fichier .wsgi (en réalité hgweb.wsgi) est présent sur le serveur, si c'est le cas, le service pourra être lancé.

Il faut bien sur, avoir correctement configuré son serveur Web. Par exemple pour Nginx :

[...]

    # Subdomain settings
    #
    # Mercurial
    #
    server {
	listen 80;
	server_name hg.errements.net;

	access_log /var/log/nginx/access-hg.log;

	location / {
		root /srv/www/htdocs/vhosts/hg;
		autoindex	off;

		proxy_path	http://127.0.0.1:8500;
		proxy_set_header	Host	$host;
	}
    }

[...]

Mais on peut aller encore plus loin, actuellement dans notre script wsgi, le socket réseau (le port, et l'adresse IP) sont codés en « dur ». On pourrait les passer en paramètre. Il faut pour cela utiliser le module argparse.

olivier@bornem:~ $ python hgweb-opts.wsgi -h                                 
usage: hgweb-opts.wsgi [-h] host port

positional arguments:
  host        Add IP address
  port        Add port number

optional arguments:
  -h, --help  show this help message and exit
olivier@bornem:~ $ 

On peut voir que deux paramètres sont obligatoires, l'ordre à une importance.

  • host, par exemple 127.0.0.1
  • port, par exemple 8500
olivier@bornem:~ $ python hgweb-opts.wsgi 127.0.0.1 8500                     
serving on http://127.0.0.1:8500

On peut maintenant adapter le fichier wsgi-hg.service, pour pouvoir passer ces paramètres à la ligne ExecStart.

Voici la ligne à copier.

[...]
ExecStart=/usr/bin/python2.7 /srv/www/htdocs/vhosts/hg/hgweb-opts.wsgi 127.0.0.1 8500
[...]

Pour lancer le service, on place ce fichier dans /etc/systemd/system/default.target.wants/ (ou /lib/systemd/system/).

root@bornem:~ # systemctl start wsgi-hg.service
root@bornem:~ # systemctl status wsgi-hg.service
wsgi-hg.service - Starts WSGI script (mercurial)
	  Loaded: loaded (/lib/systemd/system/wsgi-hg.service; disabled)
	  Active: active (running) since Sun, 29 Jan 2012 21:26:45 +0100; 38s ago
	 Process: 17745 ExecStartPre=/bin/echo Starting WSGI script for mercurial  (code=exited, status=0/SUCCESS)
	Main PID: 17747 (python2.7)
	  CGroup: name=systemd:/system/wsgi-hg.service
		  └ 17747 /usr/bin/python2.7 /srv/www/htdocs/vhosts/hg/hgweb...
root@bornem:~ # 

lundi 23 janvier 2012

Déployer Mercurial (hg) « derrière » un serveur Web (Nginx) sous openSUSE

Logos

Dans un précédent billet, j'avais montré comment l'on pouvait exécuter une application Web écrite dans le langage Python sans faire intervenir de serveurs Web.

Aujourd'hui, nous allons voir le cas, où un serveur (en l'occurence Nginx) est déjà en place.

En fait, le but inavoué de cet article est de comprendre le système d'init, systemd utilisé par openSUSE en autre.

Lire la suite...

samedi 10 décembre 2011

Installer ALSA sous Frugalware PowerPC

Frugalware

Ce billet est la suite du précédent. Nous allons voir comment installer ALSA.

Il s'agit d'un iBook G4, (le modèle n'est pas récent).

olivierd@brigand:~ $ cat /proc/device-tree/model && echo ""
PowerBook6,5
olivierd@brigand:~ $ 

Installation du paquet

root@brigand:~ # pacman-g2 -S alsa-utils alsa-tools
[...]
root@brigand:~ # 

Configuration

Nous pouvons lancer la commande alsaconf, il va rechercher le driver correspondant à notre carte audio.

Dans mon cas il n'arrive pas à la détecter.

root@brigand:~ # cat /proc/asound/cards
 --- no soundcards ---
root@brigand:~ # 

Nous allons donc rechercher tous les modules installés sur la machine.

root@brigand:~ # find / -type f -name '*.ko' -print
[...]
/lib/modules/3.1-fw2/kernel/sound/usb/snd-usb-audio.ko
/lib/modules/3.1-fw2/kernel/sound/usb/snd-usbmidi-lib.ko
/lib/modules/3.1-fw2/kernel/sound/ppc/snd-powermac.ko
/lib/modules/3.1-fw2/kernel/sound/drivers/snd-dummy.ko
/lib/modules/3.1-fw2/kernel/sound/aoa/codecs/snd-aoa-codec-toonie.ko
/lib/modules/3.1-fw2/kernel/sound/aoa/codecs/snd-aoa-codec-tas.ko
/lib/modules/3.1-fw2/kernel/sound/aoa/codecs/snd-aoa-codec-onyx.ko
/lib/modules/3.1-fw2/kernel/sound/aoa/fabrics/snd-aoa-fabric-layout.ko
/lib/modules/3.1-fw2/kernel/sound/aoa/soundbus/i2sbus/snd-aoa-i2sbus.ko
/lib/modules/3.1-fw2/kernel/sound/aoa/soundbus/snd-aoa-soundbus.ko
/lib/modules/3.1-fw2/kernel/sound/aoa/core/snd-aoa.ko
/lib/modules/3.1-fw2/kernel/sound/core/seq/snd-seq-device.ko
/lib/modules/3.1-fw2/kernel/sound/core/seq/snd-seq.ko
/lib/modules/3.1-fw2/kernel/sound/core/seq/snd-seq-midi-event.ko
/lib/modules/3.1-fw2/kernel/sound/core/seq/oss/snd-seq-oss.ko
/lib/modules/3.1-fw2/kernel/sound/core/seq/snd-seq-dummy.ko
/lib/modules/3.1-fw2/kernel/sound/core/seq/snd-seq-midi.ko
/lib/modules/3.1-fw2/kernel/sound/core/snd-hwdep.ko
/lib/modules/3.1-fw2/kernel/sound/core/oss/snd-mixer-oss.ko
/lib/modules/3.1-fw2/kernel/sound/core/oss/snd-pcm-oss.ko
/lib/modules/3.1-fw2/kernel/sound/core/snd-rawmidi.ko
/lib/modules/3.1-fw2/kernel/sound/core/snd-pcm.ko
/lib/modules/3.1-fw2/kernel/sound/core/snd-page-alloc.ko
/lib/modules/3.1-fw2/kernel/sound/core/snd.ko
/lib/modules/3.1-fw2/kernel/sound/core/snd-timer.ko
/lib/modules/3.1-fw2/kernel/sound/soundcore.ko

Il faut donc rechercher le bon module dans le dossier /lib/modules/3.1-fw2/kernel/sound/. Un seul va retenir mon intention, snd-powermac.ko. Je vais le charger.

root@brigand:~ # modprobe snd_powermac
root@brigand:~ # cat /proc/asound/cards
 0 [Snapper        ]: PMac Snapper - PowerMac Snapper
                      PowerMac Snapper (Dev 44) Sub-frame 0
root@brigand:~ # 

C'est effectivement le bon [1].

Maintenant, nous pouvons régler le volume avec alsamixer, et sauvegarder cette configuration avec la commande suivante :

root@brigand:~ # alsactl store

ALSA et Systemd ?

Depuis que Frugalware utilise Systemd, les modules additionnels qui doivent être chargés au démarrage, doivent être « listés » dans le dossier /etc/modules-load.d/.

J'ai donc créé le fichier sound.conf :

# Load snd-powermac.ko at boot
snd-powermac

Note

[1] Je vous recommande de lire ces pages Gentoo PPC Faq, et Apple Onboard Audio.

mercredi 30 novembre 2011

Installation (manuelle) d'une Frugalware PowerPC

Frugalware

Dans ce billet, je vais relater les différentes étapes pour installer la Frugalware (l'installateur est bugué, segfault aléatoirement) sur un ordinateur dont le processeur, est de type PowerPC. Il s'agit d'un iBook G4.

olivierd@brigand:~ $ cat /proc/cpuinfo 
processor       : 0
cpu             : 7447A, altivec supported
clock           : 1333.333000MHz
revision        : 1.2 (pvr 8003 0102)
bogomips        : 73.72
timebase        : 18432000
platform        : PowerMac
model           : PowerBook6,5
machine         : PowerBook6,5
motherboard     : PowerBook6,5 MacRISC3 Power Macintosh 
detected as     : 287 (iBook G4)
pmac flags      : 0000001b
L2 cache        : 512K unified
pmac-generation : NewWorld
Memory          : 1280 MB
olivierd@brigand:~ $ 

Lire la suite...