On 08 Mar 2001 00:15:07 +0100, 
Laurent Martelli <[EMAIL PROTECTED]> 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 :

[EMAIL PROTECTED]:~$ head -2 /etc/issue
Debian GNU/\s 2.2 \n \l

[EMAIL PROTECTED]:~$ ssh localhost
[EMAIL PROTECTED]'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]



Répondre à