Параметры запуска и переменные окружения VFS
Параметры запуска программы VFS
-l <запись в формате fstab>Параметр запуска
-lмонтирует заданную файловую систему.-f <путь к файлу fstab>Параметр
-fмонтирует файловые системы, указанные в файлеfstab. Если переменная окруженияUNMAP_ROMFSне определена, то поиск файлаfstabбудет выполнен в ROMFS-образе. Если переменная окруженияUNMAP_ROMFSопределена, то поиск файлаfstabбудет выполнен в файловой системе, заданной через переменную окруженияROOTFS.
Примеры использования параметров запуска программы VFS
Переменные окружения программы VFS
UNMAP_ROMFSЕсли переменная окружения
UNMAP_ROMFSопределена, то ROMFS-образ будет удален из памяти. Это позволяет сэкономить память, а также при использовании параметра запуска-fдает возможность выполнить поиск файлаfstabне в ROMFS-образе, а в файловой системе, заданной через переменную окруженияROOTFS.ROOTFS = <запись в формате fstab>Переменная окружения
ROOTFSпозволяет монтировать заданную файловую систему в корневую директорию. При использовании параметра запуска-fкомбинация переменных окруженияROOTFSиUNMAP_ROMFSдает возможность выполнить поиск файлаfstabне в ROMFS-образе, а в файловой системе, заданной через переменную окруженияROOTFS.VFS_SERVER_MAX_THREADS_PER_CLIENTПеременная
VFS_SERVER_MAX_THREADS_PER_CLIENTопределяет число потоков процесса VFS, выделяемых на один IPC-канал.VFS_NETWORK_BACKEND=<имя VFS-бэкенда>:<имя IPC-канала до процесса VFS>Переменная окружения
VFS_NETWORK_BACKENDзадает VFS-бэкенд для работы с сетевым стеком. При этом:- Можно указать имя стандартного VFS-бэкенда:
client(для программы, исполняющейся в контексте клиентского процесса),server(для программы VFS, исполняющейся в контексте серверного процесса),local,relay(при использовании механизма VFS relay), а также имя пользовательского VFS-бэкенда. - Может быть указано более одного IPC-канала через запятую.
- Если используется VFS-бэкенд
local, то имя IPC-канала не указывается (VFS_NETWORK_BACKEND=local:). - При использовании динамических IPC-каналов вместо имени IPC-канала до процесса VFS необходимо указать имя процесса VFS, например:
VFS_NETWORK_BACKEND: client:kl.VfsNet. - При использовании стандартного бэкенда
clientможно указывать различные значения переменныхVFS_NETWORK_BACKENDиVFS_FILESYSTEM_BACKEND. Однако при использовании стандартных бэкендовserver,relayилиlocalнеобходимо либо указывать значение только одной из этих переменных, либо указывать одинаковые значения обеих переменных. - Если значение переменной
VFS_NETWORK_BACKENDне указано, но при этом указано значение переменнойVFS_FILESYSTEM_BACKEND, то использование сетевых операций будет приводить к завершению работы программы VFS.
- Можно указать имя стандартного VFS-бэкенда:
VFS_FILESYSTEM_BACKEND=<имя VFS-бэкенда>:<имя IPC-канала до процесса VFS>Переменная окружения
VFS_FILESYSTEM_BACKENDзадает VFS-бэкенд для работы с файловыми системами. При этом:- Можно указать имя стандартного VFS-бэкенда:
client(для программы, исполняющейся в контексте клиентского процесса),server(для программы VFS, исполняющейся в контексте серверного процесса),local,relay(при использовании механизма VFS relay), а также имя пользовательского VFS-бэкенда. - Может быть указано более одного IPC-канала через запятую.
- Если используется VFS-бэкенд
local, то имя IPC-канала не указывается (VFS_NETWORK_BACKEND=local:). - При использовании динамических IPC-каналов вместо имени IPC-канала до процесса VFS необходимо указать имя процесса VFS, например:
VFS_FILESYSTEM_BACKEND: client:kl.VfsFs. - При использовании стандартного бэкенда
clientможно указывать различные значения переменныхVFS_NETWORK_BACKENDиVFS_FILESYSTEM_BACKEND. Однако при использовании стандартных бэкендовserver,relayилиlocalнеобходимо либо указывать значение только одной из этих переменных, либо указывать одинаковые значения обеих переменных. - Если значение переменной
VFS_FILESYSTEM_BACKENDне указано, но при этом указано значение переменнойVFS_NETWORK_BACKEND, то использование файловых операций будет приводить к завершению работы программы VFS.
- Можно указать имя стандартного VFS-бэкенда:
VFS_GENERAL_PIPE_BUFFER_SIZE=<количество байт>Переменная окружения
VFS_GENERAL_PIPE_BUFFER_SIZEзадаёт максимальный размер буфера (в байтах), который может быть использован неименованным каналом (pipe) для хранения передаваемых данных. Этот размер может быть впоследствии изменен с помощью макросаF_SETPIPE_SZфункцииfcntl(). Минимальное значение переменной окружения равно одной странице памяти (PAGE_SIZE), максимальное значение:1048576байт, значение по умолчанию:65536байт.RUMP_NETEN_NAME_POLICY=<список политик именования сетевых интерфейсов>Переменная окружения
RUMP_NETEN_NAME_POLICYопределяет список политик именования сетевых интерфейсов для VFS. Политики указываются через запятую в порядке применения (например,RUMP_NETEN_NAME_POLICY="path,alias,default"). Возможные названия политик и их описания представлены в таблице ниже. Если первая указанная политика неприменима для текущего устройства (см. колонку "Применимость политики" в таблице ниже), используется вторая, и так далее. Самой последней (или если никакие политики не указаны) применяется политикаdefault.Политики именования сетевых интерфейсов
Политика
Примеры имен
Шаблон формирования имени
Применимость политики
defaulten0– первый интерфейс Ethernet.en1– второй интерфейс Ethernet.wl0– первый интерфейс Wi-Fi.wwan0– первый модемный интерфейс.<prefix><index>:<prefix>– префикс, определяющий тип интерфейса;<index>– порядковый номер устройства c типом интерфейса<prefix>, начиная с0.
Для всех устройств.
pathenp1s4f0– PCIE-устройство с PCI-сегментом1, PCI-шиной4и PCI-функцией0.<prefix>p<segment>s<bus>f<function>:<prefix>– префикс, определяющий тип интерфейса;<segment>– номер сегмента PCI;<bus>– номер шины PCI;<function>– номер функции PCI.
Только для PCIE-устройств
aliasethernet0– первый интерфейс Ethernet.ethernet1– второй интерфейс Ethernet.wlan0– первый интерфейс Wi-Fi.modem0– первый модемный интерфейс.Используется псевдоним устройства, определенный в DTB (Device Tree Blob).
Только если псевдоним устройства определен в DTB.
devloc_hashenhf392eda5– Ethernet-устройство с хеш-кодом местоположенияf392eda5.<prefix>h<hash>:<prefix>– префикс, определяющий тип интерфейса;<hash>– хеш-код, вычисленный по строке местоположения устройства (пример строки местоположения:pcie:1:4:0).
Кроме USB-устройств.
macenxd4570a623ebc– Ethernet-устройство с MAC-адресомd4:57:0a:62:3e:bc.<prefix>x<mac_address>:<prefix>– префикс, определяющий тип интерфейса;<mac_address>– MAC-адрес устройства, представленный в виде шестнадцатеричной строки без разделителей (двоеточий).
Только для устройств, использующих MAC-адреса для идентификации в сети (устройств, относящихся ко второму уровню модели OSI).
hwaddr_hashenhf392eda5– Ethernet-устройство с хеш-кодом аппаратного адресаf392eda5.<prefix>h<hash>:<prefix>– префикс, определяющий тип интерфейса;<hash>– хеш-код, вычисленный по аппаратному адресу устройства.
Только для портов с аппаратным адресом.
Префиксы, определяющие типы интерфейсов:
enдля Ethernet-интерфейсов,wlдля Wi-Fi-интерфейсов,wwanдля модемных интерфейсов.Хеш-коды вычисляются с помощью алгоритма MurmurHash2.
Значения по умолчанию для параметров запуска и переменных окружения VFS
Для исполняемого файла VfsRamFs:
ROOTFS = ramdisk0,0 / ext4 0
VFS_FILESYSTEM_BACKEND = server:kl.VfsRamFs
Для исполняемого файла VfsSdCardFs:
ROOTFS = mmc0,0 / fat32 0
VFS_FILESYSTEM_BACKEND = server:kl.VfsSdCardFs
-l nodev /tmp ramfs 0
-l nodev /var ramfs 0
Для исполняемого файла VfsNet:
VFS_NETWORK_BACKEND = server:kl.VfsNet
VFS_FILESYSTEM_BACKEND = server:kl.VfsNet
-l devfs /dev devfs 0