Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Oct 2017 21:09:35 +0200
From:      "O. Hartmann" <ohartmann@walstatt.org>
Cc:        freebsd-arm@FreeBSD.org, FreeBSD Questions <freebsd-questions@freebsd.org>
Subject:   Re: NanoBSD: Current/NANO_ARCH=aarch64: chroot: : No such file or directory
Message-ID:  <20171015210935.5a50a85a@thor.intern.walstatt.dynvpn.de>
In-Reply-To: <20171012153922.6e747356@hermann>
References:  <bug-222924-7@https.bugs.freebsd.org/bugzilla/> <20171011204722.3622d73c@thor.intern.walstatt.dynvpn.de> <1507762426.8386.24.camel@freebsd.org> <20171012153922.6e747356@hermann>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
Am Thu, 12 Oct 2017 15:39:26 +0200
"Hartmann, O." <ohartmann@walstatt.org> schrieb:



> On Wed, 11 Oct 2017 16:53:46 -0600
> Ian Lepore <ian@freebsd.org> wrote:
> 
> > On Wed, 2017-10-11 at 20:47 +0200, O. Hartmann wrote:  
> > > Trying to install a successfully cross compiled FreeBSD
> > > (TARGET=arm64) as NanoBSD. NanoBSD is configure using
> > > NANO_ARCH="aarch64".
> > > 
> > > Port emulators/qemu-user-static is installed and loaded:
> > > 
> > >  8    1 0xffffffff8243f000 1564     imgact_binmisc.ko
> > > 
> > > When installing NanoBSD's world and then running mtree, the nanobsd
> > > script runs into this error:
> > > 
> > > /pool/nanobsd/aarch64/NANO_aarch64/_.w/./boot/loader.conf.local
> > > 283 blocks
> > > + [ -n /home/user/Projects/router/nanobsd/mtree/Files.mtree -a \
> > > 			-f /home/user/Projects/router/nanobsd/mtree/Files.mtree
> > > ]
> > > + CR 'mtree -eiU -p /'
> > > + chroot /pool/nanobsd/aarch64/NANO_aarch64/_.w '' /bin/sh -exc
> > > 'mtree -eiU -p /' chroot: : No such file or directory  
> 
> Oops, I confused the output.
> 
> The correct one is:
> 
> [ from _.cust.cust_install_files ]
> 
> ...
> + chroot /pool/nanobsd/aarch64/NANO_aarch64/_.w /bin/sh -exc 'mtree
>   -eiU -p /' chroot: /bin/sh: No such file or directory
> 
> The empty '' is due to my (hopeless helpless) attempt to fit-in another
> variable which was set to an empty string.
> 
> The error looks to me as chroot does't find the proper shell, /bin/sh,
> but it has been properly installed:
> 
> # file _.w/bin/sh
> _.w/bin/sh: ELF 64-bit LSB executable, ARM aarch64, version 1
> (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for
> FreeBSD 12.0 (1200051), FreeBSD-style, stripped
> 
> # ll _.w/bin/sh
> 839832 -r-xr-xr-x  1 root  wheel  uarch  261K 12 Okt. 15:32 _.w/bin/sh
> 
> NanoBSD works on the native host when building on host arch amd64 for
> host arch amd64 and I guess it is due to the properly installed OS of
> the host.
> 
> I do not get the problem here. qemu_user_static should catch up with
> the alien binary here - I suppose it does. The absolute path should
> ensure the use of the right binary ...
> 
> Regards,
> 
> Oliver
> 
> > >     
> > 
> > I'm not sure how or why it's happening (I've never used nanobsd), but
> > the complaint is about those empty quotes ('') between the pathname
> > and the /bin/sh in the chroot command.  It's trying to run a program
> > named '' and chroot is complaining that it can't find anything named
> > that.
> > 
> > -- Ian
> >   
> > > Is there anything I miss here with the QEMU emulator catching up?
> > > 
> > > Thanks in advance,
> > > 
> > > Oliver
> > >     
> 

I didn't find a solution to this problem, it might be that someone has already have such
a problem solved, so I'm sending CC'ed also to the list "questions".

The background is above described.

Running most recent qemu-user-static (qemu-user-static-2.9.94.g20171011), loaded and
running a kernel module, chrooting into a cross-compiled aarch64 installation of recent
12-CURRENT (r324621) fails with error (from NanoBSD):

[...]
chroot /pool/nanobsd/aarch64/NANO_aarch64/_.w /bin/sh -exc 'mtree -eiU -p /'
chroot: /bin/sh: No such file or directory

There is no further output so I fly blind. As mentioned above, /bin/sh is installed and
present in the chrooted target folder and  file states, that it has been compiled for
aarch64.

I tried manually the very same command - amongst other attempts to chroot and execute a
command - but always the same: I get the error shown above, no such file or directory.

Do I miss something here? Do I have to install some crosse development tools/libs into
the chrooted target first, so /bin/sh can be emulated correctly?

I'm quite new to cross compiling. But at this point with this thin, fainting amount of
information why it fails, I can't even start searching ...

Hopefully someone can shed some light on this.

Thanks in advance,

oh
-- 
O. Hartmann

Ich widerspreche der Nutzung oder Übermittlung meiner Daten für
Werbezwecke oder für die Markt- oder Meinungsforschung (§ 28 Abs. 4 BDSG).

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----

iLUEARMKAB0WIQQZVZMzAtwC2T/86TrS528fyFhYlAUCWeOybwAKCRDS528fyFhY
lFHmAf98Ypw4dHXVM+7ALrH9Ecinqdxt6qNawMKwuL1hVQda5DLX7rCIVNkMhLSI
lm1X78roO+KtV1Uc87Jl/Ib0GJ9GAf4jjCVjW+/WItAH68l/TQvng/NeOmyC3N4/
LodI5HkspYNEr0JOYGc0I7j3KWZ2kR03Z8XAEAgj/fxaMJAXBPMV
=e8TZ
-----END PGP SIGNATURE-----
help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20171015210935.5a50a85a>