Создать исполняемый файл из скрипта b cc python - PullRequest
2 голосов
/ 27 февраля 2020

b cc использует python для компиляции программ ebpf, есть ли какой-нибудь удобный способ для генерации исполняемого файла из этих python сценариев, чтобы я мог запускать эти программы трассировки на серверах, где Clang и среда llvm не установлена?

1 Ответ

1 голос
/ 28 февраля 2020

TL; DR. Нет, не с B CC. Возможно, вы захотите проверить BPF CO-RE .


Есть две части, чтобы решить эту проблему для b cc. Во-первых, вам нужно скомпилировать объектный файл с программой BPF и картами, которые будут работать в вашей целевой системе (те же версии ядра / заголовки и те же соглашения, что и Linux загрузчик BPF). Во-вторых, вам нужен компонент пользовательского пространства B CC для распознавания и работы с этой программой и картами.

В настоящее время B CC не поддерживает ни один из этих параметров. Моя ветка имеет (несколько устаревшую) ветку , где я реализовал поддержку для выгрузки объектного файла на диск с соглашениями, которые позволяют вам загружать его в ядре Linux. Это, вероятно, неполно для вашей цели, так как я только пытался загрузить программу в ядро; Мне было все равно, что случилось потом. Также была проделана определенная работа по запуску инструментов B CC на удаленных системах , но я не знаю, каково это текущее состояние.

Одна предпринимаемая попытка решить вашу проблему - BPF CO-RE. BPF CO-RE позволяет вам разрабатывать программы трассировки BPF, которые переносимы между Linux версиями. Поэтому вам не нужно компилировать с Linux заголовками целевой системы и не нужно LLVM / Лови больше. Команда этих усилий недавно опубликовала две статьи о принципах и внутренней работе BPF CO-RE и о том, как это применимо к инструментам B CC .

...