KasperskyOS Community Edition 1.0

Инструменты для сборки решения

Этот раздел содержит описание скриптов, утилит, компиляторов и шаблонов сборки, поставляемых в KasperskyOS Community Edition.

В этом разделе

Скрипты и компиляторы

Подготовка загрузочного образа решения

Развертывание загрузочного образа решения на целевых устройствах

В начало

Скрипты и компиляторы

Этот раздел содержит описание скриптов, утилит и компиляторов, поставляемых в рамках KasperskyOS Community Edition.

В этом разделе

Утилиты и скрипты сборки

Кросс-компиляторы

В начало

Утилиты и скрипты сборки

В состав KasperskyOS Community Edition входят следующие утилиты и скрипты сборки:

  • nk-gen-c

    Компилятор NK (nk-gen-c) генерирует набор транспортных методов и типов на основе EDL-, CDL- и IDL-описаний программ, компонентов и интерфейсов. Транспортные методы и типы нужны для формирования, отправки, приема и обработки IPC-сообщений.

  • nk-psl-gen-c

    Компилятор nk-psl-gen-c генерирует исходный код модуля безопасности Kaspersky Security System на основе файла политики безопасности решения (security.psl) и EDL-описаний программ, входящих в решение.

  • einit

    Утилита einit позволяет автоматизировать создание кода инициализирующего программы Einit. Это приложение первым запускается при загрузке KasperskyOS и запускает остальные программы, а также создает каналы (соединения) между ними.

  • makekss

    Скрипт makekss создает модуль безопасности Kaspersky Security System для ядра KasperskyOS.

  • makeimg

    Скрипт makeimg создает финальный загружаемый образ решения на базе KasperskyOS со всеми запускаемыми программами и модулем Kaspersky Security System.

В этом разделе

nk-gen-c

nk-psl-gen-c

einit

makekss

makeimg

В начало
nk-gen-c

Компилятор NK (nk-gen-c) генерирует набор транспортных методов и типов на основе EDL-, CDL- и IDL-описаний классов процессов, компонентов и интерфейсов. Транспортные методы и типы нужны для формирования, отправки, приема и обработки IPC-сообщений.

Транспортные методы и типы генерируются с полностью квалифицированными именами. В именах в качестве префиксов используется полное имя класса процесса/компонента/интерфейса. (объявленное в соответствующем EDL-, CDL- или IDL-файле) с заменой точек на подчеркивания (_).

Компилятор NK принимает EDL-, CDL- или IDL-файл и создает следующие файлы:

  • H-файл, содержащий объявление и реализацию транспортных методов и типов.
  • D-файл, в котором перечислены зависимости созданного C-файла. Этот файл может быть использован для автоматизации сборки с помощью утилиты make.

Синтаксис использования компилятора NK:

nk-gen-c [-I PATH][-o PATH][--types][--interface][--client][--server][--extended-errors][--enforce-alignment-check][--help][--version] FILE

Параметры:

  • FILE

    Путь к EDL-, CDL- или IDL-описанию класса процесса, компонента или интерфейса, для которого необходимо сгенерировать транспортные методы и типы.

  • -I PATH

    Путь к директории, содержащей вспомогательные файлы, необходимые для генерации транспортных методов и типов. По умолчанию эти файлы располагаются в директории /opt/KasperskyOS-Community-Edition-<version>/sysroot-arm-kos/include.

    Также может использоваться для добавления других директорий для поиска файлов, необходимых для генерации.

    Чтобы указать более одной директории, можно использовать несколько параметров -I.

  • -o PATH

    Путь к существующей директории, в которой будут созданы файлы, содержащие транспортные методы и типы.

  • -h, --help

    Отображает текст справки.

  • --version

    Отображает версию nk-gen-c

  • --enforce-alignment-check

    Включает обязательную проверку выравнивания обращений к памяти, даже если такая проверка отключена для целевой платформы. Если проверка включена, то компилятор NK добавляет дополнительные проверки выравнивания в код валидаторов IPC-сообщений.

    По умолчанию параметры проверки выравнивания обращения к памяти задаются для каждой платформы в файле system.platform.

  • --extended-errors

    Включает расширенную обработку ошибок в коде клиентских и серверных методов.

Выборочная генерация

