Espressif have packaged the GCC-based toolchain for ESP8266 as a VirtualBox appliance running lubuntu which makes it super easy to get started with compiling your own firmware for the module.
All your code is expected to go in a shared folder on your host machine (OS X or Windows) that you mount to the virtual machine by running the mount.sh
script at /home/esp8266
:
#!/bin/sh
sudo mount -t vboxsf share /mnt/Share
The problem with this script is that all files in that shared folder will be owned by root:root
and the compiler running as user esp8266
will fail to create new files and include the necessary libraries. I am not sure if this is an issue only when running OS X as the VirtualBox host.
The solution is to specify the correct owner (user and group) for the mounted files. We figure that out by running umask && id
from the terminal:
$ umask && id 0002 uid=1000(esp8266) gid=1000(esp8266) groups=1000(esp8266),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),118(sambashare)
Then we modify the mount.sh
script to include the following option:
#!/bin/sh sudo mount -t vboxsf -o umask=0002,gid=1000,uid=1000 share /mnt/Share
and mount the shared folder by running
$ ./mount.sh
Which results in shared folder being mounted with the correct permissions: