# linux_dist-gentoo-stage3 : issue dealing with rm in chrooted environment



## TitusCrow (Dec 18, 2012)

Hi freeBSD users !

I'm facing a problem dealing with the gentoo stage3 port, and as my searches on Google were unsuccessful, I decided to write my first thread here. Hope someone will be able to point me to the right direction !

Actually, I would like to test CUDA samples on FreeBSD OS, using the Linux compatibility layer and native FreeBSD NVidia drivers. Unfortunately, I'm stuck before I could test this.

This is what I did so far :

1. First, I installed a fresh FreeBSD using the "netinst" of freeBSD 9.0.


```
uname -a
FreeBSD TestBSD 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan  3 07:46:30 UTC 2012 /usr/obj/usr/src/sys/GENERIC  amd64
```

2. Then, I installed linux_base-f10 and nvidia-driver ports (nvidia-driver port has an option to consider linux compatibility that need the linux_base-f10 port):

`#  cd /usr/ports/emulators/linux_base-f10 && make install clean`
and
`#  cd /usr/ports/x11/nvidia-driver && make install clean`

3. As I intend to compile CUDA stuff in a simili-Linux box, I also installed linux_dist-gentoo-stage3:

`#  cd /usr/ports/emulators/linux_dist-gentoo-stage3 && make install clean`

Everything went flawlessly, using default settings (meaning I've a i386 linux_base-f10 and a i486 linux_dist-gentoo-stage3). The Linux and NVidia modules are loaded, respectively in /etc/rc.conf and /boot/loader.conf :

```
# kldstat
Id Refs Address            Size     Name
 1   10 0xffffffff80200000 11cd9b0  kernel
 2    1 0xffffffff813ce000 ee73e8   nvidia.ko
 3    2 0xffffffff822b6000 45090    linux.ko
```

4. Doing some searches on Internet dealing with chrooted environments in FreeBSD, I found that I need to do some mounting for the chrooted environment to work correctly:

`# mount -t linprocfs linproc /usr/local/gentoo-stage3/proc` 
`# mount -t linsysfs linsys /usr/local/gentoo-stage3/sys` 
`# mount -t devfs devfs  /usr/local/gentoo-stage3/dev`

5. Phew ! OK, now let's try to use this gentoo stage3 !


```
chroot /usr/local/gentoo-stage3/ /bin/bash
TestBSD / # emerge --sync

sent 48.88K bytes  received 7.02M bytes  59.62K bytes/sec
total size is 268.27M  speedup is 37.97

 * An update to portage is available. It is _highly_ recommended
 * that you update portage now, before any other packages are updated.

 * To update portage, run 'emerge portage' now.

TestBSD / #
```

This is the point where I'm facing issues.

6. In order to compile things in this chroot, the Gentoo portage provides /usr/portage/scripts/bootstrap.sh. However, whether I launch this script or decide to update portage, here's what I get:


```
TestBSD / # emerge portage
Calculating dependencies... done!

>>> Verifying ebuild manifests

>>> Starting parallel fetch

>>> Emerging (1 of 5) sys-devel/m4-1.4.16
 * m4-1.4.16.tar.xz SHA256 SHA512 WHIRLPOOL size ;-) ...                                          [ ok ]
>>> Unpacking source...
>>> Unpacking m4-1.4.16.tar.xz to /var/tmp/portage/sys-devel/m4-1.4.16/work
tar: m4-1.4.16/THANKS: Cannot utime: Bad file descriptor
tar: m4-1.4.16/NEWS: Cannot utime: Bad file descriptor
tar: m4-1.4.16/Makefile.am: Cannot utime: Bad file descriptor

[...]

 * ERROR: sys-devel/m4-1.4.16 failed (unpack phase):
 *   failure unpacking m4-1.4.16.tar.xz

TestBSD / #
```

Googling this points me to a solution (Link)
Indeed, using 

```
TestBSD / # export TAR_OPTIONS='--touch'
```
makes the messages disappear.. 

7. However :


```
TestBSD / # export TAR_OPTIONS='--touch'
TestBSD / # emerge portage
Calculating dependencies... done!

>>> Verifying ebuild manifests

[...]

checking for a BSD-compatible install... rm: cannot remove `conftest.dir/conftest.one': Bad file descriptor
rm: cannot remove `conftest.dir/conftest.two': Bad file descriptor
[...]
checking whether the C compiler works... rm: cannot remove `conftest.dir': Is a directory
yes
[...]
checking dependency style of i486-pc-linux-gnu-gcc... mkdir: cannot create directory `conftest.dir': File exists
touch: setting times of `sub/conftst1.h': Invalid argument
touch: setting times of `sub/conftst2.h': Invalid argument
touch: setting times of `sub/conftst3.h': Invalid argument
touch: setting times of `sub/conftst4.h': Invalid argument
touch: setting times of `sub/conftst5.h': Invalid argument
touch: setting times of `sub/conftst6.h': Invalid argument
rm: cannot remove `conftest.dir/conftest.one': Bad file descriptor
rm: cannot remove `conftest.dir/conftest.two': Bad file descriptor
rm: cannot remove `conftest.dir/depcomp': Bad file descriptor
rm: cannot remove `conftest.dir/sub': Bad file descriptor
rm: cannot remove `conftest.dir/confmf': Bad file descriptor
rm: cannot remove `conftest.dir/conftest.err': Bad file descriptor
[...]
```

And this, of course, ends in error state.

Conclusion:

So far, I haven't been able to go beyond this step... and googling these error messages does not point me to relevant informations :/ . 
I also tried without success to mount outside the chroot the /usr/local/gentoo-stage3/tmp and /usr/local/gentoo-stage3/var/tmp/portage as _tmpfs_.

Any help would be greatly appreciated !!

Thanks for your reading !


----------



## TitusCrow (Dec 19, 2012)

I reply to myself :
I found this Link explaining a workaround :



> [font="Courier New"] This can be worked around by adding a symlink to busybox:
> 
> 
> ```
> ...



Applying this in my chroot environment gives me the expected result


----------

