La raison pour laquelle bash n'a pas voulu se lancer est la suivante: /bin/bash est dynamiquement lié à certaines bibliothèques. Il s'agit donc de trouver lesquelles, de les copier au bon endroit dans la nouvelle racine /mnt/chroot, et de recommencer. Pour cela, ldd est notre ami:
# ldd /bin/bash libtermcap.so.2 => /lib/libtermcap.so.2 (0x40020000) libdl.so.2 => /lib/libdl.so.2 (0x40025000) libc.so.6 => /lib/i686/libc.so.6 (0x40029000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Copions ces fichiers, et les fichiers sur lesquels ils pointent quand il s'agit d'un lien, au bon endroit (vérifiez comme moi que vous n'en copiez pas trop quand vous mettez une étoile) :
cp /lib/libtermcap.so* /mnt/chroot/lib cp /lib/libdl* /mnt/chroot/lib cp /lib/libc.so* /mnt/chroot/lib cp /lib/libc-* /mnt/chroot/lib cp /lib/ld* /mnt/chroot/lib
Et maintenant, recommençons:
# chroot /mnt/chroot/ /bin/bash [I have no name!@localhost /]#
Cela a marché! Allons plus loin pour vérifier que nous sommes bien à la nouvelle racine:
[I have no name!@localhost /]# ls bash: ls: command not found
Dommage, cela semblait si simple, finalement!
© 2003 Yves Mettier