Чтобы уменьшить количество генерируемого компилятором NK кода, можно использовать флаги выборочной генерации. Например, для программ, реализующих интерфейсы, удобно использовать флаг --server, а для программ, являющихся клиентами интерфейсов, удобно использовать флаг --client.

Если ни один из флагов выборочной генерации не указан, компилятор NK создаст все возможные для указанного файла транспортные типы и методы.

Флаги выборочной генерации для описаний интерфейсов (IDL-файлов):

  • --types

    Компилятор создаст только файлы, содержащие все константы и типы, включая переопределенные (typedef), из входного IDL-файла, а также типы из импортируемых IDL-файлов, которые используются в типах входного файла.

    При этом константы и переопределенные типы из импортируемых IDL-файлов не будут явно включены в генерируемые файлы. Если вам необходимо использовать типы из импортируемых файлов в коде, нужно отдельно сгенерировать H-файлы для каждого такого IDL-файла.

  • --interface

    Компилятор создаст файлы, создаваемые с флагом --types, а также структуры сообщений запросов и ответов для всех методов этого интерфейса.

  • --client

    Компилятор создаст файлы, создаваемые с флагом --interface, а также клиентские прокси-объекты и функции их инициализации для всех методов этого интерфейса.

  • --server

    Компилятор создаст файлы, создаваемые с флагом --interface, а также типы и методы диспетчера этого интерфейса.

Флаги выборочной генерации для описаний компонентов (CDL-файлов) и классов процессов (EDL-файлов):

  • --types

    Компилятор создаст файлы, создаваемые с флагом --types для всех интерфейсов, используемых в этом компоненте/классе процессов.

    При этом явно включены в генерируемые файлы будут только те типы, которые используются в аргументах интерфейсных методов.

  • --interface

    Компилятор создаст файлы, создаваемые с флагом --types для этого компонента/класса процессов, а также файлы, создаваемые с флагом --interface для всех интерфейсов, используемых в этом компоненте/классе процессов.

  • --client

    Компилятор создаст файлы, создаваемые с флагом --interface, а также клиентские прокси-объекты и функции их инициализации для всех интерфейсов, используемых в этом компоненте/классе процессов.

  • --server

    Компилятор создаст файлы, создаваемые с флагом --interface, а также типы и методы диспетчера этого компонента/класса процессов и типы и методы диспетчеров для всех интерфейсов, используемых в этом компоненте/классе процессов.

В начало
nk-psl-gen-c

Компилятор nk-psl-gen-c генерирует исходный код модуля безопасности Kaspersky Security System на основе файла политики безопасности решения (security.psl) и EDL-описаний классов процессов, входящих в решение. Этот код используется скриптом makekss.

Компилятор nk-psl-gen-c также позволяет генерировать и запускать код тестовых сценариев для политики безопасности решения, написанных на языке PAL.

Синтаксис использования компилятора nk-psl-gen-c:

nk-psl-gen-c [-I PATH][-o PATH][--audit PATH][--tests ARG][--help][--version] FILE

Параметры:

  • FILE

    Путь к PSL-описанию политики безопасности решения (security.psl)

  • -I,--include-dir PATH

    Путь к директории, содержащей вспомогательные файлы, необходимые для генерации транспортных методов и типов. По умолчанию эти файлы располагаются в директории /opt/KasperskyOS-Community-Edition-<version>/sysroot-arm-kos/include.

    Компилятору nk-psl-gen-c потребуется доступ ко всем EDL-описаниям классов процессов, перечисленных в конфигурации безопасности, а также к CDL- или IDL-описаниям их компонентов и интерфейсов. Для того, чтобы компилятор nk-psl-gen-c мог найти эти описания, нужно передать пути к расположению этих описаний в параметре -I.

    Чтобы указать более одной директории, можно использовать несколько параметров -I.

  • -o,--output PATH

    Путь к создаваемому файлу, содержащему код модуля безопасности.

  • -t, --tests ARG

    Флаг контроля генерации кода и запуска тестовых сценариев для политики безопасности решения. Может принимать следующие значения:

    • skip – код тестовых сценариев не генерируется. Это значение используется по умолчанию, если флаг --tests не указан.
    • generate – код тестовых сценариев генерируется, но не компилируется и не запускается.
    • run – код тестовых сценариев генерируется, компилируется с помощью компилятора gcc и запускается.
  • -a, --audit PATH

    Путь к создаваемому файлу, содержащему код декодера аудита.

  • -h, --help

    Отображает текст справки.

  • --version

    Отображает версию nk-psl-gen-c.

