Re: chrooting in a 32-bit world from a 64-bit kernel+world



On Tue, Sep 30, 2008 at 10:38:10PM +0200, Mel wrote:
On Tuesday 30 September 2008 21:57:22 Olivier Smedts wrote:
On Tue, Sep 30, 2008 at 09:28:39PM +0200, Mel wrote:
On Tuesday 30 September 2008 20:44:02 Olivier Smedts wrote:
So far I've got a working FreeBSD (kernel+world) in a 512MB image I can
dump on a CompactFlash card :
# cd /usr/src
# make buildworld TARGET=i386
# make buildkernel TARGET=i386
# mount /dev/md0a /mnt
(md0 is a 512MB file backed image I bsdlabel'd and newfs'd before)
# make installworld TARGET=i386 DESTDIR=/mnt
# make distribution TARGET=i386 DESTDIR=/mnt
# make installkernel TARGET=i386 DESTDIR=/mnt

The problem is that I can't chroot in this 32-bit world.
Say I want to install the sysutils/screen port in /mnt :

# mkdir /mnt/usr/ports
# mount -t nullfs /usr/ports /mnt/usr/ports
# mount -t devfs devfs /mnt/dev

It's a guess, but at this point:
chroot /mnt /etc/rc.d/ldconfig start

First, thank you for replying so fast !

/etc/rc.d/ldconfig is a /bin/sh script, and I can't run /bin/sh in this
chroot. Same errors.

If that don't work:
/sbin/ldconfig -32 -s -f /mnt/var/run/ld-elf.so.hints /mnt/lib \
/mnt/usr/lib

After that command, the shared libraries are found, but ld refers to /mnt :
# ldconfig -rf /mnt/var/run/ld-elf.so.hints
/mnt/var/run/ld-elf.so.hints:
search directories: /mnt/lib:/mnt/usr/lib
0:-lc.7 => /mnt/lib/libc.so.7
1:-lcrypt.4 => /mnt/lib/libcrypt.so.4
[...]

Right.
cd /mnt
rmdir mnt
ln -s . mnt

The old chroot symlink hack.

And then when trying to chroot, still the same problem. I also can't launch
ldconfig in the jail :
# chroot /mnt/ /sbin/ldconfig -32 -s -f /var/run/ld-elf.so.hints /lib
/usr/lib ELF interpreter /libexec/ld-elf.so.1 not found
Abandon

If you have /rescue there, maybe chroot /mnt /rescue/ldconfig /lib /usr/lib
will help you. I'm pretty sure it's the missing hints causing this.

If all this fails, I'd try running /mnt as a jail.

Thanks for the advices. At least statically compiled binaries in /rescue work.
# chroot /mnt /rescue/sh
# /rescue/ldconfig /lib /usr/lib
# /rescue/ldconfig -r
/var/run/ld-elf.so.hints:
search directories: /lib:/usr/lib
0:-lc.7 => /lib/libc.so.7
1:-lcrypt.4 => /lib/libcrypt.so.4
[...]
# sh
ELF interpreter /libexec/ld-elf.so.1 not found
Abort trap
#

No luck with the symlink hack or a jail :
Configuring jails:.
Starting jails:ELF interpreter /libexec/ld-elf.so.1 not found
cannot start jail "fanless":
Abort trap
..

I'll try to boot directly in the 32-bit world with my 64-bit kernel.
I think it should work. In that case, there's maybe something to configure
in the amd64 host's ldconfig or ld-elf.so.1 before chrooting in a 32-bit world.


--
Mel

Problem with today's modular software: they start with the modules
and never get to the software part.

--
Olivier Smedts _
ASCII ribbon campaign ( )
e-mail: olivier@xxxxxxxx - against HTML email & vCards X
www: http://www.gid0.org - against proprietary attachments / \

"Il y a seulement 10 sortes de gens dans le monde :
ceux qui comprennent le binaire,
et ceux qui ne le comprennent pas."
_______________________________________________
freebsd-questions@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • Re: chrooting in a 32-bit world from a 64-bit kernel+world
    ... The problem is that I can't chroot in this 32-bit world. ... I'd try running /mnt as a jail. ... Problem with today's modular software: ...
    (freebsd-questions)
  • Re: FTP guest access chroot not working
    ... the "root" dir for the chroot is /home/someguy/ftp ... # chroot ftp users ... cannot get out of that jail. ... if you created a symlink inside the jail that points to some real ...
    (comp.unix.sco.misc)
  • Re: /devices jailbreak
    ... however as duplicating device special files does /not/ ... processes in a chroot env will ... duplicates in the chrootjail ultimately lead to the same actual ... But that path will be in the chrootjail, as far as the jailed process ...
    (comp.unix.solaris)
  • Re: /devices jailbreak
    ... processes in a chroot env will ... outside the chroot environment will of course report the device paths ... within the jail as a normal user with the restricted Korn ... directory tree, as expected, except for a couple /devices files ...
    (comp.unix.solaris)
  • Re: jail getfsstat patches.
    ... > exact right thing from a jail. ... the file system is visible. ... This introduces the same dependency found in the mount system call ... mount table and reject it rather than unmount by path. ...
    (freebsd-current)