<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Trucs Libres &#187; Linux</title>
	<atom:link href="http://fr.positon.org/tag/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://fr.positon.org</link>
	<description></description>
	<lastBuildDate>Tue, 23 Feb 2016 20:01:11 +0000</lastBuildDate>
	<language>fr-FR</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.7.1</generator>
	<item>
		<title>Mise à jour du BIOS d&#8217;un Thinkpad Lenovo sous Linux et USB</title>
		<link>http://fr.positon.org/mise-a-jour-du-bios-dun-thinkpad-lenovo-sous-linux-et-usb</link>
		<comments>http://fr.positon.org/mise-a-jour-du-bios-dun-thinkpad-lenovo-sous-linux-et-usb#comments</comments>
		<pubDate>Thu, 29 May 2014 16:59:54 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[BIOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Thinkpad]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[USB]]></category>

		<guid isPermaLink="false">http://positon.org/?p=190</guid>
		<description><![CDATA[Voici comment mettre à jour le BIOS d&#8217;un Thinkpad Lenovo (X1 Carbon Gen 2 dans mon cas). Il faut télécharger le fichier ISO bootable depuis le site de support Lenovo, le convertir et le copier sur une clé USB. Il vous faut une clé USB que vous pouvez écraser. Récupérez le fichier ISO bootable depuis [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voici comment mettre à jour le BIOS d&#8217;un Thinkpad Lenovo (X1 Carbon Gen 2 dans mon cas).<br />
Il faut télécharger le fichier ISO bootable depuis le site de support Lenovo, le convertir et le copier sur une clé USB.</p>
<p>Il vous faut une clé USB que vous pouvez écraser.</p>
<p>Récupérez le fichier ISO bootable depuis le site de support Lenovo. Pour obtenir votre numéro produit :</p>
<pre>
sudo dmidecode -t system | grep Product
</pre>
<p>Pour vérifier la version installée du BIOS: <code>sudo dmidecode -t bios</code></p>
<p>Récupérez le programme <strong>geteltorito</strong> depuis vos paquets, ou téléchargez le :</p>
<pre>
cd /tmp/
wget http://userpages.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/geteltorito
chmod +x geteltorito
</pre>
<p>Extraire le fichier img depuis l&#8217;ISO :</p>
<pre>
./geteltorito -o bios.img gruj09us.iso
</pre>
<p>Copier le fichier img sur le périphérique (<strong>vérifiez que sdb est bien votre clé USB !!</strong>) :</p>
<pre>
sudo fdisk -l /dev/sdb #vérifiez la taille du disque
sudo dd if=bios.img of=/dev/sdb
</pre>
<p>Voila. Démarrez sur la clé USB et suivez les instructions pour mettre à jour le BIOS.</p>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/mise-a-jour-du-bios-dun-thinkpad-lenovo-sous-linux-et-usb/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloner un système Linux vers un autre ordinateur</title>
		<link>http://fr.positon.org/cloner-un-systeme-linux-vers-un-autre-ordinateur</link>
		<comments>http://fr.positon.org/cloner-un-systeme-linux-vers-un-autre-ordinateur#comments</comments>
		<pubDate>Sun, 06 Apr 2014 15:54:06 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gparted]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[rsync]]></category>

		<guid isPermaLink="false">http://positon.org/?p=159</guid>
		<description><![CDATA[Après quelques recherches je n&#8217;ai trouvé aucun guide simple et efficace pour ça. La méthode suivante devrait fonctionner pour n&#8217;importe quelle distribution Linux (Ubuntu, Debian, Manjaro, Archlinux, Fedora&#8230;). Les systèmes source et cible doivent être sur la même architecture processeur (mais un transfert depuis 32bit vers 64bit devrait fonctionner). Il vous faut: 2 clés USB [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Après quelques recherches je n&#8217;ai trouvé aucun guide simple et efficace pour ça.<br />
La méthode suivante devrait fonctionner pour n&#8217;importe quelle distribution Linux (Ubuntu, Debian, Manjaro, Archlinux, Fedora&#8230;). Les systèmes source et cible doivent être sur la même architecture processeur (mais un transfert depuis 32bit vers 64bit devrait fonctionner).</p>
<p>Il vous faut:</p>
<ul>
<li>2 clés USB live (ou cds)</li>
<li>Pour un transfert plus rapide: des bons câbles ethernet (un seul câble entre les 2 ordis suffit), ou un disque usb avec une GROSSE partition ext4. Vous pouvez essayer en Wifi, mais ça risque d&#8217;être lent.</li>
</ul>
<h3>1. Démarrer les machines source et cible sur live USB/CD</h3>
<p>N&#8217;importe quel clé USB ou CD devrait faire l&#8217;affaire.<br />
Sur l&#8217;ordinateur cible, vous aurez besoin d&#8217;un outil pour partitionner votre disque dûr, comme <a href="http://gparted.org/" title="gparted">gparted</a>.<br />
<a href="http://rsync.samba.org/" title="rsync">rsync</a> est également nécessaire pour le transfert de données : il est inclus dans la plupart des systèmes live.</p>
<p>Exemples de live USB/CDs : <a href="http://www.ubuntu.com/" title="Ubuntu">Ubuntu</a>, <a href="http://manjaro.org/" title="Manjaro">Manjaro</a></p>
<h3>2. Partitionnez votre disque cible</h3>
<p>Utilisez un outil comme <a href="http://gparted.org/" title="gparted">gparted</a> pour partitionner votre disque cible, avec les mêmes partitions que votre système source (slash, swap, home&#8230;).<br />
Je vous recommande d&#8217;affecter des LABELs / étiquettes à vos partitions : c&#8217;est plus simple que les UUIDs pour la fstab.</p>
<h3>3. Monter toutes les partitions sur les 2 machines</h3>
<p>Sur les 2 systèmes, ouvrez un terminal root. Pour chaque partition de données (on ignore la swap) :</p>
<pre>
mkdir /mnt/slash
mount /dev/sdaX /mnt/slash
</pre>
<p>Si vous avez une partition home:</p>
<pre>
mkdir /mnt/home
mount /dev/sdaY /mnt/home
</pre>
<h3>4. Transférer les données (réseau ou usb)</h3>
<p>Cette partie peut être complexe. Choisissez la méthode que vous préférez.</p>
<h4>Réseau</h4>
<ol>
<li><strong>Configurez le réseau.</strong> Testez la connectivité avec la commande ping.<br />
Le plus simple est de brancher les PCs sur un réseau DHCP (comme la box de votre FAI) pour obtenir des adresses IP automatiques. Si vous reliez les 2 pcs avec un seul cable, vous devrez configurer les IPs avec NetworkManager (ips statiques ou réseau adhoc).</li>
<li>Sur le système source, en root, créez un fichier <code>/etc/rsyncd.conf</code> :
<pre>
uid = root
gid = root
use chroot = no

[all]
    path = /
</pre>
</li>
<li>Lancez le démon serveur rsync : <code>rsync --daemon</code></li>
<li>Sur le PC cible, pour chaque partition :
<pre>
rsync -avHX SOURCE_IP::all/mnt/slash/ /mnt/slash/
</pre>
<p>N&#8217;oubliez pas les &#8216;/&#8217; à la fin des chemins. <code>-a</code> pour conserver plusieurs attributs comme propriétaire et permissions, <code>-H</code> pour conserver d&#8217;éventuels liens en dûr, <code>-X</code> pour conserver les attributs étendus comme setuid. Vous pouvez également ajouter <code>-A</code> si vous utilisez des acls. L&#8217;avantage de rsync, c&#8217;est que vous pouvez arrêter et relancer le transfert quand vous voulez.</li>
</ol>
<h4>USB</h4>
<p>Préparez un disque USB avec une GROSSE partition ext4.</p>
<ol>
<li>Montez la partition USB sur le système source (<code>mount /dev/sdbX /mnt/usb</code>)</li>
<li>Pour chaque partition :
<pre>
rsync -avHX /mnt/slash/ /mnt/usb/slash/
</pre>
</li>
<li>Démontez (umount), débranchez et remontez le disque USB sur le système cible.</li>
<li>Pour chaque partition :
<pre>
rsync -avHX /mnt/usb/slash/ /mnt/slash/
</pre>
</li>
</ol>
<h3>5. Changer la fstab sur le système cible</h3>
<p>En tant que root, éditez <code>/mnt/slash/etc/fstab</code><br />
Pour chaque partition (swap y compris), remplacez le 1er champ avec le nouvel UUID ou LABEL (plus simple avec les LABELs) :<br />
<code>UUID=the-long-uuid</code>, or <code>LABEL=yourlabel</code></p>
<p>2 méthode pour obtenir les UUIDs / LABELs :</p>
<pre>
ls -l /dev/disk/by-uuid/
blkid /dev/sdaX
</pre>
<h3>6. Réinstaller Grub</h3>
<p>Nous allons utiliser un  <strong>chroot</strong> (environnement avec racine changée) pour lancer l&#8217;install <a href="http://www.gnu.org/software/grub/" title="Grub">grub</a> à l&#8217;intérieur du système migré.</p>
<p>Tout d&#8217;abord, monter (bind) les répertoires systèmes requis par grub. Lancer ensuite le chroot :</p>
<pre>
mount --bind /proc /mnt/slash/proc
mount --bind /sys /mnt/slash/sys
mount --bind /dev /mnt/slash/dev
mount --bind /run /mnt/slash/run
chroot /mnt/slash
</pre>
<p>Enfin, installer grub dans la zone d&#8217;amorçage (<a href="http://fr.wikipedia.org/wiki/Master_boot_record" title="master boot record">Master Boot Record</a>) de votre disque dûr, et mettre à jour le fichier de configuration de grub (avec les nouveaux uuids&#8230;) :</p>
<pre>
grub-install /dev/sda
update-grub
</pre>
<h3>7. Redémarrer la machine cible</h3>
<p>Voila ! Votre système devrait fonctionner sur le nouvel ordinateur.<br />
N&#8217;hésitez pas à commenter en cas de problème.</p>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/cloner-un-systeme-linux-vers-un-autre-ordinateur/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Écouter les événements souris sous Linux en mode texte</title>
		<link>http://fr.positon.org/ecouter-les-evenements-souris-sous-linux-en-mode-texte</link>
		<comments>http://fr.positon.org/ecouter-les-evenements-souris-sous-linux-en-mode-texte#comments</comments>
		<pubDate>Sat, 08 Sep 2012 22:59:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MPD]]></category>
		<category><![CDATA[Raspberry Pi]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=119</guid>
		<description><![CDATA[Un petit script pour écouter les événements souris avec la commande mev utilisant gpm (General Purpose Mouse). Utilisé sur mon Raspberry Pi pour lancer des commandes MPD (Music Player Daemon), pour utilisé la souris comme télécommande. Je n&#8217;ai pas encore trouvé comment isolé les événements de la molette souris, pour pouvoir régler le volume. Quelqu&#8217;un [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Un petit script pour écouter les événements souris avec la commande <code>mev</code> utilisant <code>gpm</code> (General Purpose Mouse).</p>
<p>Utilisé sur mon Raspberry Pi pour lancer des commandes MPD (Music Player Daemon), pour utilisé la souris comme télécommande.</p>
<p>Je n&#8217;ai pas encore trouvé comment isolé les événements de la molette souris, pour pouvoir régler le volume. Quelqu&#8217;un a une idée ?</p>
<p>Sous Archlinux, vous pouvez ajouter la commande suivante dans <code>/etc/rc.local</code> pour le lancer au boot :</p>
<pre>
nohup /usr/local/bin/mpd_mouse.sh &gt; /tmp/mpd_mouse.log 2&gt;&amp;1 &amp;
</pre>
<pre>
#!/bin/sh
# This script listen to mouse events with the mev command using gpm.
# Can be used for example on the Raspberry Pi to run mpd commands, to use a mouse as a remote control.
# You can start it as a daemon with:
# nohup /usr/local/bin/mpd_mouse.sh &gt; /tmp/mpd_mouse.log 2&gt;&amp;1 &amp;

# start gpm if not already started
gpm -m /dev/input/mice -t imps2

# unset TERM variable, otherwise mev refuses to start when detecting xterm
unset TERM

echo &quot;Listening to mouse events...&quot;

# we use script to fake a tty for mev, otherwise it exits (note: mev logs errors in syslog)
script -qc &quot;mev -E&quot; /dev/null &lt;/dev/null | grep --line-buffered -v &quot;mouse-movement&quot; | while read LINE
do
        echo
        echo &quot;$LINE&quot;

        EVENT=$(echo &quot;$LINE&quot; | cut -d' ' -f1 | cut -d'(' -f2)

        if [ &quot;$EVENT&quot; = &quot;down-mouse-1&quot; ]
        then
                echo mpc stop
                mpc stop
        elif [ &quot;$EVENT&quot; = &quot;down-mouse-2&quot; ]
        then
                echo mpc toggle
                mpc toggle
        elif [ &quot;$EVENT&quot; = &quot;down-mouse-3&quot; ]
        then
                echo mpc next
                mpc next
        else
                echo &quot;nothing&quot;
        fi

done
</pre>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/ecouter-les-evenements-souris-sous-linux-en-mode-texte/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Une solution au problème umask : inotify pour forcer les droits</title>
		<link>http://fr.positon.org/une-solution-au-probleme-umask-inotify-pour-forcer-les-droits</link>
		<comments>http://fr.positon.org/une-solution-au-probleme-umask-inotify-pour-forcer-les-droits#comments</comments>
		<pubDate>Thu, 21 Oct 2010 23:29:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[inotify]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[umask]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=102</guid>
		<description><![CDATA[Trouver une bonne solution au problème du partage des fichiers entre utilisateurs Linux est un cauchemar. Si elle convient il y a la solution de l&#8217;UID unique. Tous les clients accèdent aux fichiers avec le même UID utilisateur. Seulement on ne sais pas qui fait quoi. Et les utilisateurs ne peuvent pas gérer finement leurs [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Trouver une bonne solution au problème du partage des fichiers entre utilisateurs Linux est un cauchemar.</p>
<p>Si elle convient il y a la solution de l&#8217;UID unique. Tous les clients accèdent aux fichiers avec le même UID utilisateur. Seulement on ne sais pas qui fait quoi. Et les utilisateurs ne peuvent pas gérer finement leurs droits.</p>
<p>Problème : le <a href="http://en.wikipedia.org/wiki/Umask">umask</a> par défaut est TOUJOURS 0022, ce qui fait que tout fichier créé aura les droits <code>rw– r–– r––</code>. Seul le propriétaire peut écrire et personne d&#8217;autre.<br />
Pour partager les fichier, un groupe doit aussi pouvoir écrire.</p>
<p>On peut changer ce umask. Pour la ligne de commande, ça se passe dans les fichiers <code>.bashrc</code> ou <code>.profile</code>, ou dans <code>/etc/profile</code> pour tous les utilisateurs. Pour un partage <a href="http://en.wikipedia.org/wiki/SSH_file_transfer_protocol">SFTP</a>, on s&#8217;en sort avec <a href="http://jeff.robbins.ws/articles/setting-the-umask-for-sftp-transactions">un bricolage</a>. Pour le serveur Apache, on s&#8217;en sort avec le fichier <code>/etc/apache2/envvars</code> sous Debian.</p>
<p>Si le partage de fichier se fait via un seul service, c&#8217;est simple de changer le umask, sinon, c&#8217;est compliqué. Et même en changeant tous les umask de tous les services, tout n&#8217;est pas parfait : par exemple, <a href="http://live.gnome.org/Nautilus">Nautilus</a> via SFTP n&#8217;en fait qu&#8217;à sa tête. Certains clients posent le fichiers et font un chmod derrière : l&#8217;enfer. Il y a aussi la puissance des <a href="http://www.suse.de/~agruen/acl/linux-acls/online/">ACL POSIX</a> qui permettent de forcer les droits. Mais là encore, certains clients vous poserons problème.</p>
<p>Enfin, on ne souhaite pas forcément que tous les fichiers soient posés avec l&#8217;écriture pour le groupe. On peut souhaiter une meilleure granularité.</p>
<p>D&#8217;expérience, j&#8217;ai abandonné l&#8217;idée du correctif à la source pour me tourner vers un bricolage agissant APRÈS la création du fichier.<br />
La solution la plus simple est bien sûr la tâche cron, qui toutes les X minutes fait un <code>chmod -R g+w</code> sur un dossier. Déjà la solution n&#8217;est pas immédiate car désynchronisée de la création de fichiers, et elle rajoute une (très) petite charge supplémentaire à votre système.</p>
<p>Je propose une solution à base d&#8217;<a href="http://en.wikipedia.org/wiki/Inotify">inotify</a>, qui force les droits dès qu&#8217;un fichier est créé :</p>
<pre>
aptitude install inotify-tools
</pre>
<p><strong>Et la commande magique :</strong></p>
<pre>
inotifywait -mrq -e CREATE --format %w%f /tmp/mytest/ | while read FILE; do chmod g=u &quot;$FILE&quot;; done
</pre>
<p><strong>MAJ 2010-10-30</strong><br />
Pour gérer les espaces en fin de fichiers, et les antislashs :</p>
<pre>
inotifywait -mrq -e CREATE --format %w%f /tmp/mytest/ | while IFS= read -r FILE; do chmod g=u &quot;$FILE&quot;; done
</pre>
<p>Merci à vitoreiji (voir commentaires)</p>
<p>La commande <code>inotifywait</code> écoute les événements du dossier <code>/tmp/mytest</code>. Dès qu&#8217;un fichier est créé, il est affiché sur la sortie standard. Chaque ligne-fichier est ensuite lue par la boucle <code>while</code> et les droits sont changés. Le <code>g=u</code> donne au groupe les mêmes droits que l&#8217;utilisateur (avec <code>g+w</code>, si l&#8217;utilisateur pose un fichier <code>rw– ––– –––</code>, les droits deviendraient <code>rw– –w– –––</code>).</p>
<p>Vous pouvez maintenant tester la création/copie de fichiers/dossiers. Même un <code>mkdir -p a/b/c/d/e</code> doit fonctionner.</p>
<p>Pour terminer, on ajoutera tout cela dans un script de démarrage :</p>
<pre>
vi /usr/local/bin/inotifywait.sh &amp;&amp; chmod +x /usr/local/bin/inotifywait.sh
#!/bin/sh
# Take the directory name as argument

inotifywait -mrq -e CREATE --format %w%f &quot;$1&quot; | while read FILE
do
	chmod g=u &quot;$FILE&quot;
done
</pre>
<pre>
vi /etc/init.d/inotifywait.sh &amp;&amp; chmod +x /etc/init.d/inotifywait.sh
#! /bin/sh

case &quot;$1&quot; in
  start|&quot;&quot;)

	rm -f /tmp/inotifywait.log
	/usr/local/bin/inotifywait.sh /path/to/dir/ &gt;/tmp/inotifywait.log 2&gt;&amp;1 &amp;
	
	;;
  restart|reload|force-reload)
	echo &quot;Error: argument '$1' not supported&quot; &gt;&amp;2
	exit 3
	;;
  stop)
	# killall inotifywait ???
	;;
  *)
	echo &quot;Usage: inotifywait.sh [start|stop]&quot; &gt;&amp;2
	exit 3
	;;
esac

:
</pre>
<p>(sous Debian)</p>
<pre>
update-rc.d inotifywait.sh defaults
</pre>
<p>Note : un inconvénient : il y a une limite sur le nombre de fichier surveillés, voir l&#8217;option <code>-r</code> dans <code>man inotifywait</code>.</p>
<p>Et enfin la touche finale qui est utile pour que les fichiers créés conservent le groupe du dossier parent : le <a href="http://en.wikipedia.org/wiki/Setuid">bit setgid</a> au groupe pour tous les dossiers.</p>
<pre>
find /path/to/dir -type d -exec chmod g+s {} \;
</pre>
<p><ins>Liens</ins> :</p>
<ul>
<li><code>man inotifywait</code></li>
<li><a href="http://github.com/rvoicilas/inotify-tools/wiki">inotify-tools</a></li>
<li><a href="http://en.wikipedia.org/wiki/Inotify" title="http://en.wikipedia.org/wiki/Inotify">http://en.wikipedia.org/wiki/Inotify</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/une-solution-au-probleme-umask-inotify-pour-forcer-les-droits/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Problèmes de performance 3D avec KMS</title>
		<link>http://fr.positon.org/problemes-de-performance-3d-avec-kms</link>
		<comments>http://fr.positon.org/problemes-de-performance-3d-avec-kms#comments</comments>
		<pubDate>Thu, 03 Jun 2010 12:48:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Grub]]></category>
		<category><![CDATA[jeux]]></category>
		<category><![CDATA[KMS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Lucid]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=94</guid>
		<description><![CDATA[Avec la dernière mouture d&#8217;Ubuntu Lucid 10.04 vient un nouveau module pour gérer le graphique : KMS ou Kernel-based Mode-Setting. Si comme moi vous rencontrez des problème de performance dans certains jeux en 3D comme Quake 3 ou TCE / Enemy Territory, essayez de désactiver KMS. Le problème peut aussi se manifester sur la souris [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Avec la dernière mouture d&#8217;Ubuntu Lucid 10.04 vient un nouveau module pour gérer le graphique : <a href="http://fr.wikipedia.org/wiki/Kernel-based_mode-setting">KMS ou Kernel-based Mode-Setting</a>.</p>
<p>Si comme moi vous rencontrez des problème de performance dans certains jeux en 3D comme Quake 3 ou TCE / Enemy Territory, essayez de désactiver KMS.<br />
Le problème peut aussi se manifester sur la souris par de forte lenteurs, du retard, ou un manque de précision.</p>
<h2>Grub 2</h2>
<p>Ajoutez <code>nomodeset</code> dans <code>/etc/default/grub</code> puis lancer la commande <code>update-grub</code>.</p>
<pre>
vi /etc/default/grub
GRUB_CMDLINE_LINUX=&quot;nomodeset&quot;
update-grub
</pre>
<h2>Grub 1</h2>
<p>Ajoutez <code>nomodeset</code> à la fin de la ligne <code># kopt</code> puis lancer <code>update-grub</code>.</p>
<pre>
vi /boot/grub/menu.lst
# kopt=root=/dev/sda1 ro nomodeset
update-grub
</pre>
<p>On m&#8217;a raconté aussi que désactiver KMS corrigeait certains problèmes de lenteur Javascript sous Firefox (Yahoo Mail&#8230;).</p>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/problemes-de-performance-3d-avec-kms/feed</wfw:commentRss>
		<slash:comments></slash:comments>
		</item>
		<item>
		<title>Pour un Thinkpad silencieux</title>
		<link>http://fr.positon.org/pour-un-thinkpad-silencieux</link>
		<comments>http://fr.positon.org/pour-un-thinkpad-silencieux#comments</comments>
		<pubDate>Thu, 03 Dec 2009 21:42:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fan]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Thinkpad]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=70</guid>
		<description><![CDATA[Certains Thinkpads, dont le T43, ont plusieurs problèmes de chaleur et de ventilation. Sur une installation Linux par défaut, le processeur de mon T43 fait 46°C en moyenne, et le GPU 49°C pour une température extérieure de 19°C. L&#8217;algorithme de gestion du ventilateur par le BIOS est très mauvais, si bien qu&#8217;après un démarrage à [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Certains Thinkpads, dont le T43, ont plusieurs problèmes de chaleur et de ventilation.</p>
<p>Sur une installation Linux par défaut, le processeur de mon T43 fait 46°C en moyenne, et le GPU 49°C pour une température extérieure de 19°C.</p>
<p>L&#8217;algorithme de gestion du ventilateur par le BIOS est très mauvais, si bien qu&#8217;après un démarrage à froid, le ventilateur se met à tourner sans arrêt après quelques minutes d&#8217;utilisation.</p>
<p>Fort heureusement, il est possible d&#8217;utiliser des programmes pour prendre le contrôle du ventilateur à la place du BIOS.</p>
<p>Pour commencer, le module thinkpad_acpi doit nous autoriser à changer la vitesse du ventilo :</p>
<pre>
# vi /etc/modprobe.d/thinkpad.conf
options thinkpad_acpi fan_control=1 experimental=1
</pre>
<p>Au choix, vous pouvez recharger le module, ou relancer votre système.</p>
<pre>
# rmmod thinkpad_acpi
# modprobe thinkpad_acpi
</pre>
<p>Vous pouvez désormais prendre le contrôle de votre ventilo :</p>
<pre>
# cat /proc/acpi/ibm/fan
# echo level 0 &gt; /proc/acpi/ibm/fan
# echo level 7 &gt; /proc/acpi/ibm/fan # pleine puissance !!
# echo level auto &gt; /proc/acpi/ibm/fan # retour à la normale, on laisse le BIOS prendre la main
</pre>
<p>Maintenant, rendez-vous <a href="http://www.thinkwiki.org/wiki/ACPI_fan_control_script#Comprehensive_bash_script_with_fine_control_over_fan_speed">ici</a> et copiez le contenu du script dans <code>/usr/local/bin/tp-fancontrol</code>.</p>
<pre>
# mv index.php /usr/local/bin/tp-fancontrol
# chmod a+x /usr/local/bin/tp-fancontrol
</pre>
<p>Ensuite, pour tester le script :</p>
<pre>
# tp-fancontrol
# tp-fancontrol -s 5 # pour un ventilo qui démarre plus tard
</pre>
<p>Afin de lancer le script au démarrage, on récupère aussi, sur la même page, le script <code>tp-fancontrol.init.debian</code>. On l&#8217;ajoute au démarrage du système.</p>
<pre>
# mv index.php /etc/init.d/tp-fancontrol
# chmod a+x /etc/init.d/tp-fancontrol
# vi /etc/init.d/tp-fancontrol
DAEMON=/usr/sbin/fancontrol
# /etc/init.d/tp-fancontrol start
# /etc/init.d/tp-fancontrol stop
# update-rc.d tp-fancontrol defaults # note : on peux aussi n'ajouter que les liens &quot;start&quot;
</pre>
<p>La touche finale est de modifier le script afin de changer les seuils minimum de déclenchement du ventilateur, de manière à ce qu&#8217;il se déclenche plus tard quand le système commence à chauffer :</p>
<pre>
# vi /usr/local/bin/tp-fancontrol
MIN_THRESH_SHIFT=5
INTERVAL=10 # on peut aussi augmenter l'intervalle de mise à jour de la vitesse
</pre>
<p>Une augmentation de 5 secondes permet au ventilateur de redevenir silencieux quand l&#8217;ordinateur ne fait plus rien.</p>
<p><ins>Références</ins> :</p>
<ul>
<li><a href="http://www.thinkwiki.org/wiki/How_to_control_fan_speed" title="http://www.thinkwiki.org/wiki/How_to_control_fan_speed">http://www.thinkwiki.org/wiki/How_to_control_fan_speed</a></li>
<li><a href="http://www.thinkwiki.org/wiki/ACPI_fan_control_script" title="http://www.thinkwiki.org/wiki/ACPI_fan_control_script">http://www.thinkwiki.org/wiki/ACPI_fan_control_script</a></li>
<li><a href="http://www.thinkwiki.org/wiki/Problem_with_fan_noise" title="http://www.thinkwiki.org/wiki/Problem_with_fan_noise">http://www.thinkwiki.org/wiki/Problem_with_fan_noise</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/pour-un-thinkpad-silencieux/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[Screen] No more PTYs. Sorry, could not find a PTY.</title>
		<link>http://fr.positon.org/screen-no-more-ptys-sorry-could-not-find-a-pty</link>
		<comments>http://fr.positon.org/screen-no-more-ptys-sorry-could-not-find-a-pty#comments</comments>
		<pubDate>Wed, 18 Nov 2009 22:40:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[screen]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=68</guid>
		<description><![CDATA[Si vous obtenez les erreurs suivantes en lançant screen en tant qu&#8217;utilisateur : No more PTYs. Sorry, could not find a PTY. [screen is terminating] Il faut changer les droits du fichier /dev/ptmx : # ls -l /dev/ptmx crw-r--r-- 1 root root 5, 2 nov 18 23:28 /dev/ptmx # chmod a+w /dev/ptmx # ls -l [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Si vous obtenez les erreurs suivantes en lançant <strong>screen</strong> en tant qu&#8217;utilisateur :</p>
<pre>
No more PTYs.
Sorry, could not find a PTY.
[screen is terminating]
</pre>
<p>Il faut changer les droits du fichier <code>/dev/ptmx</code> :</p>
<pre>
# ls -l /dev/ptmx 
crw-r--r-- 1 root root 5, 2 nov 18 23:28 /dev/ptmx
# chmod a+w /dev/ptmx
# ls -l /dev/ptmx 
crw-rw-rw- 1 root root 5, 2 nov 18 23:34 /dev/ptmx
</pre>
<p>Sous Ubuntu, le problème était absent, les droits étant déjà positionnés :</p>
<pre>
$ ls -l /dev/ptmx 
crw-rw-rw- 1 root tty 5, 2 2009-11-18 23:37 /dev/ptmx
</pre>
<p><strong>Références :</strong></p>
<ul>
<li><code>man ptmx</code></li>
<li><code>ubuntu$ ls -l /dev/ptmx</code></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/screen-no-more-ptys-sorry-could-not-find-a-pty/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Format du sujet des mail de cron</title>
		<link>http://fr.positon.org/format-du-sujet-des-mail-de-cron</link>
		<comments>http://fr.positon.org/format-du-sujet-des-mail-de-cron#comments</comments>
		<pubDate>Wed, 21 Oct 2009 10:26:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Cron]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=66</guid>
		<description><![CDATA[J&#8217;ai cherché un moyen de modifier le format des courriels envoyés par la crontab. J&#8217;aurais espéré une syntaxe similaire à MAILTO= Réponse : C&#8217;est impossible. Avec le programme cron par défaut sous Debian, c&#8217;est codé en dûr dans le code de cron : Dans le fichier source do_command.c : fprintf(mail, &#34;From: root (Cron Daemon)\n&#34;); fprintf(mail, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>J&#8217;ai cherché un moyen de modifier le format des courriels envoyés par la crontab.<br />
J&#8217;aurais espéré une syntaxe similaire à <code>MAILTO=</code></p>
<p>Réponse : C&#8217;est impossible.</p>
<p>Avec le programme cron par défaut sous Debian, c&#8217;est codé en dûr dans le code de cron :</p>
<p>Dans le fichier source <code>do_command.c</code> :</p>
<pre>
fprintf(mail, &quot;From: root (Cron Daemon)\n&quot;);
fprintf(mail, &quot;To: %s\n&quot;, mailto);
fprintf(mail, &quot;Subject: Cron &lt;%s@%s&gt; %s\n&quot;,
  usernm, first_word(hostname, &quot;.&quot;),
  e-&gt;cmd);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/format-du-sujet-des-mail-de-cron/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Casser un RAID/LVM logiciel</title>
		<link>http://fr.positon.org/casser-un-raidlvm-logiciel</link>
		<comments>http://fr.positon.org/casser-un-raidlvm-logiciel#comments</comments>
		<pubDate>Tue, 30 Dec 2008 16:47:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LVM]]></category>
		<category><![CDATA[raid]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=41</guid>
		<description><![CDATA[Vous disposez sur votre système d&#8217;une batterie de disques configurés avec du RAID1 logiciel (/dev/md0). L&#8217;espace de stockage est géré par LVM. Vos deux disques étant en mirroir, il peut être utile de « casser » le RAID pour pouvoir disposer librement du stockage sur le deuxième disque, ou encore, dans le cadre d&#8217;une refonte, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Vous disposez sur votre système d&#8217;une batterie de disques configurés avec du RAID1 logiciel (<code>/dev/md0</code>). L&#8217;espace de stockage est géré par LVM.</p>
<p>Vos deux disques étant en mirroir, il peut être utile de « casser » le RAID pour pouvoir disposer librement du stockage sur le deuxième disque, ou encore, dans le cadre d&#8217;une refonte, d&#8217;installer un tout nouveau système sur le deuxième disque, qui remplacera le premier à l&#8217;avenir.</p>
<p>En premier lieu, quelques commandes utiles en tout temps pour le diagnostic :</p>
<p>mdadm, le couteau suisse du RAID logiciel :</p>
<pre>
cat /proc/mdstat
mdadm --detail /dev/md0
</pre>
<p>La batterie de commandes LVM2 :</p>
<pre>
pvdisplay
pvs
vgdisplay
vgs
lvdisplay
lvs
</pre>
<p>La manipulation ne coule pas de source. En voici les étapes :</p>
<p><code>cat /proc/mdstat</code> montre les deux disques actifs (U pour Up). On marque le deuxième disque (<code>/dev/hdc1</code>) comme défectueux puis on l&#8217;enlève de la séquence de RAID pour pouvoir l&#8217;utiliser librement :</p>
<pre>
mdadm --manage --set-faulty /dev/md0 /dev/hdc1
mdadm -r /dev/md0 /dev/hdc1
</pre>
<p>L&#8217;objectif maintenant est de remonter la deuxième moitié du RAID/LVM de manière indépendante, mais sans perdre les données dupliquées présentes.</p>
<p>Il faut donc créer une nouvelle séquence RAID identique à la première en partant du deuxième disque. L&#8217;initialisation de <code>/dev/md1</code> se fait comme suit :</p>
<pre>
mdadm --create --verbose /dev/md1 --level=mirror --force --raid-devices=1 /dev/hdc1
</pre>
<p><code>cat /proc/mdstat</code> doit montrer les deux séquences.</p>
<p>La difficulté désormais est de faire en sorte que le système voie les deux VGs de manière indépendante, car toute commande LVM affiche désormais un avertissement du style :</p>
<pre>
Found duplicate PV LbpGyrR4uvsZivUwqnJQMYoZbCPTCpgu: using /dev/md1 not
/dev/md0
</pre>
<p>Le soucis est que les deux PVs sur les deux raids possèdent le même UUID, du coup LVM utilise le PV qui n&#8217;est pas celui du système actuel. Le problème est ici assez insoluble. Le seul moyen de s&#8217;en sortir est d&#8217;utiliser la commande <code>pvcreate</code> pour attribuer un nouveau UUID.<br />
D&#8217;autre part, impossible d&#8217;utiliser cette commande sur un PV qui contient des LVs actifs (<code>pvcreate</code> refuse).</p>
<p>Ajouter des filtres sur <code>/dev/md0</code> ou <code>/dev/md1</code> dans <code>/etc/lvm/lvm.conf</code> ne donne rien non plus car <code>pvcreate</code> ne les verra pas.</p>
<p>Voici donc la manipulation :</p>
<p><strong>Vérifiez la présence d&#8217;un fichier <code>/etc/lvm/backup/NOM_DU_VG</code>, ou faite en une sauvegarde à l&#8217;aide de la commande <code>vgcfgbackup</code>.</strong></p>
<p>Initialisez un volume physique (PV) vierge sur <code>/dev/md1</code> en forçant la création :</p>
<pre>
pvcreate -ff /dev/md1
</pre>
<p>Puis un VG :</p>
<pre>
vgcreate vg2 /dev/md1
</pre>
<p>Copiez le fichier <code>/etc/lvm/backup/NOM_DU_VG</code> et éditez le :</p>
<pre>
cp /etc/lvm/backup/vg /tmp/vg2
vi /tmp/vg2
</pre>
<p>Modifiez tous les UUID du fichier de sauvegarde. Il suffit par exemple, dans chaque UUID, de modifier un chiffre. Modifiez aussi le nom du vg. Pour le UUID du PV, mettez celui du PV récemment initialisé sur <code>/dev/md1</code> (commande <code>pvdisplay</code>).</p>
<p>Il est maintenant possible de restaurer la sauvegarde :</p>
<pre>
vgcfgrestore --file /tmp/vg2 vg2
</pre>
<p>Si tout s&#8217;est bien passé, on peut ensuite activer les LVs puis les monter :</p>
<pre>
vgchange -a y vg2
mount /dev/vg2/LV /mnt/test/
</pre>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/casser-un-raidlvm-logiciel/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Bidouilles resolv.conf</title>
		<link>http://fr.positon.org/bidouilles-resolvconf</link>
		<comments>http://fr.positon.org/bidouilles-resolvconf#comments</comments>
		<pubDate>Sat, 22 Nov 2008 17:17:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[DHCP]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=40</guid>
		<description><![CDATA[Problème La Livebox que j&#8217;utilise pour me connecter en Wifi me pose le problème suivant : Le serveur DHCP envoie sa propre adresse 192.168.1.1 comme serveur DNS&#8230; logique, me direz-vous, sauf que la boîboîte est incapable de répondre aux requêtes DNS inverses, utilisées par pas mal d&#8217;applications. Dès qu&#8217;une de ces requêtes est envoyées, donc, [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2>Problème</h2>
<p>La Livebox que j&#8217;utilise pour me connecter en Wifi me pose le problème suivant :</p>
<p>Le serveur DHCP envoie sa propre adresse 192.168.1.1 comme serveur DNS&#8230; logique, me direz-vous, sauf que la boîboîte est incapable de répondre aux requêtes DNS inverses, utilisées par pas mal d&#8217;applications. Dès qu&#8217;une de ces requêtes est envoyées, donc, l&#8217;application en question gèle pendant quelques secondes jusqu&#8217;à un certain délai.</p>
<pre>
$ time nslookup 74.125.43.147 192.168.1.1
;; connection timed out; no servers could be reached

real    0m15.028s
user    0m0.016s
sys     0m0.000s
</pre>
<p>Alors qu&#8217;en utilisant un serveur DNS qui fonctionne :</p>
<pre>
$ nslookup 74.125.43.147 80.10.246.2
Server:         80.10.246.2
Address:        80.10.246.2#53

Non-authoritative answer:
147.43.125.74.in-addr.arpa      name = bw-in-f147.google.com.

Authoritative answers can be found from:
</pre>
<p>Jusqu&#8217;à maintenant, j&#8217;avais ajouté les serveurs DNS à la main dans <code>/etc/dhcp3/dhclient.conf</code><br />
en utilisant la directive <code>prepend domain-name-servers 80.10.246.2</code>.</p>
<p>Oui mais voila, à chaque fois que me connecte sur un autre réseau Wifi non Livebox, les serveurs DNS (du réseau Livebox) ne sont plus accessibles, et du coup il fallait modifier le <code>resolv.conf</code> à la main pour retirer lesdits serveurs DNS.</p>
<h2>Solution</h2>
<p>Ajouter un script bien placé, qui vérifie si on est derrière une Livebox pour modifier le fichier <code>resolv.conf</code> comme il se doit.</p>
<p>Le script est à placer dans <code>/etc/network/if-up.d/fixdns</code> avec le contenu suivant :</p>
<pre>
#!/bin/sh
# script pour ajouter d'autres serveurs dns derrière une livebox
# si on reconnait la livebox, on fait la modif dans le resolv.conf

if arp &quot;$DHCP4_DHCP_SERVER_IDENTIFIER&quot; | grep -q 00:1b:bf:3d:21:49
then
        cp /etc/resolv.conf.livebox /etc/resolv.conf
fi
</pre>
<p>Et voila, le tour est joué ! Cette solution a le mérite de fonctionner avec NetworkManager, qui n&#8217;exécute pas les scripts de <code>/etc/dhcp3/dhclient-enter-hooks.d/</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/bidouilles-resolvconf/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
