qemu and chroot

qemu and chroot

Erez D erez0001 at gmail.com
Sun Jun 22 10:41:25 IDT 2014


On Tue, May 20, 2014 at 12:13 PM, Erez D <erez0001 at gmail.com> wrote:
> ok, it now works
> /proc/sys/fs/binfmt_misc/qemu-arm was missing,
> internet searc told me to look for 'binfmt-support' pkg, however i
> could not find none for centos6
> so as chrooted systems share the same kernel (just need to mount /proc
> under the chroot dir), I chroot to my wheezy_i686 (i have some chroots
> for testing other disros), and there i did apt-get install
> binfmt-support qemu-user-static, and update-binfmts --display
>
> now i have /proc/sys/fs/binfmt_misc/qemu-arm. amd everything works again
>
>
> (i do not know if this is permenent or will require redoing after
> reboot), but i will check it at next reboot (somthing like in 6 months
> ;-)

it seems that it not permamenent.
my chroot has a /etc/init.d/binfmt-support script which makes it permanent,
however i do not boot the chroot system ;-)
so i added the following line to rc.local :
chroot /home/chroot/wheezy_i686/  /etc/init.d/binfmt-support start

now it is permenent
(i wish centos had this package so i wouldn't have to deal with such hacks).

>
> thanks
> erez
>
> On Tue, May 20, 2014 at 11:22 AM, Tzafrir Cohen <tzafrir at cohens.org.il> wrote:
>> On Tue, May 20, 2014 at 09:14:16AM +0300, Erez D wrote:
>>> I am using centos 6 and  developing for an armel platform
>>>
>>> i created a rootfs using multistrap/debbootstrap
>>>
>>> i copied qemu-arm-static to rootfs/usr/bin/qemu-arm-static
>>
>> There's something missing from your description. I suspect you forgot to
>> mention it: debootstrap's run can be broken to two parts: one that
>> downloads everything, and the second stage that needs to run inside the
>> chroot. In that case:
>>
>>   debootstrap --foreign [--arch=] [rest of parameters]
>>   chroot to/chroot
>>   ./debootstrap --second-stage
>>
>> At least in Debian, the package qemu-user-static includes the wrapper
>> qemu-debootstrap to do just that, and also copy the required
>> qemu-user-static.
>>
>>>
>>> and i was astonished that doing just 'chroot rootfs' worked, without
>>> explicitly telling 'chroot' to use qemu-arm-static - somehow it decided
>>> automatically to run everything under qemu-arm-static without me telling it
>>> to.
>>>
>>>
>>> after a restart of the server. rootfs does not work anymore automatically,
>>> i get a "chroot: failed to run command `/bin/bash': Exec format error"
>>> doing "chroot rootfs /usr/bin/qemu-arm-static /bin/bash" does chroot, but
>>> i get : "bash: /bin/cat: cannot execute binary file" (although
>>> rootfs/bin/cat is a perfectly ok armel binary, tested on the armel target).
>>> i also checked the md5sum of the rootfs/qemu-arm-static binary, and it is ok
>>
>> A chroot does not replace the kernel. It's running on your kernel and
>> that kernel does not natively support the armel binaries.
>>
>> In Debian, the package qemu-user-static registers foreign Linux ELF
>> formats. So maybe you forgot this is needed. Specifically:
>>
>> $ cat /proc/sys/fs/binfmt_misc/qemu-arm
>> enabled
>> interpreter /usr/bin/qemu-arm-static
>> flags:
>> offset 0
>> magic 7f454c4601010100000000000000000002002800
>> mask ffffffffffffff00fffffffffffffffffeffffff
>>
>> --
>> Tzafrir Cohen         | tzafrir at jabber.org | VIM is
>> http://tzafrir.org.il |                    | a Mutt's
>> tzafrir at cohens.org.il |                    |  best
>> tzafrir at debian.org    |                    | friend
>>
>> _______________________________________________
>> Linux-il mailing list
>> Linux-il at cs.huji.ac.il
>> http://mailman.cs.huji.ac.il/mailman/listinfo/linux-il



More information about the Linux-il mailing list