When the VFS process starts, only the RAMFS file system is mounted to the root directory by default. If you need to mount other file systems, this can be done not only by using the mount()
call after the VFS starts but can also be done immediately when the VFS process starts by passing the necessary arguments and environment variables to it.
Let's examine three examples of mounting file systems at VFS startup. The Env
program is used to pass arguments and environment variables to the VFS process.
Mounting with the -l argument
A simple way to mount a file system is to pass the -l <entry in fstab format>
argument to the VFS process.
In this example, the devfs and romfs file systems will be mounted when the process named Vfs1
is started.
env.c
#include <env/env.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
const char* Vfs1Args[] = {
"-l", "devfs /dev devfs 0",
"-l", "romfs /etc romfs 0"
};
ENV_REGISTER_ARGS("Vfs1", Vfs1Args);
envServerRun();
return EXIT_SUCCESS;
}
Mounting with fstab from ROMFS
If an fstab file is added when building a solution, the file will be available through the ROMFS storage after startup. It can be used for mounting by passing the -f <path to fstab file>
argument to the VFS process.
In this example, the file systems defined via the fstab
file that was added during the solution build will be mounted when the process named Vfs2
is started.
env.c
#include <env/env.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
const char* Vfs2Args[] = { "-f", "fstab" };
ENV_REGISTER_ARGS("Vfs2", Vfs2Args);
envServerRun();
return EXIT_SUCCESS;
}
Mounting with an external fstab
Let's assume that the fstab file is located on a drive and not in the ROMFS image of the solution. To use it for mounting, you need to pass the following arguments and environment variables to VFS:
ROOTFS
. This variable lets you mount the file system containing the fstab file into the root directory.UNMAP_ROMFS
. If this variable is defined, the ROMFS storage is deleted. As a result, the fstab file will be sought in the file system mounted using the ROOTFS
variable.-f
. This argument is used to define the path to the fstab file.In the next example, the ext2 file system containing the /etc/fstab
file used for mounting additional file systems will be mounted to the root directory when the process named Vfs3
starts. The ROMFS storage will be deleted.
env.c
#include <env/env.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
const char* Vfs3Args[] = { "-f", "/etc/fstab" };
const char* Vfs3Envs[] = {
"ROOTFS=ramdisk0,0 / ext2 0",
"UNMAP_ROMFS=1"
};
ENV_REGISTER_PROGRAM_ENVIRONMENT("Vfs3", Vfs3Args, Vfs3Envs);
envServerRun();
return EXIT_SUCCESS;
}
Page top