Найти в Дзене
Bearloga

proxmox проброс видеокарты в виртуальную машину (статья)

Сначала нужно найти пк с монитором, клавиатурой и желательно мышкой, флешку, доступ в интернет и второй комп, с которого и будет начата работа На комп скачивается Rufus, как с ним работать было описано в предыдущих статьях, затем скачивается iso-шник proxmox с их сайта https://www.proxmox.com/en/downloads Через Rufus производится запись iso файла на флешку, после успешной записи втыкаете флешку в комп В биосе компа, на который будет ставиться proxmox, устанавливаете флешку в приоритет, как было с Truenas, начинаете установку гипервизора Установка простая, как обычный linux, единственный момент, в одном месте нужно нажать "я согласен" и эта кнопка может либо не отображаться, либо придется прокрутить экран чуть вниз Так как установка, я надеюсь, была на компе с монитором, после корректной установки высветится строчка по типу такой https://192.168.1.10:8006/ - это адрес в локальной сети с портом, по которому через браузер нужно зайти на web-интерфейс установленного proxmox, для входа еще

Сначала нужно найти пк с монитором, клавиатурой и желательно мышкой, флешку, доступ в интернет и второй комп, с которого и будет начата работа

На комп скачивается Rufus, как с ним работать было описано в предыдущих статьях, затем скачивается iso-шник proxmox с их сайта https://www.proxmox.com/en/downloads

скачать
скачать

Через Rufus производится запись iso файла на флешку, после успешной записи втыкаете флешку в комп

В биосе компа, на который будет ставиться proxmox, устанавливаете флешку в приоритет, как было с Truenas, начинаете установку гипервизора

Установка простая, как обычный linux, единственный момент, в одном месте нужно нажать "я согласен" и эта кнопка может либо не отображаться, либо придется прокрутить экран чуть вниз

Так как установка, я надеюсь, была на компе с монитором, после корректной установки высветится строчка по типу такой

https://192.168.1.10:8006/ - это адрес в локальной сети с портом, по которому через браузер нужно зайти на web-интерфейс установленного proxmox, для входа еще нужно ввести логин и пароль, логин скорее всего "root", а пароль был задан на этапе установки

Если же по какой-то причине монитор не доступен, нужно через маршрутизатор посмотреть новый ip адрес в таблице маршрутизации и зайти на адрес https://ip_адрес:8006/

Если пишет, что не правильный, либо нет сертификата, ругается, все равно нажимаете перейти на сайт, отобразится что-то на подобии

-2

После успешного входа нужно скачать iso файл первой операционки, на которой будет отработана технология, у меня это linux mint с сайта https://linuxmint.com/edition.php?id=316 через торрент

mint
mint

С windows похоже, но еще нужно скачать дополнительный iso с сайта https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/?C=M;O=D, чтобы подружить windows с виртуализацией, его либо сразу при первом включении в proxmose галкой отметить, либо потом примонтировать и через проводник запустить exe-шник

Ссылка на официальную документацию https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers

После того, как был получен iso с линуксом, его нужно загрузить на сервер proxmox'a

-4

Нужно создать виртуальную машину, нажав на синюю кнопку "Create VM" справа вверху

-5
-6
-7
объем жесткого диска под виртуалку
объем жесткого диска под виртуалку
количество потоков процессора на эту виртуалку, меньше чем всего потоков процессора
количество потоков процессора на эту виртуалку, меньше чем всего потоков процессора
оперативка, опять не больше физической
оперативка, опять не больше физической
сетевое подключение, лучше как на картинке для первого раза
сетевое подключение, лучше как на картинке для первого раза
finish him
finish him

У меня уже есть установленный mint под номером 100, установка линукса стандартная, запускается командой Console>noVMS

-13

После установки линукса, виртуалку с линуксом выключите

Дальше начинается все веселье

Как обычно, рассмотрен самый простой, на мой взгляд, рабочий алгоритм

Нужно зайти в консоль самого proxmox'a, например так

-14
консоль
консоль

Редактируем файл командой "nano /etc/default/grub", без кавычек, они для удобства

-16

Редакт как на картинке

