<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>Pep&#039;s Blog</title>
	<link>http://pep.gluglu.org/blog/</link>
	<language>fr</language>
	<description>Blog perso</description>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://pep.gluglu.org/blog/feed.php" />
	<lastBuildDate>Tue, 24 Apr 2012 10:18:00 +0200</lastBuildDate>
	<generator>PluXml</generator>
	<item>
		<title>Synchronisation de répertoires entre deux machines</title> 
		<link>http://pep.gluglu.org/blog/article5/synchronisation-de-repertoires-entre-deux-machines</link>
		<guid>http://pep.gluglu.org/blog/article5/synchronisation-de-repertoires-entre-deux-machines</guid>
		<description>Fini les crontab / rsync pour synchroniser un répertoire sur 2 machines. Inosync utilise le service inotify des derniers noyaux linux. Ainsi chaque fois qu&#039;un changement est détecté, la synchronisation est effectuée.&lt;p&gt;Sous Debian, il existe un paquet inosync qui contient juste le minimum : le démon inosync, une page man et quelques fichiers d&#039;exemple.&lt;/p&gt;

&lt;p&gt;Bref tout est à faire !&lt;/p&gt;

&lt;p&gt;Sur &lt;ins&gt;serveur_1.example.org&lt;/ins&gt; :&lt;/p&gt;

&lt;p&gt;Créer le répertoire &lt;ins&gt;/etc/inosync&lt;/ins&gt; qui contiendra les fichiers de conf.&lt;/p&gt;

&lt;p&gt;Éditez le ficher &lt;ins&gt;/etc/inosync/test.py&lt;/ins&gt;&lt;/p&gt;

&lt;pre&gt;
# directory that should be watched for changes
wpath = &quot;/home/test/&quot;
# exclude list for rsync
rexcludes = [
]
# common remote path
rpath = &quot;/home/test/&quot;
# remote locations in rsync syntax
rnodes = [
	&quot;serveur_2.example.org:&quot; + rpath,
]
# limit remote sync speed (in KB/s, 0 = no limit)
#rspeed = 0
# event mask (only sync on these events)
#emask = [
#	&quot;IN_CLOSE_WRITE&quot;,
#	&quot;IN_CREATE&quot;,
#	&quot;IN_DELETE&quot;,
#	&quot;IN_MOVED_FROM&quot;,
#	&quot;IN_MOVED_TO&quot;,
#]
# event delay in seconds (prevents huge amounts of syncs, but dicreases the
# realtime side of things)
# edelay = 10
# rsync log file for updates
logfile = /var/log/inosync.log
# rsync binary path
rsync = &quot;/usr/bin/rsync&quot;
&lt;/pre&gt;

&lt;p&gt;Ce fichier doit être adapté et déposé sur serveur_2.example.org.&lt;/p&gt;

&lt;p&gt;Le script de démarrage permet d&#039;avoir plusieurs fichiers de conf afin de surveiller plusieurs répertoires, un fichier de conf par répertoire.&lt;/p&gt;

&lt;p&gt;&lt;ins&gt;/etc/init.d/inosync&lt;/ins&gt;&lt;/p&gt;

&lt;pre&gt;
#!/bin/bash
### BEGIN INIT INFO
# Provides: 	 inosync	
# Required-Start:   $local_fs $network $syslog $named
# Required-Stop:    $local_fs $network $syslog $named
# Default-Start: 	2 3 4 5
# Default-Stop:     0 1 6
### END INIT INFO

LOG=/var/log/inosync.log
INOSYNC=/usr/bin/inosync

case &quot;$1&quot; in
	start)
        if ls /var/run/inosync_* 2&gt;/dev/null; then
            echo &quot;Inosync en cours ...&quot;
            exit 1
        fi
    	echo &quot;Inosync start&quot;
        rep=`ls /etc/inosync/*py 2&gt; /dev/null`
        for r in $rep; do
            $INOSYNC -d -v -c $r
            pid=`pgrep -f -n &#039;/usr/bin/inosync&#039;`
            echo $pid &gt; /var/run/inosync_`basename $r`.pid
        done
	    ;;
	stop)
    	echo &quot;Inosync stop&quot;
        kill=`ls /var/run/inosync*.pid 2&gt;/dev/null`
        for k in $kill; do
         	kill -15 `cat $k`
            rm -f $k
        done
        ;;
    restart)
        $0 stop
        sleep 1
        $0 start
        ;;
    status)
    	echo &quot;Inosync status&quot;
        kill=`ls /var/run/inosync*.pid 2&gt;/dev/null`
        for k in $kill; do
         	echo $k
        done
        ;;
	*)
	    echo &quot;Usage: $0 (start|stop|restart|status)&quot;
	    ;;
esac
&lt;/pre&gt;

