Différences entre versions de « Lxc guest »
Ligne 29 : | Ligne 29 : | ||
Bref, revenons à ces scripts de démarrage qu'il faut élaguer: | Bref, revenons à ces scripts de démarrage qu'il faut élaguer: | ||
# Quel est le type de démarrage ? | # Quel est le type de démarrage ? | ||
− | + | * Lenny -> sysV | |
− | + | * Squeeze: | |
− | + | ** si CONCURRENCY=none dans /etc/default/rcS ou si /etc/init.d/.legacy-bootordering existe -> sysV | |
− | + | ** sinon, si les fichiers /etc/init.d/.depend.{boot,start,stop} existent et ne sont pas vide -> "startpar" version "makefile" | |
− | + | ** tout les autres cas -> sysV | |
Voir le détail sur l'ordre d'exécution des scripts de démarrage [[script_rc_debian]] | Voir le détail sur l'ordre d'exécution des scripts de démarrage [[script_rc_debian]] | ||
+ | |||
+ | <pre> | ||
+ | Attention le tableau suivant est encore en développement | ||
+ | </pre> | ||
+ | |||
+ | {| border="1" | ||
+ | !| | ||
+ | Script /etc/init.d | ||
+ | !| | ||
+ | Lenny/Squeeze | ||
+ | |- | ||
+ | !| | ||
+ | a désactiver | ||
+ | absolument | ||
+ | || | ||
+ | * udev (masque /dev avec rien) | ||
+ | * umountroot (dans le cas d'un montage dedie au lxc, peut remonter celui-ci en read-only) | ||
+ | |- | ||
+ | !| | ||
+ | à garder | ||
+ | || | ||
+ | * networking (dans lxc, la configuration réseau se fait surtout dans l'invité) | ||
+ | * sendsigs | ||
+ | * killproc | ||
+ | * single | ||
+ | * rmnologin | ||
+ | * mountall-bootclean.sh (nettoie /tmp/ /var/run/ /var/lock/) | ||
+ | * mtab.sh (met a jour la mtab) | ||
+ | * procps (permet de configurer sysctl - ce qui est possible avec lxc) | ||
+ | |- | ||
+ | !| | ||
+ | à désactiver | ||
+ | (ca fait moins d'erreurs et ca démarre plus vite) | ||
+ | || | ||
+ | * hwclock.sh | ||
+ | * hwclockfirst.sh | ||
+ | * lvm2 | ||
+ | * udev | ||
+ | * udev-mtab | ||
+ | * fixudev | ||
+ | * module-init-tool | ||
+ | * hdparm | ||
+ | * kbd | ||
+ | * keyboard-setup | ||
+ | * keymap.sh | ||
+ | * fuse | ||
+ | * lm-sensor | ||
+ | * checkfs | ||
+ | * checkroot | ||
+ | * mountall | ||
+ | * mountdevsubfs | ||
+ | * mountkernfs | ||
+ | * mountnfs | ||
+ | * mountnfs-bootclean | ||
+ | * mountoverflowtmp | ||
+ | * umountfs | ||
+ | * umountnfs.sh | ||
+ | * umountroot | ||
+ | |} | ||
+ | |||
+ | === comment enlever les scripts au démarrage === | ||
+ | |||
+ | Voila ma methode: | ||
+ | |||
+ | * Tout d'abord je crée un répertoire '''/etc/init.disabled''' | ||
+ | * Sous Lenny, je déplace les scripts visés de '''/etc/init.d''' a '''/etc/init.disabled'''. Cela permet de restaurer facilement un script sans changer l'ordre ni le runlevel (c'est le nom du lien symbolique qui contient cette information). | ||
+ | * Sous Squeeze, j'ai décidé de faire confiance a '''insserv''': | ||
+ | ** d'abord je retire le script visé: *insserv -r <script> , puis je le deplace dans /etc/init.disabled | ||
+ | ** si je dois le restaurer, je fait l'operation inverse, je le deplace dans /etc/init.d puis j'execute insserv -d script | ||
+ | |||
+ | La manière sous squeeze semble plus compliquée mais permet de supprimer les liens symboliques inutiles (donc une lecture plus facile des répertoires rc?.d). | ||
+ | Dans les 2 cas, le fait de déplacer les scripts dans /etc/init.disabled permet | ||
+ | # d'avoir en un clin d'oeil la liste des scripts qui ont été retire du système (démarrage / arrêt) | ||
+ | # de ne pas réactiver par erreur un script | ||
+ | # de garder une restauration simple au cas où |
Version du 7 mars 2012 à 18:41
conversion d'une image linux en LXC
Un serveur virtuel LXC est la partie utilisateur ("userland") par opposition à la partie noyau ("kernel").
Pour convertir une image c'est assez simple en ce sens qu'on va plutôt enlever des choses qu'en mettre:
- tout les scripts de démarrage servant a faire l'initialisation matérielle
- les scripts chargeant les modules kernel
Très bien, enlevons, mais d'abord, quels sont les scripts lancé au démarrage. La réponse pourrait être simple, c'est les script rc du système V et c'est marre.
Oui mais, avec Squeeze, Debian introduit 2 changements importants dans ces scripts:
- il existe maintenant 2 modes de démarrage (classique systemV et "makefile like" avec startpar)
- même dans le mode classique, (rcN.d/[KS]XYscript.sh) les numéros d'execution (le XY) ne sont plus
forcément figés, ils sont calculé par la commande "insserv". L'installation d'un paquet peut donc potentiellement faire changer l'ordre de démarrage.
Restons calme, il s'agit de machine virtuelles, donc l'ordre d'exécution des scripts de démarrage est moins critique que sur une machine physique. Une machine physique doit savoir jongler avec des trucs comme: j'ai besoin de monter un volume raid, mais les binaires qui me permettront de le manipuler se trouve sur le volume raid en question... C'est précisément dans ce genre de cas que l'ordre d'exécution des scripts de démarrage est critique et que l'utilisation d'initrd et des modules noyau est indispensable.
Sur une machine virtuelle on va essentiellement lancer des applicatifs. Lancer apache longtemps avant la base de donnée sur laquelle il va travailler n'est pas une bonne idée, mais ça reste (la plupart du temps) plus une gêne au démarrage qu'un plantage pur et simple.
Bref, revenons à ces scripts de démarrage qu'il faut élaguer:
- Quel est le type de démarrage ?
- Lenny -> sysV
- Squeeze:
- si CONCURRENCY=none dans /etc/default/rcS ou si /etc/init.d/.legacy-bootordering existe -> sysV
- sinon, si les fichiers /etc/init.d/.depend.{boot,start,stop} existent et ne sont pas vide -> "startpar" version "makefile"
- tout les autres cas -> sysV
Voir le détail sur l'ordre d'exécution des scripts de démarrage script_rc_debian
Attention le tableau suivant est encore en développement
Script /etc/init.d |
Lenny/Squeeze |
---|---|
a désactiver absolument |
|
à garder |
|
à désactiver (ca fait moins d'erreurs et ca démarre plus vite) |
|
comment enlever les scripts au démarrage
Voila ma methode:
- Tout d'abord je crée un répertoire /etc/init.disabled
- Sous Lenny, je déplace les scripts visés de /etc/init.d a /etc/init.disabled. Cela permet de restaurer facilement un script sans changer l'ordre ni le runlevel (c'est le nom du lien symbolique qui contient cette information).
- Sous Squeeze, j'ai décidé de faire confiance a insserv:
- d'abord je retire le script visé: *insserv -r <script> , puis je le deplace dans /etc/init.disabled
- si je dois le restaurer, je fait l'operation inverse, je le deplace dans /etc/init.d puis j'execute insserv -d script
La manière sous squeeze semble plus compliquée mais permet de supprimer les liens symboliques inutiles (donc une lecture plus facile des répertoires rc?.d). Dans les 2 cas, le fait de déplacer les scripts dans /etc/init.disabled permet
- d'avoir en un clin d'oeil la liste des scripts qui ont été retire du système (démarrage / arrêt)
- de ne pas réactiver par erreur un script
- de garder une restauration simple au cas où