GRUB_DEFAULT=0

GRUB_TIMEOUT=5

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

GRUB_CMDLINE_LINUX="quiet intel_iommu=on iommu=pt"

-17

Чтоб изменения в файле сохранились, я использую комбинацию клавиш "Ctrl+X", "Y", "Enter", можете другие, либо использовать отличный от "nano" редактор

Чтоб "Y" заработал, нужно его нажимать при английской раскладке

Дальше команда "update-grub"

-18

Редакт файла командой "nano /etc/modules", вписываем как на картинке

vfio

vfio_iommu_type1

vfio_pci

vfio_virqfd

-19

Сохранение аналогично здесь и в последующем

Дальше команда "update-initramfs -u -k all"

Затем перезагрузка сервера "reboot"

Команда "echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf"
И "echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf"

-20
-21

Теперь нужно прописать в блэклист видеокарту, которую нужно пробросить, надпись зависит от производителя видюхи

Intel "echo «blacklist i915» >> /etc/modprobe.d/blacklist.conf"

Nvidia "

echo «blacklist nouveau» >> /etc/modprobe.d/blacklist.conf
echo «blacklist nvidia*» >> /etc/modprobe.d/blacklist.conf

"

amd "

echo «blacklist amdgpu» >> /etc/modprobe.d/blacklist.conf
echo «blacklist radeon» >> /etc/modprobe.d/blacklist.conf

"

Так как у меня nvidia, в файле записано следующее

-22

С елочкой работает, без елочки не тестировал

Дальше нужно найти номер и группу у видеокарты, интернет подсказывает следующий скрипт

for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do

echo "IOMMU Group ${g##*/}:"

for d in $g/devices/*; do

echo -e "\t$(lspci -nns ${d##*/})"

done;

done;

Довольно длинный вывод

начало с командой
начало с командой

У меня видеокарта оказалась в 26 группе

-24

Из этой строчки нужно запомнить, в моем случае, строку "03:00"

Дальше нужно воспользоваться командой "lspci" для проверки, что видюха и правда под таким номером

Снова длинный вывод

-25

Совпадает

Команда "lspci -n -s нужные:цифры"

-26

Теперь уже эти значения из третьего столбца потребуются дальше, их нужно вписать в файл командой "nano /etc/modprobe.d/vfio.conf", получится похоже на

-27

options vfio-pci ids=10de:21c4,10de:1aeb,10de:1aec,10de:1aed disable_vga=1

Если файл редактировали раньше, выскочит вопрос

-28

Yes

Сохраняете, proxmox на перезагрузку

С консолью закончили, переходим к виртуалке, проставляем старт при загрузке (у меня с ним более адекватно работает, можете протестировать сами)

-29

Дальше в Hardware>Add>PCI Device

-30
-31

Из списка по группе и/или номеру нужно выбрать видеокарту

-32

Потом Add

Как добавляли видеокарту, через Add>USB Device можно добавить мышь и клавиатуру

Дисплей можете поставить в "none" - возможно быстрее прогрузиться ос

Дальше самый ответственный момент - запуск этого чуда

Как говорилось выше, я ставил виртуалку в автостарт при загрузке proxmox'a, можете опять таки тестировать

Сервер в перезагрузку, ждем

Возможно из-за слабого железа будет ощутимо долго грузиться

При успешном показе экрана, я вас поздравляю, если нет - что-то пошло не так, либо перечитать статью, возможно что-то не сделано, либо обращаться к официальной документации, либо к интернету

Мной также было снято видео, с какими моими и железа сложностями это все работает, советую посмотреть https://dzen.ru/video/watch/67782e72eeee9647ba6d122f

P.S.: давно было интересно, можно ли несколько экранов подключить к виртуалке - ответ да, можно

-33
-34

Еще из интересного, для windows (на линуксе не проверял), на версии proxmox 8.1.4, второй экран может несколько не работать сразу, попробуйте поменять частоту отображения и качество картинки, второй монитор использовался Flatron L1730B и работает он только на таких настройках

-35
-36

И таких

-37

При изменении разрешения на большее, работать не хочет

Удачи