&lt;p&gt;&lt;ins&gt;update-rc.d inosync defaults&lt;/ins&gt;, afin de lancer le service au démarrage, et c&#039;est bon.&lt;/p&gt;

&lt;p&gt;Le service inosync ne synchronise que les fichiers dans le répertoire surveillé. Si un répertoire est créé, il n&#039;est pas synchronisé sur la machine distante. Celà doit venir des options passées à rsync. Je n&#039;ai pas trouvé de moyen, pour l&#039;instant, de synchroniser les nouveaux répertoires.&lt;/p&gt;

&lt;p&gt;Site officiel : &lt;a href=&quot;https://github.com/hollow/inosync&quot;&gt;https://github.com/hollow/inosync&lt;/a&gt;&lt;/p&gt;</description>
		<pubDate>Tue, 24 Apr 2012 10:18:00 +0200</pubDate>
		<dc:creator>pep</dc:creator>
	</item>
	<item>
		<title>Reboot Machine Distante</title> 
		<link>http://pep.gluglu.org/blog/article4/reboot-machine-distante</link>
		<guid>http://pep.gluglu.org/blog/article4/reboot-machine-distante</guid>
		<description>Si ça ne vous est pas arrivé, cela vous arrivera. Une console en ssh sur une machine distante, un instant d&#039;inatention, on tape &quot;reboot&quot; pour redémarrer sa machine, et là c&#039;est le drame : &quot;reboot&quot;, ou même pire, &quot;halt&quot; sur la machine distante ...&lt;br /&gt;


Pour éviter ça, installez &quot;molly-guard&quot;. Il vous demandera le nom de la machine que vous voulez rebooter ou arrêter, comme ça, plus de surprise.</description>
		<pubDate>Thu, 24 Nov 2011 09:02:00 +0100</pubDate>
		<dc:creator>pep</dc:creator>
	</item>
	<item>
		<title>Changement de disk système</title> 
		<link>http://pep.gluglu.org/blog/article3/changement-de-disk-systeme</link>
		<guid>http://pep.gluglu.org/blog/article3/changement-de-disk-systeme</guid>
		<description>&lt;p&gt;Il a eu 14 ans, y&#039;a pas très longtemps. Un disk dur Fujitsu de 4,2Go. 14 ans à marcher 24/24, 365 jours par an. Mais aujourd&#039;hui, il part en retraite.&lt;/p&gt;

&lt;p&gt;Le problème, c&#039;est que tout réinstaller, j&#039;ai pas envie. Alors je l&#039;ai fait à la roots.&lt;/p&gt;

&lt;p&gt;&lt;ins&gt;Disque système actuel&lt;/ins&gt;&lt;/p&gt;
&lt;pre&gt;
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         243     1951866   83  Linux
/dev/sda2             244         340      779152+  83  Linux
/dev/sda3             341         371      249007+  82  Linux swap / Solaris
/dev/sda4             372         525     1237005   83  Linux

sda1 -&gt; /
sda2 -&gt; /var
&lt;/pre&gt;

&lt;p&gt;&lt;ins&gt;Futur disque système&lt;/ins&gt;&lt;/p&gt;
&lt;pre&gt;
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         973     7815591   83  Linux
/dev/sdc2             974        1216     1951897+  83  Linux
/dev/sdc3            1217        1338      979965   82  Linux swap / Solaris

sdc1 -&gt; /
sdc2 -&gt; /var

~# mkdir /mnt/t

Monter / et /var
~# mount /dev/sdc1 /mnt/t
~# mount /dev/sdc2 /mnt/t/var

Copier le / actuel sur le / futur

~# cp -xa / /mnt/t

Copier le /var actuel sur le /var futur

~# cp -xa /var/* /mnt/t/var

Ne pas oublier de monter dev, proc et sys afin de pouvoir accéder aux disks.

~# mount -o bind /dev/ /mnt/t/dev
~# mount -t proc none /mnt/t/proc
~# mount -t sysfs none /mnt/t/sys

Entrer dans le chroot

~# chroot /mnt/t /usr/bin/zsh

Modifier le fstab. Changer / pour sdc1 et /var pour sdc2.

~# vi /etc/fstab

Installer grub sur sdc

~# grub-install /dev/sdc
&lt;/pre&gt;
&lt;p&gt;Reboot, redémarrage sur le disk sdc. Tout c&#039;est bian passé. Je ne sais pas si c&#039;est une solution à &quot;recommander&quot;, mais elle a fonctionné chez moi.&lt;/p&gt;
&lt;p&gt;Il reste encore un problème. grub.cfg contient une référence à /dev/sdc.&lt;/p&gt;

&lt;pre&gt;set root=&#039;(/dev/sdc,msdos1)&#039;&lt;/pre&gt;

