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.
|