<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://wiki.orgrim.net/lib/exe/css.php?s=feed" type="text/css"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Le Grim-O-Wiki linux</title>
    <subtitle></subtitle>
    <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/"/>
    <id>http://wiki.orgrim.net/</id>
    <updated>2012-05-19T22:44:03+00:00</updated>
    <generator>FeedCreator 1.7.2-ppt DokuWiki</generator>
<link rel="self" type="application/atom+xml" href="http://wiki.orgrim.net/feed.php" />
    <entry>
        <title>Apache avec Virtual Hosts sur Debian</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/apache-avec-virtual-hosts"/>
        <published>2010-05-06T15:26:16+00:00</published>
        <updated>2010-05-06T15:26:16+00:00</updated>
        <id>http://wiki.orgrim.net/linux/apache-avec-virtual-hosts</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ce sujet est très bien documenté sur le Net, par contre le faire à la façon Debian est plus rare, surtout quand on ne parle pas anglais.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;Apache avec Virtual Hosts sur Debian&quot; [1-194] --&gt;
&lt;h2 class=&quot;sectionedit2&quot;&gt;&lt;a name=&quot;installation&quot; id=&quot;installation&quot;&gt;Installation&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour installer Apache, c&amp;#039;est très simple : le paquet &lt;code&gt;apache2&lt;/code&gt; contient tout ce qu&amp;#039;il faut. Ensuite, Apache a une architecture modulaire, on peut donc ajouter des modules disponibles dans des paquets dont le nom est &lt;code&gt;libapache2-&amp;lt;nom du module&amp;gt;&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install apache2&lt;/pre&gt;

&lt;p&gt;
Sous Debian, les répertoires importants sont :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/etc/apache2&lt;/code&gt;: contient la configuration&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/var/www&lt;/code&gt;: contient la racine de l&amp;#039;arborescence accessible par défaut&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/var/log/apache2&lt;/code&gt;: contient les logs&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;Installation&quot; [195-734] --&gt;
&lt;h2 class=&quot;sectionedit3&quot;&gt;&lt;a name=&quot;configuration&quot; id=&quot;configuration&quot;&gt;Configuration&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Changer le vhost par default de /var/www vers /var/www/default (vhost, repertoires, logs, logrotate)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Créer un patron de vhost&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Configurer des vhosts&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;Configuration&quot; [735-] --&gt;</summary>
    </entry>
    <entry>
        <title>Changement de disque utilisé en RAID1 soft</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/debian-changement-de-disque-raid1"/>
        <published>2010-05-24T10:58:04+00:00</published>
        <updated>2010-05-24T10:58:04+00:00</updated>
        <id>http://wiki.orgrim.net/linux/debian-changement-de-disque-raid1</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Sur un serveur installé en Debian Lenny, quand un disque est cassé et qu&amp;#039;on a du RAID1, on peut le remplacer tandis que la machine continue de travailler. Mais voilà, il faut lui dire qu&amp;#039;on change le disque et quand on a du &lt;acronym title=&quot;Small Computer System Interface&quot;&gt;SCSI&lt;/acronym&gt;, tout peut se faire à chaud.
&lt;/p&gt;

&lt;p&gt;
Voici la situation des disques et du &lt;acronym title=&quot;Redundant Array of Inexpensive Disks&quot;&gt;RAID&lt;/acronym&gt; soft sur le serveur au moment du crash:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Un disque &lt;acronym title=&quot;Small Computer System Interface&quot;&gt;SCSI&lt;/acronym&gt; de 36Go nommé &lt;code&gt;/dev/sda&lt;/code&gt;, il est en panne et va être remplacé&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Un disque &lt;acronym title=&quot;Small Computer System Interface&quot;&gt;SCSI&lt;/acronym&gt; de 73Go nommé &lt;code&gt;/dev/sdb&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 4 miroirs (RAID1) en md utilisant des partitions de tailles identiques sur chaque disque&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
L&amp;#039;article sur le &lt;a href=&quot;http://wiki.orgrim.net/logiciels/systeme/monter-un-serveur-nas-en-raid0-sur-lvm&quot; class=&quot;wikilink2&quot; title=&quot;logiciels:systeme:monter-un-serveur-nas-en-raid0-sur-lvm&quot; rel=&quot;nofollow&quot;&gt;NAS maison&lt;/a&gt; montre comment configurer du &lt;acronym title=&quot;Redundant Array of Inexpensive Disks&quot;&gt;RAID&lt;/acronym&gt; soft, on ne parlera donc pas de la configuration initiale du &lt;acronym title=&quot;Redundant Array of Inexpensive Disks&quot;&gt;RAID&lt;/acronym&gt;. D&amp;#039;ailleurs, la configuration &lt;acronym title=&quot;Redundant Array of Inexpensive Disks&quot;&gt;RAID&lt;/acronym&gt; de la machine prise en exemple a été faite lors de l&amp;#039;installation de Debian Lenny.
&lt;/p&gt;

&lt;p&gt;
Les tables de partitions :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# fdisk -l

Disk /dev/sdb: 73.4 GB, 73407865856 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000bd94b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         608     4883728+  fd  Linux raid autodetect
/dev/sdb2             609         851     1951897+  fd  Linux raid autodetect
/dev/sdb3             852        1094     1951897+  fd  Linux raid autodetect
/dev/sdb4            1095        8924    62894475    5  Extended
/dev/sdb5            1095        4425    26756226   fd  Linux raid autodetect
/dev/sdb6            4426        8924    36138186   83  Linux

Disk /dev/md0: 5000 MB, 5000855552 bytes
2 heads, 4 sectors/track, 1220912 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn&amp;#039;t contain a valid partition table

Disk /dev/md1: 1998 MB, 1998651392 bytes
2 heads, 4 sectors/track, 487952 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000

Disk /dev/md1 doesn&amp;#039;t contain a valid partition table

Disk /dev/md2: 1998 MB, 1998651392 bytes
2 heads, 4 sectors/track, 487952 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000

Disk /dev/md2 doesn&amp;#039;t contain a valid partition table

Disk /dev/md3: 27.3 GB, 27398307840 bytes
2 heads, 4 sectors/track, 6689040 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000

Disk /dev/md3 doesn&amp;#039;t contain a valid partition table&lt;/pre&gt;

&lt;p&gt;
On remarque :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; On ne voit plus &lt;code&gt;/dev/sda&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Comme &lt;code&gt;sdb&lt;/code&gt; fait 73Go, l&amp;#039;excédant est utilisé pour une partition logique &lt;code&gt;sdb6&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Le type de partition est “Linux raid autodetect” pour pouvoir les mettre dans des raid soft.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Voici le status du &lt;acronym title=&quot;Redundant Array of Inexpensive Disks&quot;&gt;RAID&lt;/acronym&gt; soft:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /proc/mdstat 
Personalities : [raid1] 
md3 : active raid1 sda4[2](F) sdb5[1]
      26756160 blocks [2/1] [_U]
      
md2 : active raid1 sda3[2](F) sdb3[1]
      1951808 blocks [2/1] [_U]
      
md1 : active raid1 sda2[2](F) sdb2[1]
      1951808 blocks [2/1] [_U]
      
md0 : active raid1 sda1[2](F) sdb1[1]
      4883648 blocks [2/1] [_U]
      
unused devices: &amp;lt;none&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT4 SECTION &quot;Changement de disque utilisé en RAID1 soft&quot; [1-3164] --&gt;
&lt;h2 class=&quot;sectionedit5&quot;&gt;&lt;a name=&quot;remplacement-et-detection-du-nouveau-disque&quot; id=&quot;remplacement-et-detection-du-nouveau-disque&quot;&gt;Remplacement et détection du nouveau disque&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Le fait d&amp;#039;arracher l&amp;#039;ancien disque et mettre le nouveau à la place ne fait rien. Il faut dire au noyau de rescanner le bus &lt;acronym title=&quot;Small Computer System Interface&quot;&gt;SCSI&lt;/acronym&gt;. Des outils sympathiques pour faire ça sont fournis dans le paquet &lt;code&gt;scsitools&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install scsitools&lt;/pre&gt;

&lt;p&gt;
On utilise le script &lt;code&gt;rescan-scsi-bus.sh&lt;/code&gt; fraichement installé pour rescanner le bus &lt;acronym title=&quot;Small Computer System Interface&quot;&gt;SCSI&lt;/acronym&gt;, en lui demandant de supprimer ce qui a disparu, ce qui donne quelque chose proche de :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# rescan-scsi-bus.sh -r
Host adapter 0 (aic79xx) found.
Host adapter 1 (aic79xx) found.
Scanning SCSI subsystem for new devices
 and remove devices that have disappeared
Scanning host 0 channels 0 for  SCSI target IDs  0 1 2 3 4 5 6 7, all LUNs
Scanning host 1 channels 0 for  SCSI target IDs  0 1 2 3 4 5 6 7, all LUNs
Scanning for device 1 0 0 0 ...
OLD: Host: scsi1 Channel: 00 Id: 00 Lun: 00
      Vendor: SEAGATE  Model: ST336607LSUN36G  Rev: 0307
      Type:   Direct-Access                    ANSI  SCSI revision: 03
NEW: Host: scsi1 Channel: 00 Id: 00 Lun: 00
      Vendor: SEAGATE  Model: ST336607LSUN36G  Rev: 0707
      Type:   Direct-Access                    ANSI SCSI revision: 03
Scanning for device 1 0 1 0 ...
OLD: Host: scsi1 Channel: 00 Id: 01 Lun: 00
      Vendor: SEAGATE  Model: ST373307LSUN72G  Rev: 0707
      Type:   Direct-Access                    ANSI SCSI revision: 03
Scanning for device 1 0 6 0 ...
OLD: Host: scsi1 Channel: 00 Id: 06 Lun: 00
      Vendor: ESG-SHV  Model: SCA HSBP M18     Rev: 0.07
      Type:   Processor                        ANSI SCSI revision: 02
Report Luns command not supported (support mandatory in SPC-3)
Scanning for device 1 0 6 0 ...
OLD: Host: scsi1 Channel: 00 Id: 06 Lun: 00
      Vendor: ESG-SHV  Model: SCA HSBP M18     Rev: 0.07
      Type:   Processor                        ANSI SCSI revision: 02
1 new device(s) found.               
1 device(s) removed.&lt;/pre&gt;

&lt;p&gt;
On valide qu&amp;#039;un nouveau disque est disponible:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# scsiinfo -l
/dev/sdb /dev/sdc&lt;/pre&gt;

&lt;p&gt;
On voit que ce n&amp;#039;est pas &lt;code&gt;sda&lt;/code&gt; qui est revenu mais sdc qui vient d&amp;#039;arriver, c&amp;#039;est la conséquence des liens persistant fait par udev.
&lt;/p&gt;

&lt;p&gt;
Maintenant, on partitionne &lt;code&gt;/dev/sdc&lt;/code&gt; avec &lt;code&gt;fdisk&lt;/code&gt; pour avoir les partitions qui vont bien :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# fdisk -l /dev/sdc