&lt;p&gt;En enlevant l&#039;ancien disk (sda) le sdc actuel va changer de nom, et je ne sais pas ce qu&#039;il va se passer ;(&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Réponse&lt;/strong&gt; : Après avoir enlevé le vénérable, j&#039;ai remis le sdc en sda. Arrivé au menu de grub, modifier le nom du disk root :&lt;/p&gt;
&lt;pre&gt;set root=&#039;(/dev/sda,msdos1)&#039;&lt;/pre&gt;

&lt;p&gt;Une fois le système démarré, réinstaller grub sur le sda :&lt;/p&gt;
&lt;pre&gt;
~# grub-install /dev/sda
~# update-grub
&lt;/pre&gt;</description>
		<pubDate>Sat, 25 Jun 2011 20:00:00 +0200</pubDate>
		<dc:creator>pep</dc:creator>
	</item>
	<item>
		<title>Boot grub</title> 
		<link>http://pep.gluglu.org/blog/article2/boot-grub</link>
		<guid>http://pep.gluglu.org/blog/article2/boot-grub</guid>
		<description>&lt;h2&gt;Mise à jour d&#039;un noyau sur une machine distante.&lt;/h2&gt;
&lt;p&gt;Sous debian (et autres unix/linux), il n&#039;y a généralement pas de problème. Lors du démarrage sur un noyeau modifié, ou xen, ou ... Mais il peut arriver que la machine ne redémarre pas.&lt;/p&gt;
&lt;p&gt;Pour palier ce ce problème, grub peut démarrer sur le noyau modifié, et au cas de &quot;kernel panic&quot;, redémarrer sur l&#039;ancien noyau.&lt;/p&gt;

&lt;p&gt;Modification de &lt;ins&gt;/etc/default/grub&lt;/ins&gt;
&lt;pre&gt;
; Permet de choisir le noyau qui va démarrer en ligne de commande
GRUB_DEFAULT=&lt;em&gt;saved&lt;/em&gt;
GRUB_TIMEOUT=5
GRUB_DISTRIBUTION=`lsb_release -i -s 2&gt; /dev/null || echo Debian`
; Rajouter panic=5 -&gt; En cas de pb, redémarrage au bout de 5 sec
GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet &lt;em&gt;panic=5&lt;/em&gt;&quot;   
GRUB_CMDLINE_LINUX=

Création de &lt;ins&gt;/boot/grub/grub.cfg&lt;/ins&gt; avec les nouveaux parametres
~# update-grub

Choisi la x+1 eme entrée de grub.cfg pour le démarrage par défaut
~# grub-set-default x

Choisi de démarrer sur la y+1 eme entrée pour 1 démarrage
~# grub-reboot y

Re démarre
~# reboot
&lt;/pre&gt;
&lt;p&gt;Ca peut éviter de courir à la salle machine, ou de télépĥoner 5 fois à son hébergeur dans la même journée ...&lt;/pre&gt;</description>
		<pubDate>Sun, 22 May 2011 16:11:00 +0200</pubDate>
		<dc:creator>pep</dc:creator>
	</item>
	<item>
		<title>Boot pxe</title> 
		<link>http://pep.gluglu.org/blog/article1/debian-boot-pxe</link>
		<guid>http://pep.gluglu.org/blog/article1/debian-boot-pxe</guid>
		<description>&lt;p&gt;Le cdrom de mon portable étant naze, pas de boot sur usb, il ne restait que la mystérieuse option &quot;boot from network&quot;.&lt;/p&gt;
&lt;h2&gt;Le serveur dhcp&lt;/h2&gt;
&lt;p&gt;Le premier élément nécessaire est un serveur dhcp. Il fournira une ip, et précisera ou trouver les fichiers nécessaires au démarrage.&lt;/p&gt;
&lt;pre&gt;
&lt;ins&gt;/etc/dhcp/dhcpd.conf&lt;/ins&gt;
 authoritative;
 ddns-update-style interim;
 ignore client-updates;
 
 subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.200 192.168.1.250;
   option domain-name-servers 192.168.1.2;
   option domain-name &quot;glu&quot;;
   option routers 192.168.1.1;
   option subnet-mask 255.255.255.0;
   default-lease-time 43200;
   max-lease-time 86400;
 
   server-name &quot;PXE&quot;;
   next-server 192.168.1.1;
   filename &quot;/srv/tftp/pxe/pxelinux.0&quot;;
 }
&lt;/pre&gt;

