[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Stable et instable en même temps sur la même machine



On 08 Mar 2001 00:15:07 +0100, 
Laurent Martelli <laurent@linuxfan.com> wrote :
> 
> Est-ce que tu pourrais détailler un chouilla la manip ? Tu as relancé
> le prog d'install dans un chroot ? Tu avait deux partitions ? 

Allez, j'ai un texte que j'avais commencé à écire qui traîne dans un
coin. Je le livre brut et pour l'instant inachevé. Mais attention ! Je
jure qu'il ne s'agit ni d'une provocation ni d'un troll !

Marc


---------------------------------------------------------------------------
Il vous est peut-être arrivé récemment de lire d'un oeil rêveur un
article vantant les mérites d'outils tels que VMWare ou plex86, qui
permettent de faire tourner sous votre environnement favori un système
étranger dans une machine virtuelle. Il est vrai que la traditionnelle
capture d'écran montrant réunis ce qui ne devrait pas être sur le même
écran a de quoi fasciner.

Mais à méditer sur ces prouesses techniques, on en oublierait presque
qu'il est depuis très longtemps possible de se livrer à des amusements
de ce genre sous sa distribution Linux préférée, pour peu que l'on en
ait installé une autre sur une partition inutilisée de son disque.

Avant d'aller plus avant, un avertissement : ce qui va suivre risque
de choquer ceux pour qui, parce qu'ils utilisent la distribution X, la
distribution Y est diabolique, ceux qui ont du mal à voir que quelque
soit la déclinaison, c'est pour l'essentiel un système GNU/Linux
qu'ils utilisent.

Avant d'entrer dans les détails, résumons brièvement de quoi il
s'agit : le texte que vous lisez a été écrit sous la Debian 2.2
(potato), plus précisément avec l'éditeur Emacs de cette distribution,
utilisant la libc6 2.1.3-16 de la même distribution ainsi que sa
libX11, mais ... s'affichant sur le serveur X de la Red Hat 7 sous
laquelle le PC était en train de tourner.

Deux distributions, un noyau : n'y a-t-il pas là un belle idée ?

Voilà tout juste cinq ans que je travaille sous Linux et je suis
jusqu'ici resté fidèle à mes premières amours, ayant successivement
installé toutes les Red Hat de la 2.1 à la 7. Mais cela ne m'empêche
pas de regarder ailleurs, et voilà un moment que je lorgne sur la
Debian. C'est pour cela que j'ai depuis quelque temps une potato
installée sur une partition dédiée sur laquelle je boote de temps à
autre pour me faire la main et voir si je m'y trouve à mon aise.

Il m'est arrivé récemment de vouloir juste tester quelque chose en
vitesse et d'avoir la flemme de rebooter. Et de me souvenir tout d'un
coup que ce fameux appel système qu'on utilise dans certains démons
pour isoler l'appelant du reste de la machine est incarné dans l'un
des exécutables de /usr/sbin. Je parle bien sûr de chroot.

Il est assez amusant de, par exemple, taper dans un xterm d'une
machine Red Hat (sous root) :

# /usr/sbin/chroot /debian dpkg -l

et de voir défiler les noms des paquetages installés sur la partition
Debian. Cela est tellement pratique que l'on finit par y prendre goût.

Mais aujourd'hui, il a fallu que j'aille plus loin ; il fallait aller
de l'autre côté du miroir. Tout est parti d'un :

# /usr/sbin/chroot /debian bash

qui me mit face à face avec un prompt debian. Certes, tout n'a pas
marché parfaitement du premier coup : il m'a fallu monter /proc et
/dev/pts à la main, et remonter la racine en read-write. Mais après
cela, c'était exactement comme si j'étais logué dans ce terminal sur
une machine Debian distante. Je me suis même amusé à ouvrir une
connexion ppp avec pon, et à faire un apt-get update & upgrade pour
récupérer les mises à jour de sécurité et les installer. 

Le plus amusant, c'est que pendant la mise à jour, le réseau était
accessible depuis la Red Hat. Sans résolution de noms parce que les
scripts d'établissement de la connexion (ip-up et collègues) avaient
été court-circuités, et dnrd n'avait pas été lancé, mais tout le reste
marchait. Un seul noyau, vous disé-je... Inversement, une connexion
ouverte depuis la Red Hat est exploitable depuis la Debian.

Bon, amusons nous à lancer emacs. En mode console, cela marche bien.
Et sous X ? Evidemment [dans ce qui suit, les prompts 'deb $' et
'rh $' représenteront les environnements Debian et Red Hat,
respectivement],

deb $ export DISPLAY=:0 emacs

ne marche pas. Ce n'est en effet pas étonnant que personne ne réponde
sur le /tmp/.X11-unix/X0 de la Debian.

Qu'à cela ne tienne ! Passons par le réseau. Un essai :

deb $ DISPLAY=localhost:0 emacs

est plus encourageant : on répond que la permission a été refusée.
Ah ? quelqu'un écoute ? Un petit :

rh $ xhost + localhost

et tout baigne : Emacs-Debian s'affiche dans le serveur X-Red Hat.
C'est logique : il suffisait que localhost-RH autorise la connexion X
à localhost-Debian...

Tout marche impeccablement. Je m'amuse à taper un texte sous LaTeX,
puis à le visionner avec xdvi : ce dernier s'affiche également sur mon
écran. Encore une fois, tout donne vraiment l'impression que le
« terminal Debian » est connecté sur une machine distante. Tout, sauf
le fait que si je lance un ps sous Red Hat, je vois les processus
Debian et réciproquement. Un seul noyau...


Bon, je sens que certains s'offusquent. Ne serait-il pas plus correct
que les exécutables Debian tournent sous un serveur X Debian ? Et
bien, qu'il en soit ainsi :

deb $ startx -- :1

et nous voilà sous une session graphique Debian sur la vt8 (avec
toujours la session Red Hat sous la vt7). L'illusion est maintenant
presque parfaite : j'ai vraiment l'impression d'avoir booté sous
Debian. L'argument ":1" sert à ne pas rentrer en conflit avec le
serveur X RH qui écoute déjà sur le port 6000.


Bien sûr, la supercherie ne peut durer très longtemps. Un système
n'est pas composé que d'un noyau mais aussi de « démons » qui assurent
un certain nombre de services. Tôt ou tard, un utilisateur chrooté
sous Debian va découvrir que ce ne sont pas les démons Debian
qui répondent. 

Voici un premier exemple : il y a un seul démon sshd qui écoute sur le
port 22, c'est celui qui a été lancé au démarrage de la Red Hat. Ce
qui donne des transcriptions un peu surréalistes, comme par exemple :

lefranc@socrate:~$ head -2 /etc/issue
Debian GNU/\s 2.2 \n \l

lefranc@socrate:~$ ssh localhost
lefranc@socrate's password: 
Last login: Sun Nov 26 11:18:10 2000 from socrate
799 $ head -2 /etc/issue

Red Hat Linux release 7.0 (Guinness)

(oui, cela marche exactement pareil avec ssh 127.0.0.1. D'ailleurs, on
remarquera que les deux « machines » on bien le même nom, socrate).

[fin temporaire de la chose]




Reply to: