Эмуляция TTY в режиме ядра -— это /dev/tty*
устройства, которые вообще не используют никаких программ X/Wayland. Вы используете их, нажимая Ctrl+Alt+F2 или подобное. Эмуляция TTY пользовательского режима -— это, по сути, все, что дает вам терминал, и это устройства /dev/pts/*
. Это то, что создается терминалом gnome -, sshd, screen и вообще всем остальным.
Ваш load_prog.c
ссылается на sock_example.o
как на объектный файл, содержащий программу BPF, но на самом деле этот объектный файл называется ebpf_prog.o
.
Ваш ebpf_prog.c
не является действительной программой eBPF, но это может быть просто ошибка копирования -и вставки, поскольку она почти такая же, как ваша load_prog.c
. (Я предполагаю, что несоответствие ebpf_prog.o
/ sock_example.o
также является ошибкой копирования -вставки.)
Основная ошибка заключается в том, что вы собираете его как двоичный файл ELF; Программы eBPF должны быть построены как байт-код eBPF :
.clang -target bpf...
Поскольку вы используете libbpf, см. руководство по начальной загрузке libbpf .