This file is indexed.

/usr/share/doc/HOWTO/fr-html/Loopback-Root-FS.html is in doc-linux-fr-html 2013.01-3ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.72">
<title>The Loopback Root Filesystem HOWTO</title>
</head>
<body>
<h1>The Loopback Root Filesystem HOWTO</h1>
<h2>par Andrew M. Bishop, <code><a href=
"mailto:amb@gedanken.demon.co.uk">amb@gedanken.demon.co.uk</a></code><br>

traduction par Eric Cano <code><a href=
"mailto:Eric.Cano@cern.ch">Eric.Cano@cern.ch</a></code></h2>
v1.0.0, 12 juin 1998, traduction octobre 1998
<hr>
<em>Ce HOWTO explique comment utiliser le périphérique loopback
pour faire une installation sur un système de fichier Linux natif,
qui peut résider dans une partition DOS sans repartitionnement.
D'autres utilisations de cette technique sont aussi
présentées.</em>
<hr>
<h2><a name="s1">1. Principes des périphériques "loopback" et des
disques virtuels</a></h2>
<p>Je vais d'abord décrire quelques-uns des principes généraux
utilisés pour la mise en place d'un système de fichier en loopback
comme racine.</p>
<h2><a name="ss1.1">1.1 Périphérique loopback</a></h2>
<p>Sous Linux, un <b>périphérique loopback</b> est un périphérique
virtuel, qui peut être utilisé comme tout autre périphérique.</p>
<p>Des exemples de périphériques normaux sont les partitions de
disques durs comme <code>/dev/hda1</code>, <code>/dev/hda2</code>,
<code>/dev/sda1</code>, ou des disques entiers comme les disquettes
<code>/dev/fd0</code>, etc... Ce sont tous des périphériques qui
peuvent contenir une structure de fichiers et de répertoires. Ils
peuvent être formatés avec le système de fichier voulu (ext2fs,
msdos, ntfs, etc...) puis montés.</p>
<p>Le périphérique loopback associe un fichier à un périphérique
complet. Ce fichier peut appartenir à un autre système de
fichiers.</p>
<p>Il peut alors être monté comme tout autre périphérique cité plus
haut. Pour cela le périphérique appelé <code>/dev/loop0</code> ou
<code>/dev/loop1</code> ou etc... est associé au fichier, puis ce
nouveau périphérique virtuel est monté.</p>
<h2><a name="ss1.2">1.2 Les disques virtuels</a></h2>
<p>Sous Linux, il est aussi possible d'avoir un autre type de
périphérique virtuel monté en tant que système de fichiers, c'est
le <b>disque virtuel</b> (<em>ramdisk</em>).</p>
<p>Dans ce cas, le périphérique ne se réfère pas à un élément du
matériel, mais à une portion de la mémoire qui est mise de côté
dans ce but. La mémoire allouée ainsi n'est jamais swapée sur le
disque, mais reste dans le cache disque.</p>
<p>Un disque virtuel peut être créé à tout moment en écrivant dans
le périphérique correspondant <code>/dev/ram0</code> ou
<code>/dev/ram1</code>, etc... Il peut alors être formaté et monté
de la même façon que le périphérique loopback.</p>
<p>Quand un disque virtuel est utilisé pour l'amorçage (comme c'est
souvent le cas avec les disquettes d'installation de Linux et les
disquettes d'urgence), l'image du disque (le contenu complet du
disque sous forme d'un seul fichier) peut être stocké sur la
disquette de démarrage sous une forme compressée. L'image est
automatiquement détectée par le noyau quand celui-ci démarre et
décompressée dans le disque virtuel avant d'être montée.</p>
<h2><a name="ss1.3">1.3 Le disque virtuel initial</a></h2>
<p>Le <b>disque virtuel initial</b> est, sous Linux, un autre
mécanisme important dont nous aurons besoin pour utiliser le
périphérique loopback comme système de fichier racine.</p>
<p>Quand le disque virtuel initial est utilisé, l'image du système
de fichiers est copiée dans la mémoire et montée pour que les
fichiers soient accessibles. Un programme sur ce disque virtuel
(appelé <code>linuxrc</code>) est lancé. Une fois terminé un
nouveau périphérique est monté comme système de fichiers racine. Le
disque virtuel précédent existe toujours, il est monté sur le
répertoire <code>/initrd</code> si celui-ci est présent, ou
accessible à travers le périphérique <code>/dev/initrd</code>.</p>
<p>C'est un comportement peu habituel, puisque la séquence de
démarrage normale se lance depuis la partition racine choisie et
continue à tourner ainsi. Avec l'option de disque virtuel initial,
la partition racine a la possibilité de changer avant que ne
commence la séquence de démarrage principale.</p>
<h2><a name="ss1.4">1.4 Le système de fichiers racine</a></h2>
<p>Le système de fichiers racine est le périphérique qui est monté
en premier, et qui apparaît donc dans le répertoire appelé
<code>/</code> après le démarrage.</p>
<p>Il y a un certain nombre de complications a propos du système de
fichiers racine, qui sont dues au fait qu'il contient tous les
fichiers. Au boot, les scripts <code>rc</code> sont lancés ; ce
sont soit les fichiers dans <code>/etc/rc.d</code> ou
<code>/etc/rc?.d</code>, suivant la version du programme
<code>/etc/init</code>.</p>
<p>Quand le système a démarré, il n'est plus possible de démonter
la partition racine ou d'en changer car tout les programmes
l'utiliseront plus ou moins. C'est pourquoi le disque virtuel
initial est si utile, puisqu'il peut être utilisé de façon telle
que la partition racine finale n'est pas la même que celle qui est
chargée au moment de l'amorçage.</p>
<h2><a name="ss1.5">1.5 La séquence d'amorçage de Linux</a></h2>
<p>Pour montrer comment le disque virtuel initial opère pendant la
séquence de démarrage, l'ordre des événements est présenté ci
dessous.</p>
<ol>
<li>Le noyau est chargé en mémoire, ceci est effectué par
<code>LILO</code> ou <code>LOADLIN</code>. Vous pouvez voir le
message <code>Loading...</code> pendant que ceci arrive.</li>
<li>L'image du disque virtuel est chargée en mémoire, à nouveau
ceci est réalisé par <code>LILO</code> ou <code>LOADLIN</code>.
Vous pouvez voir le message <code>Loading...</code> à nouveau quand
ceci arrive.</li>
<li>Le noyau est initialisé, y compris la lecture des options de
ligne de commande et le montage du disque virtuel en tant que
racine.</li>
<li>Le programme <code>/linuxrc</code> est lancé sur le disque
virtuel initial.</li>
<li>Le périphérique racine est changé pour celui spécifié dans les
paramètres du noyau.</li>
<li>Le programme <code>/etc/init</code> est lancé, et va exécuter
la séquence de démarrage paramétrable par l'utilisateur.</li>
</ol>
<p>Ceci est juste une version simplifiée de ce qui arrive, mais
c'est suffisant pour expliquer comment le noyau démarre et où le
disque virtuel est utilisé.</p>
<h2><a name="s2">2. Comment créer un périphérique
loopback.</a></h2>
<p>Maintenant que les principes généraux ont été présentés, la
méthode pour créer le périphérique loopback peut être
expliquée.</p>
<h2><a name="ss2.1">2.1 Pré-requis</a></h2>
<p>La création du périphérique loopback va nécessiter un certain
nombre de choses.</p>
<ul>
<li>Un système Linux installé.</li>
<li>Un moyen pour copier des gros fichiers sur la partition DOS de
destination.</li>
</ul>
<p>Le point le plus important est l'accès à un système Linux déjà
installé. Ce point est nécessaire car le périphérique loop ne peut
être créé que sous Linux. Cela signifie qu'il ne sera pas possible
d'installer un système à partir de rien. Le système Linux que vous
utilisez devra être capable de compiler un noyau.</p>
<p>Une fois le périphérique loopback créé, il représentera un gros
fichier. J'ai utilisé un fichier de 80 Mo, mais si c'était
suffisant pour un terminal X, ça ne sera sans doute pas suffisant
pour une utilisation plus importante. Ce fichier doit être copié
sur la partition DOS, donc un réseau ou beaucoup de disquettes
seront mis a contribution.</p>
<p>Vous aurez besoin des logiciels suivants :</p>
<ul>
<li><code>LOADLIN</code> version 1.6 ou supérieure</li>
<li>Une version de <code>mount</code> qui supporte les
périphériques loopback</li>
<li>Une version du noyau qui inclut les options requises.</li>
</ul>
<p>Tout ceci devrait être disponible en standard sur des
installations récentes de Linux.</p>
<h2><a name="ss2.2">2.2 Création du noyau Linux</a></h2>
<p>J'ai créé le périphérique loopback avec le noyau Linux version
2.0.31, d'autres versions devraient faire l'affaire, mais elles
devront avoir au moins les options listées ci-dessous
configurées.</p>
<p>Les options du noyau que vous devrez sélectionner sont les
suivantes :</p>
<ul>
<li>RAM disk support (<code>CONFIG_BLK_DEV_RAM</code>).</li>
<li>Initial RAM disk (initrd) support
(<code>CONFIG_BLK_DEV_INITRD</code>).</li>
<li>Loop device support (<code>CONFIG_BLK_DEV_LOOP</code>).</li>
<li>fat fs support (<code>CONFIG_FAT_FS</code>).</li>
<li>msdos fs support (<code>CONFIG_MSDOS_FS</code>).</li>
</ul>
<p>Les deux premières sont le disque virtuel lui-même et le disque
virtuel initial. La suivante est le support pour les périphériques
loopback. Les deux dernières sont le support pour les systèmes de
fichiers msdos, qui est requis pour monter des partitions DOS.</p>
<p>La compilation d'un noyau sans modules est la plus simple, mais
si vous voulez utiliser les modules ça devrait être possible, bien
que je ne l'aie pas essayé. Si vous utilisez des modules, vous
devez configurer les options précédentes dans le noyau, et non
comme des modules.</p>
<p>Le code source du noyau lui-même devra être modifié d'une façon
très simple. La version 2.0.34 du noyau telle que fournie ne permet
pas au périphérique loopback d'être utilisé comme racine. Une très
petite modification du noyau peut rendre ceci possible.</p>
<p>Le fichier <code>/init/main.c</code> a juste besoin qu'on lui
ajoute une seule ligne comme montré dans la version modifiée
ci-dessous. La ligne qui dit <code>"loop", 0x0700</code> est celle
qui a été ajoutée.</p>
<blockquote>
<pre><code>
static void parse_root_dev(char * line)
{
        int base = 0;
        static struct dev_name_struct {
                const char *name;
                const int num;
        } devices[] = {
                { "nfs",     0x00ff },
                { "loop",    0x0700 },
                { "hda",     0x0300 },

...

                { "sonycd",  0x1800 },
                { NULL, 0 }
        };

...

}
</code></pre></blockquote>
<p>Une fois le noyau configuré, il devra être compilé pour produire
une fichier <code>zImage</code> (<code>make zImage</code>). Ce
fichier devrait être <code>arch/i386/boot/zImage</code> une fois
compilé.</p>
<h2><a name="ss2.3">2.3 Création du périphérique disque virtuel
initial</a></h2>
<p>Le disque virtuel initial est simplement crée comme un
périphérique loopback au départ. Vous devrez faire ceci en tant que
root. Les commandes que vous devez exécuter sont listées ci
dessous, elles supposent être lancées depuis le répertoire
principal de root (<code>/root</code>).</p>
<blockquote>
<pre><code>
mkdir /root/initrd
dd if=/dev/zero of=initrd.img bs=1k count=1024
mke2fs -i 1024 -b 1024 -m 5 -F -v initrd.img
mount initrd.img /root/initrd -t ext2 -o loop
cd initrd
[créez les fichiers]
cd ..
umount /root/initrd
gzip -c -9 initrd.img &gt; initrdgz.img
</code></pre></blockquote>
<p>Il y a un certain nombre d'étapes, mais on peut les décrire
comme ceci.</p>
<ol>
<li>Créez un point de montage pour le disque virtuel initial (un
répertoire vide).</li>
<li>Créez un fichier vide de la taille requise. Ici j'ai utilisé
1024ko, vous pourriez avoir besoin de plus ou de moins suivant le
contenu. (la taille est le dernier paramètre).</li>
<li>Créez un système de fichiers ext2 dans le fichier vide.</li>
<li>Montez le ficher au point de montage, ceci utilise le
périphérique loopback.</li>
<li>Changez le répertoire courant pour le périphérique
loopback.</li>
<li>Créez les fichiers requis (voir plus bas pour les
détails).</li>
<li>Sortez du périphérique loopback monté.</li>
<li>Démontez le périphérique.</li>
<li>Créez une version compressée pour l'utiliser plus tard.</li>
</ol>
<p><b>Contenu du disque virtuel initial</b></p>
<p>Les fichiers dont vous avez besoin sur le disque virtuel
représentent le minimum nécessaire pour pouvoir d'exécuter une
commande.</p>
<ul>
<li><code>/linuxrc</code> Le fichier qui est lancé pour monter le
système de fichiers msdos (voir plus bas).</li>
<li><code>/lib/*</code> L'éditeur de liens dynamiques et les
librairies dont les programmes ont besoin.</li>
<li><code>/etc/*</code> Le cache utilisé par l'éditeur de liens
dynamiques (pas strictement requis, mais ça l'empêche de se
plaindre).</li>
<li><code>/bin/*</code> Un interpréteur de commandes
(<code>ash</code> car il est plus petit que <code>bash</code>). Les
programmes <code>mount</code> et <code>losetup</code> pour
manipuler le disque DOS et configurer les périphériques
loopback.</li>
<li><code>/dev/*</code> Les périphériques qui seront utilisés. Vous
avez besoin de <code>/dev/zero</code> pour
<code>ld-linux.so</code>, <code>/dev/hda*</code> pour monter le
disque msdos et <code>/dev/loop*</code> pour les périphériques
loopback.</li>
<li><code>/mnt</code> Un répertoire vide pour y monter le disque
msdos.</li>
</ul>
<p>Le contenu du disque virtuel initial que j'ai utilisé est
énuméré ci-dessous. Ces fichiers représentent environ 800ko, une
fois pris en compte l'espace perdu par les structures du système de
fichiers.</p>
<blockquote>
<pre><code>
total 18
drwxr-xr-x   2 root     root         1024 Jun  2 13:57 bin
drwxr-xr-x   2 root     root         1024 Jun  2 13:47 dev
drwxr-xr-x   2 root     root         1024 May 20 07:43 etc
drwxr-xr-x   2 root     root         1024 May 27 07:57 lib
-rwxr-xr-x   1 root     root          964 Jun  3 08:47 linuxrc
drwxr-xr-x   2 root     root        12288 May 27 08:08 lost+found
drwxr-xr-x   2 root     root         1024 Jun  2 14:16 mnt

./bin:
total 168
-rwxr-xr-x   1 root     root        60880 May 27 07:56 ash
-rwxr-xr-x   1 root     root         5484 May 27 07:56 losetup
-rwsr-xr-x   1 root     root        28216 May 27 07:56 mount
lrwxrwxrwx   1 root     root            3 May 27 08:08 sh -&gt; ash

./dev:
total 0
brw-r--r--   1 root     root       3,   0 May 20 07:43 hda
brw-r--r--   1 root     root       3,   1 May 20 07:43 hda1
brw-r--r--   1 root     root       3,   2 Jun  2 13:46 hda2
brw-r--r--   1 root     root       3,   3 Jun  2 13:46 hda3
brw-r--r--   1 root     root       7,   0 May 20 07:43 loop0
brw-r--r--   1 root     root       7,   1 Jun  2 13:47 loop1
crw-r--r--   1 root     root       1,   3 May 20 07:42 null
crw-r--r--   1 root     root       5,   0 May 20 07:43 tty
crw-r--r--   1 root     root       4,   1 May 20 07:43 tty1
crw-r--r--   1 root     root       1,   5 May 20 07:42 zero

./etc:
total 3
-rw-r--r--   1 root     root         2539 May 20 07:43 ld.so.cache

./lib:
total 649
lrwxrwxrwx   1 root     root           18 May 27 08:08 ld-linux.so.1 -&gt; ld-linux.so.1.7.14
-rwxr-xr-x   1 root     root        21367 May 20 07:44 ld-linux.so.1.7.14
lrwxrwxrwx   1 root     root           14 May 27 08:08 libc.so.5 -&gt; libc.so.5.3.12
-rwxr-xr-x   1 root     root       583795 May 20 07:44 libc.so.5.3.12

./lost+found:
total 0

./mnt:
total 0
</code></pre></blockquote>
<p>La seule étape complexe est la création des périphériques dans
<code>dev</code>. Utilisez le programme <code>mknod</code> pour les
créer, et servez vous des périphériques dans <code>/dev</code>
comme modèles pour les paramètres requis.</p>
<p><b>Le fichier /linuxrc</b></p>
<p>Le fichier <code>/linuxrc</code> sur le disque virtuel initial
est nécessaire pour mettre en place le périphérique loopback, avant
de l'utiliser comme racine.</p>
<p>L'exemple suivant essaye de monter <code>/dev/hda1</code> comme
une partition msdos et en cas de réussite assigne les fichiers
<code>/linux/linuxdsk.img</code> et
<code>/linux/linuxswp.img</code> respectivement aux périphériques
<code>/dev/loop0</code> et <code>/dev/loop1</code>.</p>
<blockquote>
<pre><code>
#!/bin/sh

echo INITRD: Essaye de monter /dev/hda1 comme partition msdos

if /bin/mount -n -t msdos /dev/hda1 /mnt; then

   echo INITRD: Montage réussi
   /bin/losetup /dev/loop0 /mnt/linux/linuxdsk.img
   /bin/losetup /dev/loop1 /mnt/linux/linuxswp.img
   exit 0

else

   echo INITRD: Echec du montage
   exit 1

fi
</code></pre></blockquote>
<p>Le premier périphérique, <code>/dev/loop0</code> deviendra la
racine et le second, <code>/dev/loop1</code> deviendra la mémoire
virtuelle.</p>
<p>Si vous voulez pouvoir écrire sur la partition racine en tant
qu'utilisateur normal quand vous aurez fini, alors vous devriez
plutôt utiliser <code>mount -n -t msdos /dev/hda1 /mnt -o
uid=0,gid=0,umask=000</code>. Ceci associera tous les accès à la
partition DOS à l'utilisateur root et placera les permissions en
conséquences.</p>
<h2><a name="ss2.4">2.4 Création du périphérique racine</a></h2>
<p>Le périphérique racine que vous utiliserez est le fichier
<code>linuxdsk.img</code>. Vous devrez le créer de la même façon
que le disque virtuel initial, en plus grand. Vous pouvez y mettre
l'installation de Linux de votre choix.</p>
<p>La méthode la plus simple est de copier une installation Linux
existante sur ce disque. une alternative est d'y installer une
distribution de Linux.</p>
<p>En supposant que ceci est fait, vous avez encore des
modifications mineures à apporter.</p>
<p>Le fichier <code>/etc/fstab</code> doit référencer les
partitions racine et swap en utilisant les deux périphériques
loopback qui sont mis en place par le disque virtuel initial.</p>
<blockquote>
<pre><code>
/dev/loop0     /      ext2   defaults 1 1
/dev/loop1     swap   swap   defaults 1 1
</code></pre></blockquote>
<p>Ceci permettra de s'assurer que quand le périphérique racine
sera utilisé, le noyau ne sera pas induit en erreur sur son
emplacement. L'espace de swap pourra ainsi être ajouté de la même
façon qu'une partition de swap normale. Vous devez aussi retirer
toute autre référence vers un disque racine ou swap.</p>
<p>Si vous voulez être capable d'accéder à la partition DOS après
le démarrage de Linux, vous devrez faire quelques petites
modifications.</p>
<p>Créez un répertoire appelé <code>/initrd</code>, qui sera le
point de montage du disque virtuel initial une fois que le système
de fichier racine sera monté en loopback.</p>
<p>Créez un lien symbolique appelé <code>/DOS</code> qui pointe sur
<code>/initrd/mnt</code> où la partition DOS sera montée.</p>
<p>Ajoutez un ligne dans le fichier rc qui monte les disques. Il
devra lancer la commande <code>mount -f -t msdos /dev/hda1
/initrd/mnt</code> ; ceci créera un montage "fictif" de la
partition DOS pour que tous les autres programmes (comme
<code>df</code>) sachent que la partition DOS est montée et où la
trouver. Si vous avez utilisé des options différentes dans
<code>/linuxrc</code>, vous devrez évidemment utiliser les mêmes
ici.</p>
<p>Il n'y a plus de raison d'avoir le noyau Linux sur le
périphérique racine puisqu'il a été chargé plus tôt. Toutefois, si
vous utilisez les modules, vous devrez les inclure normalement sur
ce périphérique.</p>
<h2><a name="ss2.5">2.5 Création du périphérique de mémoire
virtuelle.</a></h2>
<p>Le périphérique que vous utiliserez sera le fichier
<code>linuxswap.img</code>. Le périphérique de mémoire virtuelle
<em>(swap)</em> est très simple à fabriquer. Créez un fichier vide
de la même façon que pour le disque virtuel initial, puis exécutez
<code>mkswap linuxswap.img</code> pour l'initialiser.</p>
<p>La taille de la mémoire virtuelle dépendra de ce que vous
comptez faire avec le système installé, mais je recommanderais
entre 8 Mo et la quantité de RAM que vous avez.</p>
<h2><a name="ss2.6">2.6 Création du répertoire MSDOS</a></h2>
<p>Les fichiers qui seront utilisés devront être déplacés sur la
partition DOS.</p>
<p>Les fichiers qui devront être dans le répertoire DOS appelé
<code>C:\LINUX</code> sont les suivants :</p>
<ul>
<li><code>LINUXDSK.IMG</code> L'image de la partition qui deviendra
le périphérique racine.</li>
<li><code>LINUXSWP.IMG</code> L'espace de mémoire virtuelle.</li>
</ul>
<h2><a name="ss2.7">2.7 Création de la disquette de
démarrage.</a></h2>
<p>La disquette de démarrage qui est utilisée est juste une
disquette amorçable au format DOS.</p>
<p>On la crée en utilisant <code>format a: /s</code> sous DOS.</p>
<p>Sur ce disque vous devrez créer un fichier
<code>AUTOEXEC.BAT</code> (comme ci-dessous) et copier le noyau, le
disque virtuel initial sous forme compressée et l'exécutable
<code>LOADLIN</code>.</p>
<ul>
<li><code>AUTOEXEC.BAT</code> Le fichier de commandes exécuté
automatiquement par le DOS.</li>
<li><code>LOADLIN.EXE</code> L'exécutable du programme
<code>LOADLIN</code>.</li>
<li><code>ZIMAGE</code> Le noyau Linux.</li>
<li><code>INITRDGZ.IMG</code> L'image compressée du disque virtuel
initial.</li>
</ul>
<p>Le fichier <code>AUTOEXEC.BAT</code> devrait contenir une seule
ligne comme ci-dessous.</p>
<blockquote>
<pre><code>
\loadlin \zImage initrd=\initrdgz.img root=/dev/loop0 ro
</code></pre></blockquote>
<p>Ceci spécifie l'image du noyau à utiliser, l'image du disque
virtuel initial, et le périphérique racine après que le disque
virtuel ait fait son office, avec la partition racine montée en
lecture seule.</p>
<h2><a name="s3">3. Démarrage du système</a></h2>
<p>Pour démarrer depuis le nouveau périphérique racine, il suffit
de faire démarrer le PC sur la disquette préparée plus haut.</p>
<p>Vous verrez les événement suivants se succéder :</p>
<ol>
<li>Chargement du DOS.</li>
<li>Démarrage AUTOEXEC.BAT</li>
<li>Lancement de LOADLIN</li>
<li>Copie du noyau Linux dans la mémoire</li>
<li>Le disque virtuel initial est copié en mémoire</li>
<li>Le noyau Linux démarre</li>
<li>Le fichier <code>/linuxrc</code> sur le disque virtuel initial
est exécuté</li>
<li>La partition DOS est montée, ainsi que les périphériques racine
et de swap</li>
<li>La séquence de démarrage continue depuis le périphérique
loopback</li>
</ol>
<p>Une fois ceci accompli, vous pouvez retirer la disquette et
utiliser le système Linux.</p>
<h2><a name="ss3.1">3.1 Problèmes possibles et leurs
solutions</a></h2>
<p>Il y a un certain nombre d'étapes de ce processus qui peuvent
échouer. Je vais essayer d'expliquer lesquelles, et ce qu'il faut
vérifier.</p>
<p>Le démarrage du DOS est facile à reconnaître grâce au message
qu'il affiche à l'écran : <code>Démarrage de MS-DOS...</code> . Si
ceci n'est pas visible, soit la disquette n'est pas amorçable, soit
le PC ne démarre pas sur le lecteur de disquettes.</p>
<p>Quand le fichier <code>AUTOEXEC.BAT</code> est exécuté, les
commandes qu'il contient devraient être affichées sur l'écran par
défaut. Dans le cas présent, il n'y a d'une seule ligne dans le
fichier, qui lance <code>LOADLIN</code>.</p>
<p>Quand <code>LOADLIN</code> se lancera, il exécutera deux actions
facile à distinguer : premièrement il chargera le noyau en mémoire,
ensuite il copiera le disque virtuel en mémoire. Chacune de ces
actions est indiquée par un message <code>Loading...</code> .</p>
<p>Le noyau commence par se décompresser, ceci peut engendrer des
erreur <b>crc</b> si l'image du noyau est corrompue. Ensuite, il
lancera la séquence d'initialisation qui est très prolixe en
messages de diagnostic. Le chargement du périphérique disque
virtuel sera aussi visible durant cette phase.</p>
<p>Quand le fichier <code>/linuxrc</code> est lancé, il n'y a pas
de message de diagnostic, mais vous pouvez les ajouter pour vous
aider à debugger. Si cette étape échoue dans le montage du
périphérique loopback en tant que périphérique racine, vous verrez
un message avertissant qu'il n'y a pas de périphérique racine, et
le noyau interrompra son exécution.</p>
<p>La séquence de démarrage normale du nouveau système de fichiers
racine va maintenant continuer, et cette partie est à nouveau
généreuse en messages. Il pourrait y avoir des problèmes dûs au
fait que le système de fichiers racine est monté en
lecture-écriture, mais l'option de ligne de commande
'<code>ro</code>' pour <code>LOADLIN</code> devrait arranger ça. Un
autre problème qui peut apparaître est la confusion de la séquence
de démarrage à propos de l'emplacement du système de fichiers
racine ; ceci sera probablement dû à un problème avec
<code>/etc/fstab</code>.</p>
<p>Quand la séquence de démarrage est réalisée, le problème qui
reste est que les programmes ne savent pas si la partition DOS est
montée ou non. C'est pourquoi c'est une bonne idée d'utiliser une
fausse commande mount décrite plus tôt. Ceci rend la vie nettement
plus simple si vous voulez accéder au fichiers sur le périphérique
DOS.</p>
<h2><a name="ss3.2">3.2 Documents de référence</a></h2>
<p>Les document que j'ai utilisés pour créer mon premier
périphérique racine en loopback sont :</p>
<ul>
<li>Les sources du noyau Linux, en particulier
<code>init/main.c</code></li>
<li>La documentation du noyau Linux, en particulier
<code>Documentation/initrd.txt</code> et
<code>Documentation/ramdisk.txt</code>.</li>
<li>La documentation de <code>LILO</code>.</li>
<li>La documentation de <code>LOADLIN</code>.</li>
</ul>
<h2><a name="s4">4. Autres possibilités de périphériques racine en
loopback</a></h2>
<p>Une fois que le principe de démarrer sur un système de fichiers
dans une partition DOS est acquis, il y a de nombreuses autres
choses que l'on peut faire.</p>
<h2><a name="ss4.1">4.1 Installation "tout sur un disque
DOS"</a></h2>
<p>S'il est possible de charger Linux depuis un fichier sur un
disque dur DOS en utilisant une disquette de démarrage, alors il
est clair qu'on peut faire la même chose en utilisant le disque dur
lui-même.</p>
<p>Un menu de choix de configuration au démarrage peut être utilisé
pour donner l'option de lancer <code>LOADLIN</code> depuis
l'<code>AUTOEXEC.BAT</code>. Ceci donnera une séquence de démarrage
plus rapide, mais c'est la seule différence.</p>
<h2><a name="ss4.2">4.2 Installation démarrée avec LILO</a></h2>
<p>Utiliser <code>LOADLIN</code> n'est qu'une des options possibles
pour charger un noyau Linux. Il y a aussi <code>LILO</code> qui
fait pratiquement la même chose, mais sans nécessiter DOS.</p>
<p>Dans ce cas, la disquette au format DOS peut être remplacée par
une disquette au format ext2fs. A part cela, les détails restent
très similaires, le noyau et le disque virtuel initial étant encore
des fichiers sur cette disquette.</p>
<p>La raison pour laquelle j'ai choisi la méthode avec
<code>LOADLIN</code> est que les arguments qui doivent être données
à <code>LILO</code> sont légèrement plus complexes. Le contenu de
la disquette est aussi plus clair pour un observateur lambda,
puisqu'on peut la lire sous DOS.</p>
<h2><a name="ss4.3">4.3 Installation VFAT / NTFS</a></h2>
<p>J'ai essayé la méthode NTFS, et je n'ai pas eu de problème avec.
Le support du système de fichier NTFS n'est pas une option standard
du noyau, mais vous devez appliquer le patch de Martin von Löwis,
qui est disponible sur sa page web. <a href=
"http://www.informatik.hu-berlin.de/~loewis/ntfs/">http://www.informatik.hu-berlin.de/~loewis/ntfs/</a>.
Ce logiciel est en version alpha et requiert un patch qui n'est pas
totalement trivial à appliquer au noyau, mais pas trop difficile
non plus.</p>
<p>Les seuls changements pour les options VFAT ou NTFS sont sur le
disque virtuel initial, le fichier <code>/linuxrc</code> doit
monter un système de fichiers de type vfat ou ntfs plutôt que
msdos.</p>
<p>Je ne connais pas de raison pour laquelle ceci ne marcherait pas
aussi sur une partition VFAT.</p>
<h2><a name="ss4.4">4.4 Installer Linux sans
repartitionner</a></h2>
<p>Le processus d'installation de Linux sur un PC avec une
distribution standard requiert de démarrer sur une disquette et de
repartitionner le disque dur. Cette étape pourrait être remplacée
par une disquette de démarrage qui crée un périphérique loopback
vide et un fichier de swap. Ceci permettrait à l'installation de
procéder normalement, sur le périphérique loopback plutôt que sur
une partition.</p>
<p>Ceci pourrait être une alternative à une installation
<code>UMSDOS</code>, et serait plus efficace pour l'utilisation du
disque, puisque l'unité d'allocation minimale sur un système de
fichiers ext2 est de 1ko contre 32ko sur une partition DOS. On peut
aussi l'utiliser sur des disques VFAT et NTFS qui sinon posent un
problème.</p>
<h2><a name="ss4.5">4.5 Démarrer depuis un périphérique non
amorçable</a></h2>
<p>Cette méthode peut aussi être utilisée pour démarrer un système
Linux depuis un périphérique qui n'est pas normalement
amorçable.</p>
<ul>
<li>CD-Rom</li>
<li>Disques Zip</li>
<li>Lecteurs de disques sur port parallèle</li>
</ul>
<p>Evidemment, de nombreux autres périphériques pourraient être
utilisés, les partitions racines en NFS sont déjà incluses dans le
noyau comme une option, mais la méthode présentée ici pourrait être
utilisée à la place.</p>
</body>
</html>