В начало
einit

Утилита einit позволяет автоматизировать создание кода инициализирующей программы Einit. Это приложение первым запускается при загрузке KasperskyOS и запускает остальные программы, а также создает каналы (соединения) между ними.

Утилита einit принимает файл init-описания (по умолчанию init.yaml) и создает .c файл, в котором содержится код инициализирующей программы Einit. Программу Einit затем необходимо собрать с помощью компилятора C, поставляемого в KasperskyOS Community Edition.

Синтаксис использования утилиты einit:

einit -I PATH -o PATH [--help] FILE

Параметры:

  • FILE

    Путь к файлу описания классов процессов и соединений init.yaml.

  • -I PATH

    Путь к директории, содержащей вспомогательные файлы, необходимые для генерации инициализирующей программы. По умолчанию эти файлы располагаются в директории /opt/KasperskyOS-Community-Edition-<version>/sysroot-arm-kos/include.

  • -o, --out-file PATH

    Путь к создаваемому .c файлу с кодом инициализирующей программы.

  • -h, --help

    Отображает текст справки.

В начало
makekss

Скрипт makekss создает модуль безопасности Kaspersky Security System.

Скрипт вызывает компилятор nk-psl-gen-c для генерации исходного кода модуля безопасности и затем компилирует полученный код, вызывая компилятор C, поставляемый в KasperskyOS Community Edition.

Скрипт принимает файл с описанием политики безопасности решения (по умолчанию security.psl) и создает файл модуля безопасности ksm.module.

Синтаксис использования скрипта makekss:

makekss --target=ARCH --module=PATH --with-nk="PATH" --with-nktype="TYPE" --with-nkflags="FLAGS" [--output="PATH"][--help][--with-cc="PATH"][--with-cflags="FLAGS"] FILE

Параметры:

  • FILE

    Путь к файлу конфигурации безопасности (.psl).

  • --target=ARCH

    Архитектура, для которой производится сборка.

  • --module=-lPATH

    Путь к библиотеке ksm_kss. Этот ключ передается компилятору C для компоновки с этой библиотекой.

  • --with-nk=PATH

    Путь к компилятору nk-psl-gen-c, который будет использоваться для генерации исходного кода модуля безопасности. По умолчанию компилятор расположен в /opt/KasperskyOS-Community-Edition-<version>/toolchain/bin/nk-psl-gen-c.

  • --with-nktype="TYPE"

    Указывает на тип компилятора NK, который будет использоваться. Для использования компилятора nk-psl-gen-c, необходимо указать тип psl.

  • --with-nkflags="FLAGS"

    Параметры, с которыми вызывается компилятор nk-psl-gen-c.

    Компилятору nk-psl-gen-c потребуется доступ ко всем EDL-описаниям классов процессов, перечисленных в конфигурации безопасности, а также к CDL- или IDL-описаниям их компонентов и интерфейсов. Для того, чтобы компилятор nk-psl-gen-c мог найти эти описания, нужно передать пути к расположению этих описаний в параметре --with-nkflags, используя параметр -I компилятора nk-psl-gen-c.

  • --output=PATH

    Путь к создаваемому файлу модуля безопасности.

  • --with-cc=PATH

    Путь к компилятору C, который будет использоваться для сборки модуля безопасности. По умолчанию используется компилятора, поставляемый в KasperskyOS Community Edition.

  • --with-cflags=FLAGS

    Параметры, с которыми вызывается компилятор C.

  • -h, --help

    Отображает текст справки.

В начало
makeimg

Скрипт makeimg создает финальный загружаемый образ решения на базе KasperskyOS со всеми запускаемыми программами и модулем Kaspersky Security System.

Скрипт принимает список файлов, включая исполняемые файлы всех программ, которые нужно добавить в ROMFS загружаемого образа и создает следующие файлы:

  • образ решения;
  • образ решения без таблиц символов (.stripped);
  • образ решения с отладочными таблицами символов (.dbg.syms).

Синтаксис использования скрипта makeimg:

makeimg --target=ARCH --sys-root=PATH --with-toolchain=PATH --ldscript=PATH --img-src=PATH --img-dst=PATH --with-init=PATH [--with-extra-asflags=FLAGS][--with-extra-ldflags=FLAGS][--help] FILES