&lt;p&gt;L&#039;option &quot;next-server&quot; sert à préciser l&#039;ip du serveur tftp si celui-ci n&#039;est pas le même que le serveur dhcp.&lt;/p&gt;
&lt;h2&gt;Le serveur tftp&lt;/h2&gt;
&lt;p&gt;Trivial ftp : on fait dans le simple, pas d&#039;authentification, on lui demande un fichier, il nous le donne. Le serveur atftp fait très bien l&#039;affaire.&lt;/p&gt;
&lt;p&gt;L&#039;installateur créé un nouveau répertoire : /srv/tftp. Ce répertoire contiendra les fichiers.&lt;/p&gt;
&lt;pre&gt;
&lt;ins&gt;/etc/default/atftp&lt;/ins&gt;
USE_INETD=false
OPTIONS=&quot;--tftpd-timeout 300 --retry-timeout 5 --bind-address 192.168.1.10 --no-multicast --maxthread 100 --verbose=10 /srv/tftp&quot;
&lt;/pre&gt;
&lt;h2&gt;Le serveur PXE&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Installer pxe et syslinux.&lt;/li&gt;
&lt;li&gt;Créer le répertoire &lt;ins&gt;/srv/tftp/pxe&lt;/ins&gt;&lt;/li&gt;
&lt;li&gt;Téléchargement des images netbook : http://ftp.fr.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/netboot.tar.gz&lt;/li&gt;
&lt;li&gt;Décompression de l&#039;archive.&lt;/li&gt;
&lt;li&gt;Création de l&#039;arborescence tftp
&lt;pre&gt;
mkdir -p /srv/tftp/pxe/boot-screens/
mkdir -p /srv/tftp/pxe/pxelinux.cfg/
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Copie des fichiers de boot dans l&#039;arborescence du serveur tftp
&lt;pre&gt;
cp netboot-debian-squeeze-i386/debian-installer/i386/pxelinux.0 /srv/tftp/pxe/
cp netboot-debian-squeeze-i386/debian-installer/i386/boot-screens/splash.png /srv/tftp/pxe/boot-screens/
cp netboot-debian-squeeze-i386/debian-installer/i386/boot-screens/vesamenu.c32 /srv/tftp/pxe/boot-screens/
cp netboot-debian-squeeze-i386/debian-installer/i386/initrd.gz /srv/tftp/pxe/debian-squeeze/i386/
cp netboot-debian-squeeze-i386/debian-installer/i386/linux /srv/tftp/pxe/debian-lenny/i386/
&lt;pre&gt;
&lt;/li&gt;
&lt;li&gt;Création du fichier &lt;ins&gt;/srv/tftp/pxe/prelinux.cfg/default&lt;/ins&gt;
&lt;pre&gt;
include /boot-screens/menu.cfg
default /boot-screens/vesamenu.c32
prompt 0
timeout 0
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Création du fichier &lt;ins&gt;/srv/tftp/pxe/boot-screens/menu.cfg&lt;/ins&gt;
&lt;pre&gt;
menu color border       * #00000000 #00000000 none
menu color sel          * #ffffffff #76a1d0ff *
menu color hotsel       1;7;37;40 #ffffffff #76a1d0ff *
menu color tabmsg       * #ffffffff #00000000 *
menu vshift 12
menu rows 10
menu tabmsgrow 16
menu timeoutrow 17
menu tabmsg Press ENTER to boot or TAB to edit a menu entry
menu autoboot Starting Local System in # seconds

prompt 0
 
label bootlocal
  menu label ^Boot from local disk
    menu default
    localboot 0
    timeout 200           #timeout which is displayed, Wait 10 seconds unless the user types somethin
    totaltimeout 1200     #timeout which executes the default definitely, always boot after 2 minutes
 
menu begin debian
  menu title Debian
  label mainmenu
    menu label ^Back..
    menu exit
  menu begin debian-squeeze
    menu title Debian Squeeze
    label mainmenu
      menu label ^Back..
      menu exit
    menu begin debian-squeeze-i386
      menu title Debian Squeeze i386
      label mainmenu
        menu label ^Back..
        menu exit
      DEFAULT install
      LABEL install
        kernel debian-squeeze/i386/linux
        append vga=normal initrd=debian-squeeze/i386/initrd.gz --
      LABEL expert
        kernel debian-squeeze/i386/linux
        append priority=low vga=normal initrd=debian-squeeze/i386/initrd.gz --
      LABEL rescue
        kernel debian-squeeze/i386/linux
        append vga=normal initrd=debian-squeeze/i386/initrd.gz rescue/enable=true --
      LABEL auto
        kernel debian-squeeze/i386/linux
        append auto=true priority=critical vga=normal initrd=debian-squeeze/i386/initrd.gz --
    menu end
  menu end
menu end
&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rien de trop compliqué, en somme. Ca permet de se sortir de problèmes matériels, de déployer à grande échelle et à peu de frais.&lt;/p&gt;</description>
		<pubDate>Sun, 22 May 2011 14:39:00 +0200</pubDate>
		<dc:creator>pep</dc:creator>
	</item>
</channel>
</rss>
