Есть ли способ перенаправить (сквозной) физический последовательный порт в систему XenGuest PV? Мне нужно иметь возможность настроить последовательное устройство с виртуальным сервером на XenServer 6.2.
Я ищу решение, как сделать переадресацию последовательного порта.
РЕДАКТИРОВАТЬ: Разумнее было купить конвертер RS-232 в Ethernet. Я упомянул это под этим комментарием https://serverfault.com/a/740196/187680. Основная и самая важная причина заключалась в том, что виртуальная машина не зависит от одного конкретного хост-сервера, что позволяет вам более легко управлять обновлениями XenServer и отказоустойчивостью виртуальной машины.
Возможно, для вас уже слишком поздно, но ваш вопрос может представлять общий интерес. Если ваш последовательный порт (или USB-порт, или что-то еще) можно идентифицировать как устройство PCI, вы можете избежать того, чтобы XS взял под контроль это устройство и позволил управлять им с помощью гостевой ОС.
lspci
чтобы перечислить устройства и выбрать, какое из них представляет ваш последовательный порт, в следующем примере идентификатор PCI последовательного порта - 02: 00.0
01:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 05)
02:00.0 Serial controller: MosChip Semiconductor Technology Ltd. PCIe 9922 Multi-I/O Controller
05:00.0 USB controller: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev 02)
редактировать /boot/extlinux.conf
и найдите строку «label xe», которая определяет вашу конфигурацию загрузки по умолчанию; в строке, начинающейся с «append / boot ...», находятся параметры; после "splash" добавьте еще один параметр как "pciback.hide = (02.00.0)", где вы должны заключить в скобки тот же идентификатор PCI, который вы нашли ранее. Если устройств PCI, которые вы хотите передать гостю, несколько, перечислите их каждое в круглых скобках, разделенных пробелами, как в примере.
label xe
# XenServer
kernel mboot.c32
append /boot/xen.gz mem=1024G dom0_max_vcpus=4 dom0_mem=752M,max:752M watchdog_timeout=300 lowmem_emergency_pool=1M crashkernel=64M@32M cpuid_mask_xsave_eax=0 console=vga vga=mode-0x0311 --- /boot/vmlinuz-2.6-xen root=LABEL=root-mvyxdjwc ro xencons=hvc console=hvc0 console=tty0 quiet vga=785 splash pciback.hide=(05:00.0) (02:00.0) (00:1d.0) --- /boot/initrd-2.6-xen.img
Сохраните файл, выдайте extlinux -i /boot
команду и перезагрузите сервер.
Теперь вы должны назначить PCI-устройства виртуальной машине, которой вы хотите управлять. Хотя есть и другие способы получить UUID виртуальной машины, вы можете перечислить их все с помощью xe vm-list
и выберите нужную из появившегося списка. В примере желаемый UUID - a82769ff-9dc4-56bb-61f9-57d741162a14
uuid ( RO) : a82769ff-9dc4-56bb-61f9-57d741162a14
name-label ( RW): sersrv03.xyz.lan
power-state ( RO): running
И, наконец, следующая команда, которая указывает виртуальной машине взять на себя прямую зарядку устройства (а) PCI, вы помещаете UUID желаемой виртуальной машины и идентификаторы PCI устройств PCI. В этом примере перечислены два устройства PCI, разделенные запятыми.
xe vm-param-set other-config:pci=0/0000:02:00.0,0/0000:00:1d.0 uuid=a82769ff-9dc4-56bb-61f9-57d741162a14
Запустите соответствующую виртуальную машину и проверьте, правильно ли определяется новое оборудование.
Этот метод исходит из Вот, благодаря сотек для обмена.
Ноты
Я попытался сделать RS-232 сквозным для XenServer. И у меня ничего не получилось. Наконец, самым простым способом было купить Устройство IP COM. Это делает виртуальную машину независимой от хост-сервера, и вы можете использовать миграцию виртуальной машины. Я был удивлен стабильностью этого устройства. Без вопросов.
Невозможно. Я предлагаю получить последовательный интерфейс для интерфейса Ethernet, а затем использовать его. Виртуализация и последовательные порты не совсем совместимы.