Параметры:

  • FILES

    Список путей к файлам, включая исполняемые файлы всех программ, которые нужно добавить в romfs.

    Модуль безопасности (ksm.module) нужно указывать явно, иначе он не будет включен в образ решения. Программу Einit указывать не нужно, так как она будет включена в образ решения автоматически.

  • --target=ARCH

    Архитектура, для которой производится сборка.

  • --sys-root=PATH

    Путь к корневой директории sysroot. По умолчанию эта директория расположена в /opt/KasperskyOS-Community-Edition-<version>/sysroot-arm-kos/.

  • --with-toolchain=PATH

    Путь к набору вспомогательных утилит, необходимых для сборки решения. По умолчанию эти утилиты расположены в /opt/KasperskyOS-Community-Edition-<version>/toolchain/.

  • --ldscript=PATH

    Путь к скрипту компоновщика, необходимому для сборки решения. По умолчанию этот скрипт расположен в /opt/KasperskyOS-Community-Edition-<version>/libexec/arm-kos/.

  • --img-src=PATH

    Путь к заранее скомпилированному ядру KasperskyOS, не содержащему romfs. По умолчанию ядро расположено в /opt/KasperskyOS-Community-Edition-<version>/libexec/arm-kos/.

  • --img-dst=PATH

    Путь к создаваемому файлу образа.

  • --with-init=PATH

    Путь к исполняемому файлу инициализирующей программы Einit.

  • --with-extra-asflags=FLAGS

    Дополнительные флаги для ассемблера AS.

  • --with-extra-ldflags=FLAGS

    Дополнительные флаги для компоновщика LD.

  • -h, --help

    Отображает текст справки.

В начало

Кросс-компиляторы

Свойства кросс-компиляторов KasperskyOS

Кросс-компиляторы, входящие в состав KasperskyOS Community Edition, поддерживают процессоры с архитектурой arm.

В toolchain в составе KasperskyOS Community Edition входят следующие инструменты для кросс-компиляции:

  • GCC:
    • arm-kos-gcc
    • arm-kos-g++
  • Binutils:
    • Ассемблер AS: arm-kos-as
    • Компоновщик LD: arm-kos-ld

В GCC, кроме стандартных макросов, определен дополнительный макрос __KOS__=1. Использование этого макроса упрощает портирование программного кода на KasperskyOS, а также разработку платформонезависимых приложений.

Чтобы просмотреть список стандартных макросов GCC, выполните следующую команду:

echo '' | arm-kos-gcc -dM -E -

Особенности работы компоновщика

При выполнении сборки исполняемого файла программы компоновщик по умолчанию связывает следующие библиотеки в указанном порядке:

  1. libc – стандартная библиотека языка C.
  2. libm – библиотека, реализующая математические функции стандартной библиотеки языка C.
  3. libvfs_stubs – библиотека, содержащая заглушки функций ввода/вывода (например, open, socket, read, write).
  4. libkos – библиотека, состоящая из двух частей. Первая часть предоставляет C-интерфейс для доступа к функциям ядра KasperskyOS. Она доступна через заголовочные файлы, находящиеся в директории coresrv, например: #include <coresrv/vmm/vmm_api.h>. Вторая часть библиотеки libkos является оберткой над первой частью и содержит дополнительные функции синхронизации: mutex, semaphore, event. Взаимодействие других библиотек (включая libc) с ядром происходит через библиотеку libkos.
  5. libenv – клиентская библиотека подсистемы настройки окружения программ (переменных окружения, аргументов функции main и пользовательских конфигураций).
  6. libsrvtransport-u – внутренняя библиотека с реализацией транспорта межпроцессного взаимодействия сервисов ядра KasperskyOS.
В начало

Подготовка загрузочного образа решения

Для автоматизации процесса подготовки загрузочного образа решения нужно настроить систему сборки. За основу можно взять системы сборки, реализованные в примерах.

Этот раздел описывает различные способы настройки системы сборки для подготовки загрузочного образа решения.

В этом разделе

Использование шаблона Makefile из состава KasperskyOS Community Edition

Использование CMake из состава KasperskyOS Community Edition

Использование собственной системы сборки

В начало

Использование шаблона Makefile из состава KasperskyOS Community Edition

