Компонент VFS по умолчанию обеспечивает доступ к:
-f
.Если требуется монтировать другие файловые системы, это можно сделать как после запуска VFS, используя вызов mount()
, так и непосредственно в момент запуска сущности VFS, передав ей следующие аргументы и переменные окружения:
-l <запись в формате fstab>
Аргумент -l
позволяет монтировать файловую систему.
-f <путь к файлу fstab>
Аргумент -f
позволяет передать файл с записями в формате fstab для монтирования файловых систем. Файл будет искаться в ROMFS-хранилище. Если переменная UMNAP_ROMFS
определена, то файл будет искаться на файловой системе, смонтированной с помощью переменной ROOTFS
.
UNMAP_ROMFS
Если переменная UNMAP_ROMFS
определена, то ROMFS-хранилище будет удалено. Это позволяет сэкономить память и изменить поведение при использовании аргумента -f
.
ROOTFS = <запись в формате fstab>
Переменная ROOTFS
позволяет монтировать файловую систему в корневой каталог. В комбинации с переменной UNMAP_ROMFS
и аргументом -f
позволяет искать fstab-файл на монтированной файловой системе, а не в ROMFS-хранилище.
Пример:
env.c
#include <env/env.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
/* Для сущности Vfs1 будут монтированы файловые системы devfs и romfs. */
const char* Vfs1Args[] = {
"-l", "devfs /dev devfs 0",
"-l", "romfs /etc romfs 0"
};
ENV_REGISTER_ARGS("Vfs1", Vfs1Args);
/* Для сущности Vfs2 будут монтированы файловые системы, заданные через файл /etc/dhcpcd.conf, который расположен в ROMFS-хранилище. */
const char* Vfs2Args[] = { "-f", "/etc/dhcpcd.conf" };
ENV_REGISTER_ARGS("Vfs2", Vfs2Args);
/* Для сущности Vfs3 в корневой каталог будет монтирована файловая система ext2, на которой будет найден файл /etc/fstab для монтирования дополнительных файловых систем. ROMFS-хранилище будет удалено. */
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;
}
См. также примеры net_with_separate_vfs, net2_with_separate_vfs, multi_vfs_dhcpcd, multi_vfs_dns_client и multi_vfs_ntpd в составе KasperskyOS Community Edition.
В начало