aboutsummaryrefslogtreecommitdiff
path: root/init/README.2
blob: 03ce196be393b8dcdfcfc2bd9fedf5cd0cc1a824 (plain) (blame)
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
Résumé rapide des commandes les plus courantes :

  - { ... } : bloc d'instructions
  - &<cmd> : n'exécute CMD que si le retour précédent est OK
  - |<cmd> : n'exécute CMD que si le retour précédent est ERR
  - !<cmd> : inverse le code de retour de CMD, et peut être
    combiné à &,|

  - te VAR=VAL => retourne TRUE si VAR=VAL dans l'env.
  - in : spécifie l'init auquel on donne la main
  - ec : echo
  - rd : passe en mode prompt clavier, en affichant le
         message. Ne retourne jamais d'erreur. Le prompt
         compte les niveaux pour s'y retrouver avec les {} :-)
  - mt : mount ; um : umount
  - mv : mount --move ; bi : mount --bind
  - ex : exécute dans un sous-process (system())
  - /path/prog args : idem.
  - rx xxx yyy : execute yyy dans chroot xxx;
  - md : mkdir ; ln : lien
  - bl,ch,fi : devices block, char, fifo
  - pr xxx yyy : pivot_root : root -> xxx/yyy ; xxx->root


C'est une conf opérationnelle de boot avec un linuxrc dans un initrd
et un .preinit sur un CD.
Par défaut, le kernel charge /sbin/init à partir de l'initrd. Ce dernier
est un lien qui pointe vers le script /.linuxrc, référençant lui-même
/linuxrc comme interpréteur. Le résultat est que l'on exécute :
  /linuxrc < /sbin/init   ce qui revient à /linuxrc < /.linuxrc

Il est possible de forcer le chemin de linuxrc par 'init=/xxxxx' au boot.

Ensuite, le script linuxrc monte le CD puis exécute soit /sbin/init, soit
le nom en regard de la ligne 'in xxxx' dans la conf, soit xxxx si
'init2=xxxx' est précisé sur la ligne de commande, soit enfin le paramètre
de 'in' fourni au clavier en mode prompt si "RDSHELL=1" est passé au noyau.

Le /sbin/init du CD utilise par défaut /.preinit (qu'on aurait pu appeler
en direct par 'init=' venant d'un kernel sans initrd, ou 'init2=' venant
d'un initrd équipé du linuxrc décrit ci-dessus).

Si le paramètre "RAMCOPY=1" est passé au kernel, alors le script recopie
tout le CD en RAM, puis le démonte.

Si le paramètre "AUTORUN=1" est passé au kernel, alors il tentera de monter
une disquette en ext2 puis en fat, pour y exécuter /autorun dans un
sous-processus.

Si le paramètre "INITSHELL=1" est passé au kernel, alors l'utilisateur
récupère un prompt.

Enfin, le script transfère l'exécution à /sbin/init-sysv, ou au binaire
désigné par 'in' dans le script, ou par celui désigné par le paramètre
"INIT=xxx" passé au kernel.