Для упрощения процесса подготовки загрузочного образа решения с использованием системы сборки make вы можете использовать шаблон build.mk из состава KasperskyOS Community Edition. Файл шаблона располагается по следующему пути:

/opt/KasperskyOS-Community-Edition-<version>/common/build.mk

Чтобы подготовить систему сборки make с использованием шаблона build.mk, в скрипте сборки Makefile:

  1. Задайте значение переменной targets. В значении переменной перечислите через пробел все программы, входящие в решение. Указывать программы Einit, kl.core.Core необязательно, так как они обрабатываются отдельно.
  2. Для каждой программы, указанной в переменной targets, задайте значения следующим переменным:
    • <имя-программы>-objects – список объектных файлов программы. Необходимо перечислить все объектные файлы.

      Имена объектных файлов получаются из имен исходных файлов сущности по следующим правилам:

      • *.c → *.o
      • *.idl → *.idl.o
      • *.cdl → *.cdl.o
      • *.edl → *.edl.o
    • <имя-программы>-ldflags – список флагов, передаваемых компоновщику. Если сущность использует виртуальную файловую систему, необходимо передать флаги, указанные в переменной LIBVFS_REMOTE.
    • <имя-программы>-base – адрес загрузки программы в шестнадцатеричной системе. Если переменная не указана, адрес присваивается автоматически. Используйте эту переменную для отладки программы.

    Этот же адрес передается отладчику с помощью следующей команды, которая может быть добавлена в .gdbinit-файл:

    add-symbol-file <имя-программы> <адрес-загрузки-программы>

  3. Если раздел ROMFS должен содержать дополнительные файлы, задайте значение переменной ROMFS-FILES. В значении переменной перечислите файлы через пробел. Если вы используете виртуальную файловую систему, необходимо передать файл, указанный в переменной VFS_ENTITY.
  4. Добавьте инструкцию импорта шаблона build.mk с помощью следующей команды:

    include /opt/KasperskyOS-Community-Edition-<version>/common/build.mk

В файле шаблона build.mk реализованы следующие цели сборки:

  • sim (цель по умолчанию) – запуск загрузочного образа решения с помощью эмулятора QEMU.

    При запуске эмулятор QEMU может осуществлять захват мыши, о чем будет написано в заголовке окна эмулятора.

  • kos-image – сборка загрузочного образа решения для запуска на целевой аппаратной платформе.
  • gdbsim – запуск загрузочного образа решения с возможностью отладки. После старта эмуляции QEMU ожидает старта отладчика. Для этого в другой командной строке необходимо вызвать цель gdb.

    Убедитесь, что порт протокола TCP/IP 1234 открыт, например с помощью команды netstat -anput.

    Порт 1234 прослушивается программой gdbserver, которая используется для удаленной отладки приложений и входит в состав эмулятора QEMU.

    При использовании отладчика gdb необходимо использовать аппаратные точки останова (hbreak). Эмулятор QEMU, который используется в примерах, запускается с ключом -enable-kvm, из-за чего использование обычных точек останова (break) невозможно.

  • gdb – запуск отладчика. После запуска отладчика для программ, которые требуется отлаживать, выполните следующие команды:

    add-symbol-file <имя-программы> <адрес-загрузки-программы>

    target remote localhost:1234

Пример

В этом примере используется система сборки make. Помимо действий, выполняемых в шаблоне build.mk, в скрипте сборки необходимо указать программу Hello и список объектных файлов этой программы. Адрес загрузки указывается для целей отладки решения.

Makefile

# Список программ для сборки.

targets = hello

# Список объектных файлов программы Hello

hello-objects = hello.o hello.edl.o

# Адрес загрузки сущности Hello (в hex)

hello-base = 800000

# Включить шаблон с общими правилами сборки.

include ../common/build.mk

Чтобы запустить систему сборки make, выполните команду make hello.

Чтобы запустить пример hello, находясь в директории /opt/KasperskyOS-Community-Edition-<version>/examples/hello, выполните команду make.

В начало

Использование CMake из состава KasperskyOS Community Edition

Система автоматизации сборки CMake поддерживает кросс-компиляцию приложений. Для выполнения кросс-компиляции с помощью CMake требуется указать путь к файлу расширения системы сборки (toolchain.cmake).

