Я встретил странную проблему при тестировании qemu / netmap. Там написано "Операция не разрешена". Ошибка на самом деле я запускаю с root учетной записи. После изменения кода qemu:
static int netmap_open(NetmapState *s, Error **errp)
{
struct nmreq_register req;
struct nmreq_header hdr;
struct netmap_if *nifp;
NetmapState *other;
int ret;
char buf[256];
s->fd = open("/dev/netmap", O_RDWR);
if (s->fd < 0) {
sleep(30);
sprintf(buf, "Failed to open(/dev/netmap) gg, uid=%d %d\n", getuid(), geteuid());
error_setg_errno(errp, errno, buf);
return -1;
}
Я уверен, что оба uid / euid равны 0.
qemu-system-x86_64: Failed to open(/dev/netmap) gg, uid=0 0
: Operation not permitted
Если я запускаю qemu-system-x86_x64 вручную, а не с libvirt / vir sh, то эта ошибка исчезла. Я уверен, что параметры cmdline не совпадают, но я не думаю, что это может привести к тому, что вызов open будет иметь другое поведение. Есть идеи?