<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://jul.is.a.n0life.org/blog/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>jul is a nolife - Systèmes et Réseaux</title>
  <link>http://jul.is.a.n0life.org/blog/</link>
  <description></description>
  <language>ab</language>
  <pubDate>Wed, 08 Sep 2010 01:22:42 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Un hosts.deny pour apache 2</title>
    <link>http://jul.is.a.n0life.org/blog/post/2008/01/28/Un-hostsdeny-pour-apache-2</link>
    <guid isPermaLink="false">urn:md5:aeacf863f7681244abe4214e8f5b6e05</guid>
    <pubDate>Mon, 28 Jan 2008 17:12:00 +0100</pubDate>
    <dc:creator>jul</dc:creator>
        <category>Apache</category><category>Systèmes et Réseaux</category>    
    <description>    &lt;p&gt;Pour bloquer l'accès à un site web pour une adresse spécifique, j'ai d'abord tout simplement pensé à /etc/hosts.deny, mais pour aller plus loin j'avais besoins d'une solution plus fine. Après quelques recherches j'ai donc trouvé un moyen de le faire efficacement grâce au mod_rewrite d'apache.&lt;/p&gt;


&lt;p&gt;On rajoute déjà les règles dans le fichier de son vhost&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;

RewriteEngine On

RewriteMap hosts-deny txt:/etc/apache2/hosts.deny
RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^/.* - [F]

&lt;/pre&gt;


&lt;p&gt;Cette règle lit dans le fichier /etc/apache2/hosts.deny afin de lister les adresses ip ou domaines à bloquer&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;

uneip -
unnomdedomaine -
 
&lt;/pre&gt;


&lt;p&gt;Il ne manque plus qu'a redémarrer apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;

/etc/init.d/apache2 restart

&lt;/pre&gt;


&lt;p&gt;Les visiteurs étant listés dans /etc/apache2/hosts.deny se verront ainsi renvoyer vers une page &quot;Forbiden&quot;. On peut bien sur imaginer une redirection vers une page personnalisée genre (banni.html)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;

&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;Vous avez été banni&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;h1&amp;gt;Vous n'êtes plus le bienvenu ici&amp;lt;/h1&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/pre&gt;


&lt;p&gt;On change simplement la ligne&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;

RewriteRule ^/.* - [F]

&lt;/pre&gt;

&lt;p&gt;Par&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;

RewriteRule ^/.* /banni.html [L]

&lt;/pre&gt;


&lt;p&gt;Source: &lt;a href=&quot;http://httpd.apache.org/docs/2.0/misc/rewriteguide.html&quot; title=&quot;http://httpd.apache.org/docs/2.0/misc/rewriteguide.html&quot;&gt;http://httpd.apache.org/docs/2.0/mi...&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://jul.is.a.n0life.org/blog/post/2008/01/28/Un-hostsdeny-pour-apache-2#comment-form</comments>
      <wfw:comment>http://jul.is.a.n0life.org/blog/post/2008/01/28/Un-hostsdeny-pour-apache-2#comment-form</wfw:comment>
      <wfw:commentRss>http://jul.is.a.n0life.org/blog/feed/rss2/comments/25</wfw:commentRss>
      </item>
    
  <item>
    <title>Transformer un Iomega high-speed ethernet en véritable NAS</title>
    <link>http://jul.is.a.n0life.org/blog/post/2006/11/13/Transformer-un-Iomega-high-speed-ethernet-en-veritable-NAS</link>
    <guid isPermaLink="false">urn:md5:827fa5c5e2bbcdeb5694adf67abd7457</guid>
    <pubDate>Mon, 13 Nov 2006 01:35:00 +0100</pubDate>
    <dc:creator>jul</dc:creator>
        <category>Embarqué</category><category>Hack</category><category>Systèmes et Réseaux</category>    
    <description>    J'ai acheté, il y a quelques temps déjà, un disque réseau Iomega bas de gamme. Plutôt pratique à première vue, il permet de charger son disque à travers samba ainsi que de modifier quelques options avec une interface de gestion html. &lt;br /&gt;&lt;br /&gt;Vu le prix de celui-ci, rien de bien extraordinaire. Pourtant un certain nombre de limitations m'empêchaient de profiter pleinement de l'engin.
