Hello everyone!
While attempting to install ROS Indigo on a factory reset Nao V5 (OpenNao 2.1.2) I encountered an unexpected problem.
The rootfs filesystem is mounted as / but no other filesystem is mounted to accommodate directories such as /usr.
Thus when more software is installed the rootfs filesystem quickly fills up and the installation fails.
So, my question is twofold:
+ Why is no other file system mounted as a replacement for rootfs when the system has been booted?
+ How can we reconfigure the system (repartitioning is not really an option) to not use the rootfs for all storage?
(I naively tried to move /usr to /var/persistent using a symlink and "bricked" a robot. Had to reset it.)
Below is more verbose information to replicate and diagnose the problem.
The instructions used (works nicely with 1.14.x):
The following emerge invocation fails (skipped apr* packages):
sudo emerge log4cxx netifaces pyyaml poco
With this error:
>>> Installing (4 of 4) dev-libs/poco-1.3.6_p2
/sbin/ldconfig: Writing of cache data failed: No space left on device
Traceback (most recent call last):
File "/usr/lib/portage/pym/portage/dbapi/_MergeProcess.py", line 188, in _spawn
prev_mtimes=self.prev_mtimes, counter=counter)
File "/usr/lib/portage/pym/portage/dbapi/vartree.py", line 4304, in merge
counter=counter)
File "/usr/lib/portage/pym/portage/dbapi/vartree.py", line 3835, in treewalk
writemsg_level=self._display_merge, vardbapi=self.vartree.dbapi)
File "/usr/lib/portage/pym/portage/proxy/objectproxy.py", line 31, in __call__
return result(*args, **kwargs)
File "/usr/lib/portage/pym/portage/util/env_update.py", line 72, in env_update
env, writemsg_level)
File "/usr/lib/portage/pym/portage/util/env_update.py", line 327, in _env_update
outfile.close()
File "/usr/lib/portage/pym/portage/util/__init__.py", line 1163, in close
f.close()
IOError: [Errno 28] No space left on device
>>> Failed to install dev-libs/poco-1.3.6_p2, Log file:
>> '/var/volatile/var/tmp/portage/dev-libs/poco-1.3.6_p2/temp/build.log'
A quick check using 'df -h' shows where the problem comes from:
Turns out emerge is installing the libraries to /usr (as expected) but /usr is _not_ mounted or linked
to the presistent sd card.
Filesystem Size Used Avail Use% Mounted on
rootfs 886M 886M 0 100% /
/dev/root 886M 886M 0 100% /
rc-svcdir 1.0M 92K 932K 9% /lib/rc/init.d
cgroup_root 10M 0 10M 0% /sys/fs/cgroup
udev 10M 124K 9.9M 2% /dev
tmpfs 502M 1.1M 501M 1% /dev/shm
tmpfs 502M 1.7M 500M 1% /var/volatile
/dev/mmcblk0p1 15G 194M 14G 2% /var/persistent
/dev/sda1 124M 6.7M 111M 6% /var/persistent/media/internal
OpenNao 1.14.x (not factory reset, but no ROS installed):
Filesystem Size Used Avail Use% Mounted on
rootfs 886M 512M 330M 61% /
/dev/root 886M 512M 330M 61% /
rc-svcdir 1.0M 88K 936K 9% /lib/rc/init.d
cgroup_root 10M 0 10M 0% /sys/fs/cgroup
udev 10M 160K 9.9M 2% /dev
tmpfs 502M 680K 501M 1% /dev/shm
tmpfs 502M 480K 502M 1% /var/volatile
/dev/mmcblk0p1 7.3G 603M 6.4G 9% /var/persistent
/dev/sda1 124M 9.0M 109M 8% /var/persistent/media/internal
OpenNao 2.1.x (factory reset):
Filesystem Size Used Avail Use% Mounted on
rootfs 886M 807M 34M 96% /
/dev/root 886M 807M 34M 96% /
rc-svcdir 1.0M 92K 932K 9% /lib/rc/init.d
cgroup_root 10M 0 10M 0% /sys/fs/cgroup
udev 10M 124K 9.9M 2% /dev
tmpfs 502M 1.2M 501M 1% /dev/shm
tmpfs 502M 1.6M 500M 1% /var/volatile
/dev/mmcblk0p1 15G 212M 14G 2% /var/persistent
/dev/sda1 124M 6.7M 111M 6% /var/persistent/media/internal
Sorry for the long email.
Any ideas? :)
Best wishes,
Jon Dybeck