On 9/3/21 22:02, Frans de Boer wrote:
On 9/2/21 11:35, Manfred Hollstein wrote:
On Thu, 02 Sep 2021, 11:15:00 +0200, Frans de Boer wrote:
It took me some time, but somehow bash is not behaving as expected within a
qemu-aarch64 chroot jail.

If I do the following:
  if test -r <some file>; then echo ok; fi
Then the reply is 'ok' under normal x86_64 TW.
Please show all details about <some file> within the chroot. The "-r"
flag checks "FILE exists and read permission is granted".
I used <some file> because you can pick ANY file with their read permission set. Of course I checked that.
However, when I started a chroot jail using qemu-aarch64 the reply stays empty.
Only when I execute
  if test !  -r <some file>; then echo ok; fi
the response is 'ok'. And <some file> is always the same.

I start the jail with the next command:
/usr/bin/qemu-aarch64 -strace -cpu cortex-a53 -L /newroot  /newroot/usr/sbin/
chroot  "/newroot" \
  /usr/bin/env -i \
    HOME=/root \
    TERM="$TERM" \
    PS1='(lfs chroot) \u:\w\$ ' \
    PS4='(${BASH_SOURCE}:${LINENO}: ${FUNCNAME[0]} - [${SHLVL},$
{BASH_SUBSHELL}, $?] ' \
    PATH=/usr/bin:/usr/sbin \
    /usr/bin/bash --login +h

Also, I copied a static version of qemu-aarch64 and qemu_binfmt into /newroot/
usr/bin - I also tried my own compiled version of qemu-aarch64-static, with the
same result.
Programs run, but bash seems to have this specific issue with the -r test.
Other flags I tested -f, -s, -x etc. are working correctly.
These flags don't check the _read_ permission for the executing user.
I never said that it would. And as a bonus, it is all at UID 0 level.
The -r flags is the only flag which - I presume - really does a reading test,
while others test availability and some file flags. Maybe binfmt is to blame??

It is blocking me from compiling programs under aarch64 because the configure
script is using these tests. If I change the ´-r´ flag within configure into a
´-s´, everything does work well.

Regards, Frans.
HTH, cheers.

l8er
manfred
--- Frans
Okay, after many more tests I still have problems with the -r and -x flags. Maybe some untested flags too.
Just tested additional -a, -d, -e, -f, -s flags. They work.
I found the -r and -x tests in configure and Makefiles and probably others too.

I trow the towel into the ring as far as building a new system image from scratch which differ from the building host and using qemu-xxxx and qemu-xxxx-binfmt. As far as I now understand, you need to have a running target system in order to build a new system image. Qemu can't help there.

How does OpenSuse build images for systems other then x86_64?

--- Frans.