Tout d'abord, pas de partage nfs, le partage samba c'est bien quand on a windows, mais sinon, pas de permissions. En plus aucun droit d'accès au disque: on y accède directement avec tous les droits de lecture/écriture sans mot de passe. Enfin Iomega ne supporte déjà plus ce disque (il n'est d'ailleurs même plus sur leur site) donc pas de nouveau firmware à esperer.
&lt;br /&gt;&lt;br /&gt;En cherchant un peu sur internet, j'ai découvert qu'en fait, la machine tournerait sous linux. En poursuivant mes recherches (démontage de l'appareil à l'appui), je découvre qu'en fait le système embarqué est bien un linux et qu'il s'agit d'une carte &lt;a href=&quot;http://developer.axis.com/products/etrax100lx/index.html&quot;&gt;Axis Etrax 100LX&lt;/a&gt;. Avec un CPU RISC 32bits à 100Mhz, 32 Mo de RAM et surtout un environnement de cross-compilation et un tas d'outils linux disponibles en téléchargement sur le site d'Axis!&lt;br /&gt;&lt;br /&gt;Problème: le truc de Iomega est totalement fermé. Pas d'accès autre que samba et l'interface de gestion, et aucun autre signe de configuration possible du linux à l'interieur. Un serveur ftp semble tourner dessus mais&amp;nbsp; impossible de s'y connecter car je ne dispose pas du mot de passe vu que Iomega semblerait garder ce ftp uniquement au cas ou ils voudraient permettre une mise à jour du firmware. En conclusion, j'ai acheté un système sur lequel je n'ai pas les droits d'accès !l&lt;br /&gt;&lt;br /&gt;Après avoir tourné le problème dans tous les sens, j'ai finalement trouvé une solution d'une effrayante simplicité.&lt;br /&gt;Sachant qu'il s'agit d'un linux qui fait tourner samba, je sais que samba suit les liens symboliques unix pour les présenter en dur une fois le disque monté : il me suffit donc de créer un lien symbolique vers / depuis le répertoire que je peux voir dans samba!&lt;br /&gt;Pour cela il faut démonter le disque et le remonter dans un PC (PATA), monter la bonne partition, ajouter le lien puis tout remettre comme avant (j'imagine que le fait de démonter le disque enlève la garantie, mais bon osef).&lt;br /&gt;&lt;br /&gt;Une fois le disque enlevé de sa boite, on le met dans un PC. Imaginons qu'on le monte en esclave, alors on le verra apparaître en hdb dans linux. On découvre qu'il y a deux partition. A prioris /dev/hdb1 est une petite partition de 6Mo ou le firmware se colle au démarrage. /dev/hdb2 contient nos données: c'est là où l'on mettra notre lien.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# mount /dev/hdb2 /tmp&lt;br /&gt;# cd /tmp&lt;br /&gt;# ln -s / Root&lt;br /&gt;# umount /tmp&lt;/pre&gt;&lt;br /&gt;Voila, ça c'est fait. On remonte le tout comme avant: on a maintenant accès à l'arborescence du système dans Root lorsque l'on monte le disque réseau avec samba.&lt;br /&gt;Tout cela est bien beau, mais on ne peut pas faire grand chose de plus pour l'instant. Le top serait d'avoir un ssh ou un telnet pour pouvoir éxécuter à souhait des trucs dessus (je vous laisse imaginer).&lt;br /&gt;&lt;br /&gt;Il faut savoir que le système en lui même est en lecture seulement. Seul le répertoire /etc est en lecture/écriture. C'est déjà pas mal! On va pouvoir installer un ssh et un nfs qui se lancent au démarrage. N'oublions pas que nous avons tout l'environement de cross-compilation à disposition !&lt;br /&gt;&lt;br /&gt;La première étape consisterait en un remplacement du /etc/passwd, avec un mot de passe root que l'on connait. Ainsi on pourait déjà accéder au ftp. &lt;br /&gt;&lt;br /&gt;Pour le reste, bon courage. :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Déploiement de ruby on rails avec apache 2.0 et mongrel</title>
    <link>http://jul.is.a.n0life.org/blog/post/2006/10/04/Deploiement-de-ruby-on-rails-avec-apache-20-et-mongrel</link>
    <guid isPermaLink="false">urn:md5:7224f3e34ed5fd8619bc8abc906a67e6</guid>
    <pubDate>Wed, 04 Oct 2006 09:59:00 +0200</pubDate>
    <dc:creator>jul</dc:creator>
        <category>Apache</category><category>Ruby On Rails</category><category>Systèmes et Réseaux</category>    
    <description>    &lt;p&gt;Le principal problème de Ruby on Rails, actuellement, est son déploiement dans un environnement de production. Il existe pourtant un certain nombre de possibilités plus ou moins simples.&lt;/p&gt;
