Как указать несколько сетевых интерфейсов в bhyve

Вопрос или проблема

Я хочу добавить дополнительное сетевое устройство в свою виртуальную машину bhyve.

Вот конфигурация:

#!/bin/sh

/usr/sbin/bhyve -c 2 -m 2048 -u -H -P \
-s 0:0,hostbridge \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
-s 1:0,lpc \
-s 3:0,ahci-cd,/usr/share/refind.iso \
-s 5:0,virtio-blk,/VM/1.img \
-s 6:0,fbuf,tcp=:5900 \
-s 7:0,virtio-9p,shared="/shared" \
-l com1,/dev/nmdm3b31677b-af70-4b7b-9590-71c8a0415f52A \
-s 8:0,virtio-net,tap1 \
-s 8:1,virtio-net,tap2 \
-s 9:0,hda,play=/dev/dsp0 \
web

Однако при запуске я получаю ошибку Ошибка инициализации эмуляции устройства: Нет такого файла или каталога. Я не понимаю, что я делаю не так. В документации ничего не указывает на то, что нельзя использовать несколько сетевых устройств. Тем не менее, он не позволяет мне это сделать. Если я удаляю второй tap, он запускается как обычно.

Я пытался изменить номер устройства (x:y) на несколько вариантов, изменить имя устройства и добавить mac-адрес ко второму устройству. Я не могу придумать ничего другого.

Поиск был относительно неуспешным. Я нашел эту тему, но она касается конфигурации vm-bhyve. Мне не нравится vm-bhyve, поэтому я предпочел бы не использовать его.

Ответ или решение

Для добавления нескольких сетевых интерфейсов в виртуальную машину bhyve и устранения ошибки "Device emulation initialization error: No such file or directory", необходимо убедиться в правильной настройке дополнительных tap-интерфейсов. Вот шаги, которые нужно выполнить:

  1. Создание Tap-интерфейсов: Убедитесь, что вы создали tap-интерфейсы, которые собираетесь использовать в своей виртуальной машине. Вы можете создать tap-интерфейсы с помощью команды:

    sudo ifconfig tap1 create
    sudo ifconfig tap2 create
  2. Запуск Bhyve: В вашей конфигурации у вас есть две сетевые карты, подключенные к tap-интерфейсам. Однако -s 8:0,virtio-net,tap1 и -s 8:1,virtio-net,tap2 могут конфликтовать, если соответствующие tap-интерфейсы не созданы. Убедитесь, что вы правильно указываете номера интерфейсов:

    -s 8:0,virtio-net,tap1 \
    -s 9:0,virtio-net,tap2 \

    Важный момент – номера устройств (x:y) должны быть уникальными. Убедитесь, что для второстепенного интерфейса указан номер 9, а не 8, который уже занят.

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

    #!/bin/sh
    
    /usr/sbin/bhyve -c 2 -m 2048 -u -H -P \
    -s 0:0,hostbridge \
    -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
    -s 1:0,lpc \
    -s 3:0,ahci-cd,/usr/share/refind.iso \
    -s 5:0,virtio-blk,/VM/1.img \
    -s 6:0,fbuf,tcp=:5900 \
    -s 7:0,virtio-9p,shared="/shared" \
    -l com1,/dev/nmdm3b31677b-af70-4b7b-9590-71c8a0415f52A \
    -s 8:0,virtio-net,tap1 \
    -s 9:0,virtio-net,tap2 \
    -s 10:0,hda,play=/dev/dsp0 \
    web
  4. Проверка полученных ошибок: Если ошибка сохраняется, проверьте, существует ли интерфейс tap1 и tap2, используя:

    ifconfig tap1
    ifconfig tap2

    Если интерфейсы не существуют, повторите процесс их создания.

  5. Установка необходимых разрешений: Убедитесь, что у bhyve есть необходимые права для доступа к tap-интерфейсам. Это можно сделать, добавив вашего пользователя в группу network или изменяя разрешения соответственно.

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

Оцените материал
Добавить комментарий

Капча загружается...