Вопрос или проблема
Я хочу добавить дополнительное сетевое устройство в свою виртуальную машину 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-интерфейсов. Вот шаги, которые нужно выполнить:
-
Создание Tap-интерфейсов: Убедитесь, что вы создали tap-интерфейсы, которые собираетесь использовать в своей виртуальной машине. Вы можете создать tap-интерфейсы с помощью команды:
sudo ifconfig tap1 create sudo ifconfig tap2 create
-
Запуск 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, который уже занят.
-
Проверка конфигурации: Убедитесь, что используете правильные команды при запуске. Попробуйте обновить вашу конфигурацию следующим образом:
#!/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
-
Проверка полученных ошибок: Если ошибка сохраняется, проверьте, существует ли интерфейс
tap1
иtap2
, используя:ifconfig tap1 ifconfig tap2
Если интерфейсы не существуют, повторите процесс их создания.
-
Установка необходимых разрешений: Убедитесь, что у bhyve есть необходимые права для доступа к tap-интерфейсам. Это можно сделать, добавив вашего пользователя в группу
network
или изменяя разрешения соответственно.
После выполнения этих шагов виртуальная машина должна успешно стартовать с двумя сетевыми интерфейсами без ошибок. Если проблема сохраняется, рекомендуется просмотреть журналы ошибок bhyve и параметры конфигурации системы для дальнейшей диагностики.