&lt;p&gt;La solution que j’ai retenu est d’utiliser la capacité de clustering de &lt;a href=&quot;http://mongrel.rubyforge.org/&quot;&gt;mongrel&lt;/a&gt; avec la version 2.0 de &lt;a href=&quot;http://apache.org&quot;&gt;apache&lt;/a&gt; .
Les développeurs de mongrel conseillent l’utilisation d'apache 2.2 et de son mod_load_balancer. Néammoins, apache 2.0 reste la version la plus simple à utiliser, car maintenue par les principales distributions (Debian en tête).&lt;/p&gt;
&lt;p&gt;En imaginant que nous avons déjà un environnement rails en place, nous allons commencer par installer mongrel:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;br /&gt;$ sudo gem install mongrel&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Une fois mongrel installé, configurons le pour une application donnée :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;br /&gt;$ sudo mongrel_rails cluster::configure -e production \ &lt;br /&gt;-p 8000 -N 3 -c /repertoire/de/notre/application \ &lt;br /&gt;-a 127.0.0.1 --user www-data --group www-data&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
Petite explication, nous configurons mongrel en cluster de trois processus (-N 3) commençant au port 8000 (-p 8000), ce qui nous lancera trois processus (8000,8001 et 8002).
A noter également que notre répertoire devra posséder les permissions www-data.
Nous pouvons à présent lancer le cluster:
&lt;pre&gt;&lt;code&gt;&lt;br /&gt;$ sudo mongrel_rails cluster::start&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il faut maintenant configurer apache pour qu’il gère de manière transparente ce cluster. Pour cela, nous allons utiliser le module mod_proxy de la version 2.0. Voici le code pour un hôte virtuel (/etc/apache2/site-availables/monsite.fr dans Debian):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;VirtualHost *&amp;gt;&lt;br /&gt;    ServerName www.monsite.fr&lt;br /&gt;    ServerAdmin admin@monsite.fr&lt;br /&gt;    DocumentRoot /repertoire/de/notre/application/public&lt;br /&gt;&lt;br /&gt;    &amp;lt;Proxy *&amp;gt;&lt;br /&gt;        Order deny,allow&lt;br /&gt;        Allow from all&lt;br /&gt;    &amp;lt;/Proxy&amp;gt;&lt;br /&gt;&lt;br /&gt;    ProxyRequests Off&lt;br /&gt;    ProxyPassReverse / http://localhost:8000/&lt;br /&gt;    ProxyPassReverse / http://localhost:8001/&lt;br /&gt;    ProxyPassReverse / http://localhost:8002/&lt;br /&gt;    ProxyPreserveHost On&lt;br /&gt;    RewriteEngine On&lt;br /&gt;    RewriteMap  servers rnd:/etc/apache2/map.txt&lt;br /&gt;    RewriteRule ^/(images|stylesheets|javascripts)/?(.*) $0 [L]&lt;br /&gt;    RewriteRule ^/(.*)$ http://localhost:${servers:ports}/$1 [P,L]&lt;br /&gt;&lt;br /&gt;    &amp;lt;Directory /repertoire/de/notre/application/public/&amp;gt;&lt;br /&gt;        Options +FollowSymLinks&lt;br /&gt;        Order allow,deny&lt;br /&gt;        allow from all&lt;br /&gt;    &amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;br /&gt;    ErrorLog /var/log/apache2/monsite_error.log&lt;br /&gt;    LogLevel warn&lt;br /&gt;    CustomLog /var/log/apache2/monsite_access.log combined&lt;br /&gt;    ServerSignature On&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;N’oubliez pas d’activer le module apache et le nouveau site.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;br /&gt;$ sudo a2enmod proxy&lt;br /&gt;$ sudo a2ensite monsite.fr&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il ne reste plus qu’à relancer apache!
Les connexions vers www.monsite.fr seront ainsi redirigées automatiquement vers le cluster le plus approprié.&lt;/p&gt;
&lt;p&gt;Cette technique nous permet d’avoir une application rails supportant une charge plus importante en multipliant les clusters.&lt;/p&gt;
&lt;p&gt;Voir également (en anglais): &lt;a href=&quot;http://mongrel.rubyforge.org/docs/apache.html&quot;&gt;la doc de mongrel&lt;/a&gt;  et &lt;a href=&quot;http://times.usefulinc.com/2006/09/13-mongrel-apache20&quot;&gt;ce blog.&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Passer une commande en tâche de fond</title>
    <link>http://jul.is.a.n0life.org/blog/post/2006/07/24/Passer-une-commande-en-tache-de-fond</link>
    <guid isPermaLink="false">urn:md5:4af4faac92c20f2de01878a77ba9a443</guid>
    <pubDate>Mon, 24 Jul 2006 15:33:00 +0200</pubDate>
    <dc:creator>jul</dc:creator>
        <category>Linux</category><category>Systèmes et Réseaux</category><category>Unix</category>    
    <description>    &lt;p&gt;Quel désespoir de voir la commande qu’on a lancé à midi ne pas être terminée au moment de quitter le travail…