Disk /dev/sdc: 36.4 GB, 36420075008 bytes
255 heads, 63 sectors/track, 4427 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x6e1b40c8

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         608     4883728+  fd  Linux raid autodetect
/dev/sdc2             609         851     1951897+  fd  Linux raid autodetect
/dev/sdc3             852        1094     1951897+  fd  Linux raid autodetect
/dev/sdc4            1095        4427    26772322+   5  Extended
/dev/sdc5            1095        4425    26756226   fd  Linux raid autodetect&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT5 SECTION &quot;Remplacement et détection du nouveau disque&quot; [3165-6073] --&gt;
&lt;h2 class=&quot;sectionedit6&quot;&gt;&lt;a name=&quot;reconstruction-du-raid-soft&quot; id=&quot;reconstruction-du-raid-soft&quot;&gt;Reconstruction du RAID soft&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Prenons l&amp;#039;exemple de &lt;code&gt;md1&lt;/code&gt;. Voici l&amp;#039;état du &lt;acronym title=&quot;Redundant Array of Inexpensive Disks&quot;&gt;RAID&lt;/acronym&gt; avant maintenance :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mdadm --detail /dev/md1
/dev/md1:
        Version : 00.90
  Creation Time : Mon Feb 23 19:28:00 2009
     Raid Level : raid1
     Array Size : 1951808 (1906.38 MiB 1998.65 MB)
  Used Dev Size : 1951808 (1906.38 MiB 1998.65 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Sun May  2 01:13:00 2010
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           UUID : e80a638f:b07bd9f4:feef8c2a:28641c05
         Events : 0.62

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       18        1      active sync   /dev/sdb2

       2       8        2        -      faulty spare
# cat /proc/mdstat 
Personalities : [raid1] 
...
md1 : active raid1 sda2[2](F) sdb2[1]
      1951808 blocks [2/1] [_U]
      
...&lt;/pre&gt;

&lt;p&gt;
On va retirer le vieux &lt;code&gt;sda2&lt;/code&gt; et mettre &lt;code&gt;sdc2&lt;/code&gt; à la place :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mdadm /dev/md1 -r failed -a /dev/sdc2
mdadm: hot removed 8:2
mdadm: added /dev/sdc2&lt;/pre&gt;

&lt;p&gt;
L&amp;#039;important ici est d&amp;#039;utiliser le mot-clé “failed” pour retirer &lt;code&gt;sda2&lt;/code&gt;. Si on spécifie directement la partition du disque cassé, &lt;code&gt;mdadm&lt;/code&gt; refuse car &lt;code&gt;/dev/sda&lt;/code&gt; n&amp;#039;existe plus (on n&amp;#039;a retiré le disque).
&lt;/p&gt;

&lt;p&gt;
Si on regarde l&amp;#039;état du &lt;acronym title=&quot;Redundant Array of Inexpensive Disks&quot;&gt;RAID&lt;/acronym&gt; soft tout de suite après avoir lancé la commande, on doit voir la progression de reconstruction du RAID1:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /proc/mdstat 
Personalities : [raid1] 
...
md1 : active raid1 sdc2[2] sdb2[1]
      1951808 blocks [2/1] [_U]
      [==&amp;gt;..................]  recovery = 13.6% (267968/1951808) finish=0.4min speed=66992K/sec
...&lt;/pre&gt;

&lt;p&gt;
Et à la fin, on retrouve la situation normale:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /proc/mdstat 
Personalities : [raid1] 
...
md1 : active raid1 sdc2[0] sdb2[1]
      1951808 blocks [2/2] [UU]
      
...&lt;/pre&gt;

&lt;p&gt;
Il reste donc à effectuer la même opération pour les autres &lt;acronym title=&quot;Redundant Array of Inexpensive Disks&quot;&gt;RAID&lt;/acronym&gt; soft. On remarque, que la reconstruction se fait un &lt;acronym title=&quot;Redundant Array of Inexpensive Disks&quot;&gt;RAID&lt;/acronym&gt; après l&amp;#039;autre:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /proc/mdstat 
Personalities : [raid1] 
md3 : active raid1 sdc5[2] sdb5[1]
      26756160 blocks [2/1] [_U]
        resync=DELAYED
      
md2 : active raid1 sdc3[2] sdb3[1]
      1951808 blocks [2/1] [_U]
      [============&amp;gt;........]  recovery = 60.1% (1175232/1951808) finish=0.2min speed=61854K/sec
...
# cat /proc/mdstat 
Personalities : [raid1] 
md3 : active raid1 sdc5[2] sdb5[1]
      26756160 blocks [2/1] [_U]
      [=&amp;gt;...................]  recovery =  8.4% (2247936/26756160) finish=19.4min speed=20992K/sec
      
md2 : active raid1 sdc3[0] sdb3[1]
      1951808 blocks [2/2] [UU]
      
...&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT6 SECTION &quot;Reconstruction du RAID soft&quot; [6074-8817] --&gt;
&lt;h2 class=&quot;sectionedit7&quot;&gt;&lt;a name=&quot;reinstallation-de-grub&quot; id=&quot;reinstallation-de-grub&quot;&gt;Réinstallation de GRUB&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Comme on a changé le premier disque, le MBR ne contient plus l&amp;#039;install de GRUB. Il faut donc reinstaller GRUB dans le MBR :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# /usr/sbin/grub-install /dev/sdb
# /usr/sbin/grub-install /dev/sdc&lt;/pre&gt;

&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;notewarning&quot;&gt;Cette étape est indispensable pour le prochain reboot de la machine
&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT7 SECTION &quot;Réinstallation de GRUB&quot; [8818-9156] --&gt;
&lt;h2 class=&quot;sectionedit8&quot;&gt;&lt;a name=&quot;conclusion&quot; id=&quot;conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Tout peut se faire sans rebooter, ce qui est l&amp;#039;un des buts du RAID1 moyennant d&amp;#039;utiliser des disques branchables-à-chaud. Le seul truc gênant reste le changement de nommage des disques, désormais le premier disque est &lt;code&gt;sdc&lt;/code&gt; et le second &lt;code&gt;sdb&lt;/code&gt;: que va-t-il se passer au prochain reboot ? Vous verrez bien…
&lt;/p&gt;

&lt;p&gt;
Plus sérieusement, après un reboot, tout revient bien comme il faut : &lt;code&gt;sdc&lt;/code&gt; redevient &lt;code&gt;sda&lt;/code&gt; et le RAID1 suit :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /proc/mdstat 
Personalities : [raid1] 
md3 : active raid1 sda5[0] sdb5[1]
      26756160 blocks [2/2] [UU]
      
md2 : active raid1 sda3[0] sdb3[1]
      1951808 blocks [2/2] [UU]
      
md1 : active (auto-read-only) raid1 sda2[0] sdb2[1]
      1951808 blocks [2/2] [UU]
      
md0 : active raid1 sda1[0] sdb1[1]
      4883648 blocks [2/2] [UU]
      
unused devices: &amp;lt;none&amp;gt;&lt;/pre&gt;

&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;noteclassic&quot;&gt;On remarque que &lt;code&gt;md1&lt;/code&gt; est en “auto-read-only”. Ce n&amp;#039;est pas un problème, dès que le système voudra écrire dedans il passera en lecture/écriture.
&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;p&gt;
Et voilà, le RAID1 a bien fait son travail et le changement de disqu s&amp;#039;est passé sans encombres.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT8 SECTION &quot;Conclusion&quot; [9157-] --&gt;</summary>
    </entry>
    <entry>
        <title>Install de Debian depuis une clé USB</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/debian-cle-usb-d-install"/>
        <published>2010-09-09T21:51:49+00:00</published>
        <updated>2010-09-09T21:51:49+00:00</updated>
        <id>http://wiki.orgrim.net/linux/debian-cle-usb-d-install</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;notewarning&quot;&gt;ça ne marche pas encore
&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Outils nécessaires:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install dosfstools syslinux mbr&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Init de la clé:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# dd if=/dev/zero of=/dev/sdc bs=512 count=1&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Partitionnement et formatage:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# fdisk /dev/sdc
n, p, 1, &amp;lt;ret&amp;gt;, &amp;lt;ret&amp;gt;, t, c, a, 1, w
# mkdosfs /dev/sdc1&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Monter l&amp;#039;iso et la clé:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdir /tmp/loop
# mount -o loop /path/to/netinstall.iso /tmp/loop
# mount /dev/sdc1 /mnt&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Fichiers requis:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# cd /tmp/loop/install.i386
# cp initrd.gz vmlinuz /mnt
# cp /path/to/netinstall.iso /mnt
# sync&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ajouter la conf de syslinux dans &lt;code&gt;/mnt/syslinux.cfg&lt;/code&gt;:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;file&quot;&gt;default vmlinuz
append initrd=initrd.gz&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Bootloader:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# syslinux /dev/sdc1
# install-mbr /dev/sdc&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Démonter:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# cd
# umount /tmp/loop
# umount /mnt&lt;/pre&gt;

&lt;/div&gt;
</summary>
    </entry>
    <entry>
        <title>Lancer l'installeur Debian par un boot PXE</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/debian-install-pxe"/>
        <published>2011-08-12T17:08:02+00:00</published>
        <updated>2011-08-12T17:08:02+00:00</updated>
        <id>http://wiki.orgrim.net/linux/debian-install-pxe</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
On peut installer Debian en bootant sur le réseau, pour celà, il faut:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Une machine qui puisse booter en PXE&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Un serveur &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt; et PXE&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Un serveur TFTP&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT10 SECTION &quot;Lancer l'installeur Debian par un boot PXE&quot; [1-220] --&gt;
&lt;h2 class=&quot;sectionedit11&quot;&gt;&lt;a name=&quot;en-bref&quot; id=&quot;en-bref&quot;&gt;En bref&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Aller sur &lt;a href=&quot;http://www.debian.org/distrib/netinst&quot; class=&quot;urlextern&quot; title=&quot;http://www.debian.org/distrib/netinst&quot;  rel=&quot;nofollow&quot;&gt;http://www.debian.org/distrib/netinst&lt;/a&gt; et choisir son architecture dans la liste de la rubrique “Network boot”&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Aller dans le sous-répertoire &lt;code&gt;netboot&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Récupérer &lt;code&gt;netboot.tar.gz&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Extraire dans &lt;code&gt;/tftpboot&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Configurer le &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt; pour qu&amp;#039;il dise au client de charger &lt;code&gt;pxelinux.0&lt;/code&gt; (directive &lt;code&gt;filename “pxelinux.0”&lt;/code&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Sous &lt;a href=&quot;http://wiki.orgrim.net/netbsd/netbsd&quot; class=&quot;wikilink1&quot; title=&quot;netbsd:netbsd&quot;&gt;NetBSD&lt;/a&gt;, le service tftpd doit pouvoir être requêté plus de 40 par minute, en passant &lt;code&gt;wait&lt;/code&gt; à &lt;code&gt;wait:400&lt;/code&gt; par exemple&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT11 SECTION &quot;En bref&quot; [221-] --&gt;</summary>
    </entry>
    <entry>
        <title>Installer OpenVZ</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/debian-installer-openvz"/>
        <published>2010-12-19T15:23:10+00:00</published>
        <updated>2010-12-19T15:23:10+00:00</updated>
        <id>http://wiki.orgrim.net/linux/debian-installer-openvz</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://wiki.openvz.org/Main_Page&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.openvz.org/Main_Page&quot;  rel=&quot;nofollow&quot;&gt;OpenVZ&lt;/a&gt; est une solution de virtualisation pour GNU/Linux basée sur des “conteneurs”. Il s&amp;#039;agit de “chroot” avec des fonctionnalité avancée : réseau, quotas disque/mémoire, possibilité d&amp;#039;avoir des distristributions différrentes, etc. Par contre, on ne peut avoir que GNU/Linux dans un conteneur, pour virtualiser d&amp;#039;autres systèmes, il faudra passer par d&amp;#039;autres solutions comme qemu, Xen ou KVM.
&lt;/p&gt;

&lt;p&gt;
Cet article présente comment mettre en place OpenVZ sur Debian Squeeze.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT12 SECTION &quot;Installer OpenVZ&quot; [1-547] --&gt;
&lt;h2 class=&quot;sectionedit13&quot;&gt;&lt;a name=&quot;packages-requis&quot; id=&quot;packages-requis&quot;&gt;Packages requis&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Installer le noyau OpenVZ :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install linux-headers-2.6-openvz-amd64 linux-image-2.6-openvz-amd64&lt;/pre&gt;

&lt;p&gt;
Et les outils :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install vzctl vzdump vzquota&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT13 SECTION &quot;Packages requis&quot; [548-771] --&gt;
&lt;h2 class=&quot;sectionedit14&quot;&gt;&lt;a name=&quot;espace-de-stockage&quot; id=&quot;espace-de-stockage&quot;&gt;Espace de stockage&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pas mal de choses vont être stockées dans &lt;code&gt;/var/lib/vz&lt;/code&gt;, on va donc dédier une partition pour OpenVZ et la monter sur &lt;code&gt;/var/lib/vz&lt;/code&gt;. En considérant qu&amp;#039;une telle partition soit disponible, voici la procédure à suivre :
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Faire une sauvegarde du contenu de &lt;code&gt;/var/lib/vz&lt;/code&gt;, en utilisant &lt;code&gt;tar&lt;/code&gt; (et sont option &lt;code&gt;-p&lt;/code&gt; qui permet de conserver les propriétaires et permissions des fichiers)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Supprimer le contenu de &lt;code&gt;/var/lib/vz&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ajouter une entrée dans &lt;code&gt;/etc/fstab&lt;/code&gt; pour la partition&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Monter la partition dédiée sur &lt;code&gt;/var/lib/vz&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Mettre à jour les permissions et le propriétaire si nécessaire&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Déballer le tar de sauvegarde&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Voici un exemple utilisant un volume logique appelé &lt;code&gt;openvz&lt;/code&gt; (volume group &lt;code&gt;sys&lt;/code&gt;) :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# lvcreate -L 50G -n openvz sys
# mkfs.ext3 -m 0 /dev/sys/openvz
# cd /var/lib
# tar -cpzf ~/vz.tgz vz
# rm -rf vz/*
# mount /var/lib/vz 
# tar -xpzf ~/vz.tgz&lt;/pre&gt;

&lt;p&gt;
Avec la ligne qui convient dans &lt;code&gt;/etc/fstab&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;/dev/mapper/sys-openvz  /var/lib/vz  ext3  defaults  0  2&lt;/pre&gt;

&lt;p&gt;
Enfin, la plupart des documentations disponibles sur le net pour OpenVZ utilisent plutôt &lt;code&gt;/vz&lt;/code&gt; que &lt;code&gt;/var/lib/vz&lt;/code&gt;. Pour éviter les copier-coller hasardeux, on peut faire un lien symbolique :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# ln -s /var/lib/vz /vz&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT14 SECTION &quot;Espace de stockage&quot; [772-2091] --&gt;
&lt;h1 class=&quot;sectionedit15&quot;&gt;&lt;a name=&quot;configuration&quot; id=&quot;configuration&quot;&gt;Configuration&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT15 SECTION &quot;Configuration&quot; [2092-2120] --&gt;
&lt;h2 class=&quot;sectionedit16&quot;&gt;&lt;a name=&quot;noyau&quot; id=&quot;noyau&quot;&gt;Noyau&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il faut modifier la configuration du noyau pour certains paramètres réseau. On ajoute donc un fichier &lt;code&gt;/etc/sysctl.d/openvz.conf&lt;/code&gt; avec les sysctl nécessaires à OpenVZ :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled

net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1

# Enables source route verification
net.ipv4.conf.all.rp_filter = 1

# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0&lt;/pre&gt;

&lt;p&gt;
Pour activer les paramètres sans rebooter, il suffit d&amp;#039;exécuter :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sysctl -p /etc/sysctl.d/openvz.conf&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT16 SECTION &quot;Noyau&quot; [2121-2836] --&gt;
&lt;h2 class=&quot;sectionedit17&quot;&gt;&lt;a name=&quot;reseau&quot; id=&quot;reseau&quot;&gt;Réseau&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT17 SECTION &quot;Réseau&quot; [2837-2859] --&gt;
&lt;h3 class=&quot;sectionedit18&quot;&gt;&lt;a name=&quot;sous-reseau-dedie&quot; id=&quot;sous-reseau-dedie&quot;&gt;Sous-réseau dédié&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Par la suite, on utilisera un réseau privé dédié à nos machine openvz. Par exemple, choisissons le réseau 10.100.0.0/24, avec 10.100.0.1 comme adresse IP pour la machine physique. Il faut donc lui assigner cette IP :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# ifconfig venet0 inet 10.100.0.1&lt;/pre&gt;

&lt;p&gt;
Pour garder cette configuration disponible après de futurs reboot, on ajoute une entrée dans &lt;code&gt;/etc/network/interfaces&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;auto eth0:0
iface eth0:0 inet static
	address 10.100.0.1
	netmask 255.255.255.255&lt;/pre&gt;

&lt;p&gt;
&amp;lt;note&amp;gt;Si vous utilisez wicd, l&amp;#039;alias sera écrasé par les changements de connexions effectués par cet outils. Il faudra refaire la configuration à la main.&amp;lt;/notes&amp;gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT18 SECTION &quot;Sous-réseau dédié&quot; [2860-3555] --&gt;
&lt;h3 class=&quot;sectionedit19&quot;&gt;&lt;a name=&quot;dns&quot; id=&quot;dns&quot;&gt;DNS&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Pour faciliter la gestion des noms de machines, on installe &lt;code&gt;dnsmasq&lt;/code&gt; qui va nous permettre de facilement fournir un service &lt;acronym title=&quot;Domain Name System&quot;&gt;DNS&lt;/acronym&gt; aux machines. Il suffira d&amp;#039;ajouter la correspondance IP ↔ nom dans &lt;code&gt;/etc/hosts&lt;/code&gt; ou un fichier de son choix par la suite.
&lt;/p&gt;

&lt;p&gt;
Par la suite, on va placer tout les conteneurs dans un domaine &lt;acronym title=&quot;Domain Name System&quot;&gt;DNS&lt;/acronym&gt; géré par notre dnsmasq, pour les besoins de l&amp;#039;article, on choisit un domain n&amp;#039;existant nul part ailleurs que la machine locale, par exemple : &lt;code&gt;vz.lo&lt;/code&gt;.
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; On installe donc dnsmasq :&lt;pre class=&quot;code&quot;&gt;# aptitude install dnsmasq&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; On édite &lt;code&gt;/etc/dnsmasq.conf&lt;/code&gt; pour indiquer que son domaine local est &lt;code&gt;vz.lo&lt;/code&gt; :&lt;pre class=&quot;file&quot;&gt;local=/vz.lo/&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; On ajoute une entrée dans &lt;code&gt;/etc/hosts&lt;/code&gt; pour la machine local dans le réseau OpenVZ :&lt;pre class=&quot;file&quot;&gt;10.100.0.1	hw.vz.lo&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; On modifie &lt;code&gt;/etc/resolv.conf&lt;/code&gt; pour passer par dnsmasq en ajoutant cette 127.0.0.1 comme &lt;strong&gt;premier&lt;/strong&gt; serveur de nom :&lt;pre class=&quot;file&quot;&gt;nameserver 127.0.0.1&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Si on utilise du DCHP pour &lt;code&gt;eth0&lt;/code&gt;, il faut modifier la configuration du client &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt; pour éviter un écrasement de notre configuration de &lt;code&gt;/etc/resolv.conf&lt;/code&gt;. On édite donc &lt;code&gt;/etc/dhcp/dhclient.conf&lt;/code&gt; pour décommenter :&lt;pre class=&quot;file&quot;&gt;prepend domain-name-servers 127.0.0.1;&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Enfin, il faut redémarre le service &lt;code&gt;dnsmasq&lt;/code&gt; à chaque modification de sa configuration ou de &lt;code&gt;/etc/hosts&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# invoke-rc.d dnsmasq restart
Restarting DNS forwarder and DHCP server: dnsmasq.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT19 SECTION &quot;DNS&quot; [3556-5018] --&gt;
&lt;h3 class=&quot;sectionedit20&quot;&gt;&lt;a name=&quot;acces-a-internet-pour-les-vm&quot; id=&quot;acces-a-internet-pour-les-vm&quot;&gt;Accès à Internet pour les VM&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Utiliser un adressage réseau différent pour nos machines permet d&amp;#039;isoler les conteneurs du reste du réseau, ce qui est pratique pour ne pas gêner. Par contre, les conteneurs ne voient pas non plus le reste du réseau (seulement la machine physique) il faut donc ajouter une petit règle Netfilter pour leur permettre de joindre le reste du monde :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j SNAT --to `ifconfig eth0 | awk &amp;#039;/inet addr:/ { print substr($2,6) }&amp;#039;`&lt;/pre&gt;

&lt;p&gt;
Pour rendre cette configuration automatique, on peut modifier la configuration de l&amp;#039;interface réseau, dans &lt;code&gt;/etc/network/interfaces&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;allow-hotplug eth0
iface eth0 inet dhcp
	post-up iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j SNAT --to `ifconfig eth0 | awk &amp;#039;/inet addr:/	{ print	substr($2,6) }&amp;#039;`
	pre-down iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j SNAT --to `ifconfig eth0 | awk &amp;#039;/inet addr:/ { print substr($2,6) }&amp;#039;`&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT20 SECTION &quot;Accès à Internet pour les VM&quot; [5019-6030] --&gt;
&lt;h2 class=&quot;sectionedit21&quot;&gt;&lt;a name=&quot;configuration-basique&quot; id=&quot;configuration-basique&quot;&gt;Configuration basique&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;http://wiki.orgrim.net/lib/images/smileys/fixme.gif&quot; class=&quot;middle&quot; alt=&quot;FIXME&quot; /&gt; organisation de la conf
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT21 SECTION &quot;Configuration basique&quot; [6031-6096] --&gt;
&lt;h1 class=&quot;sectionedit22&quot;&gt;&lt;a name=&quot;creation-d-un-conteneur&quot; id=&quot;creation-d-un-conteneur&quot;&gt;Création d&amp;#039;un conteneur&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT22 SECTION &quot;Création d'un conteneur&quot; [6097-6136] --&gt;
&lt;h2 class=&quot;sectionedit23&quot;&gt;&lt;a name=&quot;preparation&quot; id=&quot;preparation&quot;&gt;Préparation&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
il faut debootstrap
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# debootstrap --arch amd64 squeeze /var/lib/vz/private/101 http://localhost:9999/debian/&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;# vzctl set 101 --applyconfig basic --save
WARNING: /etc/vz/conf/101.conf not found: No such file or directory
Saved parameters for CT 101&lt;/pre&gt;

&lt;p&gt;
on obtient un fichier &lt;code&gt;/etc/vz/conf/101.conf&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Ajouter
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;OSTEMPLATE=debian-6.0&lt;/pre&gt;

&lt;p&gt;
Paramétrer le réseau :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# vzctl set 101 --ipadd 10.100.0.2 --save
# vzctl set 101 --nameserver 10.100.0.1 --save
# vzctl set 101 --hostname squeeze.vz.lo --save
# vzctl set 101 --searchdomain vz.lo --save&lt;/pre&gt;

&lt;p&gt;
Ajouter une entrée &lt;acronym title=&quot;Domain Name System&quot;&gt;DNS&lt;/acronym&gt; :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dans &lt;code&gt;/etc/hosts&lt;/code&gt; :&lt;pre class=&quot;file&quot;&gt;10.100.0.2	squeeze.vz.lo&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; relancer dnsmasq :&lt;pre class=&quot;code&quot;&gt;# /etc/init.d/dnsmasq restart&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Démarrer le conteneur :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# vzctl start 101
Starting container ...
Initializing quota ...
Container is mounted
Adding IP address(es): 10.100.0.1
Setting CPU units: 1000
Set hostname: squeeze.vz.lo
File resolv.conf was modified
Container start in progress...&lt;/pre&gt;

&lt;p&gt;
Entrer dans le conteneur :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# vzctl enter 101
entered into CT 101
squeeze:/#&lt;/pre&gt;

&lt;p&gt;
Un fois dans le conteneur, on peut le configurer.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT23 SECTION &quot;Préparation&quot; [6137-7338] --&gt;
&lt;h2 class=&quot;sectionedit24&quot;&gt;&lt;a name=&quot;configuration1&quot; id=&quot;configuration1&quot;&gt;Configuration&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ajouter les sources de paquets, &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;deb http://debian.ens-cachan.fr/ftp/debian squeeze main contrib
deb-src http://debian.ens-cachan.fr/ftp/debian/ squeeze main contrib

# Ces dépots seront disponibles lorsque squeeze sera stable
#deb http://security.debian.org/ squeeze/updates main contrib
#deb-src http://security.debian.org/ squeeze/updates main contrib&lt;/pre&gt;

&lt;p&gt;
Mettre à jour :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude update
# aptitude safe-upgrade&lt;/pre&gt;

&lt;p&gt;
Installer quelques paquets indispensables :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install dnsutils build-essential openssh-client openssh-server less vim locales sudo&lt;/pre&gt;

&lt;p&gt;
Configurer les locales, choisir les locales &lt;code&gt;fr_FR&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dpkg-reconfigure locales
Generating locales (this might take a while)...
  fr_FR.ISO-8859-1... done
  fr_FR.UTF-8... done
  fr_FR.ISO-8859-15@euro... done
Generation complete&lt;/pre&gt;

&lt;p&gt;
Supprimer les terminaux physiques, éditer &lt;code&gt;/etc/inittab&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;#1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6&lt;/pre&gt;

&lt;p&gt;
Configurer le fuseau horaire :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dpkg-reconfigure tzdata&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT24 SECTION &quot;Configuration&quot; [7339-8619] --&gt;
&lt;h1 class=&quot;sectionedit25&quot;&gt;&lt;a name=&quot;transformer-un-conteneur-en-template&quot; id=&quot;transformer-un-conteneur-en-template&quot;&gt;Transformer un conteneur en template&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Au lieu de refaire l&amp;#039;étape debootstrap et configuration, on peut créer des templates qui serviront de base à la création d&amp;#039;autres conteneurs. Il s&amp;#039;agit de simples archives tar à placer dans &lt;code&gt;/var/lib/vz/template/cache/&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT25 SECTION &quot;Transformer un conteneur en template&quot; [8620-8900] --&gt;
&lt;h2 class=&quot;sectionedit26&quot;&gt;&lt;a name=&quot;creer-un-template&quot; id=&quot;creer-un-template&quot;&gt;Créer un template&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour créer un template, on suit la procédure suivante :
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Stopper le conteneur s&amp;#039;il est en cours d&amp;#039;exécution :&lt;pre class=&quot;code&quot;&gt;# vzctl stop 101&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Supprimer les fichiers spécifiques à l&amp;#039;installation :&lt;pre class=&quot;code&quot;&gt;# cd /var/lib/vz/private/101
# rm etc/hostname etc/resolv.conf etc/ssh/ssh_host_*&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Archiver le conteneur, attention au nommage qui doit refletter les paramètres de version et architecture utilisé lors du debootstrap :&lt;pre class=&quot;code&quot;&gt;# cd /var/lib/vz/private/101
# tar --numeric-owner -zcf /var/lib/vz/template/cache/debian-6.0-amd64-minimal.tar.gz .&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Enfin, il faut vérifier que le répertoire &lt;code&gt;/etc/vz/dists&lt;/code&gt; contient un fichier &lt;code&gt;debian-6.0.conf&lt;/code&gt;. S&amp;#039;il n&amp;#039;existe pas, on copie le fichier &lt;code&gt;debian.conf&lt;/code&gt; en &lt;code&gt;debian-6.0.conf&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT26 SECTION &quot;Créer un template&quot; [8901-9691] --&gt;
&lt;h2 class=&quot;sectionedit27&quot;&gt;&lt;a name=&quot;utiliser-un-template-pour-creer-un-conteneur&quot; id=&quot;utiliser-un-template-pour-creer-un-conteneur&quot;&gt;Utiliser un template pour créer un conteneur&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Créer le conteneur :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# vzctl create 203 --ostemplate debian-6.0-amd64-minimal&lt;/pre&gt;

&lt;p&gt;
Configurer le réseau :
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ajouter une entrée dans &lt;code&gt;/etc/hosts&lt;/code&gt; et relancer dnsmasq&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Utiliser &lt;code&gt;vzctl&lt;/code&gt; pour configurer :&lt;pre class=&quot;code&quot;&gt;# vzctl set 203 --ipadd 10.100.0.5 --save
# vzctl set 203 --nameserver 10.100.0.1 --save
# vzctl set 203 --hostname andesi.vz.lo --save
# vzctl set 203 --searchdomain vz.lo --save&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Démarrer le conteneur :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# vzctl start 203&lt;/pre&gt;

&lt;p&gt;
Regénérer les clés du serveur &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# vzctl exec 203 dpkg-reconfigure openssh-server&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT27 SECTION &quot;Utiliser un template pour créer un conteneur&quot; [9692-10332] --&gt;
&lt;h2 class=&quot;sectionedit28&quot;&gt;&lt;a name=&quot;customization&quot; id=&quot;customization&quot;&gt;Customization&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; postcreate avec dpkg-reconfigure openssh-server&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; config ve-name.conf.sample&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT28 SECTION &quot;Customization&quot; [10333-] --&gt;</summary>
    </entry>
    <entry>
        <title></title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/debian-lxc"/>
        <published>2011-07-29T15:13:48+00:00</published>
        <updated>2011-07-29T15:13:48+00:00</updated>
        <id>http://wiki.orgrim.net/linux/debian-lxc</id>
        <summary>
&lt;p&gt;
Filesystem pour mettre une limite d&amp;#039;espace disque
# mkfs.ext4 /dev/system/lxc-dns
# tune2fs -i0 -c0 /dev/system/lxc-dns
# mkdir /var/lib/lxc/dns
# mount /dev/system/lxc-dns /var/lib/lxc/dns&lt;/pre&gt;

&lt;p&gt;
Creation du conteneur
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# SUITE=squeeze /usr/lib/lxc/templates/lxc-debian -p /var/lib/lxc/dns -n dns&lt;/pre&gt;

&lt;p&gt;
Configuration
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# vi /var/lib/lxc/dns/config&lt;/pre&gt;

&lt;p&gt;
Fichier de conf, ajouter la configuration réseau à la fin:
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;# network
lxc.utsname = dns.orgrim.net
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = DE:AD:BE:xx:xx:xx
lxc.network.ipv4 = 10.42.0.4/24
lxc.network.ipv6 = 2001:41d0:2:xxxx::4/64&lt;/pre&gt;

&lt;p&gt;
Par défaut, le client &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt; est activé dans le conteneur, on peut le supprimer de cette façon, lxc se chargeant de mettre les IP fixes configurées :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo -e &amp;quot;auto lo\niface lo inet loopback&amp;quot; &amp;gt; /var/lib/lxc/dns/rootfs/etc/network/interfaces&lt;/pre&gt;

&lt;p&gt;
Démarrer le conteneur :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# lxc-start -n dns -d&lt;/pre&gt;

&lt;p&gt;
Se connecter au conteneur :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# lxc-console -n dns&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Le mot de passe par défaut est &lt;code&gt;root&lt;/code&gt;, il faut le changer directement&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Le conteneur se comporte alors comme une install normale&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
</summary>
    </entry>
    <entry>
        <title>Debian: passage en testing</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/debian-passage-en-testing"/>
        <published>2010-09-09T22:18:47+00:00</published>
        <updated>2010-09-09T22:18:47+00:00</updated>
        <id>http://wiki.orgrim.net/linux/debian-passage-en-testing</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Modifier &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; (y&amp;#039;a pas de volatile en testing)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MAJ des listes: &lt;code&gt;apt-get update&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MAJ de tools de packaging: &lt;code&gt;aptitude install dpkg apt aptitude&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MAJ du kernel et de la libc: &lt;code&gt;aptitude install linux-image-2.6-686 libc6 libc6-i686 locales perl&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; On peut en profiter pour générer les locales: &lt;code&gt;dpkg-reconfigure locales&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Retirer les vieux kernels&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Rebooter pour être bien sûr d&amp;#039;utiliser la nouvelle libc&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MAJ du reste &lt;code&gt;aptitude safe-upgrade&lt;/code&gt; autant de fois que nécessaire&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;aptitude autoclean&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Rebooter&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
</summary>
    </entry>
    <entry>
        <title>Que faire après l'installation</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/debian-post-install"/>
        <published>2010-05-04T17:25:06+00:00</published>
        <updated>2010-05-04T17:25:06+00:00</updated>
        <id>http://wiki.orgrim.net/linux/debian-post-install</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT30 SECTION &quot;Que faire après l'installation&quot; [1-47] --&gt;
&lt;h2 class=&quot;sectionedit31&quot;&gt;&lt;a name=&quot;configuration-des-depots-apt&quot; id=&quot;configuration-des-depots-apt&quot;&gt;Configuration des dépots apt&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT31 SECTION &quot;Configuration des dépots apt&quot; [48-90] --&gt;
&lt;h3 class=&quot;sectionedit32&quot;&gt;&lt;a name=&quot;mise-a-jours-de-securite&quot; id=&quot;mise-a-jours-de-securite&quot;&gt;Mise à jours de sécurité&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Dans le cas d&amp;#039;une installation aux CD/DVD:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Faire pointer sur le net&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Mettre à jour&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT32 SECTION &quot;Mise à jours de sécurité&quot; [91-221] --&gt;
&lt;h3 class=&quot;sectionedit33&quot;&gt;&lt;a name=&quot;depots-interessants&quot; id=&quot;depots-interessants&quot;&gt;Dépots intéressants&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Backports&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Multimedia&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT33 SECTION &quot;Dépots intéressants&quot; [222-284] --&gt;
&lt;h2 class=&quot;sectionedit34&quot;&gt;&lt;a name=&quot;ajouter-quelques-packages-sympa&quot; id=&quot;ajouter-quelques-packages-sympa&quot;&gt;Ajouter quelques packages sympa&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT34 SECTION &quot;Ajouter quelques packages sympa&quot; [285-329] --&gt;
&lt;h3 class=&quot;sectionedit35&quot;&gt;&lt;a name=&quot;openssh&quot; id=&quot;openssh&quot;&gt;OpenSSH&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Le Secure Shell ou Console sécurisée, et un service réseau qui permet d&amp;#039;obtenir un accès distant an ligne de commande sur la machine. Les données sont cryptrées se qui permet d&amp;#039;éviter une écoute sur le réseau qui permettrait à une personne mal intentionnée de récupérer les mots de passe ou autres information.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install openssh-server&lt;/pre&gt;

&lt;p&gt;
Configuration de base de &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt; :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Mettre le &lt;code&gt;PermitRootLogin&lt;/code&gt; à &lt;code&gt;no&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT35 SECTION &quot;OpenSSH&quot; [330-820] --&gt;
&lt;h3 class=&quot;sectionedit36&quot;&gt;&lt;a name=&quot;de-quoi-compiler&quot; id=&quot;de-quoi-compiler&quot;&gt;De quoi compiler&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Installer &lt;code&gt;build-essential&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install build-essential
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Reading extended state information      
Initializing package states... Done
Reading task descriptions... Done  
The following NEW packages will be installed:
  binutils{a} build-essential bzip2{a} cpp{a} cpp-4.3{a} dpkg-dev{a} g++{a} 
  g++-4.3{a} gcc{a} gcc-4.3{a} libc6-dev{a} libgmp3c2{a} libgomp1{a} 
  libmpfr1ldbl{a} libstdc++6-4.3-dev{a} libtimedate-perl{a} linux-libc-dev{a} 
  make{a} 
0 packages upgraded, 18 newly installed, 0 to remove and 0 not upgraded.
Need to get 18.9MB of archives. After unpacking 60.7MB will be used.
Do you want to continue? [Y/n/?]&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT36 SECTION &quot;De quoi compiler&quot; [821-1598] --&gt;
&lt;h1 class=&quot;sectionedit37&quot;&gt;&lt;a name=&quot;un-joli-prompt&quot; id=&quot;un-joli-prompt&quot;&gt;Un joli prompt&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT37 SECTION &quot;Un joli prompt&quot; [1599-] --&gt;</summary>
    </entry>
    <entry>
        <title>Gestion de Ruby sous Debian</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/debian-ruby-et-gems"/>
        <published>2010-08-10T09:00:25+00:00</published>
        <updated>2010-08-10T09:00:25+00:00</updated>
        <id>http://wiki.orgrim.net/linux/debian-ruby-et-gems</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
On va gérer les Gems à part, avec la dernière version de rubygems qui n&amp;#039;est pas à jour dans Lenny.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT38 SECTION &quot;Gestion de Ruby sous Debian&quot; [1-147] --&gt;
&lt;h2 class=&quot;sectionedit39&quot;&gt;&lt;a name=&quot;installation-de-ruby&quot; id=&quot;installation-de-ruby&quot;&gt;Installation de Ruby&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il nous faut Ruby, qu&amp;#039;on prend dans les dépots Debian:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install ruby rdoc ri ruby-dev&lt;/pre&gt;

&lt;p&gt;
Même si un package rubygems existe dans les dépots, on va utiliser les sources de rubygems:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Récupérer le tarball sur &lt;a href=&quot;http://rubygems.org/pages/download&quot; class=&quot;urlextern&quot; title=&quot;http://rubygems.org/pages/download&quot;  rel=&quot;nofollow&quot;&gt;http://rubygems.org/pages/download&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Extraire quelque part:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# tar xzf rubygems-1.3.7.tgz&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Installer:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# cd rubygems-1.3.7
# ruby setup.rb&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Il indique à la fin le chemin de la commande &lt;code&gt;gem&lt;/code&gt;: &lt;code&gt;/usr/bin/gem1.8&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT39 SECTION &quot;Installation de Ruby&quot; [148-673] --&gt;
&lt;h2 class=&quot;sectionedit40&quot;&gt;&lt;a name=&quot;suppression&quot; id=&quot;suppression&quot;&gt;Suppression&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Supprimer les packages:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude remove --purge ruby ruby1.8 rdoc rdoc1.8 ri ri1.8&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT40 SECTION &quot;Suppression&quot; [674-] --&gt;</summary>
    </entry>
    <entry>
        <title>Device iSCSI crypté sous GNU/Linux</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/disk-iscsi-crypte"/>
        <published>2009-08-27T18:03:46+00:00</published>
        <updated>2009-08-27T18:03:46+00:00</updated>
        <id>http://wiki.orgrim.net/linux/disk-iscsi-crypte</id>
        <summary>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://wiki.orgrim.net/tag/crypto?do=showtag&amp;amp;tag=crypto&quot; class=&quot;wikilink1&quot; title=&quot;tag:crypto&quot; rel=&quot;tag&quot;&gt;crypto&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/debian?do=showtag&amp;amp;tag=debian&quot; class=&quot;wikilink1&quot; title=&quot;tag:debian&quot; rel=&quot;tag&quot;&gt;debian&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/linux?do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/iscsi?do=showtag&amp;amp;tag=iscsi&quot; class=&quot;wikilink1&quot; title=&quot;tag:iscsi&quot; rel=&quot;tag&quot;&gt;iscsi&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/reseau?do=showtag&amp;amp;tag=reseau&quot; class=&quot;wikilink1&quot; title=&quot;tag:reseau&quot; rel=&quot;tag&quot;&gt;reseau&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
On peut facilement &lt;a href=&quot;http://ivoras.sharanet.org/freebsd/iscsi-eli.html&quot; class=&quot;urlextern&quot; title=&quot;http://ivoras.sharanet.org/freebsd/iscsi-eli.html&quot;  rel=&quot;nofollow&quot;&gt;configurer un device iSCSI crypté sur FreeBSD&lt;/a&gt;, voici l&amp;#039;équivalent sous Debian GNU/Linux.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT41 SECTION &quot;Device iSCSI crypté sous GNU/Linux&quot; [43-258] --&gt;
&lt;h1 class=&quot;sectionedit42&quot;&gt;&lt;a name=&quot;sur-le-serveur&quot; id=&quot;sur-le-serveur&quot;&gt;Sur le serveur&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Installer IET:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install iscsitarget iscsitarget-modules-2.6-amd64&lt;/pre&gt;

&lt;p&gt;
Dans &lt;code&gt;/etc/ietd.conf&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;Target iqn.2008-12.net.orgrim:storage.crypt.test
        Lun 0 Path=/home/iscsi/crypto.test,Type=fileio
        IncomingUser orgrim prout&lt;/pre&gt;

&lt;p&gt;
Créer le fichier:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdir /home/iscsi
# dd if=/dev/urandom of=/home/iscsi/crypto.test bs=1M count=1024&lt;/pre&gt;

&lt;p&gt;
Relancer le daemon:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# /etc/init.d/iscsitarget restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT42 SECTION &quot;Sur le serveur&quot; [259-715] --&gt;
&lt;h1 class=&quot;sectionedit43&quot;&gt;&lt;a name=&quot;sur-le-client&quot; id=&quot;sur-le-client&quot;&gt;Sur le client&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Installer le paquet contenant la partie initiator :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install open-iscsi&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT43 SECTION &quot;Sur le client&quot; [716-831] --&gt;
&lt;h2 class=&quot;sectionedit44&quot;&gt;&lt;a name=&quot;connection-a-la-target&quot; id=&quot;connection-a-la-target&quot;&gt;Connection à la target&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il faut découvrir les targets fournies par le serveur, puis régler les paramètres d&amp;#039;authentification, et se logguer pour obtenir un device :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# iscsiadm -m discovery -t sendtargets -p 192.168.0.1
192.168.0.1:3260,1 iqn.2008-12.net.orgrim:storage.crypt.test
# iscsiadm -m node -T iqn.2008-12.net.orgrim:storage.crypt.test -p 192.168.0.1 -o update -n node.session.auth.authmethod -v CHAP
# iscsiadm -m node -T iqn.2008-12.net.orgrim:storage.crypt.test -p 192.168.0.1 -o update -n node.session.auth.username -v orgrim
# iscsiadm -m node -T iqn.2008-12.net.orgrim:storage.crypt.test -p 192.168.0.1 -o update -n node.session.auth.password -v prout
# iscsiadm -m node -T iqn.2008-12.net.orgrim:storage.crypt.test -p 192.168.0.1 -l
Logging in to [iface: default, target: iqn.2008-12.net.orgrim:storage.crypt.test, portal: 192.168.0.1,3260]
Login to [iface: default, target: iqn.2008-12.net.orgrim:storage.crypt.test, portal: 192.168.0.1,3260]: successful
# cat /proc/scsi/scsi
Attached devices:
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: IET      Model: VIRTUAL-DISK     Rev: 0
  Type:   Direct-Access                    ANSI  SCSI revision: 04&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT44 SECTION &quot;Connection à la target&quot; [832-2043] --&gt;
&lt;h2 class=&quot;sectionedit45&quot;&gt;&lt;a name=&quot;partitionnement&quot; id=&quot;partitionnement&quot;&gt;Partitionnement&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On utilise &lt;code&gt;fdisk&lt;/code&gt; comme toujours pour découvrir quel device correspond à notre LUN :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# fdisk -l
...
Disk /dev/sda: 1073 MB, 1073741824 bytes
34 heads, 61 sectors/track, 1011 cylinders
Units = cylinders of 2074 * 512 = 1061888 bytes
Disk identifier: 0x027ebc31

Disk /dev/sda doesn&amp;#039;t contain a valid partition table&lt;/pre&gt;

&lt;p&gt;
Ensuite, il faut partitionner:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# fdisk /dev/sda
n, p, 1, &amp;lt;return&amp;gt;, &amp;lt;return&amp;gt;, w&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT45 SECTION &quot;Partitionnement&quot; [2044-2496] --&gt;
&lt;h2 class=&quot;sectionedit46&quot;&gt;&lt;a name=&quot;encryption&quot; id=&quot;encryption&quot;&gt;Encryption&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On utilise &lt;code&gt;cryptsetup&lt;/code&gt; disponible dans le paquet éponyme :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cryptsetup -y -c aes-cbc-essiv:sha256 -s 256 -h sha256 luksFormat /dev/sda1

WARNING!
========
This will overwrite data on /dev/sda1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.&lt;/pre&gt;

&lt;p&gt;
Il faut entrer une passphrase qui permettra de décrypter le device.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT46 SECTION &quot;Encryption&quot; [2497-2927] --&gt;
&lt;h2 class=&quot;sectionedit47&quot;&gt;&lt;a name=&quot;formatage-et-montage&quot; id=&quot;formatage-et-montage&quot;&gt;Formatage et montage&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On “ouvre” le device :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cryptsetup luksOpen /dev/sda1 crypt-iscsi
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.&lt;/pre&gt;

&lt;p&gt;
Cette commande crée le device &lt;code&gt;/dev/mapper/crypt-iscsi&lt;/code&gt;, qui correspond à la partition décryptée.
&lt;/p&gt;

&lt;p&gt;
On termine par un système de fichier et le montage :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mke2fs -j /dev/mapper/crypt-iscsi
# mkdir /mnt/iscsi
# mount /dev/mapper/crypt-iscsi /mnt/iscsi&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT47 SECTION &quot;Formatage et montage&quot; [2928-3369] --&gt;
&lt;h2 class=&quot;sectionedit48&quot;&gt;&lt;a name=&quot;conclusion&quot; id=&quot;conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Finalement, on voit que c&amp;#039;est plutôt équivalent. Ici, il y a plus de commandes à taper à cause de l&amp;#039;authentification pour l&amp;#039;initator. Mais on peut faciliter tout ça en configurant &lt;code&gt;/etc/iscsi/iscsid.conf&lt;/code&gt;, voici un résumé :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;node.startup = automatic
node.session.auth.authmethod = CHAP
node.session.auth.username = orgrim
node.session.auth.password = prout&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT48 SECTION &quot;Conclusion&quot; [3370-] --&gt;</summary>
    </entry>
    <entry>
        <title>Gérer les mails de plusieurs domaines avec Exim et PostgreSQL</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/exim-postgresql"/>
        <published>2010-06-06T18:54:03+00:00</published>
        <updated>2010-06-06T18:54:03+00:00</updated>
        <id>http://wiki.orgrim.net/linux/exim-postgresql</id>
        <summary>
&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;notewarning&quot;&gt;Cette doc n&amp;#039;est finie
&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Pour gérer plusieurs domains avec un serveur de mails, il faut passer par des comptes généralement appelés “virtuels” stockés dans une base de données (&lt;acronym title=&quot;Structured Query Language&quot;&gt;SQL&lt;/acronym&gt;, &lt;acronym title=&quot;Lightweight Directory Access Protocol&quot;&gt;LDAP&lt;/acronym&gt;). L&amp;#039;utilisation d&amp;#039;une base permet d&amp;#039;être sûr qu&amp;#039;on ne mélange pas les comptes et les domaines. En effet, si on a un domaine a.fr et un domaine b.fr, un utilisateur bob sur le serveur de mail peut avoir deux adresses bob@a.fr et bob@b.fr. On va donc créer une base de donnée PostgreSQL et configurer Exim pour livrer les mails à partir de celle-ci.
&lt;/p&gt;

&lt;p&gt;
Il existe de nombreuses documentations traitant du sujet sur le net. Par contre, il en existe peu qui utilisent Exim et PostgreSQL. On les a choisi dans cet article parce qu&amp;#039;Exim est le serveur de mail par défaut de Debian. Quant à PostgreSQL, il reste souvent dans l&amp;#039;ombre, alors qu&amp;#039;il a des fonctionnalités très intéressantes qui peuvent nous aider rendre la configuration d&amp;#039;Exim plus lisible (vues, procédures stockées, triggers…)
&lt;/p&gt;

&lt;p&gt;
La configuration montrée ici est très fortement inspirée de celle décrite par &lt;a href=&quot;http://www.depesz.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.depesz.com&quot;  rel=&quot;nofollow&quot;&gt;Depesz&lt;/a&gt; dans sa suite d&amp;#039;&lt;a href=&quot;http://www.depesz.com/index.php/2008/02/03/smtp-sql-more-than-it-seems-so-part-1/&quot; class=&quot;urlextern&quot; title=&quot;http://www.depesz.com/index.php/2008/02/03/smtp-sql-more-than-it-seems-so-part-1/&quot;  rel=&quot;nofollow&quot;&gt;articles sur Exim et PostgreSQL&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT49 SECTION &quot;Gérer les mails de plusieurs domaines avec Exim et PostgreSQL&quot; [45-1340] --&gt;
&lt;h2 class=&quot;sectionedit50&quot;&gt;&lt;a name=&quot;installation&quot; id=&quot;installation&quot;&gt;Installation&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour installer PostgreSQL, on va suivre l&amp;#039;&lt;a href=&quot;http://wiki.orgrim.net/base-de-donnees/postgresql&quot; class=&quot;wikilink2&quot; title=&quot;base-de-donnees:postgresql&quot; rel=&quot;nofollow&quot;&gt;article dédié à ce sujet&lt;/a&gt;. On dédit une base nommée &lt;code&gt;exim&lt;/code&gt; à un utilisateur &lt;code&gt;exim&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# su - postgres
postgres$ createuser -DEIlPRS exim
Enter password for new role: 
Enter it again:
postgres$ createdb -E UTF8 -O exim exim&lt;/pre&gt;

&lt;p&gt;
Pour installer exim, il faut choisir le paquet &lt;code&gt;exim4-daemon-heavy&lt;/code&gt; qui contient les fonctionnalités qui nous intéressent, contrairement à &lt;code&gt;exim4-daemon-light&lt;/code&gt; installé par défaut :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install exim4-daemon-heavy&lt;/pre&gt;

&lt;p&gt;
En choissant d&amp;#039;installer le paquet, les dépendances nécessaires à la connexion à PostgreSQL (la libpq) seront ajoutées, et &lt;code&gt;exim4-daemon-light&lt;/code&gt; sera retiré.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT50 SECTION &quot;Installation&quot; [1341-2100] --&gt;
&lt;h2 class=&quot;sectionedit51&quot;&gt;&lt;a name=&quot;configuration-d-exim&quot; id=&quot;configuration-d-exim&quot;&gt;Configuration d&amp;#039;Exim&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Si Exim n&amp;#039;a jamais été configuré, debconf pose quelques questions, on peut faire les choix suivants sachant qu&amp;#039;on éditera le fichier de configuration à la main juste après :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Le type de configuration, on choisit une configuration locale, avec 127.0.0.1 comme adresse d&amp;#039;écoute.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Si on souhaite découper le fichier de configuration en petits morceaux, on choisit “Oui”. Ca sera plus pratique pour la suite.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Le format de mailbox Maildir.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;noteclassic&quot;&gt;On peut à tout moment revenir sur ses choix en reconfigurant le paquet &lt;code&gt;exim4-config&lt;/code&gt; (&lt;code&gt;dpkg-reconfigure exim4-config&lt;/code&gt;) ou en éditant &lt;code&gt;/etc/exim4/update-exim4.conf.conf&lt;/code&gt;.
&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;p&gt;
Sous Debian, la configuration d&amp;#039;Exim se fait dans &lt;code&gt;/etc/exim4&lt;/code&gt;, le programme &lt;code&gt;update-exim4.conf&lt;/code&gt; permet de générer le fichier de configuration qui sera utilisé par Exim. Le script de démarrage, le récrée au besoin lors du (re)démarrage du service. Le fichier de configuration effectif est &lt;code&gt;/var/lib/exim4/config.autogenerated&lt;/code&gt;. Enfin, selon l&amp;#039;utilisation de la configuration découpée ou non, le fichier à éditer est soit &lt;code&gt;/etc/exim4/exim4.conf.template&lt;/code&gt;, soit les fichiers présents dans &lt;code&gt;/etc/exim4/conf.d&lt;/code&gt; et ses sous-répertoires.
&lt;/p&gt;

&lt;p&gt;
Dans la configuration multi-domaines, on va modifier un certains nombres de fichiers pour utiliser la base de données. Le premier fichier à modifier est &lt;code&gt;/etc/exim4/update-exim4.conf.conf&lt;/code&gt;, voici les paramètres les plus pertinents:
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;dc_eximconfig_configtype=&amp;#039;internet&amp;#039;
dc_other_hostnames=&amp;#039;&amp;#039;
dc_local_interfaces=&amp;#039;192.168.0.1&amp;#039;
dc_use_split_config=&amp;#039;true&amp;#039;
dc_localdelivery=&amp;#039;maildir_home&amp;#039;&lt;/pre&gt;

&lt;p&gt;
le paramètre &lt;code&gt;dc_local_interfaces&lt;/code&gt; indique l&amp;#039;adresse IP sur laquelle les mails arriveront. On utilise la configuration découpée (dans &lt;code&gt;/etc/exim4/conf.d&lt;/code&gt;) avec &lt;code&gt;dc_use_split_config&lt;/code&gt; et le format de boîte Maildir.
&lt;/p&gt;

&lt;p&gt;
Dans &lt;code&gt;/etc/exim4/conf.d/&lt;/code&gt;, il y a un certains nombre de répertoires, contenant des fichiers préfixés par un numéro pour indiquer leur ordre dans la configuration. Lorsque &lt;code&gt;update-exm4.conf&lt;/code&gt; crée le fichier final, il concatène les fichiers en parcurant les répertoires dans cet ordre : &lt;code&gt;main&lt;/code&gt;, &lt;code&gt;acl&lt;/code&gt;, &lt;code&gt;router&lt;/code&gt;, &lt;code&gt;transport&lt;/code&gt;, &lt;code&gt;retry&lt;/code&gt;, &lt;code&gt;rewrite&lt;/code&gt; et &lt;code&gt;auth&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT51 SECTION &quot;Configuration d'Exim&quot; [2101-4344] --&gt;
&lt;h3 class=&quot;sectionedit52&quot;&gt;&lt;a name=&quot;connexion-au-serveur-postgresql&quot; id=&quot;connexion-au-serveur-postgresql&quot;&gt;Connexion au serveur PostgreSQL&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
On part du principe qu&amp;#039;on peut se connecter au server PostgreSQL avec l&amp;#039;utilisateur &lt;code&gt;exim&lt;/code&gt; depuis localhost et que PostgreSQL utilise le port TCP/5432 (le port par défaut). Ceci permet de facilement changer la configuration si on déplace le serveur PostgreSQL sur une autre machine.
&lt;/p&gt;

&lt;p&gt;
Pour qu&amp;#039;Exim utilise notre base de données, on a ajoute la variable &lt;code&gt;pgsql_servers&lt;/code&gt; dans &lt;code&gt;/etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;...
# debconf-driven macro definitions get inserted after this line
UPEX4CmacrosUPEX4C = 1

# PostgreSQL lookup configuration
hide pgsql_servers = 127.0.0.1::5432/exim/exim/motDePasseExim

# Create domain and host lists for relay control
# &amp;#039;@&amp;#039; refers to &amp;#039;the name of the local host&amp;#039;
...&lt;/pre&gt;

&lt;p&gt;
Le format de &lt;code&gt;pgsql_servers&lt;/code&gt; est :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;hostname&amp;gt;::&amp;lt;port&amp;gt;/&amp;lt;database&amp;gt;/&amp;lt;user&amp;gt;/&amp;lt;password&amp;gt; : ...&lt;/pre&gt;

&lt;p&gt;
On peut donner plusieurs serveurs et/ou bases de données en séparant les informations de connexion par ”:”, c&amp;#039;est pour cela que le port de connexion est séparé du nom d&amp;#039;hôte par ”::”.
&lt;/p&gt;

&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;notetip&quot;&gt;
Pour économiser des ressources, on peut utiliser la socket unix de PostgreSQL s&amp;#039;il est sur la même machine qu&amp;#039;Exim :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;hide pgsql_servers = (/var/run/postgresql/.s.PGSQL.5432)/exim/exim/motDePasseExim&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;p&gt;
Pour finir, le paramètre &lt;code&gt;pgsql_servers&lt;/code&gt; est préfixé du mot-clé “hide” qui permet de cache la valeur du paramètre aux utilisateurs non privilégiés qui peuvent tenter d&amp;#039;obtenir cette valeur avec &lt;code&gt;/usr/sbin/exim4 -bP&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;user$ /usr/sbin/exim4 -bP| grep pgsql
pgsql_servers = &amp;lt;value not displayable&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT52 SECTION &quot;Connexion au serveur PostgreSQL&quot; [4345-5986] --&gt;
&lt;h3 class=&quot;sectionedit53&quot;&gt;&lt;a name=&quot;domaines&quot; id=&quot;domaines&quot;&gt;Domaines&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
La première chose à configurer est la liste des domaines que gère notre installation. On va bien sûr stocker cette liste dans la base de données. Pour cela, on ajoute une table “domains”:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;exim=&amp;gt; CREATE TABLE domains (
    id SERIAL,
    domain TEXT NOT NULL DEFAULT &amp;#039;&amp;#039; UNIQUE,
    PRIMARY KEY (id)
);&lt;/pre&gt;

&lt;p&gt;
Puis, on configure Exim pour qu&amp;#039;il aille cherche la liste des domaines dans PG, on modifie donc la variable &lt;code&gt;domainlist local_domains&lt;/code&gt;, pour ajouter la recherche dans la base de données en plus de la configuration Debian. Dans le fichier &lt;code&gt;/etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;# List of domains considered local for exim. Domains not listed here
# need to be deliverable remotely.
domainlist local_domains = MAIN_LOCAL_DOMAINS : \
        @[ ] : \
        ${lookup pgsql {SELECT domain FROM domains WHERE domain = &amp;#039;${domain}&amp;#039; }}&lt;/pre&gt;

&lt;p&gt;
Ensuite, on rédemarre Exim, et on fait quelques tests :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# invoke-rc.d exim4 restart
Stopping MTA for restart: exim4_listener.
Restarting MTA: exim4.&lt;/pre&gt;

&lt;p&gt;
On essaye d&amp;#039;abord avec root@localhost, qui est redirigé vers l&amp;#039;utilisateur orgrim dans &lt;code&gt;/etc/aliases&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# exim4 -bt root@localhost
R: system_aliases for root@localhost
R: system_aliases for orgrim@debian.home.orgrim.net
R: userforward for orgrim@debian.home.orgrim.net
R: procmail for orgrim@debian.home.orgrim.net
R: maildrop for orgrim@debian.home.orgrim.net
R: lowuid_aliases for orgrim@debian.home.orgrim.net (UID 1000)
R: local_user for orgrim@debian.home.orgrim.net
orgrim@debian.home.orgrim.net
    &amp;lt;-- root@localhost
  router = local_user, transport = maildir_home&lt;/pre&gt;

&lt;p&gt;
On voit donc que les mails locaux sont bien pris en comptes par Exim. Maintenant, on essaye avec root@a.fr, le domaine qu&amp;#039;on souhaite gérer :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# exim4 -bt root@a.fr
R: dnslookup for root@a.fr
root@a.fr is undeliverable: Unrouteable address&lt;/pre&gt;

&lt;p&gt;
Exim essaye de le transmettre vers le serveur de mail de a.fr, ce qui est normal vu que notre table des domaines est vide. Maintenant, on ajoute un domaine dans la base :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;exim=&amp;gt; INSERT INTO domains (domain) VALUES (&amp;#039;a.fr&amp;#039;);&lt;/pre&gt;

&lt;p&gt;
Et on teste de nouveau :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# exim4 -bt root@a.fr
R: system_aliases for root@a.fr
R: system_aliases for orgrim@debian.home.orgrim.net
R: userforward for orgrim@debian.home.orgrim.net
R: procmail for orgrim@debian.home.orgrim.net
R: maildrop for orgrim@debian.home.orgrim.net
R: lowuid_aliases for orgrim@debian.home.orgrim.net (UID 1000)
R: local_user for orgrim@debian.home.orgrim.net
orgrim@debian.home.orgrim.net
    &amp;lt;-- root@a.fr
  router = local_user, transport = maildir_home&lt;/pre&gt;

&lt;p&gt;
Voilà, Exim a bien trouvé le domaine dans notre base de donnée.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT53 SECTION &quot;Domaines&quot; [5987-8715] --&gt;
&lt;h3 class=&quot;sectionedit54&quot;&gt;&lt;a name=&quot;comptes&quot; id=&quot;comptes&quot;&gt;Comptes&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Installer le module pgcrypto, qui servira à chiffrer le mot de passe et à l&amp;#039;authentification par le serveur &lt;acronym title=&quot;Internet Message Access Protocol&quot;&gt;IMAP&lt;/acronym&gt; (dovecot):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install postgresql-contrib
# su - postgres
$ psql -d exim -f /usr/share/postgresql/8.3/contrib/pgcrypto.sql&lt;/pre&gt;

&lt;p&gt;
Créer la table des comptes utilisateurs:
&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; accounts &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    id SERIAL&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    username TEXT &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    password TEXT &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    fullname TEXT &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    domain_id INTEGER &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REFERENCES&lt;/span&gt; domains &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;PRIMARY&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;KEY&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;
Ajouter un utilisateur en chiffrant son mot de passe en MD5-CRYPT:
&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTO&lt;/span&gt; accounts &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;username&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; password&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fullname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; domain_id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;VALUES&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'orgrim'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; crypt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'new password'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; gen_salt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;'md5'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'Orgrim'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; domains &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; domain &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'orgrim.net'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;
Vérification:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;exim=&amp;gt; SELECT * FROM accounts;
 id | username |              password              | fullname | domain_id 
----+----------+------------------------------------+----------+-----------
  1 | orgrim   | $1$8gr9GqhM$7FAdtAkVBMzVzxboBZ5Jp1 | Orgrim   |         2&lt;/pre&gt;

&lt;p&gt;
Routeur:
&lt;/p&gt;

&lt;p&gt;
Transport:
&lt;/p&gt;

&lt;p&gt;
User vmail
&lt;/p&gt;

&lt;p&gt;
Process séparés pour livrer en temps que vmail: QUEUERUNNER=&amp;#039;separate&amp;#039; dans /etc/default/exim4
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT54 SECTION &quot;Comptes&quot; [8716-9998] --&gt;
&lt;h3 class=&quot;sectionedit55&quot;&gt;&lt;a name=&quot;aliases&quot; id=&quot;aliases&quot;&gt;Aliases&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Table des aliases:
&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; aliases &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    id SERIAL&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    domain_id INTEGER &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REFERENCES&lt;/span&gt; domains &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    username TEXT &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    destination TEXT &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;PRIMARY&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;KEY&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;
Tests:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;exim=&amp;gt; INSERT INTO domains (domain) VALUES (&amp;#039;orgrim.net&amp;#039;);
exim=&amp;gt; INSERT INTO aliases (domain_id, username, destination) SELECT id, &amp;#039;nico&amp;#039;, &amp;#039;orgrim@orgrim.net&amp;#039; FROM domains WHERE domain = &amp;#039;orgrim.net&amp;#039;;
exim=&amp;gt; INSERT INTO aliases (domain_id, username, destination) SELECT id, &amp;#039;nico&amp;#039;, &amp;#039;admin@orgrim.net&amp;#039; FROM domains WHERE domain = &amp;#039;orgrim.net&amp;#039;;
exim=&amp;gt; SELECT * from aliases;
 id | domain_id | username |    destination    
----+-----------+----------+-------------------
  1 |         2 | nico     | orgrim@orgrim.net
  2 |         2 | nico     | admin@orgrim.net
(2 rows)
exim=&amp;gt; SELECT destination FROM aliases JOIN domains ON domains.id = aliases.domain_id WHERE username = &amp;#039;nico&amp;#039; AND domain = &amp;#039;orgrim.net&amp;#039;;
    destination    
-------------------
 orgrim@orgrim.net
 admin@orgrim.net&lt;/pre&gt;

&lt;p&gt;
Config d&amp;#039;exim: ajout de &lt;code&gt;/etc/exim4/conf.d/router/450_exim4-config_pgsql_aliases&lt;/code&gt; (attention au numéro, l&amp;#039;ordre des routers est important)
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;
### router/450_exim4-config_pgsql_aliases
#################################

# This router handles aliasing declared in the DB
#

pgsql_aliases:
  debug_print = &amp;quot;R: pgsql_aliases for $local_part@$domain&amp;quot;
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup pgsql {SELECT destination FROM aliases JOIN domains ON domains.id = aliases.domain_id WHERE username = &amp;#039;${local_part}&amp;#039; AND domain = &amp;#039;${domain}&amp;#039;} }
  file_transport = address_file
  pipe_transport = address_pipe&lt;/pre&gt;

&lt;p&gt;
Dans, cette configuration, &lt;code&gt;orgrim&lt;/code&gt; est un compte local, &lt;code&gt;admin&lt;/code&gt; n&amp;#039;existe pas:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# exim4 -bt nico@orgrim.net
R: system_aliases for nico@orgrim.net
R: pgsql_aliases for nico@orgrim.net
R: system_aliases for orgrim@orgrim.net
R: pgsql_aliases for orgrim@orgrim.net
R: userforward for orgrim@orgrim.net
R: procmail for orgrim@orgrim.net
R: maildrop for orgrim@orgrim.net
R: lowuid_aliases for orgrim@orgrim.net (UID 1000)
R: local_user for orgrim@orgrim.net
R: system_aliases for admin@orgrim.net
R: pgsql_aliases for admin@orgrim.net
admin@orgrim.net is undeliverable: Unrouteable address
    &amp;lt;-- nico@orgrim.net
orgrim@orgrim.net
    &amp;lt;-- nico@orgrim.net
  router = local_user, transport = maildir_home&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT55 SECTION &quot;Aliases&quot; [9999-12432] --&gt;
&lt;h3 class=&quot;sectionedit56&quot;&gt;&lt;a name=&quot;chiffrage-des-communications&quot; id=&quot;chiffrage-des-communications&quot;&gt;Chiffrage des communications&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT56 SECTION &quot;Chiffrage des communications&quot; [12433-12472] --&gt;
&lt;h3 class=&quot;sectionedit57&quot;&gt;&lt;a name=&quot;authentification&quot; id=&quot;authentification&quot;&gt;Authentification&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Exim:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;begin authenticators
...
login:
driver = plaintext
public_name = LOGIN
server_prompts = &amp;quot;Username:: : Password::&amp;quot;
server_condition = ${lookup pgsql {SELECT verify_password(&amp;#039;${quote_pgsql:$1}&amp;#039;, &amp;#039;${quote_pgsql:$2}&amp;#039;) }}
server_set_id = $1&lt;/pre&gt;

&lt;p&gt;
PostgreSQL:
&lt;/p&gt;
&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;OR&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REPLACE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FUNCTION&lt;/span&gt; verify_password&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;in_user TEXT&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; in_password TEXT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; RETURNS INT4 &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; $BODY$
DECLARE
    use_user TEXT;
    use_domain TEXT;
    tempint INTEGER;
BEGIN
    use_user :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; split_part&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;in_user&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'@'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
    use_domain :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; split_part&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;in_user&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;'@'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; a&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;kw1&quot;&gt;INTO&lt;/span&gt; tempint
    &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; accounts a &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; domains d &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; a&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;domain_id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; d&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id
    &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; a&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;username &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; use_user &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; d&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;domain &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; use_domain &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; a&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;password &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; crypt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;in_password&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; a&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;password&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; FOUND THEN
       &lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;;
    END &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;;
    &lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
END;
$BODY$ &lt;span class=&quot;kw1&quot;&gt;LANGUAGE&lt;/span&gt; plpgsql;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT57 SECTION &quot;Authentification&quot; [12473-13346] --&gt;
&lt;h3 class=&quot;sectionedit58&quot;&gt;&lt;a name=&quot;passage-en-production&quot; id=&quot;passage-en-production&quot;&gt;Passage en production&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;acronym title=&quot;Domain Name System&quot;&gt;DNS&lt;/acronym&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Firewall&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tests pour de vrai&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT58 SECTION &quot;Passage en production&quot; [13347-] --&gt;</summary>
    </entry>
    <entry>
        <title>Scratchbox</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/maemo-scratchbox"/>
        <published>2009-12-13T22:11:54+00:00</published>
        <updated>2009-12-13T22:11:54+00:00</updated>
        <id>http://wiki.orgrim.net/linux/maemo-scratchbox</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Installation de scratchbow dans un domU debian i386.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT59 SECTION &quot;Scratchbox&quot; [1-80] --&gt;
&lt;h2 class=&quot;sectionedit60&quot;&gt;&lt;a name=&quot;installer-scratchbox&quot; id=&quot;installer-scratchbox&quot;&gt;Installer Scratchbox&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Installer une debian i386, ça passe dans &lt;a href=&quot;http://wiki.debian.org/Xen&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.debian.org/Xen&quot;  rel=&quot;nofollow&quot;&gt;Xen&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ajouter la source du dépot de scratchbox, dans &lt;code&gt;/etc/apt/sources.list&lt;/code&gt;:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;file&quot;&gt;deb http://scratchbox.org/debian/ apophis-r4 main&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Installer les packages suivants:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;sudo aptitude install scratchbox-core scratchbox-libs scratchbox-devkit-cputransp \
 scratchbox-devkit-debian scratchbox-devkit-maemo3 scratchbox-devkit-perl \
 scratchbox-toolchain-cs2005q3.2-glibc2.5-arm scratchbox-toolchain-cs2005q3.2-glibc2.5-i386 \
 scratchbox-toolchain-host-gcc&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ajouter ce paramètre à &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;file&quot;&gt;vm.vdso_enabled = 0&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;# echo 0 &amp;gt; /proc/sys/vm/vdso_enabled&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ajouter son user dans scratchbox:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# sb-adduser orgrim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT60 SECTION &quot;Installer Scratchbox&quot; [81-888] --&gt;
&lt;h2 class=&quot;sectionedit61&quot;&gt;&lt;a name=&quot;maemo-sdk&quot; id=&quot;maemo-sdk&quot;&gt;Maemo SDK&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Récupérer et lancer le script d&amp;#039;install automatique de maemo:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ cd ~
$ wget http://repository.maemo.org/stable/4.1.2/maemo-sdk-install_4.1.2.sh
$ chmod +x maemo-sdk-install_4.1.2.sh
$ ./maemo-sdk-install_4.1.2.sh&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ajouter les binaires fermés si on le souhaite:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ /scratchbox/login
[sbox-: ~] &amp;gt; sb-conf select DIABLO_ARMEL
[sbox-DIABLO_ARMEL: ~] &amp;gt; fakeroot apt-get install maemo-explicit
[sbox-DIABLO_ARMEL: ~] &amp;gt; sc-conf select DIABLO_X86
[sbox-DIABLO_X86: ~] &amp;gt; fakeroot apt-get install maemo-explicit&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT61 SECTION &quot;Maemo SDK&quot; [889-1453] --&gt;
&lt;h2 class=&quot;sectionedit62&quot;&gt;&lt;a name=&quot;lancer-l-environnement-sous-x&quot; id=&quot;lancer-l-environnement-sous-x&quot;&gt;Lancer l&amp;#039;environnement sous X&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Se logguer dans le domU en activant le X11Forwarding:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ ssh -X scratchbox&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Installer Xephyr, un Xnest amélioré :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo aptitude install xserver-xephyr&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Lancer Xephyr:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ Xephyr :1 -host-cursor -screen 800x480x16 -dpi 96 -ac -extension Composite &amp;amp;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dans scratchbox, lancer l&amp;#039;environnement graphique:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ /scratchbox/login
[sbox-DIABLO_X86: ~] &amp;gt; export DISPLAY=:1  
[sbox-DIABLO_X86: ~] &amp;gt; af-sb-init.sh start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT62 SECTION &quot;Lancer l'environnement sous X&quot; [1454-1977] --&gt;
&lt;h2 class=&quot;sectionedit63&quot;&gt;&lt;a name=&quot;ajouter-le-depot-maemo-extras&quot; id=&quot;ajouter-le-depot-maemo-extras&quot;&gt;Ajouter le dépot maemo extras&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ajouter un fichier &lt;code&gt;maemo-extras.list&lt;/code&gt; dans &lt;code&gt;/etc/apt/sources.list.d&lt;/code&gt; de scratchbox :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;file&quot;&gt;deb http://repository.maemo.org/extras/ diablo free non-free
deb-src http://repository.maemo.org/extras/ diablo free non-free&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Un petit test:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;[sbox-DIABLO_X86: ~] &amp;gt; fakeroot apt-get update
...
[sbox-DIABLO_X86: ~] &amp;gt; fakeroot apt-cache search flac
flac - Free Lossless Audio Codec - command line tools
libflac8 - Free Lossless Audio Codec - runtime C library
libflac-dev - Free Lossless Audio Codec - C development library
libflac++6 - Free Lossless Audio Codec - C++ runtime library
libflac++-dev - Free Lossless Audio Codec - C++ development library
timidity - Software sound renderer (MIDI sequencer, MOD player)
lightmediascanner0-flac - Lightweight library to scan media.
libflac-doc - Free Lossless Audio Codec - library documentation
python2.5-mutagen - audio metadata editing library&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Faire la même chose pour chaque target&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT63 SECTION &quot;Ajouter le dépot maemo extras&quot; [1978-] --&gt;</summary>
    </entry>
    <entry>
        <title>Mémo d'installation de Debian</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/memo-d-installation-debian"/>
        <published>2009-08-27T21:43:32+00:00</published>
        <updated>2009-08-27T21:43:32+00:00</updated>
        <id>http://wiki.orgrim.net/linux/memo-d-installation-debian</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Voir aussi la &lt;a href=&quot;http://formation-debian-testing.via.ecp.fr/&quot; class=&quot;urlextern&quot; title=&quot;http://formation-debian-testing.via.ecp.fr/&quot;  rel=&quot;nofollow&quot;&gt;formation Debian GNU/Linux 5.0&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT64 SECTION &quot;Mémo d'installation de Debian&quot; [1-141] --&gt;
&lt;h1 class=&quot;sectionedit65&quot;&gt;&lt;a name=&quot;netinstall&quot; id=&quot;netinstall&quot;&gt;Netinstall&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT65 SECTION &quot;Netinstall&quot; [142-167] --&gt;
&lt;h2 class=&quot;sectionedit66&quot;&gt;&lt;a name=&quot;principales-etapes&quot; id=&quot;principales-etapes&quot;&gt;Principales étapes&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Récupérer une &lt;acronym title=&quot;International Organization for Standardization&quot;&gt;ISO&lt;/acronym&gt; de Debian netinstall et graver&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Booter dessus&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Installer avec un partitionnement de base, On prend le partitionnement manuel, 10 Go pour &lt;code&gt;/&lt;/code&gt;, 2x la RAM comme &lt;code&gt;SWAP&lt;/code&gt;, et le reste pour &lt;code&gt;/home&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; On choisit un miroir proche de la maison pour les packages&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dans &lt;code&gt;tasksel&lt;/code&gt;, le seul groupe intéressant pour le moment est &lt;code&gt;laptop&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT66 SECTION &quot;Principales étapes&quot; [168-571] --&gt;
&lt;h2 class=&quot;sectionedit67&quot;&gt;&lt;a name=&quot;un-encart-sur-tasksel&quot; id=&quot;un-encart-sur-tasksel&quot;&gt;Un encart sur tasksel&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;code&gt;tasksel&lt;/code&gt; est un programme Debian qui permet d&amp;#039;installer des groupes de paquets directement. On peut l&amp;#039;utiliser à tout moment, il a même sa page de man.
&lt;/p&gt;

&lt;p&gt;
Pour avoir la liste des groupes :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# tasksel --list-tasks
u desktop       Desktop environment
i web-server    Web server
u print-server  Print server
u dns-server    DNS server
u file-server   File server
i mail-server   Mail server
i database-server       SQL database
u laptop        Laptop
u manual        manual package selection&lt;/pre&gt;

&lt;p&gt;
Pour connaître les nom des paquets composant le groupe :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# tasksel --task-packages laptop
acpi-support
hibernate
acpi
powertop
apmd
radeontool
anacron
wireless-tools
cpufrequtils
nvclock
wpasupplicant
vbetool
acpid
pcmciautils
toshset
bluetooth
avahi-autoipd&lt;/pre&gt;

&lt;p&gt;
Le seul problème de &lt;code&gt;tasksel&lt;/code&gt; réside dans son exécution lors de l&amp;#039;installation depuis le CD. On ne sait pas trop ce qu&amp;#039;il va installer. Mais bon on voit ici que les choix du groupe &lt;code&gt;laptop&lt;/code&gt; sont plutôt judicieux.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT67 SECTION &quot;Un encart sur tasksel&quot; [572-1611] --&gt;
&lt;h1 class=&quot;sectionedit68&quot;&gt;&lt;a name=&quot;apres-l-installation&quot; id=&quot;apres-l-installation&quot;&gt;Après l&amp;#039;installation&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT68 SECTION &quot;Après l'installation&quot; [1612-1648] --&gt;
&lt;h2 class=&quot;sectionedit69&quot;&gt;&lt;a name=&quot;passage-en-testing&quot; id=&quot;passage-en-testing&quot;&gt;Passage en testing&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On met un source.list qui va bien:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /etc/apt/sources.list
deb ftp://ftp.proxad.net/mirrors/ftp.debian.org/ testing main contrib
deb-src ftp://ftp.proxad.net/mirrors/ftp.debian.org/ testing main contrib

deb http://security.debian.org/ testing/updates main contrib
deb-src http://security.debian.org/ testing/updates main contrib&lt;/pre&gt;

&lt;p&gt;
Puis on met à jour :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude update
# aptitude dist-upgrade
# aptitude update
# aptitude full-upgrade&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT69 SECTION &quot;Passage en testing&quot; [1649-2152] --&gt;
&lt;h2 class=&quot;sectionedit70&quot;&gt;&lt;a name=&quot;installation-de-kde&quot; id=&quot;installation-de-kde&quot;&gt;Installation de KDE&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install kde kde-i18n-fr&lt;/pre&gt;

&lt;p&gt;
On reboote sur le nouveau noyau installé lors du passage en testing, et tout marche !!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT70 SECTION &quot;Installation de KDE&quot; [2153-2313] --&gt;
&lt;h2 class=&quot;sectionedit71&quot;&gt;&lt;a name=&quot;configuration-du-son&quot; id=&quot;configuration-du-son&quot;&gt;Configuration du son&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install alsa
# alsaconf
# alsamixer&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT71 SECTION &quot;Configuration du son&quot; [2314-2410] --&gt;
&lt;h2 class=&quot;sectionedit72&quot;&gt;&lt;a name=&quot;installation-de-programmes-utiles&quot; id=&quot;installation-de-programmes-utiles&quot;&gt;Installation de programmes utiles&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Navigateur: &lt;code&gt;iceweasel iceweasel-l10n-fr&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Son et vidéo: &lt;code&gt;amarok mplayer libdvdread libdvdnav&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Editeur: &lt;code&gt;emacs vim&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Images: &lt;code&gt;gqview gimp&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Autres packages: &lt;code&gt;libdvdcss&lt;/code&gt; sur &lt;a href=&quot;http://download.videolan.org/pub/libdvdcss/&quot; class=&quot;urlextern&quot; title=&quot;http://download.videolan.org/pub/libdvdcss/&quot;  rel=&quot;nofollow&quot;&gt;VideoLAN.org&lt;/a&gt;, prendre le package Debian et l&amp;#039;installer avec &lt;code&gt;dpkg -i&lt;/code&gt;. &lt;code&gt;w32codecs&lt;/code&gt; sur &lt;a href=&quot;http://www.mplayerhq.hu/design7/dload.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.mplayerhq.hu/design7/dload.html&quot;  rel=&quot;nofollow&quot;&gt;le site de mplayer&lt;/a&gt;, déballer le tar, arranger les droits et le mettre dans &lt;code&gt;/usr/lib/win32&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Il reste la récupération de configuration pour GPG, &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt;…
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT72 SECTION &quot;Installation de programmes utiles&quot; [2411-] --&gt;</summary>
    </entry>
    <entry>
        <title>OpenWRT customisé avec l'image builder</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/openwrt-customise"/>
        <published>2011-01-17T20:05:56+00:00</published>
        <updated>2011-01-17T20:05:56+00:00</updated>
        <id>http://wiki.orgrim.net/linux/openwrt-customise</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://wiki.openwrt.org/doc/howto/imagebuilder&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.openwrt.org/doc/howto/imagebuilder&quot;  rel=&quot;nofollow&quot;&gt;http://wiki.openwrt.org/doc/howto/imagebuilder&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT73 SECTION &quot;OpenWRT customisé avec l'image builder&quot; [1-103] --&gt;
&lt;h2 class=&quot;sectionedit74&quot;&gt;&lt;a name=&quot;creer-un-profil&quot; id=&quot;creer-un-profil&quot;&gt;Créer un profil&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour le linksys wrt54gl, on utilise l&amp;#039;architecture brcm47xx. Ajouter un fichier &lt;code&gt;666-Brouette.mk&lt;/code&gt; dans &lt;code&gt;target/linux/brcm47xx/profiles&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;define Profile/Brouette
  NAME:=Brouette custom
  PACKAGES:=-dnsmasq -ppp -ppp-mod-pppoe bridge hostapd-mini kmod-b43 kmod-crypto-aes kmod-crypto-core kmod-crypto-arc4 kmod-cfg80211 kmod-mac80211 ntpdate
endef

define Profile/Brouette/Description
	Package set and config for brouette
endef
$(eval $(call Profile,Brouette))&lt;/pre&gt;

&lt;p&gt;
Pour vérifier, un &lt;code&gt;make info&lt;/code&gt; à la racine de l&amp;#039;image builder donne ceci :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ make info
Current Target: &amp;quot;brcm47xx&amp;quot;
Default Packages: base-files libc libgcc busybox dropbear mtd uci opkg udevtrigger hotplug2 dnsmasq iptables ppp ppp-mod-pppoe kmod-ipt-nathelper firewall wpad-mini kmod-switch kmod-diag nvram
Available Profiles:

Broadcom-b43:
	Broadcom BCM43xx WiFi (default)
	Packages: kmod-b43 kmod-b43legacy
[...]
Brouette:
	Brouette custom
	Packages: -dnsmasq -ppp -ppp-mod-pppoe bridge hostapd-mini kmod-b43 kmod-crypto-aes kmod-crypto-core kmod-crypto-arc4 kmod-cfg80211 kmod-mac80211 ntpdate
[...]&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT74 SECTION &quot;Créer un profil&quot; [104-1237] --&gt;
&lt;h2 class=&quot;sectionedit75&quot;&gt;&lt;a name=&quot;ajouter-des-fichiers-de-configurations&quot; id=&quot;ajouter-des-fichiers-de-configurations&quot;&gt;Ajouter des fichiers de configurations&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On crée un répertoire contenant l’arborescence des fichiers custom :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ mkdir -p brouette/etc/config
$ mkdir -p brouette/etc/dropbear&lt;/pre&gt;

&lt;p&gt;
On peut ajouter sa clé &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt; dans &lt;code&gt;brouette/etc/dropbear/authorized_keys&lt;/code&gt; et recopier les fichiers de &lt;code&gt;etc/config&lt;/code&gt; déjà présents dans une install, il suffit de regarder dans le répertoire &lt;code&gt;/jffs&lt;/code&gt; pour voir les fichiers modifiés.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT75 SECTION &quot;Ajouter des fichiers de configurations&quot; [1238-] --&gt;</summary>
    </entry>
    <entry>
        <title>OpenWRT sur un Linksys WRT54GL</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/openwrt-sur-un-linksys-wrt54gl"/>
        <published>2009-08-27T18:04:17+00:00</published>
        <updated>2009-08-27T18:04:17+00:00</updated>
        <id>http://wiki.orgrim.net/linux/openwrt-sur-un-linksys-wrt54gl</id>
        <summary>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://wiki.orgrim.net/tag/linux?do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/openwrt?do=showtag&amp;amp;tag=openwrt&quot; class=&quot;wikilink1&quot; title=&quot;tag:openwrt&quot; rel=&quot;tag&quot;&gt;openwrt&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/wifi?do=showtag&amp;amp;tag=wifi&quot; class=&quot;wikilink1&quot; title=&quot;tag:wifi&quot; rel=&quot;tag&quot;&gt;wifi&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/reseau?do=showtag&amp;amp;tag=reseau&quot; class=&quot;wikilink1&quot; title=&quot;tag:reseau&quot; rel=&quot;tag&quot;&gt;reseau&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;
&lt;img src=&quot;http://wiki.orgrim.net/lib/images/smileys/fixme.gif&quot; class=&quot;middle&quot; alt=&quot;FIXME&quot; /&gt; Mettre à jour
&lt;/p&gt;

&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Voici une petite doc sur un classique : comment flasher le WRT54GL pour y mettre OpenWRT. En fait, c&amp;#039;est pas évident au premier abord, surtout qu&amp;#039;il n&amp;#039;y a pas beaucoup de documentation francophone.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT76 SECTION &quot;OpenWRT sur un Linksys WRT54GL&quot; [58-304] --&gt;
&lt;h2 class=&quot;sectionedit77&quot;&gt;&lt;a name=&quot;recuperer-une-image&quot; id=&quot;recuperer-une-image&quot;&gt;Récupérer une image&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Comment bien choisir son image d&amp;#039;OpenWRT, en fait après avoir pas mal tourné en rond dans le wiki, (qui n&amp;#039;est pas forcément à jour par rapport au système, mais ça viendra) les images qui vont bien sont :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pour White Russian, la version précédente : &lt;a href=&quot;http://downloads.openwrt.org/whiterussian/newest/default/openwrt-wrt54g-squashfs.bin&quot; class=&quot;urlextern&quot; title=&quot;http://downloads.openwrt.org/whiterussian/newest/default/openwrt-wrt54g-squashfs.bin&quot;  rel=&quot;nofollow&quot;&gt;.../whiterussian/.../openwrt-wrt54g-squashfs.bin&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pour Kamikaze, la version actuelle stable 7.09 : &lt;a href=&quot;http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/openwrt-wrt54g-2.4-squashfs.bin&quot; class=&quot;urlextern&quot; title=&quot;http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/openwrt-wrt54g-2.4-squashfs.bin&quot;  rel=&quot;nofollow&quot;&gt;.../kamikaze/.../openwrt-wrt54g-2.4-squashfs.bin&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pour Kamikaze, la dernière version 8.09_RC1 : &lt;a href=&quot;http://downloads.openwrt.org/kamikaze/8.09_RC1/brcm47xx/openwrt-wrt54g-squashfs.bin&quot; class=&quot;urlextern&quot; title=&quot;http://downloads.openwrt.org/kamikaze/8.09_RC1/brcm47xx/openwrt-wrt54g-squashfs.bin&quot;  rel=&quot;nofollow&quot;&gt;.../kamikaze/.../openwrt-wrt54g-squashfs.bin&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;notewarning&quot;&gt;Attention à bien vérifier l&amp;#039;intégrité de l&amp;#039;image téléchargée via MD5.
&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;p&gt;
Avant la version 8.09_RC1, il n&amp;#039;y a pas de driver libre pour le wifi dans le noyau 2.6.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT77 SECTION &quot;Récupérer une image&quot; [305-1305] --&gt;
&lt;h2 class=&quot;sectionedit78&quot;&gt;&lt;a name=&quot;flasher-le-routeur-depuis-l-interface-web-linksys&quot; id=&quot;flasher-le-routeur-depuis-l-interface-web-linksys&quot;&gt;Flasher le routeur depuis l&amp;#039;interface web Linksys&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
La première chose à faire est de se connecter à l&amp;#039;interface web de gestion du routeur, il faut une adresse IP dans la plage 192.168.1.0/24, l&amp;#039;adresse du routeur étant 192.168.1.1 par défaut, par exemple :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# ifconfig eth1:1 inet 192.168.1.2 up&lt;/pre&gt;

&lt;p&gt;
Pour installer une image, la première fois :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Il faut connecter le cable sur un port ethernet de 1 à 4 sur le routeur.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Aller sur &lt;a href=&quot;http://192.168.1.1&quot; class=&quot;urlextern&quot; title=&quot;http://192.168.1.1&quot;  rel=&quot;nofollow&quot;&gt;http://192.168.1.1&lt;/a&gt;, on ne met pas de user, et “admin” comme mot de passe. Puis dans Administration &amp;gt; Firmware upgrade.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Choisir l&amp;#039;image à uploader dans le routeur et faire upgrade. Le routeur se flashe et reboot tout seul, il faut attendre un peu et tenter la connection telnet ou web sur 192.168.1.1&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT78 SECTION &quot;Flasher le routeur depuis l'interface web Linksys&quot; [1306-2067] --&gt;
&lt;h2 class=&quot;sectionedit79&quot;&gt;&lt;a name=&quot;flasher-le-routeur-par-tftp&quot; id=&quot;flasher-le-routeur-par-tftp&quot;&gt;Flasher le routeur par TFTP&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il faut d&amp;#039;abord installer un client TFTP, comme “atftp” :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install atftp&lt;/pre&gt;

&lt;p&gt;
Ensuite, il faut vérifier que le &lt;code&gt;boot_wait&lt;/code&gt; est activé. Ce paramètre indique au routeur d&amp;#039;attendre de recevoir des réquêtes TFTP au boot, ce qui permet de pouvoir le flasher :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;routeur# nvram show | grep boot_wait
size: 2475 bytes (30293 left)
boot_wait=on&lt;/pre&gt;

&lt;p&gt;
Sinon, il faut l&amp;#039;activer, mais pour moi c&amp;#039;était déjà fait :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;routeur# nvram set boot_wait=on
routeur# nvram commit &amp;amp;amp;&amp;amp;amp; reboot&lt;/pre&gt;

&lt;p&gt;
Normalement, avec Kamikaze, on n&amp;#039;a pas besoin de trafiquer le nvram pour configurer le routeur.
&lt;/p&gt;

&lt;p&gt;
Pour flasher le routeur :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Débrancher l&amp;#039;alimentation du routeur&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Lancer la commande suivante :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;atftp --trace --option &amp;quot;timeout 1&amp;quot; --option &amp;quot;mode octet&amp;quot; --put --local-file openwrt-wrt54g-squashfs.bin 192.168.1.1&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Brancher l&amp;#039;alimentation, le transfert TFTP doit commencer presque immédiatement&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A la fin, le routeur reboote tout seul, lorsqu&amp;#039;il est de nouveau disponible, c&amp;#039;est prêt.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT79 SECTION &quot;Flasher le routeur par TFTP&quot; [2068-3113] --&gt;
&lt;h2 class=&quot;sectionedit80&quot;&gt;&lt;a name=&quot;configuration-basique&quot; id=&quot;configuration-basique&quot;&gt;Configuration basique&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Le plus simple est d&amp;#039;aller sur l&amp;#039;interface graphique (&lt;a href=&quot;http://192.168.1.1&quot; class=&quot;urlextern&quot; title=&quot;http://192.168.1.1&quot;  rel=&quot;nofollow&quot;&gt;http://192.168.1.1&lt;/a&gt;), la première fois il est demandé de mettre un mot de passe root. On peut ensuite se connecter en &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt;, sinon c&amp;#039;est telnet. L&amp;#039;interface graphique permet de tout configurer, ça permet d&amp;#039;avoir quelque chose de fonctionnel très vite, les paramètres par défaut sont corrects.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT80 SECTION &quot;Configuration basique&quot; [3114-3499] --&gt;
&lt;h2 class=&quot;sectionedit81&quot;&gt;&lt;a name=&quot;nettoyer-la-nvram&quot; id=&quot;nettoyer-la-nvram&quot;&gt;Nettoyer la nvram&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
D&amp;#039;abord, il faut mettre un mot de passe root costaud et utiliser &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt;.
&lt;/p&gt;

&lt;p&gt;
Ensuite, on peut lancer les commandes suivantes pour nettoyer la nvram, quand le routeur est connecté au Net :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /tmp
wget http://downloads.openwrt.org/people/kaloz/nvram-clean.sh
chmod a+x nvram-clean.sh
./nvram-clean.sh
nvram commit
rm nvram-clean.sh&lt;/pre&gt;

&lt;p&gt;
Le script de nettoyage m&amp;#039;a donné ça à la fin :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Before: size: 9603 bytes (23165 left)
After: size: 2475 bytes (30293 left)&lt;/pre&gt;

&lt;p&gt;
C&amp;#039;est toujours ça de gagné &lt;img src=&quot;http://wiki.orgrim.net/lib/images/smileys/icon_smile.gif&quot; class=&quot;middle&quot; alt=&quot;:-)&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT81 SECTION &quot;Nettoyer la nvram&quot; [3500-4038] --&gt;
&lt;h2 class=&quot;sectionedit82&quot;&gt;&lt;a name=&quot;conclusion&quot; id=&quot;conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
L&amp;#039;opération est somme toute assez simple quand on a bien compris le principe et qu&amp;#039;on ne panique pas. Il est aussi important de récupérer la bonne image pour ne pas rendre le routeur inutile (quoiqu&amp;#039;il est beau avec ses antennes, mais de là à le transformer en objet décoratif…)
&lt;/p&gt;

&lt;p&gt;
Le seul soucis de WRT54GL vient de l&amp;#039;espace disque disponible, surtout que les fichiers de configuration sont bien organisés. Refaire une image vraiment minimale devient vite nécessaire, pour s&amp;#039;amuser à réduire la taille du système au maximum.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT82 SECTION &quot;Conclusion&quot; [4039-] --&gt;</summary>
    </entry>
    <entry>
        <title>OpenWRT</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/openwrt"/>
        <published>2009-04-13T19:33:43+00:00</published>
        <updated>2009-04-13T19:33:43+00:00</updated>
        <id>http://wiki.orgrim.net/linux/openwrt</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT83 SECTION &quot;OpenWRT&quot; [1-23] --&gt;
&lt;h2 class=&quot;sectionedit84&quot;&gt;&lt;a name=&quot;docs-importantes&quot; id=&quot;docs-importantes&quot;&gt;Docs importantes&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.openwrt.org/OpenWrtDocs/Hardware/Linksys/WRT54GL&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.openwrt.org/OpenWrtDocs/Hardware/Linksys/WRT54GL&quot;  rel=&quot;nofollow&quot;&gt;Hardware/Linksys/WRT54GL&lt;/a&gt; – La page du routeur&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.openwrt.org/Faq&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.openwrt.org/Faq&quot;  rel=&quot;nofollow&quot;&gt;Faq&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.openwrt.org/OpenWrtDocs/NetworkInterfaces&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.openwrt.org/OpenWrtDocs/NetworkInterfaces&quot;  rel=&quot;nofollow&quot;&gt;NetworkInterfaces&lt;/a&gt; – VLAN et bridge&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.openwrt.org/DemilitarizedZoneHowto&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.openwrt.org/DemilitarizedZoneHowto&quot;  rel=&quot;nofollow&quot;&gt;DemilitarizedZoneHowto&lt;/a&gt; – Howto pour faire une DMZ&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT84 SECTION &quot;Docs importantes&quot; [24-415] --&gt;
&lt;h2 class=&quot;sectionedit85&quot;&gt;&lt;a name=&quot;reseau&quot; id=&quot;reseau&quot;&gt;Réseau&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Comprendre le fonctionnement et la configuration des VLAN&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Voir si la configuration du réseau de la maison est possible:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Machine en DMZ avec VM utilisant des VLAN taggués pour se retrouver dans le bon réseau&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Redirection en tout genre (Squid, SquidGuard, Bittorent, &lt;acronym title=&quot;Quality of Service&quot;&gt;QoS&lt;/acronym&gt;) pour faire un AP public&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
/etc/config/network:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;config &amp;#039;switch&amp;#039; &amp;#039;eth0&amp;#039;
        option &amp;#039;vlan0&amp;#039; &amp;#039;0 1 2 3 5*&amp;#039;
        option &amp;#039;vlan1&amp;#039; &amp;#039;4 5&amp;#039;

config &amp;#039;interface&amp;#039; &amp;#039;loopback&amp;#039;
        option &amp;#039;ifname&amp;#039; &amp;#039;lo&amp;#039;
        option &amp;#039;proto&amp;#039; &amp;#039;static&amp;#039;
        option &amp;#039;ipaddr&amp;#039; &amp;#039;127.0.0.1&amp;#039;
        option &amp;#039;netmask&amp;#039; &amp;#039;255.0.0.0&amp;#039;

config &amp;#039;interface&amp;#039; &amp;#039;lan&amp;#039;
        option &amp;#039;type&amp;#039; &amp;#039;bridge&amp;#039;
        option &amp;#039;ifname&amp;#039; &amp;#039;eth0.0&amp;#039;
        option &amp;#039;proto&amp;#039; &amp;#039;static&amp;#039;
        option &amp;#039;netmask&amp;#039; &amp;#039;255.255.255.0&amp;#039;
        option &amp;#039;ipaddr&amp;#039; &amp;#039;192.168.0.2&amp;#039;

config &amp;#039;interface&amp;#039; &amp;#039;wan&amp;#039;
        option &amp;#039;ifname&amp;#039; &amp;#039;eth0.1&amp;#039;
        option &amp;#039;proto&amp;#039; &amp;#039;dhcp&amp;#039;&lt;/pre&gt;

&lt;p&gt;
/etc/config/firewall:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;config defaults
        option syn_flood        1
        option input            ACCEPT
        option output           ACCEPT
        option forward          REJECT

config zone
        option name             lan
        option input    ACCEPT
        option output   ACCEPT
        option forward  REJECT

config zone
        option name             wan
        option input    REJECT
        option output   ACCEPT
        option forward  REJECT
        option masq             1

config forwarding
        option src      lan
        option dest     wan&lt;/pre&gt;

&lt;p&gt;
Interfaces:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# ifconfig -a
br-lan    Link encap:Ethernet  HWaddr 00:21:29:B5:D7:6D
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:403677 errors:0 dropped:0 overruns:0 frame:0
          TX packets:517281 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:47834661 (45.6 MiB)  TX bytes:659379999 (628.8 MiB)

eth0      Link encap:Ethernet  HWaddr 00:21:29:B5:D7:6D
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:925435 errors:0 dropped:0 overruns:0 frame:0
          TX packets:918958 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:717651833 (684.4 MiB)  TX bytes:719172944 (685.8 MiB)
          Interrupt:4

eth0.0    Link encap:Ethernet  HWaddr 00:21:29:B5:D7:6D
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:404231 errors:0 dropped:0 overruns:0 frame:0
          TX packets:517340 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:49491778 (47.1 MiB)  TX bytes:661147896 (630.5 MiB)

eth0.1    Link encap:Ethernet  HWaddr 00:21:29:B5:D7:6D
          inet addr:88.186.16.24  Bcast:88.186.16.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:521209 errors:0 dropped:0 overruns:0 frame:0
          TX packets:401138 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:651502601 (621.3 MiB)  TX bytes:54119672 (51.6 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:27 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2243 (2.1 KiB)  TX bytes:2243 (2.1 KiB)

wl0       Link encap:Ethernet  HWaddr 00:21:29:B5:D7:6F
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:260 errors:3 dropped:0 overruns:0 frame:2581568
          TX packets:3519 errors:4 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:23206 (22.6 KiB)  TX bytes:766688 (748.7 KiB)
          Interrupt:2 Base address:0x5000&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT85 SECTION &quot;Réseau&quot; [416-4336] --&gt;
&lt;h2 class=&quot;sectionedit86&quot;&gt;&lt;a name=&quot;ipv6-freebox-sur-le-lan&quot; id=&quot;ipv6-freebox-sur-le-lan&quot;&gt;IPv6 Freebox sur le LAN&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Installer de quoi avoir de l&amp;#039;IPv6: &lt;code&gt;kmod-ipv6&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;radvd&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Vérifier qu&amp;#039;on peut pinger un host en IPv6: &lt;code&gt;ping6 &lt;a href=&quot;http://www.kame.net&quot; class=&quot;urlextern&quot; title=&quot;http://www.kame.net&quot;  rel=&quot;nofollow&quot;&gt;www.kame.net&lt;/a&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Trouver le subnet IPv6 de la Freebox (trouver la terminologie: subnet/IPv6 ??)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Configurer &lt;code&gt;radvd&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Configurer les clients sur le &lt;acronym title=&quot;Local Area Network&quot;&gt;LAN&lt;/acronym&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT86 SECTION &quot;IPv6 Freebox sur le LAN&quot; [4337-] --&gt;</summary>
    </entry>
    <entry>
        <title>PC portable entièrement crypté avec boot sur clé USB</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/pc-portable-encrypte"/>
        <published>2009-08-27T17:46:40+00:00</published>
        <updated>2009-08-27T17:46:40+00:00</updated>
        <id>http://wiki.orgrim.net/linux/pc-portable-encrypte</id>
        <summary>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://wiki.orgrim.net/tag/crypto?do=showtag&amp;amp;tag=crypto&quot; class=&quot;wikilink1&quot; title=&quot;tag:crypto&quot; rel=&quot;tag&quot;&gt;crypto&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/debian?do=showtag&amp;amp;tag=debian&quot; class=&quot;wikilink1&quot; title=&quot;tag:debian&quot; rel=&quot;tag&quot;&gt;debian&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/linux?do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
De plus en plus de distribution Linux proposent d&amp;#039;installer le système sur des partitions cryptées, c&amp;#039;est le cas de Debian et Fedora.
&lt;/p&gt;

&lt;p&gt;
Dans ce genre d&amp;#039;installation, tout n&amp;#039;est pas crypté, il y a forcément une partition ”/boot” qui contient grub, le kernel et l&amp;#039;initrd, qui ne peuvent être cryptés. En effet le BIOS doit pouvoir lire grub pour le charger et grub doit pouvoir lire le kernel et l&amp;#039;initrd, à ce moment du boot, le système n&amp;#039;a pas les éléments nécessaires pour décrypter un espace disque et y lire ces programmes.
&lt;/p&gt;

&lt;p&gt;
La solution pour avoir le disque dur totalement crypté est de mettre la partition &lt;code&gt;/boot&lt;/code&gt; ailleurs, sur une clé USB par exemple. On va donc transférer une Debian sur un espace crypté en LVM et passer le kernel et grub sur une clé USB.
&lt;/p&gt;

&lt;p&gt;
Les noms des devices sont à adapter selon le contexte.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT87 SECTION &quot;PC portable entièrement crypté avec boot sur clé USB&quot; [33-942] --&gt;
&lt;h1 class=&quot;sectionedit88&quot;&gt;&lt;a name=&quot;preparation&quot; id=&quot;preparation&quot;&gt;Préparation&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Il y a quelques prérequis pour cette opération :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pour le backup: une autre machine, un disque dur USB,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pour la configuration: un live CD ou &lt;a href=&quot;http://wiki.orgrim.net/linux/systemrescuecd-sur-un-cle-usb&quot; class=&quot;wikilink1&quot; title=&quot;linux:systemrescuecd-sur-un-cle-usb&quot;&gt;SystemRescueCD sur un clé USB&lt;/a&gt;,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pour le boot: une clé USB. Le BIOS du portable doit pouvoir booter sur une clé USB.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Ensuite, il faut installer tous les packages nécessaires:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install lvm2 initramfs-tools cryptsetup hashalot mbr&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT88 SECTION &quot;Préparation&quot; [943-1376] --&gt;
&lt;h1 class=&quot;sectionedit89&quot;&gt;&lt;a name=&quot;sauvegarde-du-systeme&quot; id=&quot;sauvegarde-du-systeme&quot;&gt;Sauvegarde du système&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Tout d&amp;#039;abord, il faut booter le portable sur SystemRescueCD ou un LiveCD qui possède de quoi faire un tar, scp, cryptsetup, du LVM.
&lt;/p&gt;

&lt;p&gt;
Ensuite, on monte les partitions du système à sauvegarder. Cette techinque est à retenir, car on manipule les fichiers du système à froid, on est donc sûr que le système ne changera pas durant le backup:
&lt;/p&gt;

&lt;p&gt;
Pour trouver quel est le disque dur du portable:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# fdisk -l
--&amp;gt; /dev/sda&lt;/pre&gt;

&lt;p&gt;
On crée un répertoire pour monter la partition root du système à sauvegarder et on monte les partitions (à adapter à son &lt;code&gt;/etc/fstab&lt;/code&gt;) :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdir /a
# mount /dev/sda1 /a
# mount /dev/sda3 /a/home&lt;/pre&gt;

&lt;p&gt;
Enfin, on sauvegarde ailleurs, sur une autre machine, par &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt;, et on démonte les partitions :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cd /a
# tar cpf - * | ssh orgrim@192.168.0.1 &amp;quot;cat | gzip &amp;gt; laptop.tar.gz&amp;quot;
# cd /
# umount /a/home
# umount /a&lt;/pre&gt;

&lt;p&gt;
La commande crée le tar sur la sortie standard, renvoyée dans &lt;code&gt;ssh&lt;/code&gt;, qui se connecte. On demande à &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt; d&amp;#039;exécuter la commande entre guillemets au lieu de lancer un shell. Pour capter le flux du tar, on lance cat, qu&amp;#039;on redirige dans gzip puis dans un fichier.
&lt;/p&gt;

&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;notetip&quot;&gt;On utilise &lt;code&gt;tar&lt;/code&gt; pour ne pas altérer les fichiers, avec l&amp;#039;option “p” qui conserve les permissions et propriétaires des fichiers/répertoires.

&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT89 SECTION &quot;Sauvegarde du système&quot; [1377-2703] --&gt;
&lt;h1 class=&quot;sectionedit90&quot;&gt;&lt;a name=&quot;crypter-le-disque-dur&quot; id=&quot;crypter-le-disque-dur&quot;&gt;Crypter le disque dur&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT90 SECTION &quot;Crypter le disque dur&quot; [2704-2740] --&gt;
&lt;h2 class=&quot;sectionedit91&quot;&gt;&lt;a name=&quot;partionnement&quot; id=&quot;partionnement&quot;&gt;Partionnement&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On va partitionner le disque dur pour avoir une partition de SWAP (de 1Go, soit 2 fois la RAM, à adapter) et une partition pour un volume physique LVM2, voici pour référence les commandes à effectuer avec &lt;code&gt;fdisk&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# fdisk /dev/sda
o, n, p, 1, &amp;lt;return&amp;gt;, +1024M, t, 1, 82
n, p, 2, &amp;lt;return&amp;gt;, &amp;lt;return&amp;gt;, t, 2, 8e&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT91 SECTION &quot;Partionnement&quot; [2741-3091] --&gt;
&lt;h2 class=&quot;sectionedit92&quot;&gt;&lt;a name=&quot;destruction-et-initialisation-des-donnees-du-disques&quot; id=&quot;destruction-et-initialisation-des-donnees-du-disques&quot;&gt;Destruction et initialisation des données du disques&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour que ça serve à quelque chose, il ne faut pas laisser de trace des données qui sont actuellement sur le disque dur. Il existe des outils dit de “forensic” comme TCT, qui peuvent retrouver des données effacées.
&lt;/p&gt;

&lt;p&gt;
Pour que l&amp;#039;encryption soit efficace sur le disque dur, il faut générer du bruit partout.on va donc prendre du bruit de &lt;code&gt;/dev/urandom&lt;/code&gt; (parce &lt;code&gt;/dev/random&lt;/code&gt;, c&amp;#039;est bien trop long) :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dd if=/dev/urandom of=/dev/sda1
# dd if=/dev/urandom of=/dev/sda2&lt;/pre&gt;

&lt;p&gt;
Cette opération est très longue, pour 80 Go ça m&amp;#039;a pris 12 heures environ.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT92 SECTION &quot;Destruction et initialisation des données du disques&quot; [3092-3718] --&gt;
&lt;h2 class=&quot;sectionedit93&quot;&gt;&lt;a name=&quot;configuration-du-lvm-crypte&quot; id=&quot;configuration-du-lvm-crypte&quot;&gt;Configuration du LVM crypté&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
La première chose à faire est de créer un partion LUKS (Linux Unified Key Setup). Ca permet de stocker les clés et la configuration du cryptage au début de la partition, comme ça n&amp;#039;importe quel système GNU/Linux est sensé pouvoir le lire. On fait ça avec &lt;code&gt;cryptsetup&lt;/code&gt;, qui demande une passphrase à la création (luksFormat) et déverouille lors de l&amp;#039;ouverture de la partition (liksOpen).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cryptsetup -y --cipher aes-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sda2
# cryptsetup luksOpen /dev/sda2 cryptpart&lt;/pre&gt;

&lt;p&gt;
Le “luksOpen” a créé un mapping pour la partition cryptée, on n&amp;#039;utilise donc plus ”/dev/sda2” mais ”/dev/mapper/cryptpart”.
&lt;/p&gt;

&lt;p&gt;
On crée ensuite notre configuration LVM2 :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Volume Physique :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# pvcreate /dev/mapper/cryptpart&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Volume Group :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# vgcreate system /dev/mapper/cryptpart&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Volumes Logiques :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# lvcreate -n root -L 10G system
# pvdisplay /dev/mapper/cryptpart | grep Free
  Free PE               16273
# lvcreate -n home -l 16273 system&lt;/pre&gt;

&lt;p&gt;
Pour “lvcreate”, on utilise une taille fixe pour ”/” (”-L 10G”) et le reste pour ”/home”, en spécifiant le nombre exact de “Physical Extends” restants sur le volume physique.
&lt;/p&gt;

&lt;p&gt;
Enfin, les systèmes de fichiers en ext3 :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mke2fs -j /dev/mapper/system-root
# mke2fs -j -m 0 /dev/mapper/system-home&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT93 SECTION &quot;Configuration du LVM crypté&quot; [3719-5070] --&gt;
&lt;h2 class=&quot;sectionedit94&quot;&gt;&lt;a name=&quot;restauration-du-systeme-backupe&quot; id=&quot;restauration-du-systeme-backupe&quot;&gt;Restauration du système backupé&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On procède maintenant à l&amp;#039;opération inverse :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mount /dev/mapper/system-root /a
# mkdir /a/home
# mount /dev/mapper/system-home /a/home
# cd /a
# ssh orgrim@192.168.0.1 &amp;quot;zcat laptop.tar.gz&amp;quot; | tar xpf -&lt;/pre&gt;

&lt;p&gt;
Tout est désormais en place sur un disque dur crypté.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT94 SECTION &quot;Restauration du système backupé&quot; [5071-5393] --&gt;
&lt;h2 class=&quot;sectionedit95&quot;&gt;&lt;a name=&quot;modification-de-la-configuration-du-systeme&quot; id=&quot;modification-de-la-configuration-du-systeme&quot;&gt;Modification de la configuration du système&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il faut modifier quelques fichiers de configuration pour que le système puisse booter sur le LVM crypté:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/etc/crypttab&lt;/code&gt;, déclaration de la partition root crypté pour le device mapper :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;file&quot;&gt;# &amp;lt;target name&amp;gt; &amp;lt;source device&amp;gt;         &amp;lt;key file&amp;gt;      &amp;lt;options&amp;gt;
cryptpart       /dev/hda2       none    verify,cipher=aes,hash=sha256&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/etc/fstab&lt;/code&gt;, passage vers LVM2 :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;file&quot;&gt;  # /etc/fstab: static file system information.
  #
  # &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;       &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;

  proc            /proc           proc    defaults        0       0
  /dev/mapper/system-root       /               ext3    defaults,errors=remount-ro 0       1
  /dev/sda1       /boot   ext2    defaults,noauto 0 2
  /dev/mapper/system-home       /home           ext3    defaults        0       2
  /dev/mapper/swap       none            swap    sw              0       0
  /dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0&lt;/pre&gt;

&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;noteclassic&quot;&gt;&lt;code&gt;/dev/sda1&lt;/code&gt; sera le device de la clé USB sur le système définitif, l&amp;#039;option “noauto” permet de ne pas monter automatiquement cette partition, on évite ainsi une erreur si la clé utilise un autre device.

&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT95 SECTION &quot;Modification de la configuration du système&quot; [5394-6652] --&gt;
&lt;h1 class=&quot;sectionedit96&quot;&gt;&lt;a name=&quot;creer-la-cle-usb-pour-le-boot&quot; id=&quot;creer-la-cle-usb-pour-le-boot&quot;&gt;Créer la clé USB pour le boot&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT96 SECTION &quot;Créer la clé USB pour le boot&quot; [6653-6699] --&gt;
&lt;h2 class=&quot;sectionedit97&quot;&gt;&lt;a name=&quot;prepartion-de-la-cle&quot; id=&quot;prepartion-de-la-cle&quot;&gt;Prépartion de la clé&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il faut insérer la clé USB et trouver son device avec &lt;code&gt;fdisk -l&lt;/code&gt; puis l&amp;#039;initialiser :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# fidsk /dev/sdd
o, n, p, 1, &amp;lt;return&amp;gt;, &amp;lt;return&amp;gt;, a, 1&lt;/pre&gt;

&lt;p&gt;
On formatte en ext2 :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mk2efs /dev/sdd1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT97 SECTION &quot;Prépartion de la clé&quot; [6700-6932] --&gt;
&lt;h2 class=&quot;sectionedit98&quot;&gt;&lt;a name=&quot;chroot-sur-le-systeme-restaure&quot; id=&quot;chroot-sur-le-systeme-restaure&quot;&gt;Chroot sur le système restauré&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour cette opération, on va se “chrooter” sur le système crypté :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mount -o bind /dev /a/dev
# mount -t sysfs none /a/sys
# mount -t proc none /a/proc
# mkdir /a/usbkey
# mount /dev/sdd1 /a/usbkey
# chroot /a /bin/bash&lt;/pre&gt;

&lt;p&gt;
On est maintenant sur notre Debian hébergée sur le disque dur du portable.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT98 SECTION &quot;Chroot sur le système restauré&quot; [6933-7294] --&gt;
&lt;h2 class=&quot;sectionedit99&quot;&gt;&lt;a name=&quot;mise-a-jour-de-l-initrd&quot; id=&quot;mise-a-jour-de-l-initrd&quot;&gt;Mise à jour de l&amp;#039;initrd&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Maintenant qu&amp;#039;on est chrooté, on a accès à “initramfs-tools”. On recrée donc un nouvel initrd, qui aura automagiquement tout ce qu&amp;#039;il faut pour gérer le disque crypté :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# update-initramfs -v -t -c -k 2.6.26-1-686
update-initramfs: Generating /boot/initrd.img-2.6.26-1-686
...
Calling hook cryptroot
...&lt;/pre&gt;

&lt;p&gt;
On peut remplacer ”-k &amp;lt;version du noyau&amp;gt;” par ”-k all” qui recréera tout les initrd nécessaires. Il faut bien voir “update-initramfs” ajouter les outils nécessaires à la gestion du disque encrypté, sinon le système ne pourra pas booter.
&lt;/p&gt;

&lt;p&gt;
Pour vérifier, on peut extraire le contenu de l&amp;#039;initrd, il doit y avoir un fichier &lt;code&gt;conf/conf.d/cryptroot&lt;/code&gt;, qui reprend les informations de &lt;code&gt;/etc/crypttab&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cd /tmp
# mkdir test
# cd test
# zcat /boot/initrd.img-2.6.26-1-686 | cpio -i
# cat conf/conf.d/cryptroot
target=cryptpart,source=/dev/hda2,key=none,lvm=system-root,cipher=aes,hash=sha256
# cd /
# rm -rf /tmp/test&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT99 SECTION &quot;Mise à jour de l'initrd&quot; [7295-8296] --&gt;
&lt;h2 class=&quot;sectionedit100&quot;&gt;&lt;a name=&quot;grub-sur-la-cle-usb&quot; id=&quot;grub-sur-la-cle-usb&quot;&gt;Grub sur la clé USB&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il faut mettre à jour le fichier de configuration de Grub (&lt;code&gt;/boot/grub/menu.lst&lt;/code&gt;). On va mettre à jour la configuration utilisée par debconf pour la mise à jour de du fichier lors d&amp;#039;une installation de noyau, ça servira pour l&amp;#039;installation de futur noyau :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# kopt=root=/dev/mapper/system-root ro
# groot=(hd0,0)&lt;/pre&gt;

&lt;p&gt;
Avec le “root” pour les 2 entrées de boot, on met le premier device car le BIOS oriente le nommage des devices selon l&amp;#039;ordre de boot (donc hd0 sera la clé) :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;title           Debian GNU/Linux, kernel 2.6.26-1-686
root            (hd0,0)
kernel          /vmlinuz-2.6.26-1-686 root=/dev/mapper/system-root ro
initrd          /initrd.img-2.6.26-1-686&lt;/pre&gt;

&lt;p&gt;
Ensuite, on doit copier le contenu du répertoire &lt;code&gt;/boot&lt;/code&gt; sur la clé, c&amp;#039;est à dire l&amp;#039;installation existante de Grub, le kernel et l&amp;#039;initrd :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cp -R /boot/* /usbkey&lt;/pre&gt;

&lt;p&gt;
Puis on passe sur la clé :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# umount /usbkey
# mount /dev/sdd1 /boot&lt;/pre&gt;

&lt;p&gt;
Et on mets à jour l&amp;#039;installation de Grub :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# grub-install --recheck --no-floppy /dev/sdd
...
(hd2) /dev/sdd
...&lt;/pre&gt;

&lt;p&gt;
&lt;code&gt;grub-install&lt;/code&gt; donne le mapping des disques entre le noyau et son nommage, dans notre exemple, il faudra utiliser &lt;code&gt;(hd2)&lt;/code&gt; pour l&amp;#039;installation de Grub
&lt;/p&gt;

&lt;p&gt;
Enfin, on peut installer Grub sur le MBR de la clé :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# grub
grub&amp;gt; root (hd2,0)
 Filesystem type is ext2fs, partition type 0x83
grub&amp;gt; setup (hd2)
Checking if &amp;quot;/boot/grub/stage1&amp;quot; exists... no
 Checking if &amp;quot;/grub/stage1&amp;quot; exists... yes
 Checking if &amp;quot;/grub/stage2&amp;quot; exists... yes
 Checking if &amp;quot;/grub/e2fs_stage1_5&amp;quot; exists... yes
 Running &amp;quot;embed /grub/e2fs_stage1_5 (hd2)&amp;quot;...  17 sectors are embedded.
succeeded
 Running &amp;quot;install /grub/stage1 (hd2) (hd2)1+17 p (hd2,0)/grub/stage2 /grub/menu.lst&amp;quot;... succeeded
Done.

grub&amp;gt; quit&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT100 SECTION &quot;Grub sur la clé USB&quot; [8297-10098] --&gt;
&lt;h2 class=&quot;sectionedit101&quot;&gt;&lt;a name=&quot;reinitialiser-le-mbr-du-disque&quot; id=&quot;reinitialiser-le-mbr-du-disque&quot;&gt;Réinitialiser le MBR du disque&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour faire les chose proprement, il est sympa de supprimer le Grub déjà installé dans le MBR du disque, ainsi la machine apparaitra vierge pour le profane si la clé USB de boot n&amp;#039;est pas en place :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# install-mbr /dev/sda&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT101 SECTION &quot;Réinitialiser le MBR du disque&quot; [10099-10373] --&gt;
&lt;h2 class=&quot;sectionedit102&quot;&gt;&lt;a name=&quot;sortie-du-chroot&quot; id=&quot;sortie-du-chroot&quot;&gt;Sortie du chroot&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour sortir du chroot :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sync
# umount /boot
# exit
# umount /a/dev /a/sys /a/proc /a&lt;/pre&gt;

&lt;p&gt;
Voilà, il reste maintenant à booter le système sur la clé…
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT102 SECTION &quot;Sortie du chroot&quot; [10374-10567] --&gt;
&lt;h1 class=&quot;sectionedit103&quot;&gt;&lt;a name=&quot;demarrage-sur-la-cle-usb&quot; id=&quot;demarrage-sur-la-cle-usb&quot;&gt;Démarrage sur la clé USB&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
On reboote et on essaye de booter sur la clé. Le menu de Grub doit apparaitre, quand on choisit une entrée, le kernel doit être lancé. Les problèmes ici peuvent venir d&amp;#039;une mauvaise configuration utilisant les mauvais de devices, il faut donc bien connaitre son matériel pour bien interpréter la sortie de &lt;code&gt;fdisk -l&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Lors du boot, l&amp;#039;initrd doit demander la passphrase pour décrypter le volume physique.
&lt;/p&gt;

&lt;p&gt;
Une fois la machine booté, on peut débrancher sans risques la clé USB du portable.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT103 SECTION &quot;Démarrage sur la clé USB&quot; [10568-11112] --&gt;
&lt;h1 class=&quot;sectionedit104&quot;&gt;&lt;a name=&quot;configurer-la-swap&quot; id=&quot;configurer-la-swap&quot;&gt;Configurer la swap&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Une fois qu&amp;#039;on are booté sur le système crypté avec la clé, il reste à faire la swap.
&lt;/p&gt;

&lt;p&gt;
On crée une clé pour la swap qui sera stockée dans le fichier &lt;code&gt;/etc/keys/swapkey&lt;/code&gt;, voici une commande pour créer une clé aléatoire :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dd if=/dev/random bs=5k count=1 2&amp;gt; /dev/null | hashalot -s &amp;#039;Une bonne phrase de sel bien compliquée&amp;#039; -x sha256 &amp;gt; /etc/keys/swapkey
# chmod 600 /etc/keys/swapkey&lt;/pre&gt;

&lt;p&gt;
Puis on crypte la partition dédiée à la swap :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cryptsetup create swap /dev/hda1 -d /etc/keys/swapkey -c aes-cbc-essiv:sha256 -h sha256&lt;/pre&gt;

&lt;p&gt;
On ajoute une entrée dans &lt;code&gt;/etc/crypttab&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /etc/crypttab
swap /dev/hda1 /etc/keys/swapkey cipher=aes,hash=sha256&lt;/pre&gt;

&lt;p&gt;
Puis on crée effectivement la swap :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mkswap /dev/mapper/swap&lt;/pre&gt;

&lt;p&gt;
Enfin, on l&amp;#039;active :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# swapon /dev/mapper/swap&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT104 SECTION &quot;Configurer la swap&quot; [11113-11946] --&gt;
&lt;h1 class=&quot;sectionedit105&quot;&gt;&lt;a name=&quot;backup-de-la-cle-usb&quot; id=&quot;backup-de-la-cle-usb&quot;&gt;Backup de la clé USB&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Il est conseillé de faire un backup de la clé USB sur une autre machine, au cas où on la perd… Un petit &lt;code&gt;tar&lt;/code&gt; c&amp;#039;est vite fait.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT105 SECTION &quot;Backup de la clé USB&quot; [11947-12118] --&gt;
&lt;h1 class=&quot;sectionedit106&quot;&gt;&lt;a name=&quot;en-cas-de-probleme&quot; id=&quot;en-cas-de-probleme&quot;&gt;En cas de problème&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Si on oublie la passphrase, c&amp;#039;est &lt;strong&gt;MORT&lt;/strong&gt;. On peut donc recommencer à l&amp;#039;étape du “luksFormat”.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Si on veut reprendre sur SystemRescueCD, pour monter la racine :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# cryptsetup luksOpen /dev/sda2 cryptpart
# vgscan
# vgchange -ay
# mkdir /a
# mount /dev/mapper/system-root /a&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT106 SECTION &quot;En cas de problème&quot; [12119-] --&gt;</summary>
    </entry>
    <entry>
        <title>Serveur de boot sous Debian pour machines diskless PowerPC</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/serveur-bootp"/>
        <published>2009-08-27T21:35:48+00:00</published>
        <updated>2009-08-27T21:35:48+00:00</updated>
        <id>http://wiki.orgrim.net/linux/serveur-bootp</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Le problème des machines PowerPC, c&amp;#039;est que le boot en réseau se fait par BOOTP au lieu de PXE (pour les machines x86). Il fallait donc un serveur BOOTP sur le réseau. Il n&amp;#039;y a pas de serveur BOOTP sur GNU/Linux, c&amp;#039;est le serveur &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt; de ISC qui fournit cette fonctionnalité. Mais que fait-on lorsqu&amp;#039;un serveur &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt; est déjà présent sur le réseau pour fournir les adresses de centaines de stations ?
&lt;/p&gt;

&lt;p&gt;
Réponse: On configure le serveur &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt; pour qu&amp;#039;il ne fasse que du BOOTP.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT107 SECTION &quot;Serveur de boot sous Debian pour machines diskless PowerPC&quot; [1-557] --&gt;
&lt;h2 class=&quot;sectionedit108&quot;&gt;&lt;a name=&quot;installation&quot; id=&quot;installation&quot;&gt;Installation&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Sous Debian:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install dhcp3-server&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT108 SECTION &quot;Installation&quot; [558-631] --&gt;
&lt;h2 class=&quot;sectionedit109&quot;&gt;&lt;a name=&quot;configuration&quot; id=&quot;configuration&quot;&gt;Configuration&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Le principe :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Créer un serveur &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt;  “non autoritaire”.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; N&amp;#039;assigner des adresses IP qu&amp;#039;aux machines dont on connait l&amp;#039;adresse MAC via BOOTP.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Un serveur non autoritaire permet de ne pas gêner un autre serveur &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt; sur le réseau lorsque le serveur refuse d&amp;#039;assigner une adresse (réponse DHCPNAK) à un client. On laisse donc la gestion des refus à l&amp;#039;autre serveur. Par contre, il faut faire attention au sous-réseau géré par notre serveur, si une machine de ce sous réseau à déjà une adresse fournit par l&amp;#039;autre server &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt;, elle pourra envoyer des DHCPDISCOVER vers notre serveur pour renouveller son bail. Dans ce cas, notre serveur répondra DHCPNAK. Il est donc important de choisir un sous réseau petit, l&amp;#039;idéal étant de choisir un sous-réseau non géré par l&amp;#039;autre serveur &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt;.
&lt;/p&gt;

&lt;p&gt;
En refusant d&amp;#039;assigner des adresses au machines dont on ne connait pas l&amp;#039;adresse MAC (elles seront déclarées dans la configuration) on ne risque pas d&amp;#039;assigner une adresse à la place de l&amp;#039;autre serveur. Cette configuration pour un serveur “non autoritaire” permet d&amp;#039;ignorer totalement les requêtes &lt;acronym title=&quot;Dynamic Host Configuration Protocol&quot;&gt;DHCP&lt;/acronym&gt; et ne fournir que le service de BOOTP. 
&lt;/p&gt;

&lt;p&gt;
Voici le fichier de configuration :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
not authoritative;
boot-unknown-clients false;
ddns-update-style none;
ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {

        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.0.255;
        option routers 192.168.0.1;
        option domain-name-servers 192.168.0.2, 192.168.0.3;
        option domain-name &amp;quot;example.org&amp;quot;;

        # BOOTP Clients
}&lt;/pre&gt;

&lt;p&gt;
On remarque qu&amp;#039;on ne definit pas de “range” allouable.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT109 SECTION &quot;Configuration&quot; [632-2400] --&gt;
&lt;h2 class=&quot;sectionedit110&quot;&gt;&lt;a name=&quot;declarer-des-clients&quot; id=&quot;declarer-des-clients&quot;&gt;Déclarer des clients&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour ajouter un client BOOTP, il faut insérer un bloc &lt;code&gt;host&lt;/code&gt; dans le bloc &lt;code&gt;subnet&lt;/code&gt;, en dessous du commentaire :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;host qs22 {
        hardware ethernet 00:1A:64:B8:06:5A;
        fixed-address 192.168.0.4;
        filename &amp;quot;qs22.boot&amp;quot;;
}&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;hardware ethernet&lt;/code&gt; : l&amp;#039;adresse MAC de la machine à booter&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;fixed-address&lt;/code&gt; : permet de définir l&amp;#039;adresse IP de la machine à booter. Le reste des informations de configuration réseau de la machine sera pris des options du bloc subnet.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;filename&lt;/code&gt;: le chemin vers l&amp;#039;image de boot. Pour les PowerPC, il s&amp;#039;agit d&amp;#039;un fichier contenant le kernel et l&amp;#039;initrd.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT110 SECTION &quot;Déclarer des clients&quot; [2401-3065] --&gt;
&lt;h2 class=&quot;sectionedit111&quot;&gt;&lt;a name=&quot;mettre-en-place-le-service-tftp-pour-les-images-de-boot&quot; id=&quot;mettre-en-place-le-service-tftp-pour-les-images-de-boot&quot;&gt;Mettre en place le service TFTP pour les images de boot.&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Le service TFTP (Trivial File Transfert Protocol) est fournit par le super serveur inetd ou xinetd. xinetd est un remplacement de inetd censé être supérieur. Comme il est par défault sur par mal de distributions, on va l&amp;#039;utiliser.
&lt;/p&gt;

&lt;p&gt;
Sur ma Debian, &lt;code&gt;xinetd&lt;/code&gt; n&amp;#039;était pas installé au profit de l&amp;#039;historique &lt;code&gt;inetd&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install xinetd tftpd&lt;/pre&gt;

&lt;p&gt;
Ensuite, il faut l&amp;#039;activer en créant un fichier &lt;code&gt;/etc/xinetd.d/tftp&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;service tftp
{
        disable         = no
        socket_type     = dgram
        protocol        = udp
        wait            = yes
        user            = nobody
        server          = /usr/sbin/in.tftpd
        server_args     = /srv/tftp
}&lt;/pre&gt;

&lt;p&gt;
La directive &lt;code&gt;server_args&lt;/code&gt; indique le répertoire des fichiers servis par tftpd. C&amp;#039;est la configuration par défaut sur Debian, mais on peut utiliser l&amp;#039;historique &lt;code&gt;/tftpboot&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdir /srv/tftp&lt;/pre&gt;

&lt;p&gt;
Enfin, on relance &lt;code&gt;xinetd&lt;/code&gt; pour activer cette configuration :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# /etc/init.d/xinetd restart&lt;/pre&gt;

&lt;p&gt;
On n&amp;#039;oublie pas non plus de copier l&amp;#039;image de boot dans &lt;code&gt;/srv/tftp&lt;/code&gt;. Il ne reste plus qu&amp;#039;à booter la machine diskless sur le réseau.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT111 SECTION &quot;Mettre en place le service TFTP pour les images de boot.&quot; [3066-] --&gt;</summary>
    </entry>
    <entry>
        <title>Serveur GIT sour Debian</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/serveur-git"/>
        <published>2009-11-06T16:45:35+00:00</published>
        <updated>2009-11-06T16:45:35+00:00</updated>
        <id>http://wiki.orgrim.net/linux/serveur-git</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT112 SECTION &quot;Serveur GIT sour Debian&quot; [1-39] --&gt;
&lt;h2 class=&quot;sectionedit113&quot;&gt;&lt;a name=&quot;packages&quot; id=&quot;packages&quot;&gt;Packages&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install git-core git-daemon-run&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT113 SECTION &quot;Packages&quot; [40-120] --&gt;
&lt;h2 class=&quot;sectionedit114&quot;&gt;&lt;a name=&quot;configurer-le-git-daemon&quot; id=&quot;configurer-le-git-daemon&quot;&gt;Configurer le git-daemon&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Le truc tourne grâce à &lt;a href=&quot;http://smarden.org/runit/&quot; class=&quot;urlextern&quot; title=&quot;http://smarden.org/runit/&quot;  rel=&quot;nofollow&quot;&gt;runit&lt;/a&gt;, un outil de gestion de services. La configuration des services gérés par runit est dans &lt;code&gt;/etc/sv&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT114 SECTION &quot;Configurer le git-daemon&quot; [121-324] --&gt;
&lt;h3 class=&quot;sectionedit115&quot;&gt;&lt;a name=&quot;runit&quot; id=&quot;runit&quot;&gt;Runit&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Après l&amp;#039;installation, une nouvelle entrée est disponible dans &lt;code&gt;/etc/inittab&lt;/code&gt;, pour s&amp;#039;assurer que runit tourne tout le temps, s&amp;#039;il est stoppé, &lt;code&gt;init&lt;/code&gt; le redémarrera (&lt;code&gt;respawn&lt;/code&gt;):
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;#-- runit begin
SV:123456:respawn:/usr/sbin/runsvdir-start
#-- runit end&lt;/pre&gt;

&lt;p&gt;
Pour l&amp;#039;activer, on doit demander à &lt;code&gt;init&lt;/code&gt; de relire &lt;code&gt;/etc/inittab&lt;/code&gt;, en lui envoyant le signal hangup:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# kill -HUP 1&lt;/pre&gt;

&lt;p&gt;
Ensuite, on peut vérifier le status du daemon git, et le stopper pour le configurer:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sv status git-daemon
# sv stop git-daemon
ok: down: git-daemon: 0s, normally up
# sv status git-daemon
down: git-daemon: 3s, normally up; run: log: (pid 24348) 369s&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT115 SECTION &quot;Runit&quot; [325-1024] --&gt;
&lt;h3 class=&quot;sectionedit116&quot;&gt;&lt;a name=&quot;configuration&quot; id=&quot;configuration&quot;&gt;Configuration&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT116 SECTION &quot;Configuration&quot; [1025-1049] --&gt;
&lt;h2 class=&quot;sectionedit117&quot;&gt;&lt;a name=&quot;migration-de-subversion-a-git&quot; id=&quot;migration-de-subversion-a-git&quot;&gt;Migration de subversion à git&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install git-svn&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT117 SECTION &quot;Migration de subversion à git&quot; [1050-] --&gt;</summary>
    </entry>
    <entry>
        <title>Linux</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/start"/>
        <published>2011-07-05T15:17:42+00:00</published>
        <updated>2011-07-05T15:17:42+00:00</updated>
        <id>http://wiki.orgrim.net/linux/start</id>
        <summary>
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT118 SECTION &quot;Linux&quot; [1-21] --&gt;
&lt;h2 class=&quot;sectionedit119&quot;&gt;&lt;a name=&quot;debian&quot; id=&quot;debian&quot;&gt;Debian&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/memo-d-installation-debian&quot; class=&quot;wikilink1&quot; title=&quot;linux:memo-d-installation-debian&quot;&gt;Mémo d&amp;#039;installation Debian&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/pc-portable-encrypte&quot; class=&quot;wikilink1&quot; title=&quot;linux:pc-portable-encrypte&quot;&gt;PC portable encrypté&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/wifi-en-wpa-sous-debian&quot; class=&quot;wikilink1&quot; title=&quot;linux:wifi-en-wpa-sous-debian&quot;&gt;Wifi en WPA sous Debian&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/disk-iscsi-crypte&quot; class=&quot;wikilink1&quot; title=&quot;linux:disk-iscsi-crypte&quot;&gt;Disk iSCSI crypté&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/serveur-bootp&quot; class=&quot;wikilink1&quot; title=&quot;linux:serveur-bootp&quot;&gt;Serveur BOOTP&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/serveur-git&quot; class=&quot;wikilink1&quot; title=&quot;linux:serveur-git&quot;&gt;Serveur GIT&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/apache-avec-virtual-hosts&quot; class=&quot;wikilink1&quot; title=&quot;linux:apache-avec-virtual-hosts&quot;&gt;Apache avec Virtual Hosts&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/debian-ruby-et-gems&quot; class=&quot;wikilink1&quot; title=&quot;linux:debian-ruby-et-gems&quot;&gt;Debian Ruby et Gems&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/debian-cle-usb-d-install&quot; class=&quot;wikilink1&quot; title=&quot;linux:debian-cle-usb-d-install&quot;&gt;Debian clé USB d&amp;#039;install&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/debian-install-pxe&quot; class=&quot;wikilink1&quot; title=&quot;linux:debian-install-pxe&quot;&gt;Debian install PXE&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/debian-passage-en-testing&quot; class=&quot;wikilink1&quot; title=&quot;linux:debian-passage-en-testing&quot;&gt;Debian passage en testing&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/debian-installer-openvz&quot; class=&quot;wikilink1&quot; title=&quot;linux:debian-installer-openvz&quot;&gt;Debian installer OpenVZ&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/debian-lxc&quot; class=&quot;wikilink1&quot; title=&quot;linux:debian-lxc&quot;&gt;Debian LXC&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Plateforme de mails, brouillon pour Andesi:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/exim-postgresql&quot; class=&quot;wikilink1&quot; title=&quot;linux:exim-postgresql&quot;&gt;Exim et PostgreSQL&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/dspam-exim-postgresql&quot; class=&quot;wikilink2&quot; title=&quot;linux:dspam-exim-postgresql&quot; rel=&quot;nofollow&quot;&gt;Anti-Spam avec Dspam&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/dovecot-postgresql&quot; class=&quot;wikilink2&quot; title=&quot;linux:dovecot-postgresql&quot; rel=&quot;nofollow&quot;&gt;Dovecot&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/webmail-postgresql&quot; class=&quot;wikilink2&quot; title=&quot;linux:webmail-postgresql&quot; rel=&quot;nofollow&quot;&gt;Webmail&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/exim-dovecot-sieve&quot; class=&quot;wikilink2&quot; title=&quot;linux:exim-dovecot-sieve&quot; rel=&quot;nofollow&quot;&gt;Filtres Sieve&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/debian-post-install&quot; class=&quot;wikilink1&quot; title=&quot;linux:debian-post-install&quot;&gt;Debian post-install&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/debian-changement-de-disque-raid1&quot; class=&quot;wikilink1&quot; title=&quot;linux:debian-changement-de-disque-raid1&quot;&gt;Debian changement de disque raid1&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT119 SECTION &quot;Debian&quot; [22-737] --&gt;
&lt;h2 class=&quot;sectionedit120&quot;&gt;&lt;a name=&quot;openwrt&quot; id=&quot;openwrt&quot;&gt;OpenWRT&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/openwrt&quot; class=&quot;wikilink1&quot; title=&quot;linux:openwrt&quot;&gt;OpenWRT&lt;/a&gt; - Distribution Linux pour routeurs wifi&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/openwrt-sur-un-linksys-wrt54gl&quot; class=&quot;wikilink1&quot; title=&quot;linux:openwrt-sur-un-linksys-wrt54gl&quot;&gt;OpenWRT sur un Linksys WRT54GL&lt;/a&gt; – Doc pour flasher le routeur&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/linux/openwrt-customise&quot; class=&quot;wikilink1&quot; title=&quot;linux:openwrt-customise&quot;&gt;OpenWRT customisé&lt;/a&gt; – Créer son image prête à l&amp;#039;emploi avec l&amp;#039;« Image Builder »&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT120 SECTION &quot;OpenWRT&quot; [738-978] --&gt;
&lt;h2 class=&quot;sectionedit121&quot;&gt;&lt;a name=&quot;maemo&quot; id=&quot;maemo&quot;&gt;Maemo&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Installer &lt;a href=&quot;http://wiki.orgrim.net/linux/maemo-scratchbox&quot; class=&quot;wikilink1&quot; title=&quot;linux:maemo-scratchbox&quot;&gt;Maemo Scratchbox&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.orgrim.net/hardware/nokia-n8x0&quot; class=&quot;wikilink1&quot; title=&quot;hardware:nokia-n8x0&quot;&gt;Nokia N8x0&lt;/a&gt; – tips&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT121 SECTION &quot;Maemo&quot; [979-] --&gt;</summary>
    </entry>
    <entry>
        <title>SystemRescueCD sur une clé USB</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/systemrescuecd-sur-un-cle-usb"/>
        <published>2009-08-27T17:57:26+00:00</published>
        <updated>2009-08-27T17:57:26+00:00</updated>
        <id>http://wiki.orgrim.net/linux/systemrescuecd-sur-un-cle-usb</id>
        <summary>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://wiki.orgrim.net/tag/linux?do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/debian?do=showtag&amp;amp;tag=debian&quot; class=&quot;wikilink1&quot; title=&quot;tag:debian&quot; rel=&quot;tag&quot;&gt;debian&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.sysresccd.org&quot; class=&quot;urlextern&quot; title=&quot;http://www.sysresccd.org&quot;  rel=&quot;nofollow&quot;&gt;SystemRescueCD&lt;/a&gt; est une micro distribution Linux basée sur Gentoo contenant plein d&amp;#039;outils de barbus. Il faut une clé de 256Mo minimum.
&lt;/p&gt;

&lt;p&gt;
Le wiki de SystemRescueCD propose une &lt;a href=&quot;http://www.sysresccd.org/Sysresccd-manual-fr_Installer_SystemRescueCd_sur_une_clé_USB&quot; class=&quot;urlextern&quot; title=&quot;http://www.sysresccd.org/Sysresccd-manual-fr_Installer_SystemRescueCd_sur_une_clé_USB&quot;  rel=&quot;nofollow&quot;&gt;méthode de création de clé USB&lt;/a&gt; qui n&amp;#039;a pas fonctionné chez moi. L&amp;#039;astuce est d&amp;#039;utiliser syslinux pour préparer la clé, ensuite, la méthode est la même.
&lt;/p&gt;

&lt;p&gt;
Les paquets Debian suivant sont requis:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; syslinux&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; mbr (Debian seulement)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dosfstools&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT122 SECTION &quot;SystemRescueCD sur une clé USB&quot; [23-623] --&gt;
&lt;h2 class=&quot;sectionedit123&quot;&gt;&lt;a name=&quot;preparer-la-cle&quot; id=&quot;preparer-la-cle&quot;&gt;Préparer la clé&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT123 SECTION &quot;Préparer la clé&quot; [624-654] --&gt;
&lt;h3 class=&quot;sectionedit124&quot;&gt;&lt;a name=&quot;trouver-le-device-correspondant&quot; id=&quot;trouver-le-device-correspondant&quot;&gt;Trouver le device correspondant&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# dmesg
  Vendor: USB       Model: FLASHDISK         Rev: 2010
  Type:   Direct-Access                      ANSI SCSI revision: 00
usb-storage: device scan complete
SCSI device sda: 506880 512-byte hdwr sectors (260 MB)
sda: Write Protect is off
sda: Mode Sense: 43 00 00 00
sda: assuming drive cache: write through
SCSI device sda: 506880 512-byte hdwr sectors (260 MB)
sda: Write Protect is off
sda: Mode Sense: 43 00 00 00
sda: assuming drive cache: write through
 sda: sda1 sda2
sd 0:0:0:0: Attached scsi removable disk sda&lt;/pre&gt;

&lt;p&gt;
Attention aux automonteurs (HAL/DBus) comme sous KDE par exemple, il faut qu&amp;#039;aucune partition de la clé ne soit montée, sinon ça ne va pas plaire au système lors du partitionnement/formatage :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mount | grep sda
/dev/sda2 on /media/disk type ext2 (rw,nosuid,nodev,uhelper=hal)
# umount /media/disk&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT124 SECTION &quot;Trouver le device correspondant&quot; [655-1565] --&gt;
&lt;h3 class=&quot;sectionedit125&quot;&gt;&lt;a name=&quot;partitionnement-et-formatage&quot; id=&quot;partitionnement-et-formatage&quot;&gt;Partitionnement et formatage&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
On utilise les outils syslinux pour créer la partition bootable. &lt;code&gt;mkdiskimage&lt;/code&gt; permet de creer un disque en fournissant le nombre de cylindres, têtes et secteurs. Les options utilisées permettent de créer l&amp;#039;équivalent d&amp;#039;un disque Zip, qui, selon la doc de syslinux, passe toutes les contraintes d&amp;#039;alignement de cylindres du BIOS. Voir &lt;a href=&quot;http://syslinux.zytor.com/doc/usbkey.txt&quot; class=&quot;urlextern&quot; title=&quot;http://syslinux.zytor.com/doc/usbkey.txt&quot;  rel=&quot;nofollow&quot;&gt;là&lt;/a&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdiskimage -4 /dev/sda 0 64 32&lt;/pre&gt;

&lt;p&gt;
Cette commande crée la partition &lt;code&gt;/dev/sda4&lt;/code&gt; qui utilise tout l&amp;#039;espace disponible sur la clé.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT125 SECTION &quot;Partitionnement et formatage&quot; [1566-2136] --&gt;
&lt;h3 class=&quot;sectionedit126&quot;&gt;&lt;a name=&quot;initialisation-du-mbr&quot; id=&quot;initialisation-du-mbr&quot;&gt;Initialisation du MBR&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Sous Debian, il existe le paquet &lt;code&gt;mbr&lt;/code&gt;, qui fournit la commande &lt;code&gt;install-mbr&lt;/code&gt;, pour initialiser le MBR :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# install-mbr /dev/sda&lt;/pre&gt;

&lt;p&gt;
Sinon il faut prendre l&amp;#039;image du MBR vide fournie par syslinux dans &lt;code&gt;/usr/lib/syslinux/mbr.bin&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dd if=/usr/lib/syslinux/mbr.bin of=/dev/sda&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT126 SECTION &quot;Initialisation du MBR&quot; [2137-2457] --&gt;
&lt;h2 class=&quot;sectionedit127&quot;&gt;&lt;a name=&quot;installation-de-systemrescuecd-sur-la-cle&quot; id=&quot;installation-de-systemrescuecd-sur-la-cle&quot;&gt;Installation de SystemRescueCD sur la clé&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Récupérer la dernière version sur &lt;a href=&quot;http://www.sysresccd.org/Download&quot; class=&quot;urlextern&quot; title=&quot;http://www.sysresccd.org/Download&quot;  rel=&quot;nofollow&quot;&gt;http://www.sysresccd.org/Download&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Monter l&amp;#039;&lt;acronym title=&quot;International Organization for Standardization&quot;&gt;ISO&lt;/acronym&gt; en loopback :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdir /tmp/sysresccd
# mount -o loop /path/to/systemrescuecd-ARCH-VERS.iso /tmp/sysresccd&lt;/pre&gt;

&lt;p&gt;
Monter la clé USB :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdir /tmp/sysrescusb
# mount /dev/sda4 /tmp/sysrescusb&lt;/pre&gt;

&lt;p&gt;
Copier les fichiers de l&amp;#039;&lt;acronym title=&quot;International Organization for Standardization&quot;&gt;ISO&lt;/acronym&gt; dans l&amp;#039;ordre :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cp /tmp/sysresccd/syslinux/syslinux.cfg /tmp/sysrescusb/
# cp /tmp/sysresccd/sysrcd.dat /tmp/sysrescusb/
# cp -R /tmp/sysresccd/isolinux/* /tmp/sysrescusb/
# cp /tmp/sysresccd/bootdisk/* /tmp/sysrescusb/
# sync&lt;/pre&gt;

&lt;p&gt;
Démonter :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# umount /tmp/sysresccd
# umount /tmp/sysrescusb&lt;/pre&gt;

&lt;p&gt;
Rendre la clé bootable avec syslinux :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# syslinux /dev/sda4&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT127 SECTION &quot;Installation de SystemRescueCD sur la clé&quot; [2458-3201] --&gt;
&lt;h2 class=&quot;sectionedit128&quot;&gt;&lt;a name=&quot;conclusion&quot; id=&quot;conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il suffit maintenant de rebooter sur la clé. Il faut bien sûr que le BIOS supporte de genre de boot. Parfois, il suffit que la clé soit branchée au démarrage de la machine pour que le BIOS offre la possibilité de booter dessus.
&lt;/p&gt;

&lt;p&gt;
Voir aussi la &lt;a href=&quot;http://www.sysresccd.org/Online-Manual-FR&quot; class=&quot;urlextern&quot; title=&quot;http://www.sysresccd.org/Online-Manual-FR&quot;  rel=&quot;nofollow&quot;&gt;documentation de SystemRescueCD&lt;/a&gt; pour l&amp;#039;utilisation du système.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT128 SECTION &quot;Conclusion&quot; [3202-] --&gt;</summary>
    </entry>
    <entry>
        <title>Configuration wifi en WPA sous Debian</title>
        <link rel="alternate" type="text/html" href="http://wiki.orgrim.net/linux/wifi-en-wpa-sous-debian"/>
        <published>2009-08-27T18:03:32+00:00</published>
        <updated>2009-08-27T18:03:32+00:00</updated>
        <id>http://wiki.orgrim.net/linux/wifi-en-wpa-sous-debian</id>
        <summary>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://wiki.orgrim.net/tag/debian?do=showtag&amp;amp;tag=debian&quot; class=&quot;wikilink1&quot; title=&quot;tag:debian&quot; rel=&quot;tag&quot;&gt;debian&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/linux?do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/wifi?do=showtag&amp;amp;tag=wifi&quot; class=&quot;wikilink1&quot; title=&quot;tag:wifi&quot; rel=&quot;tag&quot;&gt;wifi&lt;/a&gt;,
	&lt;a href=&quot;http://wiki.orgrim.net/tag/reseau?do=showtag&amp;amp;tag=reseau&quot; class=&quot;wikilink1&quot; title=&quot;tag:reseau&quot; rel=&quot;tag&quot;&gt;reseau&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Pour les explications, on part du fait que l&amp;#039;AP est propement configuré en WPA(2)-PSK. Voici les infos à connaître sur l&amp;#039;AP:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SSID du WLAN&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Clé WPA (PSK Key)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Pour se connecter au réseau WLAN du routeur on a besoin de &lt;code&gt;wpasupplicant&lt;/code&gt; et des &lt;code&gt;wireless-tools&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# aptitude install wpasupplicant wireless-tools&lt;/pre&gt;

&lt;p&gt;
La documentation importante à lire est &lt;strong&gt;&lt;code&gt;/usr/share/doc/wpasupplicant/README.Debian.gz&lt;/code&gt;&lt;/strong&gt;, qui explique la configuration spécifique du fichier &lt;code&gt;/etc/network/interfaces&lt;/code&gt; pour le wifi.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT129 SECTION &quot;Configuration wifi en WPA sous Debian&quot; [35-607] --&gt;
&lt;h2 class=&quot;sectionedit130&quot;&gt;&lt;a name=&quot;configuration-en-ligne-de-commande&quot; id=&quot;configuration-en-ligne-de-commande&quot;&gt;Configuration en ligne de commande&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
La première chose à faire de trouver le nom de l&amp;#039;interface réseau de la carte wifi, un simple &lt;code&gt;iwconfig&lt;/code&gt; sans argument :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# iwconfig
...
eth0      no wireless extensions.

eth1      unassociated  ESSID:off/any
          Mode:Managed  Channel=0  Access Point: Not-Associated
          Bit Rate:0 kb/s   Tx-Power=20 dBm   Sensitivity=8/0
          Retry limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

...&lt;/pre&gt;

&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;notetip&quot;&gt;&lt;code&gt;iwconfig&lt;/code&gt; est l&amp;#039;équivalent de &lt;code&gt;ifconfig&lt;/code&gt; pour les paramètres particuliers des interfaces wifi, il ne le remplace pas mais le complète.

&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;p&gt;
On scanne les réseaux disponibles avec &lt;code&gt;iwlist&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# iwlist eth1 scanning
eth1      Scan completed :
          Cell 01 - Address: 00:21:29:B5:D7:6F
                    ESSID:&amp;quot;mon_ssid&amp;quot;
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=92/100  Signal level=-36 dBm
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 4ms ago&lt;/pre&gt;

&lt;p&gt;
Ces informations permettent de configurer pour se connecter au point d&amp;#039;accès :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Le SSID&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Le mode&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Le canal&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
On règle donc ces paramètres avec “iwconfig” :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# iwconfig eth1 essid mon_ssid
# iwconfig eth1 mode managed
# iwconfig eth1 channel 11&lt;/pre&gt;

&lt;p&gt;
Ensuite, on va créer une entrée pour le réseau auquel se connecter dans le fichier &lt;code&gt;/etc/wpa_supplicant.conf&lt;/code&gt;, on utilise la commande &lt;code&gt;wpa_passphrase&lt;/code&gt; pour encoder la clé :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# wpa_passphrase mon_ssid ma_passphrase_compliquee
network={
        ssid=&amp;quot;mon_ssid&amp;quot;
        #psk=&amp;quot;ma_passphrase_compliquee&amp;quot;

        psk=d2d0935c07414ec7c9360e6b0a60aea41d916935408e615f79e58fbc201ba8f8
}&lt;/pre&gt;

&lt;p&gt;
Il faut copier coller le résultat dans &lt;code&gt;/etc/wpa_supplicant.conf&lt;/code&gt;, on ajoute au passage quelques configurations adaptées au point d&amp;#039;accès (group et pairwise donnés par &lt;code&gt;iwlist&lt;/code&gt;) :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;network={
        ssid=&amp;quot;mon_ssid&amp;quot;
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        #psk=&amp;quot;ma_passphrase_compliquee&amp;quot;

        psk=d2d0935c07414ec7c9360e6b0a60aea41d916935408e615f79e58fbc201ba8f8
}&lt;/pre&gt;

&lt;p&gt;
&lt;p&gt;&lt;div class=&quot;noteimportant&quot;&gt;Dès que la configuration fonctionne, il faut rééditer le fichier pour supprimer la clé en clair (commentée de toute façon)

&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;p&gt;
Enfin, on peut se connecter au point d&amp;#039;accès en lançant &lt;code&gt;wpa_supplicant&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# wpa_supplicant -ieth1 -c/etc/wpa_supplicant.conf -Dwext
CTRL-EVENT-SCAN-RESULTS
Trying to associate with 00:21:29:b5:d7:6f (SSID=&amp;#039;mon_ssid&amp;#039; freq=2462 MHz)
Associated with 00:21:29:b5:d7:6f
WPA: Key negotiation completed with 00:21:29:b5:d7:6f [PTK=CCMP GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to 00:21:29:b5:d7:6f completed (auth) [id=0 id_str=]&lt;/pre&gt;

&lt;p&gt;
Normalement, &lt;code&gt;wpa_supplicant&lt;/code&gt; tourne en tant que daemon. Il faut ajouter les options -B, -f et -P, pour avoir un truc propre avec pidfile et fichier de log :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# wpa_supplicant -B -ieth1 -c/etc/wpa_supplicant.conf -Dwext -P/var/run/wpa_supplicant.eth1.pid -f/var/log/wpa_supplicant.eth1.log&lt;/pre&gt;

&lt;p&gt;
La dernière chose à faire est de configurer l&amp;#039;adresse IP et la route par défaut :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# ifconfig eth1 192.168.0.100 up
# route add default gw 192.168.0.1&lt;/pre&gt;

&lt;p&gt;
ou en DHCP :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dhclient3 eth1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT130 SECTION &quot;Configuration en ligne de commande&quot; [608-4577] --&gt;
&lt;h2 class=&quot;sectionedit131&quot;&gt;&lt;a name=&quot;configuration-du-fichier-interfaces&quot; id=&quot;configuration-du-fichier-interfaces&quot;&gt;Configuration du fichier &amp;quot;interfaces&amp;quot;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On peut indiquer un certain nombre d&amp;#039;options supplémentaires pour le WPA dans un bloc de configuration du fichier &lt;code&gt;/etc/network/interfaces&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;iface eth1 inet static
        wpa-ssid mon_ssid
        # plaintext passphrase
        wpa-psk ma_passphrase_compliquee
        wpa-key-mgmt WPA-PSK
        wpa-pairwise TKIP CCMP
        wpa-group TKIP CCMP
        wpa-proto WPA
        # static ip settings
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1&lt;/pre&gt;

&lt;p&gt;
On peut aussi utiliser le fichier de configuration de wpa_supplicant :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;iface eth1 inet static
        wpa-conf /etc/wpa_supplicant.conf
        # static ip settings
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT131 SECTION &quot;Configuration du fichier interfaces&quot; [4578-5530] --&gt;
&lt;h2 class=&quot;sectionedit132&quot;&gt;&lt;a name=&quot;conclusion&quot; id=&quot;conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
La configuration du wifi sous Debian s&amp;#039;est bien simplifiée au cours temps, fini les scripts pre-up et compagnie.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT132 SECTION &quot;Conclusion&quot; [5531-] --&gt;</summary>
    </entry>
</feed>

