При запуске процесса VFS по умолчанию монтируется только файловая система RAMFS, в корневую директорию. Если требуется монтировать другие файловые системы, это можно сделать не только с помощью вызова mount()
после запуска VFS, но и непосредственно при запуске процесса VFS – передав ему нужные аргументы и переменные окружения.
Рассмотрим три примера монтирования файловых систем при запуске VFS. Для передачи аргументов и переменных окружения процессу VFS использована программа Env
.
Монтирование с помощью аргумента -l
Простой способ монтировать файловую систему – это передать процессу VFS аргумент -l <запись в формате fstab>
.
В этом примере при запуске процесса с именем Vfs1
будут монтированы файловые системы devfs и romfs.
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;
}
Монтирование с помощью fstab из ROMFS
Если при сборке решения добавить fstab-файл, после старта он будет доступен через ROMFS-хранилище. Его можно использовать для монтирования, передав процессу VFS аргумент -f <путь к fstab-файлу>
.
В этом примере при запуске процесса с именем Vfs2
будут монтированы файловые системы, заданные через файл fstab
, который был добавлен при сборке решения.
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;
}
Монтирование с помощью "внешнего" fstab
Пусть fstab-файл находится не в ROMFS-образе решения, а на диске. Чтобы использовать его для монтирования, необходимо передать VFS следующие аргументы и переменные окружения:
ROOTFS
. Эта переменная позволяет монтировать в корневую директорию файловую систему, в которой находится fstab-файл.UNMAP_ROMFS
. Если эта переменная определена, ROMFS-хранилище удаляется. В итоге fstab-файл будет искаться на файловой системе, смонтированной с помощью переменной ROOTFS
.-f
. Этот аргумент используется, чтобы задать путь к fstab-файлу.В следующем примере при запуске процесса с именем Vfs3
в корневой каталог будет монтирована файловая система ext2, на которой будет найден файл /etc/fstab
для монтирования дополнительных файловых систем. ROMFS-хранилище будет удалено.
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;
}
В начало