Heureusement unix est la pour nous éviter de faire des heures sup’!&lt;/p&gt;
&lt;p&gt;Disons que la commande est lancée depuis un terminal X par un shell ouvert en ssh  :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;julbouln@lesitedistant:~$ commande&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On commence par susprendre la tâche avec un &lt;span class=&quot;caps&quot;&gt;CTRL&lt;/span&gt;+Z :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[1]+  Stopped      commande&lt;br /&gt;julbouln@lesitedistant:~$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On passe celui-ci en tâche de fond :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;julbouln@lesitedistant:~$ bg&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Le problème à présent est que la commande est toujours associée au terminal, donc si on quitte le shell, la commande se termine.
Heureusement il existe une commande pour  la détacher du terminal :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;julbouln@lesitedistant:~$ disown&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et voila!
On peut à présent quitter en laissant la commande se terminer tranquillement.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Ajouter un script au démarrage de la Debian</title>
    <link>http://jul.is.a.n0life.org/blog/post/2006/06/14/Ajouter-un-script-au-demarrage-de-la-Debian</link>
    <guid isPermaLink="false">urn:md5:2bad42e2e8a8f255d3311098be5e3ebd</guid>
    <pubDate>Wed, 14 Jun 2006 10:09:00 +0200</pubDate>
    <dc:creator>jul</dc:creator>
        <category>Debian</category><category>Linux</category><category>Systèmes et Réseaux</category>    
    <description>    &lt;p&gt;Il peut être pratique de rajouter un script personnalisé au démarrage.