Чтобы выполнить кросс-компиляцию приложения для KasperskyOS, задайте значение переменной: DCMAKE_TOOLCHAIN_FILE=/opt/KasperskyOS-Community-Edition-<version>/toolchain/share/toolchain.cmake

В состав KasperskyOS Community Edition входит библиотека platform, содержащая набор готовых скриптов для системы CMake.

Чтобы подготовить приложение к отладке:

  1. В файле CMakeLists.txt задайте значение параметра LINK_FLAGS для приложения, которое вы хотите отлаживать, следующим образом:

    set_target_properties (<имя-приложения> PROPERTIES LINK_FLAGS "-Ttext <адрес-секции-text>")

    Скрипт автоматически создает .gdbinit-файлы. В .gdbinit-файлах находится набор команд для отладчика GDB. Этот набор команд определяет, по какому адресу отладчик GDB загружает сущности для отладки.

  2. Выполните сборку приложения.
В начало

Использование собственной системы сборки

Вы можете использовать другие системы сборки или реализовать собственную систему сборки для подготовки загрузочного образа решения.

Для того чтобы подготовить загрузочный образ решения, система сборки должна включать следующие действия:

  1. Генерацию кода транспортных методов и типов, используемых для формирования, отправки, приема и обработки IPC-сообщений между сущностями, входящими в решение.

    Для этого воспользуйтесь компилятором NK. В аргументах команды передайте путь к файлам EDL-, CDL- и IDL-описаний сущностей, компонентов и интерфейсов.

  2. Сборку всех сущностей, входящих в решение.

    Для этого воспользуйтесь кросс-компиляторами, входящими в состав KasperskyOS Community Edition.

  3. Сборку инициализирующей сущности Einit.

    Для генерации кода сущности Einit воспользуйтесь утилитой einit. В аргументах команды передайте путь к файлу файл init-описания (по умолчанию init.yaml).

    Сущность Einit затем необходимо собрать с помощью компилятора C, поставляемого в рамках KasperskyOS Community Edition.

  4. Сборку модуля ядра с подсистемой Kaspersky Security System.

    Для этого воспользуйтесь скриптом makekss. В аргументах команды передайте путь к файлу конфигурации безопасности (по умолчанию security.psl).

  5. Создание образа решения.

    Для этого воспользуйтесь скриптом makeimg. В аргументах команды передайте исполняемые ELF-файлы сущностей, модуль ядра с Kaspersky Security System, образ ядра KasperskyOS и любые дополнительные файлы.

В начало

Развертывание загрузочного образа решения на целевых устройствах

Чтобы развернуть загрузочный образ решения на целевом устройстве:

  1. Подключите носитель информации, с которого вы планируете запускать загрузочный образ решения на целевых устройствах.
  2. Найдите блочное устройство, соответствующее подключенному носителю, например с помощью команды:

    fdisk -l

  3. При необходимости создайте на носителе новый раздел, в котором будет развернут загрузочный образ решения, например с помощью утилиты fdisk.
  4. Если в разделе отсутствует файловая система, создайте ее, например с помощью утилиты mkfs.

    Вы можете использовать любую файловую систему, которую поддерживает загрузчик GRUB 2.

  5. Смонтируйте носитель информации.

    mkdir /mnt/kos_device && mount /dev/sdXY /mnt/kos_device

    Здесь /mnt/kos_device – точка монтирования; /dev/sdXY – имя блочного устройства; X – буква, соответствующая подключенному носителю; Y – номер раздела.

  6. Установите на носитель загрузчик операционной системы GRUB 2.

    Чтобы установить GRUB 2, выполните следующую команду:

    grub-install --force --removable \
    --boot-directory=/mnt/kos_device/boot /dev/sdX

    Здесь /mnt/kos_device – точка монтирования /dev/sdX – имя блочного устройства; X – буква, соответствующая подключенному носителю.

  7. Скопируйте загрузочный образ решения в корневую директорию смонтированного носителя.
  8. В файле /mnt/kos_device/boot/grub/grub.cfg добавьте секцию menuentry, указывающую на загрузочный образ решения.

    menuentry "KasperskyOS" {

    multiboot /my_kasperskyos.img

    boot

    }

  9. Размонтируйте носитель.

    umount /mnt/kos_device

    Здесь /mnt/kos_device – точка монтирования.

После выполнения этих действий вы можете запускать KasperskyOS с этого носителя.

В начало