Для упрощения процесса подготовки загрузочного образа решения с использованием системы сборки make вы можете использовать шаблон build.mk из состава KasperskyOS Community Edition. Файл шаблона располагается по следующему пути:
/opt/KasperskyOS-Community-Edition-<version>/common/build.mk
Чтобы подготовить систему сборки make с использованием шаблона build.mk, в скрипте сборки Makefile:
targets. В значении переменной перечислите через пробел все программы, входящие в решение. Указывать программы Einit, kl.core.Core необязательно, так как они обрабатываются отдельно.targets, задайте значения следующим переменным:<имя-программы>-objects – список объектных файлов программы. Необходимо перечислить все объектные файлы.Имена объектных файлов получаются из имен исходных файлов сущности по следующим правилам:
*.c → *.o*.idl → *.idl.o*.cdl → *.cdl.o*.edl → *.edl.o<имя-программы>-ldflags – список флагов, передаваемых компоновщику. Если сущность использует виртуальную файловую систему, необходимо передать флаги, указанные в переменной LIBVFS_REMOTE.<имя-программы>-base – адрес загрузки программы в шестнадцатеричной системе. Если переменная не указана, адрес присваивается автоматически. Используйте эту переменную для отладки программы.Этот же адрес передается отладчику с помощью следующей команды, которая может быть добавлена в .gdbinit-файл:
add-symbol-file <имя-программы> <адрес-загрузки-программы>
ROMFS-FILES. В значении переменной перечислите файлы через пробел. Если вы используете виртуальную файловую систему, необходимо передать файл, указанный в переменной VFS_ENTITY.include /opt/KasperskyOS-Community-Edition-<version>/common/build.mk
В файле шаблона build.mk реализованы следующие цели сборки:
При запуске эмулятор QEMU может осуществлять захват мыши, о чем будет написано в заголовке окна эмулятора.
Убедитесь, что порт протокола TCP/IP 1234 открыт, например с помощью команды netstat -anput.
Порт 1234 прослушивается программой gdbserver, которая используется для удаленной отладки приложений и входит в состав эмулятора QEMU.
При использовании отладчика gdb необходимо использовать аппаратные точки останова (hbreak). Эмулятор QEMU, который используется в примерах, запускается с ключом -enable-kvm, из-за чего использование обычных точек останова (break) невозможно.
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.