Pour ce faire, la Debian propose un outil de haut niveau pour faciliter la tâche : &lt;em&gt;update-rc.d&lt;/em&gt;.&lt;/p&gt;
Tout d’abord, il vous faut créer un script que vous placerez dans &lt;em&gt;/etc/init.d&lt;/em&gt;. &lt;br /&gt;MAJ: Il existe un fichier /etc/init.d/skeleton qui peut servir de modèle (merci tito).&lt;br /&gt;Appelons le &lt;em&gt;/etc/init.d/monscript&lt;/em&gt; par exemple :
&lt;pre&gt;&lt;code&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;case &quot;$1&quot; in&lt;br /&gt;  start|&quot;&quot;) &lt;br /&gt;        # au démarrage&lt;br /&gt;        ;;&lt;br /&gt;  stop)   &lt;br /&gt;        # à l'arret&lt;br /&gt;        ;;&lt;br /&gt;  *)&lt;br /&gt;        echo &quot;Usage: monscript [start|stop]&quot; &amp;gt;&amp;amp;2&lt;br /&gt;        exit 3&lt;br /&gt;        ;;&lt;br /&gt;esac&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Notez le &lt;em&gt;case ”$1”&lt;/em&gt; qui recupère le premier argument de la commande. Si l’argument est &lt;em&gt;start&lt;/em&gt; ou qu’il n’y en a pas, alors on exécute ce qu’il y a au niveau de &lt;em&gt;# au démarrage&lt;/em&gt;. Si l’argument est &lt;em&gt;stop&lt;/em&gt;, ce qu’il y a au niveau de &lt;em&gt;# à l’arret&lt;/em&gt;&lt;/p&gt;
Rajoutez lui le mode exécutable :
&lt;pre&gt;&lt;code&gt;&lt;br /&gt;# chmod +x /etc/init.d/monscript&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
Vous pouvez à présent tester votre script directement depuis la console :
&lt;pre&gt;&lt;code&gt;&lt;br /&gt;# /etc/init.d/monscript stop&lt;br /&gt;# /etc/init.d/monscript start&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
Ensuite, afin qu’il se lance automatiquement au démarrage, il faut le rajouter aux runlevels. Pour cela, utilisez simplement la commande update-rc.d :
&lt;pre&gt;&lt;code&gt;&lt;br /&gt;# update-rc.d monscript defaults 99&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;update-rc.d&lt;/em&gt; possède un certain nombre d’options, nous utilisons les plus simples dans cet exemple :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;monscript&lt;/em&gt; correspond au fichier bash &lt;em&gt;/etc/init.d/monscript&lt;/em&gt; que nous venons de créer&lt;/li&gt;
&lt;li&gt;&lt;em&gt;defaults&lt;/em&gt; permet de couvrir tous les runlevels&lt;/li&gt;
&lt;li&gt;&lt;em&gt;99&lt;/em&gt; est le niveau de priorité. 99 étant le plus faible et 1 le plus élevé. Le niveau de priorité correspondant à l’ordre lors du démarrage, les plus faibles étant exécutés en dernier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vous n’avez plus qu’à redémarrer pour essayer le tout!&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Installer Windows après une Debian</title>
    <link>http://jul.is.a.n0life.org/blog/post/2006/04/30/Installer-Windows-apres-une-Debian</link>
    <guid isPermaLink="false">urn:md5:548ee3b5196c1b673ea278fb625df3ec</guid>
    <pubDate>Sun, 30 Apr 2006 08:37:00 +0200</pubDate>
    <dc:creator>jul</dc:creator>
        <category>Debian</category><category>Linux</category><category>Systèmes et Réseaux</category>    
    <description>    &lt;p&gt;Il arrive parfois que l’on veuille installer un Windows sur une machine où Linux est déjà installé. Le problème est que Windows efface le chargeur multi-os pour se mettre à la place.&lt;/p&gt;
&lt;p&gt;Heureusement il existe une technique rapide et simple pour réinstaller le chargeur.&lt;/p&gt;
&lt;p&gt;Prenons un exemple,
vous avez un disque partionné comme suit:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/dev/hda1 : ext3 monté en / contenant Linux&lt;br /&gt;/dev/hda2 : swap&lt;br /&gt;/dev/hda3 : ext3 monté en /home&lt;br /&gt;/dev/hda4 : ntfs ou vfat contenant Windows&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Après avoir installé Windows, le système sur /dev/hda4 est chargé automatiquement au démarrage. Pour y remédier, il suffit d’utiliser le cd d’installation de Debian (un cd netinstall suffit).&lt;/p&gt;
&lt;p&gt;Mettez le dans le lecteur et faites comme si vous alliez installer la Debian. Vous pouvez sélectionner les options de configuration pour votre clavier. Ensuite, basculez dans la deuxième console (ALT-F2) et tappez entrée pour avoir un prompt.&lt;/p&gt;
&lt;p&gt;A présent, il vous faut charger votre partition Linux:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount -t ext3 /dev/hda1 /tmp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dans l’installeur Sarge, il semble que les fichiers de disque n’ont pas le même shéma, si vous ne trouvez pas de /dev/hda1, utilisez /dev/ide/host0/bus0/target0/lun0/part1 à la place.&lt;/p&gt;
&lt;p&gt;Pour utiliser les commandes de votre propre système :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chroot /tmp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Réinstallez le chargeur multi-os :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;grub-install /dev/hda&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et voila, vous devriez avoir un message indiquant que tout c’est bien passé ! Quittez votre système :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;exit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Démontez le disque :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;umount /tmp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et redémarrez :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;reboot&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Au redémarrage, vous allez avoir le même écran de démarrage qu’avant avoir installé Windows. Démarrez votre Linux, vous pouvez rajouter l’entrée Windows à la main dans /boot/grub/menu.lst :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;title       Windows NT/2000/XP&lt;br /&gt;root        (hd0,3)&lt;br /&gt;makeactive&lt;br /&gt;chainloader +1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ou lancer un dpkg-reconfigure grub, ce qui devrait détecter et intégrer directement le nouveau système.&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>