Linux dans Linux dans Linux... (UserMode Linux)
Hiiijaaaa !
Aujourd'hui on va s'amuser un peu avec un linux qui tourne dans un linux qui tourne dans ...
Bien souvent, on peut se retrouver dans ls situation ou on aimerait expérimenter quelquechose sur un box Linux sans pénaliser les autres aplications (quelquechose d'un peu plus fort qu'un simple ulimit), simuler un réseau etc... Et en fait pour faire cela on va utiliser le User Mode Linux
Voila encore un super projet qui va nous permettre de lancer un linux pour y faire des "expériences" dignes de Billkenstein...
On recopie /usr/src/linux-2.4.26 dans notre home directory,
on va dedans et on fait un peu le ménage avev un make mrproprer
on récupére le patch uml pour la 2.4.26 uml-patch-2.4.26-1.bz2
Bon maintenant il faut patcher le source dans /home/cgil/linux-2.4.26 avec un chtit :
bzip2 -dc uml-patch-3.4.26-1.bz2 | patch -p1
make xconfig ARCH=um
Bon il y a des infos bien plus détaillées sur le site UML alors je vais pas m'étendre la-dessus.
A priori dans un premier temps vous pouvez laisser les options en standard et lancer la compilation :
make linux ARCH=um
ceci va créer un éxécutable du nom de "linux" et puis avec un chtit "strip linux" on lui donne une taille un peu plus raisonnable
Maintenant pour lancer notre nouveau Linux il faut un système de fichier,
On peut creer son propre filesystem
je vais utiliser une debian3.0 dans une debian. Il s'agit en fait d'un "root filesystem" déjà prêt que vous pouvez récupérez et copier dans le répertoire ou vous avez compiler UML. Pour lancer tout cela, on peut soit créer un lien symbolique du nom de root_fs avec un :
ln -s /home/cgil/linux-2.4.26/Debian-3.0r0.ext2 root_fs
et lancer ./linux qui va lire par défaut le fichier root_fs du répertoire courant
soit on lance le programme en précisant le fichier "root_filesystem" à utiliser avec :
./linux ubd0=Debian-3.0r0.ext2
Et voila on est dans un Linux qui est bridé et quand on est dedans il est quasiment impossible de savoir que l'on est juste "dans la matrice" ! Ou est l'éxtérieur, qu'est ce qui est vrai et réel ?! qui peut le dire... Et oui avec Linux c'est de la philosophie tout les jours,
n'hésite pas Man choisit la bonne main,
celle ou il y a Tux pingouin !
Un example plus complexe
./linux mem=64M ubd0=root_fs.rh-7.2-full.cow,root_fs.rh-7.2-full.pristine.20020312 ubd1=swap eth0=ethertap,tap2,C0:FF:EE:C0:FF:EE,192.168.0.254
La liste de tous les switchs se trouve sur le site
Aujourd'hui on va s'amuser un peu avec un linux qui tourne dans un linux qui tourne dans ...
Bien souvent, on peut se retrouver dans ls situation ou on aimerait expérimenter quelquechose sur un box Linux sans pénaliser les autres aplications (quelquechose d'un peu plus fort qu'un simple ulimit), simuler un réseau etc... Et en fait pour faire cela on va utiliser le User Mode Linux
Voila encore un super projet qui va nous permettre de lancer un linux pour y faire des "expériences" dignes de Billkenstein...
On recopie /usr/src/linux-2.4.26 dans notre home directory,
on va dedans et on fait un peu le ménage avev un make mrproprer
on récupére le patch uml pour la 2.4.26 uml-patch-2.4.26-1.bz2
Bon maintenant il faut patcher le source dans /home/cgil/linux-2.4.26 avec un chtit :
bzip2 -dc uml-patch-3.4.26-1.bz2 | patch -p1
make xconfig ARCH=um
Bon il y a des infos bien plus détaillées sur le site UML alors je vais pas m'étendre la-dessus.
A priori dans un premier temps vous pouvez laisser les options en standard et lancer la compilation :
make linux ARCH=um
ceci va créer un éxécutable du nom de "linux" et puis avec un chtit "strip linux" on lui donne une taille un peu plus raisonnable
Maintenant pour lancer notre nouveau Linux il faut un système de fichier,
On peut creer son propre filesystem
je vais utiliser une debian3.0 dans une debian. Il s'agit en fait d'un "root filesystem" déjà prêt que vous pouvez récupérez et copier dans le répertoire ou vous avez compiler UML. Pour lancer tout cela, on peut soit créer un lien symbolique du nom de root_fs avec un :
ln -s /home/cgil/linux-2.4.26/Debian-3.0r0.ext2 root_fs
et lancer ./linux qui va lire par défaut le fichier root_fs du répertoire courant
soit on lance le programme en précisant le fichier "root_filesystem" à utiliser avec :
./linux ubd0=Debian-3.0r0.ext2
Et voila on est dans un Linux qui est bridé et quand on est dedans il est quasiment impossible de savoir que l'on est juste "dans la matrice" ! Ou est l'éxtérieur, qu'est ce qui est vrai et réel ?! qui peut le dire... Et oui avec Linux c'est de la philosophie tout les jours,
n'hésite pas Man choisit la bonne main,
celle ou il y a Tux pingouin !
Un example plus complexe
./linux mem=64M ubd0=root_fs.rh-7.2-full.cow,root_fs.rh-7.2-full.pristine.20020312 ubd1=swap eth0=ethertap,tap2,C0:FF:EE:C0:FF:EE,192.168.0.254
La liste de tous les switchs se trouve sur le site
Commentaires