« Virt/Chroot » : différence entre les versions

De TartareFR
Aller à la navigation Aller à la recherche
(Page créée avec « == Préparation == Il reste une dernière chose à faire avant d'entrer dans le nouvel environnement. Il s'agit de copier l'information DNS de <path>/etc/resolv.conf</path... »)
 
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 1 : Ligne 1 :
== Préparation ==
== Installation ==
 
* Création du répertoire d'accueil<syntaxhighlight lang="bash">mkdir /mnt/centos-6</syntaxhighlight>
* On se place à la racine de notre futur environnement chrooté<syntaxhighlight lang="bash">cd /mnt/centos-6</syntaxhighlight>
* On créer l'arborescence nécessaire aux commandes <app>rpm</app> et <app>yum</app><syntaxhighlight lang="bash">mkdir -p var/lib/rpm</syntaxhighlight>
* On initialise les base de données RPM<syntaxhighlight lang="bash">rpm --rebuilddb --root=/mnt/centos-6/</syntaxhighlight>
* On télécharge le paquet ''release'' CentOS<syntaxhighlight lang="bash">wget http://mirror.centos.org/centos-6/6.5/os/x86_64/Packages/centos-release-6-5.el6.centos.11.1.x86_64.rpm</syntaxhighlight>
* On télécharge le paquet ''release'' CentOS<syntaxhighlight lang="bash">rpm -i --root=/mnt/centos-6/ --nodeps centos-release-6-5.el6.centos.11.1.x86_64.rpm</syntaxhighlight>
* On installe <app>yum</app> dans l'environnement chrooté<syntaxhighlight lang="bash">yum --installroot=/mnt/centos-6/ install --nogpgcheck -y yum</syntaxhighlight>
 
== Initialisation ==
Il reste une dernière chose à faire avant d'entrer dans le nouvel environnement. Il s'agit de copier l'information DNS de <path>/etc/resolv.conf</path>.
Il reste une dernière chose à faire avant d'entrer dans le nouvel environnement. Il s'agit de copier l'information DNS de <path>/etc/resolv.conf</path>.


Ligne 7 : Ligne 17 :


Copie du fichier <path>/etc/resolv.conf</path>. L'option -L garantit qu'on ne copie pas un lien symbolique.
Copie du fichier <path>/etc/resolv.conf</path>. L'option -L garantit qu'on ne copie pas un lien symbolique.
  # cp -L /etc/resolv.conf /mnt/chroot
  # cp -L /etc/resolv.conf /mnt/centos-6/etc/resolv.conf


Montez le système de fichiers /proc dans <path>/mnt/chroot/proc</path> permet à l'environnement chrooté d'utiliser les informations fournies par le noyau, même lorsqu'on se trouve dans l'environnement chroot ainsi que <path>/dev</path>.
Montez le système de fichiers /proc dans <path>/mnt/centos-6/proc</path> permet à l'environnement chrooté d'utiliser les informations fournies par le noyau, même lorsqu'on se trouve dans l'environnement chrooté ainsi que <path>/dev</path>.


  # mount -t proc none /mnt/chroot/proc
  # mount -t proc none /mnt/centos-6/proc
  # mount -o bind /dev /mnt/chroot/dev
  # mount -o bind /dev /mnt/centos-6/dev
# mount -t sysfs none /mnt/centos-6/sys


== Chroot ==
== Chroot ==
Ligne 18 : Ligne 29 :


L'entrée se fait en deux étapes
L'entrée se fait en deux étapes
# On change la racine de / (sur l'environnement d'installation) en <path>/mnt/chroot</path> (sur vos partitions) en utilisant chroot.<pre>chroot /mnt/gentoo /bin/bash</pre>
# On change la racine de / (sur l'environnement d'installation) en <path>/mnt/chroot</path> (sur vos partitions) en utilisant chroot.<syntaxhighlight lang="bash">chroot /mnt/centos-6 /bin/bash</syntaxhighlight>
# On charge en mémoire les variables d'environnement en utilisant source.<pre>source /etc/profile</pre>
# On charge en mémoire les variables d'environnement du système chrooté en utilisant source.<pre>source /etc/profile</pre>
{{Admon/tip|Prompt|On peut modifier le prompt afin de spécifier que nous sommes dans un environnement chrooté.<pre># export PS1="(chroot) $PS1"</pre>}}
# On ré-install le paquet <package>centos-release</package><syntaxhighlight lang="bash">rpm -i centos-release-6-5.el6.centos.11.1.x86_64.rpm</syntaxhighlight>
{{Admon/tip|Prompt|On peut modifier le prompt afin de spécifier que nous sommes dans un environnement chrooté.<syntaxhighlight lang="bash">export PS1="(chroot) $PS1"</syntaxhighlight>
De manière globale, on créer un fichier dans <path>/etc/profile.d/</path>
<syntaxhighlight lang="bash">echo 'export PS1="(\033[1;32mcentos-6\033[0m) $PS1"' >> /etc/profile.d/chroot.sh</syntaxhighlight>
}}
{{Admon/bug|Incompatibilité dans les versions des base de données RPM|Pour régler l'erreur suivante<pre>
rpmdb: /var/lib/rpm/Name: unexpected file type or format
erreur: ne peut ouvrir l'index Name en utilisant db3 - Argument invalide (22)
attention: centos-release-6-5.el6.centos.11.1.x86_64.rpm: Entête V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
rpmdb: /var/lib/rpm/Conflictname: unexpected file type or format
erreur: ne peut ouvrir l'index Conflictname en utilisant db3 - Argument invalide (22)
rpmdb: /var/lib/rpm/Conflictname: unexpected file type or format
rpmdb: /var/lib/rpm/Conflictname: unexpected file type or format
rpmdb: /var/lib/rpm/Conflictname: unexpected file type or format
rpmdb: /var/lib/rpm/Conflictname: unexpected file type or format
rpmdb: /var/lib/rpm/Name: unexpected file type or format
rpmdb: /var/lib/rpm/Name: unexpected file type or format
rpmdb: /var/lib/rpm/Basenames: unexpected file type or format
erreur: ne peut ouvrir l'index Basenames en utilisant db3 - Argument invalide (22)
Erreur de segmentation (core dumped)</pre>
Il faut supprimer l'intégralité des répertoires <path>/var/lib/rpm</path> et <path>/var/lib/yum</path>, et recréer les base de données RPM.
<syntaxhighlight lang="bash">
rm -rf /var/lib/rpm/?*
rm -rf /var/lib/yum/.??*
rpm --initdb
</syntaxhighlight>}}

Dernière version du 26 septembre 2014 à 09:36

Installation

  • Création du répertoire d'accueil
    mkdir /mnt/centos-6
    
  • On se place à la racine de notre futur environnement chrooté
    cd /mnt/centos-6
    
  • On créer l'arborescence nécessaire aux commandes <app>rpm</app> et <app>yum</app>
    mkdir -p var/lib/rpm
    
  • On initialise les base de données RPM
    rpm --rebuilddb --root=/mnt/centos-6/
    
  • On télécharge le paquet release CentOS
    wget http://mirror.centos.org/centos-6/6.5/os/x86_64/Packages/centos-release-6-5.el6.centos.11.1.x86_64.rpm
    
  • On télécharge le paquet release CentOS
    rpm -i --root=/mnt/centos-6/ --nodeps centos-release-6-5.el6.centos.11.1.x86_64.rpm
    
  • On installe <app>yum</app> dans l'environnement chrooté
    yum --installroot=/mnt/centos-6/ install --nogpgcheck -y yum
    

Initialisation

Il reste une dernière chose à faire avant d'entrer dans le nouvel environnement. Il s'agit de copier l'information DNS de <path>/etc/resolv.conf</path>.

Vous devez le faire afin d'assurer le bon fonctionnement du réseau dans le nouvel environnement.

<path>/etc/resolv.conf</path> contient les serveurs de noms pour votre réseau.

Copie du fichier <path>/etc/resolv.conf</path>. L'option -L garantit qu'on ne copie pas un lien symbolique.

# cp -L /etc/resolv.conf /mnt/centos-6/etc/resolv.conf

Montez le système de fichiers /proc dans <path>/mnt/centos-6/proc</path> permet à l'environnement chrooté d'utiliser les informations fournies par le noyau, même lorsqu'on se trouve dans l'environnement chrooté ainsi que <path>/dev</path>.

# mount -t proc none /mnt/centos-6/proc
# mount -o bind /dev /mnt/centos-6/dev
# mount -t sysfs none /mnt/centos-6/sys

Chroot

Maintenant que toutes les partitions sont initialisées et que l'environnement de base est installé, il est temps d'entrer dans notre nouvel environnement. Cela signifie que l'on passe de l'environnement actuel (CD d'installation ou autre environnement) à l'environnement de votre système (soit les partitions initialisées).

L'entrée se fait en deux étapes

  1. On change la racine de / (sur l'environnement d'installation) en <path>/mnt/chroot</path> (sur vos partitions) en utilisant chroot.
    chroot /mnt/centos-6 /bin/bash
    
  2. On charge en mémoire les variables d'environnement du système chrooté en utilisant source.
    source /etc/profile
  3. On ré-install le paquet <package>centos-release</package>
    rpm -i centos-release-6-5.el6.centos.11.1.x86_64.rpm
    
Idea.png
Prompt
On peut modifier le prompt afin de spécifier que nous sommes dans un environnement chrooté.
export PS1="(chroot) $PS1"

De manière globale, on créer un fichier dans <path>/etc/profile.d/</path>

echo 'export PS1="(\033[1;32mcentos-6\033[0m) $PS1"' >> /etc/profile.d/chroot.sh
Bug.png
Incompatibilité dans les versions des base de données RPM
Pour régler l'erreur suivante
rpmdb: /var/lib/rpm/Name: unexpected file type or format
erreur: ne peut ouvrir l'index Name en utilisant db3 - Argument invalide (22)
attention: centos-release-6-5.el6.centos.11.1.x86_64.rpm: Entête V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
rpmdb: /var/lib/rpm/Conflictname: unexpected file type or format
erreur: ne peut ouvrir l'index Conflictname en utilisant db3 - Argument invalide (22)
rpmdb: /var/lib/rpm/Conflictname: unexpected file type or format
rpmdb: /var/lib/rpm/Conflictname: unexpected file type or format
rpmdb: /var/lib/rpm/Conflictname: unexpected file type or format
rpmdb: /var/lib/rpm/Conflictname: unexpected file type or format
rpmdb: /var/lib/rpm/Name: unexpected file type or format
rpmdb: /var/lib/rpm/Name: unexpected file type or format
rpmdb: /var/lib/rpm/Basenames: unexpected file type or format
erreur: ne peut ouvrir l'index Basenames en utilisant db3 - Argument invalide (22)
Erreur de segmentation (core dumped)

Il faut supprimer l'intégralité des répertoires <path>/var/lib/rpm</path> et <path>/var/lib/yum</path>, et recréer les base de données RPM.

rm -rf /var/lib/rpm/?*
rm -rf /var/lib/yum/.??*
rpm --initdb