This file is indexed.

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

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
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.71">
<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&eacute;riph&eacute;rique loopback pour faire une installation sur
un syst&egrave;me de fichier Linux natif, qui peut r&eacute;sider
dans une partition DOS sans repartitionnement. D'autres
utilisations de cette technique sont aussi
pr&eacute;sent&eacute;es.</em>
<hr>
<h2><a name="s1">1. Principes des p&eacute;riph&eacute;riques
"loopback" et des disques virtuels</a></h2>
<p>Je vais d'abord d&eacute;crire quelques-uns des principes
g&eacute;n&eacute;raux utilis&eacute;s pour la mise en place d'un
syst&egrave;me de fichier en loopback comme racine.</p>
<h2><a name="ss1.1">1.1 P&eacute;riph&eacute;rique
loopback</a></h2>
<p>Sous Linux, un <b>p&eacute;riph&eacute;rique loopback</b> est un
p&eacute;riph&eacute;rique virtuel, qui peut &ecirc;tre
utilis&eacute; comme tout autre p&eacute;riph&eacute;rique.</p>
<p>Des exemples de p&eacute;riph&eacute;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&eacute;riph&eacute;riques qui peuvent contenir une
structure de fichiers et de r&eacute;pertoires. Ils peuvent
&ecirc;tre format&eacute;s avec le syst&egrave;me de fichier voulu
(ext2fs, msdos, ntfs, etc...) puis mont&eacute;s.</p>
<p>Le p&eacute;riph&eacute;rique loopback associe un fichier
&agrave; un p&eacute;riph&eacute;rique complet. Ce fichier peut
appartenir &agrave; un autre syst&egrave;me de fichiers.</p>
<p>Il peut alors &ecirc;tre mont&eacute; comme tout autre
p&eacute;riph&eacute;rique cit&eacute; plus haut. Pour cela le
p&eacute;riph&eacute;rique appel&eacute; <code>/dev/loop0</code> ou
<code>/dev/loop1</code> ou etc... est associ&eacute; au fichier,
puis ce nouveau p&eacute;riph&eacute;rique virtuel est
mont&eacute;.</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&eacute;riph&eacute;rique virtuel mont&eacute; en tant que
syst&egrave;me de fichiers, c'est le <b>disque virtuel</b>
(<em>ramdisk</em>).</p>
<p>Dans ce cas, le p&eacute;riph&eacute;rique ne se
r&eacute;f&egrave;re pas &agrave; un &eacute;l&eacute;ment du
mat&eacute;riel, mais &agrave; une portion de la m&eacute;moire qui
est mise de c&ocirc;t&eacute; dans ce but. La m&eacute;moire
allou&eacute;e ainsi n'est jamais swap&eacute;e sur le disque, mais
reste dans le cache disque.</p>
<p>Un disque virtuel peut &ecirc;tre cr&eacute;&eacute; &agrave;
tout moment en &eacute;crivant dans le p&eacute;riph&eacute;rique
correspondant <code>/dev/ram0</code> ou <code>/dev/ram1</code>,
etc... Il peut alors &ecirc;tre format&eacute; et mont&eacute; de
la m&ecirc;me fa&ccedil;on que le p&eacute;riph&eacute;rique
loopback.</p>
<p>Quand un disque virtuel est utilis&eacute; pour
l'amor&ccedil;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 &ecirc;tre stock&eacute; sur la disquette de d&eacute;marrage
sous une forme compress&eacute;e. L'image est automatiquement
d&eacute;tect&eacute;e par le noyau quand celui-ci d&eacute;marre
et d&eacute;compress&eacute;e dans le disque virtuel avant
d'&ecirc;tre mont&eacute;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&eacute;canisme important dont nous aurons besoin pour utiliser le
p&eacute;riph&eacute;rique loopback comme syst&egrave;me de fichier
racine.</p>
<p>Quand le disque virtuel initial est utilis&eacute;, l'image du
syst&egrave;me de fichiers est copi&eacute;e dans la m&eacute;moire
et mont&eacute;e pour que les fichiers soient accessibles. Un
programme sur ce disque virtuel (appel&eacute;
<code>linuxrc</code>) est lanc&eacute;. Une fois termin&eacute; un
nouveau p&eacute;riph&eacute;rique est mont&eacute; comme
syst&egrave;me de fichiers racine. Le disque virtuel
pr&eacute;c&eacute;dent existe toujours, il est mont&eacute; sur le
r&eacute;pertoire <code>/initrd</code> si celui-ci est
pr&eacute;sent, ou accessible &agrave; travers le
p&eacute;riph&eacute;rique <code>/dev/initrd</code>.</p>
<p>C'est un comportement peu habituel, puisque la s&eacute;quence
de d&eacute;marrage normale se lance depuis la partition racine
choisie et continue &agrave; tourner ainsi. Avec l'option de disque
virtuel initial, la partition racine a la possibilit&eacute; de
changer avant que ne commence la s&eacute;quence de
d&eacute;marrage principale.</p>
<h2><a name="ss1.4">1.4 Le syst&egrave;me de fichiers
racine</a></h2>
<p>Le syst&egrave;me de fichiers racine est le
p&eacute;riph&eacute;rique qui est mont&eacute; en premier, et qui
appara&icirc;t donc dans le r&eacute;pertoire appel&eacute;
<code>/</code> apr&egrave;s le d&eacute;marrage.</p>
<p>Il y a un certain nombre de complications a propos du
syst&egrave;me de fichiers racine, qui sont dues au fait qu'il
contient tous les fichiers. Au boot, les scripts <code>rc</code>
sont lanc&eacute;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&egrave;me a d&eacute;marr&eacute;, il n'est plus
possible de d&eacute;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 &ecirc;tre
utilis&eacute; de fa&ccedil;on telle que la partition racine finale
n'est pas la m&ecirc;me que celle qui est charg&eacute;e au moment
de l'amor&ccedil;age.</p>
<h2><a name="ss1.5">1.5 La s&eacute;quence d'amor&ccedil;age de
Linux</a></h2>
<p>Pour montrer comment le disque virtuel initial op&egrave;re
pendant la s&eacute;quence de d&eacute;marrage, l'ordre des
&eacute;v&eacute;nements est pr&eacute;sent&eacute; ci dessous.</p>
<ol>
<li>Le noyau est charg&eacute; en m&eacute;moire, ceci est
effectu&eacute; 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&eacute;e en m&eacute;moire,
&agrave; nouveau ceci est r&eacute;alis&eacute; par
<code>LILO</code> ou <code>LOADLIN</code>. Vous pouvez voir le
message <code>Loading...</code> &agrave; nouveau quand ceci
arrive.</li>
<li>Le noyau est initialis&eacute;, 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&eacute; sur le
disque virtuel initial.</li>
<li>Le p&eacute;riph&eacute;rique racine est chang&eacute; pour
celui sp&eacute;cifi&eacute; dans les param&egrave;tres du
noyau.</li>
<li>Le programme <code>/etc/init</code> est lanc&eacute;, et va
ex&eacute;cuter la s&eacute;quence de d&eacute;marrage
param&eacute;trable par l'utilisateur.</li>
</ol>
<p>Ceci est juste une version simplifi&eacute;e de ce qui arrive,
mais c'est suffisant pour expliquer comment le noyau d&eacute;marre
et o&ugrave; le disque virtuel est utilis&eacute;.</p>
<h2><a name="s2">2. Comment cr&eacute;er un
p&eacute;riph&eacute;rique loopback.</a></h2>
<p>Maintenant que les principes g&eacute;n&eacute;raux ont
&eacute;t&eacute; pr&eacute;sent&eacute;s, la m&eacute;thode pour
cr&eacute;er le p&eacute;riph&eacute;rique loopback peut &ecirc;tre
expliqu&eacute;e.</p>
<h2><a name="ss2.1">2.1 Pr&eacute;-requis</a></h2>
<p>La cr&eacute;ation du p&eacute;riph&eacute;rique loopback va
n&eacute;cessiter un certain nombre de choses.</p>
<ul>
<li>Un syst&egrave;me Linux install&eacute;.</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&egrave;s &agrave; un
syst&egrave;me Linux d&eacute;j&agrave; install&eacute;. Ce point
est n&eacute;cessaire car le p&eacute;riph&eacute;rique loop ne
peut &ecirc;tre cr&eacute;&eacute; que sous Linux. Cela signifie
qu'il ne sera pas possible d'installer un syst&egrave;me &agrave;
partir de rien. Le syst&egrave;me Linux que vous utilisez devra
&ecirc;tre capable de compiler un noyau.</p>
<p>Une fois le p&eacute;riph&eacute;rique loopback
cr&eacute;&eacute;, il repr&eacute;sentera un gros fichier. J'ai
utilis&eacute; un fichier de 80 Mo, mais si c'&eacute;tait
suffisant pour un terminal X, &ccedil;a ne sera sans doute pas
suffisant pour une utilisation plus importante. Ce fichier doit
&ecirc;tre copi&eacute; sur la partition DOS, donc un r&eacute;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&eacute;rieure</li>
<li>Une version de <code>mount</code> qui supporte les
p&eacute;riph&eacute;riques loopback</li>
<li>Une version du noyau qui inclut les options requises.</li>
</ul>
<p>Tout ceci devrait &ecirc;tre disponible en standard sur des
installations r&eacute;centes de Linux.</p>
<h2><a name="ss2.2">2.2 Cr&eacute;ation du noyau Linux</a></h2>
<p>J'ai cr&eacute;&eacute; le p&eacute;riph&eacute;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&eacute;es ci-dessous configur&eacute;es.</p>
<p>Les options du noyau que vous devrez s&eacute;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&egrave;res sont le disque virtuel lui-m&ecirc;me
et le disque virtuel initial. La suivante est le support pour les
p&eacute;riph&eacute;riques loopback. Les deux derni&egrave;res
sont le support pour les syst&egrave;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 &ccedil;a devrait &ecirc;tre
possible, bien que je ne l'aie pas essay&eacute;. Si vous utilisez
des modules, vous devez configurer les options
pr&eacute;c&eacute;dentes dans le noyau, et non comme des
modules.</p>
<p>Le code source du noyau lui-m&ecirc;me devra &ecirc;tre
modifi&eacute; d'une fa&ccedil;on tr&egrave;s simple. La version
2.0.34 du noyau telle que fournie ne permet pas au
p&eacute;riph&eacute;rique loopback d'&ecirc;tre utilis&eacute;
comme racine. Une tr&egrave;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&eacute; dans la version
modifi&eacute;e ci-dessous. La ligne qui dit <code>"loop",
0x0700</code> est celle qui a &eacute;t&eacute; ajout&eacute;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&eacute;, il devra &ecirc;tre
compil&eacute; pour produire une fichier <code>zImage</code>
(<code>make zImage</code>). Ce fichier devrait &ecirc;tre
<code>arch/i386/boot/zImage</code> une fois compil&eacute;.</p>
<h2><a name="ss2.3">2.3 Cr&eacute;ation du
p&eacute;riph&eacute;rique disque virtuel initial</a></h2>
<p>Le disque virtuel initial est simplement cr&eacute;e comme un
p&eacute;riph&eacute;rique loopback au d&eacute;part. Vous devrez
faire ceci en tant que root. Les commandes que vous devez
ex&eacute;cuter sont list&eacute;es ci dessous, elles supposent
&ecirc;tre lanc&eacute;es depuis le r&eacute;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&eacute;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'&eacute;tapes, mais on peut les
d&eacute;crire comme ceci.</p>
<ol>
<li>Cr&eacute;ez un point de montage pour le disque virtuel initial
(un r&eacute;pertoire vide).</li>
<li>Cr&eacute;ez un fichier vide de la taille requise. Ici j'ai
utilis&eacute; 1024ko, vous pourriez avoir besoin de plus ou de
moins suivant le contenu. (la taille est le dernier
param&egrave;tre).</li>
<li>Cr&eacute;ez un syst&egrave;me de fichiers ext2 dans le fichier
vide.</li>
<li>Montez le ficher au point de montage, ceci utilise le
p&eacute;riph&eacute;rique loopback.</li>
<li>Changez le r&eacute;pertoire courant pour le
p&eacute;riph&eacute;rique loopback.</li>
<li>Cr&eacute;ez les fichiers requis (voir plus bas pour les
d&eacute;tails).</li>
<li>Sortez du p&eacute;riph&eacute;rique loopback
mont&eacute;.</li>
<li>D&eacute;montez le p&eacute;riph&eacute;rique.</li>
<li>Cr&eacute;ez une version compress&eacute;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&eacute;sentent le minimum n&eacute;cessaire pour pouvoir
d'ex&eacute;cuter une commande.</p>
<ul>
<li><code>/linuxrc</code> Le fichier qui est lanc&eacute; pour
monter le syst&egrave;me de fichiers msdos (voir plus bas).</li>
<li><code>/lib/*</code> L'&eacute;diteur de liens dynamiques et les
librairies dont les programmes ont besoin.</li>
<li><code>/etc/*</code> Le cache utilis&eacute; par
l'&eacute;diteur de liens dynamiques (pas strictement requis, mais
&ccedil;a l'emp&ecirc;che de se plaindre).</li>
<li><code>/bin/*</code> Un interpr&eacute;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&eacute;riph&eacute;riques loopback.</li>
<li><code>/dev/*</code> Les p&eacute;riph&eacute;riques qui seront
utilis&eacute;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&eacute;riph&eacute;riques loopback.</li>
<li><code>/mnt</code> Un r&eacute;pertoire vide pour y monter le
disque msdos.</li>
</ul>
<p>Le contenu du disque virtuel initial que j'ai utilis&eacute; est
&eacute;num&eacute;r&eacute; ci-dessous. Ces fichiers
repr&eacute;sentent environ 800ko, une fois pris en compte l'espace
perdu par les structures du syst&egrave;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 &eacute;tape complexe est la cr&eacute;ation des
p&eacute;riph&eacute;riques dans <code>dev</code>. Utilisez le
programme <code>mknod</code> pour les cr&eacute;er, et servez vous
des p&eacute;riph&eacute;riques dans <code>/dev</code> comme
mod&egrave;les pour les param&egrave;tres requis.</p>
<p><b>Le fichier /linuxrc</b></p>
<p>Le fichier <code>/linuxrc</code> sur le disque virtuel initial
est n&eacute;cessaire pour mettre en place le
p&eacute;riph&eacute;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&eacute;ussite assigne les
fichiers <code>/linux/linuxdsk.img</code> et
<code>/linux/linuxswp.img</code> respectivement aux
p&eacute;riph&eacute;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&eacute;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&eacute;riph&eacute;rique, <code>/dev/loop0</code>
deviendra la racine et le second, <code>/dev/loop1</code> deviendra
la m&eacute;moire virtuelle.</p>
<p>Si vous voulez pouvoir &eacute;crire sur la partition racine en
tant qu'utilisateur normal quand vous aurez fini, alors vous
devriez plut&ocirc;t utiliser <code>mount -n -t msdos /dev/hda1
/mnt -o uid=0,gid=0,umask=000</code>. Ceci associera tous les
acc&egrave;s &agrave; la partition DOS &agrave; l'utilisateur root
et placera les permissions en cons&eacute;quences.</p>
<h2><a name="ss2.4">2.4 Cr&eacute;ation du
p&eacute;riph&eacute;rique racine</a></h2>
<p>Le p&eacute;riph&eacute;rique racine que vous utiliserez est le
fichier <code>linuxdsk.img</code>. Vous devrez le cr&eacute;er de
la m&ecirc;me fa&ccedil;on que le disque virtuel initial, en plus
grand. Vous pouvez y mettre l'installation de Linux de votre
choix.</p>
<p>La m&eacute;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 &agrave; apporter.</p>
<p>Le fichier <code>/etc/fstab</code> doit r&eacute;f&eacute;rencer
les partitions racine et swap en utilisant les deux
p&eacute;riph&eacute;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&eacute;riph&eacute;rique racine sera utilis&eacute;, le noyau ne
sera pas induit en erreur sur son emplacement. L'espace de swap
pourra ainsi &ecirc;tre ajout&eacute; de la m&ecirc;me fa&ccedil;on
qu'une partition de swap normale. Vous devez aussi retirer toute
autre r&eacute;f&eacute;rence vers un disque racine ou swap.</p>
<p>Si vous voulez &ecirc;tre capable d'acc&eacute;der &agrave; la
partition DOS apr&egrave;s le d&eacute;marrage de Linux, vous
devrez faire quelques petites modifications.</p>
<p>Cr&eacute;ez un r&eacute;pertoire appel&eacute;
<code>/initrd</code>, qui sera le point de montage du disque
virtuel initial une fois que le syst&egrave;me de fichier racine
sera mont&eacute; en loopback.</p>
<p>Cr&eacute;ez un lien symbolique appel&eacute; <code>/DOS</code>
qui pointe sur <code>/initrd/mnt</code> o&ugrave; la partition DOS
sera mont&eacute;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&eacute;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&eacute;e et
o&ugrave; la trouver. Si vous avez utilis&eacute; des options
diff&eacute;rentes dans <code>/linuxrc</code>, vous devrez
&eacute;videmment utiliser les m&ecirc;mes ici.</p>
<p>Il n'y a plus de raison d'avoir le noyau Linux sur le
p&eacute;riph&eacute;rique racine puisqu'il a &eacute;t&eacute;
charg&eacute; plus t&ocirc;t. Toutefois, si vous utilisez les
modules, vous devrez les inclure normalement sur ce
p&eacute;riph&eacute;rique.</p>
<h2><a name="ss2.5">2.5 Cr&eacute;ation du
p&eacute;riph&eacute;rique de m&eacute;moire virtuelle.</a></h2>
<p>Le p&eacute;riph&eacute;rique que vous utiliserez sera le
fichier <code>linuxswap.img</code>. Le p&eacute;riph&eacute;rique
de m&eacute;moire virtuelle <em>(swap)</em> est tr&egrave;s simple
&agrave; fabriquer. Cr&eacute;ez un fichier vide de la m&ecirc;me
fa&ccedil;on que pour le disque virtuel initial, puis
ex&eacute;cutez <code>mkswap linuxswap.img</code> pour
l'initialiser.</p>
<p>La taille de la m&eacute;moire virtuelle d&eacute;pendra de ce
que vous comptez faire avec le syst&egrave;me install&eacute;, mais
je recommanderais entre 8 Mo et la quantit&eacute; de RAM que vous
avez.</p>
<h2><a name="ss2.6">2.6 Cr&eacute;ation du r&eacute;pertoire
MSDOS</a></h2>
<p>Les fichiers qui seront utilis&eacute;s devront &ecirc;tre
d&eacute;plac&eacute;s sur la partition DOS.</p>
<p>Les fichiers qui devront &ecirc;tre dans le r&eacute;pertoire
DOS appel&eacute; <code>C:\LINUX</code> sont les suivants :</p>
<ul>
<li><code>LINUXDSK.IMG</code> L'image de la partition qui deviendra
le p&eacute;riph&eacute;rique racine.</li>
<li><code>LINUXSWP.IMG</code> L'espace de m&eacute;moire
virtuelle.</li>
</ul>
<h2><a name="ss2.7">2.7 Cr&eacute;ation de la disquette de
d&eacute;marrage.</a></h2>
<p>La disquette de d&eacute;marrage qui est utilis&eacute;e est
juste une disquette amor&ccedil;able au format DOS.</p>
<p>On la cr&eacute;e en utilisant <code>format a: /s</code> sous
DOS.</p>
<p>Sur ce disque vous devrez cr&eacute;er un fichier
<code>AUTOEXEC.BAT</code> (comme ci-dessous) et copier le noyau, le
disque virtuel initial sous forme compress&eacute;e et
l'ex&eacute;cutable <code>LOADLIN</code>.</p>
<ul>
<li><code>AUTOEXEC.BAT</code> Le fichier de commandes
ex&eacute;cut&eacute; automatiquement par le DOS.</li>
<li><code>LOADLIN.EXE</code> L'ex&eacute;cutable du programme
<code>LOADLIN</code>.</li>
<li><code>ZIMAGE</code> Le noyau Linux.</li>
<li><code>INITRDGZ.IMG</code> L'image compress&eacute;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&eacute;cifie l'image du noyau &agrave; utiliser, l'image
du disque virtuel initial, et le p&eacute;riph&eacute;rique racine
apr&egrave;s que le disque virtuel ait fait son office, avec la
partition racine mont&eacute;e en lecture seule.</p>
<h2><a name="s3">3. D&eacute;marrage du syst&egrave;me</a></h2>
<p>Pour d&eacute;marrer depuis le nouveau
p&eacute;riph&eacute;rique racine, il suffit de faire
d&eacute;marrer le PC sur la disquette pr&eacute;par&eacute;e plus
haut.</p>
<p>Vous verrez les &eacute;v&eacute;nement suivants se
succ&eacute;der :</p>
<ol>
<li>Chargement du DOS.</li>
<li>D&eacute;marrage AUTOEXEC.BAT</li>
<li>Lancement de LOADLIN</li>
<li>Copie du noyau Linux dans la m&eacute;moire</li>
<li>Le disque virtuel initial est copi&eacute; en
m&eacute;moire</li>
<li>Le noyau Linux d&eacute;marre</li>
<li>Le fichier <code>/linuxrc</code> sur le disque virtuel initial
est ex&eacute;cut&eacute;</li>
<li>La partition DOS est mont&eacute;e, ainsi que les
p&eacute;riph&eacute;riques racine et de swap</li>
<li>La s&eacute;quence de d&eacute;marrage continue depuis le
p&eacute;riph&eacute;rique loopback</li>
</ol>
<p>Une fois ceci accompli, vous pouvez retirer la disquette et
utiliser le syst&egrave;me Linux.</p>
<h2><a name="ss3.1">3.1 Probl&egrave;mes possibles et leurs
solutions</a></h2>
<p>Il y a un certain nombre d'&eacute;tapes de ce processus qui
peuvent &eacute;chouer. Je vais essayer d'expliquer lesquelles, et
ce qu'il faut v&eacute;rifier.</p>
<p>Le d&eacute;marrage du DOS est facile &agrave; reconna&icirc;tre
gr&acirc;ce au message qu'il affiche &agrave; l'&eacute;cran :
<code>D&eacute;marrage de MS-DOS...</code> . Si ceci n'est pas
visible, soit la disquette n'est pas amor&ccedil;able, soit le PC
ne d&eacute;marre pas sur le lecteur de disquettes.</p>
<p>Quand le fichier <code>AUTOEXEC.BAT</code> est
ex&eacute;cut&eacute;, les commandes qu'il contient devraient
&ecirc;tre affich&eacute;es sur l'&eacute;cran par d&eacute;faut.
Dans le cas pr&eacute;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&eacute;cutera deux
actions facile &agrave; distinguer : premi&egrave;rement il
chargera le noyau en m&eacute;moire, ensuite il copiera le disque
virtuel en m&eacute;moire. Chacune de ces actions est
indiqu&eacute;e par un message <code>Loading...</code> .</p>
<p>Le noyau commence par se d&eacute;compresser, ceci peut
engendrer des erreur <b>crc</b> si l'image du noyau est corrompue.
Ensuite, il lancera la s&eacute;quence d'initialisation qui est
tr&egrave;s prolixe en messages de diagnostic. Le chargement du
p&eacute;riph&eacute;rique disque virtuel sera aussi visible durant
cette phase.</p>
<p>Quand le fichier <code>/linuxrc</code> est lanc&eacute;, il n'y
a pas de message de diagnostic, mais vous pouvez les ajouter pour
vous aider &agrave; debugger. Si cette &eacute;tape &eacute;choue
dans le montage du p&eacute;riph&eacute;rique loopback en tant que
p&eacute;riph&eacute;rique racine, vous verrez un message
avertissant qu'il n'y a pas de p&eacute;riph&eacute;rique racine,
et le noyau interrompra son ex&eacute;cution.</p>
<p>La s&eacute;quence de d&eacute;marrage normale du nouveau
syst&egrave;me de fichiers racine va maintenant continuer, et cette
partie est &agrave; nouveau g&eacute;n&eacute;reuse en messages. Il
pourrait y avoir des probl&egrave;mes d&ucirc;s au fait que le
syst&egrave;me de fichiers racine est mont&eacute; en
lecture-&eacute;criture, mais l'option de ligne de commande
'<code>ro</code>' pour <code>LOADLIN</code> devrait arranger
&ccedil;a. Un autre probl&egrave;me qui peut appara&icirc;tre est
la confusion de la s&eacute;quence de d&eacute;marrage &agrave;
propos de l'emplacement du syst&egrave;me de fichiers racine ; ceci
sera probablement d&ucirc; &agrave; un probl&egrave;me avec
<code>/etc/fstab</code>.</p>
<p>Quand la s&eacute;quence de d&eacute;marrage est
r&eacute;alis&eacute;e, le probl&egrave;me qui reste est que les
programmes ne savent pas si la partition DOS est mont&eacute;e ou
non. C'est pourquoi c'est une bonne id&eacute;e d'utiliser une
fausse commande mount d&eacute;crite plus t&ocirc;t. Ceci rend la
vie nettement plus simple si vous voulez acc&eacute;der au fichiers
sur le p&eacute;riph&eacute;rique DOS.</p>
<h2><a name="ss3.2">3.2 Documents de
r&eacute;f&eacute;rence</a></h2>
<p>Les document que j'ai utilis&eacute;s pour cr&eacute;er mon
premier p&eacute;riph&eacute;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&eacute;s de
p&eacute;riph&eacute;riques racine en loopback</a></h2>
<p>Une fois que le principe de d&eacute;marrer sur un
syst&egrave;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&eacute;marrage,
alors il est clair qu'on peut faire la m&ecirc;me chose en
utilisant le disque dur lui-m&ecirc;me.</p>
<p>Un menu de choix de configuration au d&eacute;marrage peut
&ecirc;tre utilis&eacute; pour donner l'option de lancer
<code>LOADLIN</code> depuis l'<code>AUTOEXEC.BAT</code>. Ceci
donnera une s&eacute;quence de d&eacute;marrage plus rapide, mais
c'est la seule diff&eacute;rence.</p>
<h2><a name="ss4.2">4.2 Installation d&eacute;marr&eacute;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&ecirc;me chose, mais sans n&eacute;cessiter
DOS.</p>
<p>Dans ce cas, la disquette au format DOS peut &ecirc;tre
remplac&eacute;e par une disquette au format ext2fs. A part cela,
les d&eacute;tails restent tr&egrave;s similaires, le noyau et le
disque virtuel initial &eacute;tant encore des fichiers sur cette
disquette.</p>
<p>La raison pour laquelle j'ai choisi la m&eacute;thode avec
<code>LOADLIN</code> est que les arguments qui doivent &ecirc;tre
donn&eacute;es &agrave; <code>LILO</code> sont
l&eacute;g&egrave;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&eacute; la m&eacute;thode NTFS, et je n'ai pas eu de
probl&egrave;me avec. Le support du syst&egrave;me de fichier NTFS
n'est pas une option standard du noyau, mais vous devez appliquer
le patch de Martin von L&ouml;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 &agrave; 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&egrave;me de fichiers de type vfat ou ntfs
plut&ocirc;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&eacute;marrer sur une disquette
et de repartitionner le disque dur. Cette &eacute;tape pourrait
&ecirc;tre remplac&eacute;e par une disquette de d&eacute;marrage
qui cr&eacute;e un p&eacute;riph&eacute;rique loopback vide et un
fichier de swap. Ceci permettrait &agrave; l'installation de
proc&eacute;der normalement, sur le p&eacute;riph&eacute;rique
loopback plut&ocirc;t que sur une partition.</p>
<p>Ceci pourrait &ecirc;tre une alternative &agrave; une
installation <code>UMSDOS</code>, et serait plus efficace pour
l'utilisation du disque, puisque l'unit&eacute; d'allocation
minimale sur un syst&egrave;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&egrave;me.</p>
<h2><a name="ss4.5">4.5 D&eacute;marrer depuis un
p&eacute;riph&eacute;rique non amor&ccedil;able</a></h2>
<p>Cette m&eacute;thode peut aussi &ecirc;tre utilis&eacute;e pour
d&eacute;marrer un syst&egrave;me Linux depuis un
p&eacute;riph&eacute;rique qui n'est pas normalement
amor&ccedil;able.</p>
<ul>
<li>CD-Rom</li>
<li>Disques Zip</li>
<li>Lecteurs de disques sur port parall&egrave;le</li>
</ul>
<p>Evidemment, de nombreux autres p&eacute;riph&eacute;riques
pourraient &ecirc;tre utilis&eacute;s, les partitions racines en
NFS sont d&eacute;j&agrave; incluses dans le noyau comme une
option, mais la m&eacute;thode pr&eacute;sent&eacute;e ici pourrait
&ecirc;tre utilis&eacute;e &agrave; la place.</p>
</body>
</html>