The Ultimate Beginner's Guide to GPU Passthrough | (Proxmox, Windows 10)
Ідеальний посібник для початківців із проходження GPU (Proxmox, Windows 10)
Ласкаво просимо всіх до першої частини моєї серії посібників Idiot Friendly ! Я проведу вас через процес налаштування GPU Passthrough для ваших гостьових систем віртуальної машини Proxmox. Цей посібник призначений для новачків у віртуалізації, зокрема для користувачів Proxmox. Він призначений як загальний посібник для проходження через графічний процесор (або кілька графічних процесорів) до вашої віртуальної машини. Він не призначений як вичерпний інструкційний посібник; однак я докладу всіх зусиль, щоб надати вам усі необхідні ресурси та джерела для проходження процесу від початку до кінця. Якщо щось не працює належним чином, перевірте /r/Proxmox , /r/Homelab , r/VFIO або /r/linux4noobs для подальшої допомоги від спільноти.
Цей посібник був би неможливим без фантастичної онлайн-спільноти Proxmox; як тут, на Reddit, на офіційних форумах, так і в інших індивідуальних посібниках користувача (які допомогли мені на цьому шляху, щоб допомогти вам!). Якщо я пропустив джерело кредиту, будь ласка, дайте мені знати! Ваша робота цінується.
Відмова від відповідальності: цей посібник жодним чином не стверджує, що він працює для всіх екземплярів конфігурацій Proxmox/GPU. Використовуйте на свій страх і ризик. Я не несу відповідальності, якщо ви підірвете свій сервер, свій будинок або себе. Загальне попередження хірурга: не використовуйте цей посібник, перебуваючи під впливом одурманюючих речовин. Не дозволяйте своїй кішці користуватися цим посібником. Ви були попереджені.
Важливо запам’ятати всі ваші налаштування обладнання/програмного забезпечення, перш ніж ми розпочнемо проходження GPU. Для довідки я перерахую те, що я використовую для апаратного та програмного забезпечення. Цей посібник може працювати або не працювати однаково на будь-якій заданій конфігурації апаратного/програмного забезпечення, і він призначений, щоб допомогти вам отримати загальне розуміння та базове налаштування GPU passthrough лише для Proxmox .
Ваше обладнання має принаймні підтримувати: VT-d, відображення переривань і UEFI BIOS.
Моя апаратна конфігурація:
Материнська плата: Supermicro X9SCM-F (плата Rev 1.1 + остання версія BIOS)
ЦП: роз'єм LGA1150, Xeon E3-1220 (версія 2) 1
Пам'ять: 16 ГБ DDR3 (ECC, незареєстрована)
Графічний процесор: 2x GTX 1050 Ti 4 Гб, 2x GTX 1060 6 Гб 2
Моя конфігурація програмного забезпечення:
Остання збірка Proxmox (5.3 на момент написання статті)
Windows 10 LTSC Enterprise (віртуальна машина) 3
Примітки:
1 На більшості процесорів Xeon E3 групування IOMMU є безладом, тому потрібна додаткова конфігурація. Про це пізніше.
2 Не рекомендується використовувати декілька графічних процесорів однієї марки/типу моделі. Про це пізніше.
3 Будь-який інсталяційний ISO Windows 10 повинен працювати, однак намагайтеся дотримуватися останнього доступного ISO від Microsoft.
У цьому посібнику передбачається, що ви вже принаймні встановили Proxmox на своєму сервері та можете ввійти до WebGUI та мати доступ до терміналу Shell вузла сервера. Якщо вам потрібна допомога зі встановленням базового Proxmox, я настійно рекомендую офіційний посібник «Початок роботи» та їхні офіційні посібники YouTube .
Крок 1: Налаштування Grub
Якщо ви використовуєте процесор Intel, або SSH безпосередньо на вашому сервері Proxmox, або використовуючи термінал noVNC Shell у розділі «Node», відкрийте файл /etc/default/grub . Я вважаю за краще використовувати nano , але ви можете використовувати будь-який текстовий редактор, який вам більше подобається.
nano /etc/default/grub
Шукайте цей рядок:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
Потім змініть його таким чином:
Для процесорів Intel:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
Для процесорів AMD:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
ВАЖЛИВІ ДОДАТКОВІ КОМАНДИ
Можливо, вам знадобиться додати додаткові команди до цього рядка, якщо проходження завершиться невдачею. Наприклад, якщо ви використовуєте подібний процесор, як я (серія Xeon E3-12xx), який має жахливі можливості групування IOMMU, і/або ви намагаєтесь передати один графічний процесор.
Ці додаткові команди по суті кажуть Proxmox не використовувати наявні графічні процесори, а також допомагають розділити кожен пристрій PCI на власну групу IOMMU. Це важливо, тому що, якщо ви спробуєте використати графічний процесор, скажімо, у групі 1 IOMMU, а в групі 1 ваш ЦП також згруповано, наприклад, передача графічного процесора не вдасться.
Ось мої налаштування командного рядка grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off,efifb:off"
Щоб дізнатися більше про те, що ці команди роблять і як вони допомагають:
A. Вимкнення буфера кадрів: video=vesafb:off,efifb:off
B. Перевизначення ACS для груп IOMMU: pcie_acs_override=downstream,multifunction
Після завершення редагування /etc/default/grub виконайте цю команду:
update-grub
Крок 2: Модулі VFIO
Вам потрібно буде додати кілька модулів VFIO до вашої системи Proxmox. Знову ж таки, використовуючи nano (або щось інше), відредагуйте файл /etc/modules
nano /etc/modules
Додайте наступне (скопіюйте/вставте) до файлу /etc/modules:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Потім збережіть і вийдіть.
Крок 3: Перепризначення переривань IOMMU
Я не збираюся надто вдаватися в це; все, що вам дійсно потрібно зробити, це виконати наступні команди у вашій оболонці:
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
Крок 4: Внесення драйверів у чорний список
Ми не хочемо, щоб хост-система Proxmox використовувала наші графічні процесори, тому нам потрібно додати драйвери до чорного списку. Виконайте ці команди в Shell:
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
Крок 5: додавання GPU до VFIO
Виконайте цю команду:
lspci -v
Ваше вікно оболонки має виводити купу речей. Знайдіть рядки, які показують вашу відеокарту. Це виглядатиме приблизно так:
01:00.0 Контролер, сумісний з VGA: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1) (prog-if 00 [контролер VGA])
01:00.1 Аудіопристрій: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1)
Запишіть перший набір чисел (наприклад, 01:00.0 і 01:00.1 ). Вони нам знадобляться для наступного кроку.
Виконайте наведену нижче команду. Замініть 01:00 будь-яким числом, яке стояло поруч із вашим GPU, коли ви запускали попередню команду:
lspci -n -s 01:00
Це має вивести ідентифікатори постачальників вашої карти графічного процесора , зазвичай один ідентифікатор для графічного процесора та один ідентифікатор для аудіошини. Це виглядатиме приблизно так:
01:00.0 0000: 10de:1b81 (rev a1)
01:00.1 0000: 10de:10f0 (версія a1)
Те, що ми хочемо зберегти, це ідентифікаційні коди постачальника: 10de:1b81 і 10de:10f0 .
Тепер ми додаємо ідентифікатори постачальників GPU до VFIO ( не забувайте замінити ідентифікатори своїми!) :
echo "options vfio-pci ids=10de:1b81,10de:10f0 disable_vga=1"> /etc/modprobe.d/vfio.conf
Нарешті, ми запускаємо цю команду:
update-initramfs -u
І перезапустіть:
reset
Тепер ваш хост Proxmox повинен бути готовий до проходження GPU!
Тепер настає «весела» частина. Мені знадобилося багато-багато різних спроб конфігурації, щоб зробити все правильно . Сподіваюся, мій біль стане для вас надбанням і допоможе вам зробити все правильно з першого разу.
Крок 1. Створіть віртуальну машину
Створити віртуальну машину досить легко та зрозуміло, але якщо у вас виникли проблеми, я пропоную переглянути офіційну Wiki та практичні посібники Proxmox.
Для цього посібника вам знадобиться Windows ISO для вашої віртуальної машини. Ось зручний посібник про те, як завантажити файл ISO безпосередньо в Proxmox . Ви захочете скопіювати ВСІ свої файли .ISO до відповідної папки репозиторію в Proxmox (включаючи ISO-файл драйвера VirtIO, згаданий нижче).
Приклади екранів меню
Загальні => ОС => Жорсткий диск => ЦП => Пам'ять => Мережа => Підтвердити
ВАЖЛИВО: НЕ ЗАПУСКАЙТЕ СВОЮ ВМ (поки що)
Крок 1a (необов’язково, але РЕКОМЕНДОВАНО): завантажте драйвери VirtIO
Якщо ви дотримуєтеся цього посібника та використовуєте VirtIO, вам знадобиться цей ISO-файл драйверів VirtIO для монтування як компакт-диска, щоб інсталювати Windows 10 за допомогою VirtIO (SCSI).
Для CD-Rom добре, якщо ви використовуєте IDE або SATA. Переконайтеся, що CD-ROM вибрано як основний завантажувальний пристрій на вкладці « Параметри », коли ви завершите створення віртуальної машини. Крім того, ви захочете переконатися, що ви вибрали VirtIO (SCSI, а не блок VirtIO) для жорсткого диска та мережевого адаптера.
Крок 2. Увімкніть OMVF (UEFI) для віртуальної машини
На вкладці/вікні параметрів вашої віртуальної машини встановіть наступні параметри:
Boot Order: CD-ROM, Disk (scsi0)
SCSI Controller: VirtIO SCSI Single
BIOS: OMVF (UEFI)
Не забувайте: коли ви змінюєте BIOS із SeaBIOS (за замовчуванням) на OMVF (UEFI) , Proxmox скаже щось про додавання диска EFI. Отже, ви перейдете на вкладку/вікно обладнання та зробите це. Додати > Диск EFI.
Крок 3. Відредагуйте файл конфігурації віртуальної машини
Повертаючись до вікна Shell, нам потрібно відредагувати /etc/pve/qemu-server/<vmid>.conf , де <vmid> — це ідентифікаційний номер віртуальної машини, який ви використовували під час створення віртуальної машини (вкладка «Загальні»).
nano /etc/pve/qemu-server/<vmid>.conf
У редакторі давайте додамо ці командні рядки (неважливо, куди ви їх додаєте, якщо вони знаходяться в нових рядках. Proxmox перемістить речі за вас після збереження):
machine: q35
cpu: host,hidden=1,flags=+pcid
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'
Збережіть і вийдіть з редактора.
Крок 4. Додайте пристрої PCI (ваш графічний процесор) до віртуальної машини
Подивіться на всі ці графічні процесори
На вкладці/вікні апаратного забезпечення віртуальної машини натисніть кнопку « Додати » вгорі. Потім у розкривному меню натисніть « Пристрій PCI » .
Знайдіть свій графічний процесор у списку та виберіть його. На екрані параметрів PCI вам потрібно лише налаштувати його так :
All Functions: YES
Rom-Bar: YES
Primary GPU: NO
PCI-Express: YES (requires 'machine: q35' in vm config file)
Ось приклад зображення того, як має виглядати вкладка/вікно обладнання після завершення створення віртуальної машини.
На жаль, переконайтеся, що «Усі функції» ПОСТАНОВЛЕНО.
Крок 4a (необов’язково): проблеми з файлом ROM
Якщо врешті-решт щось не запрацює належним чином, вам, МОЖЛИВО, доведеться повернутися до цього кроку та вказати файл ROM для вашого GPU. Це самостійний процес і вимагає деяких додаткових кроків, як описано нижче.
Крок 4a1:
Завантажте файл ПЗУ графічного процесора
Дамп файлу ПЗУ графічного процесора:
cd /sys/bus/pci/devices/0000:01:00.0/
echo 1 > rom
cat rom > /usr/share/kvm/<GPURomFileName>.bin
echo 0 > rom
Альтернативні методи скидання файлу ROM:
a. Використання GPU-Z (рекомендовано)
Крок 4a2: Скопіюйте файл ROM (якщо ви його завантажили) до каталогу /usr/share/kvm/ .
Для цього можна використовувати SFTP або безпосередньо через командний рядок Windows:
scp /path/to/<romfilename>.rom myusername@proxmoxserveraddress:/usr/share/kvm/<romfilename>.rom
Крок 4a3: Додайте файл ROM до конфігурації віртуальної машини (ПРИКЛАД):
hostpci0: 01:00,pcie=1,romfile=<GTX1050ti>.rom
КОРИСТУВАЧІ NVIDIA : якщо у вас усе ще виникають проблеми або файл ROM сам по собі спричиняє проблеми, можливо, вам знадобиться виправити файл ROM (особливо для карт NVIDIA). Тут є чудовий інструмент для виправлення карт серії GTX 10XX: https://github.com/sk1080/nvidia-kvm-patcher і тут https://github.com/Matoking/NVIDIA-vBIOS-VFIO-Patcher . Однак це працює лише для серії 10XX. Якщо у вас є щось старіше, вам доведеться виправити файл ROM вручну за допомогою шістнадцяткового редактора, що виходить за рамки цього навчального посібника.
Приклад вкладки/вікна обладнання до встановлення Windows 10.
Крок 5: ЗАПУСК ВМ!
Ми майже вдома! Після запуску віртуальної машини відкрийте вкладку/вікно noVNC/Shell (під вкладкою VM), і ви побачите завантаження інсталятора Windows. Давайте швидко пройдемося по всьому процесу, оскільки на цьому з’єднанні можна легко щось зіпсувати.
Авторське право (c) Джон Спраггінс (https://jonspraggins.com)
Якщо ви дотримувались інструкцій і використовуєте VirtIO SCSI, ви зіткнетеся з проблемою під час інсталяції Windows 10, коли вона намагатиметься знайти ваш жорсткий диск . Не переживай!
Авторське право (c) Джон Спраггінс (https://jonspraggins.com)
Крок 1: Встановлення драйвера VirtIO
Просто перейдіть на вкладку/вікно обладнання віртуальної машини (знову), двічі клацніть файл приводу компакт-дисків (наразі він має завантажувати Windows 10 ISO) і перемкніть образ ISO на файл ISO VirtIO .
Авторське право (c) Джон Спраггінс (https://jonspraggins.com)
Повернувшись із вкладкою у вікно оболонки noVNC, клацніть « Огляд», знайдіть щойно завантажений пристрій CD-ROM VirtIO та перейдіть до підкаталогу vioscsi > w10 > amd64 . Натисніть OK.
Тепер інсталятор Windows повинен зробити свою справу і завантажити драйвер Red Hat VirtIO SCSI для вашого жорсткого диска. Перш ніж розпочати інсталяцію на диск, знову поверніться до компакт-диска VirtIO та інсталюйте драйвери мережевого адаптера VirtIO з підкаталогу NetKVM > w10 > amd64 .
Авторське право (c) Джон Спраггінс (https://jonspraggins.com)
ВАЖЛИВО №1: не забудьте перемкнути файл ISO із ISO-образу VirtIO на ISO-образ інсталятора Windows у розділі VM Hardware > CD-Rom.
Коли ви закінчите змінювати дисковод компакт-дисків на ISO інсталятора Windows, поверніться до вікна оболонки та натисніть « Оновити». У програмі встановлення має з’явитися жорсткий диск вашої віртуальної машини та готові до встановлення вікна. Завершіть встановлення Windows.
ВАЖЛИВО №2: коли Windows попросить вас перезавантажити, клацніть правою кнопкою миші вашу віртуальну машину та натисніть «Зупинити». Потім перейдіть на вкладку/вікно апаратного забезпечення вашої віртуальної машини та відключіть ISO Windows із приводу компакт-дисків. Тепер знову запустіть віртуальну машину.
Крок 2. Увімкніть віддалений робочий стіл Windows
Якщо все пройшло добре, тепер ви повинні бачити екран Windows 10 VM! Для нас важливо ввімкнути якийсь доступ до віддаленого робочого столу, оскільки незабаром ми вимкнемо доступ Proxmox noVNC / Shell до віртуальної машини. Я віддаю перевагу використанню вбудованого клієнта віддаленого робочого стола Windows. Ось чудовий простий підручник із увімкнення доступу RDP .
ПРИМІТКА. Перебуваючи у віртуальній машині Windows, обов’язково запам’ятайте ім’я користувача віртуальної машини, внутрішню IP-адресу та/або ім’я комп’ютера.
Крок 3: Вимкніть доступ Proxmox noVNC / Shell
Щоб переконатися, що все правильно налаштовано, перш ніж ми встановимо драйвери GPU, ми хочемо вимкнути вбудований відеоадаптер, який відображається у віртуальній машині Windows. Щоб зробити це, ми просто переходимо на вкладку/вікно апаратного забезпечення віртуальної машини та під записом Display ми вибираємо None (жодного) зі спадного списку. легко. Тепер натисніть «Зупинити», а потім «Запустити» віртуальну машину.
ПРИМІТКА. Якщо ви не можете (повторно) підключитися до своєї віртуальної машини за допомогою віддаленого робочого стола (використовуючи надану внутрішню IP-адресу або ім’я комп’ютера/ім’я хоста), поверніться до вкладки/вікна апаратного забезпечення віртуальної машини та в налаштуваннях пристрою PCI для вашого GPU, позначте Primary GPU **. Збережіть його, а потім натисніть «Зупинити» та знову «Запустіть» віртуальну машину.**
Крок 4: Встановлення драйверів GPU
Нарешті ми майже закінчили. Останнім кроком є встановлення драйверів відеокарти графічного процесора. Оскільки я використовую NVIDIA для цього підручника, ми просто переходимо на http://nvidia.com і шукаємо драйвер конкретної моделі графічного процесора (у цьому випадку серії GTX 10XX). Роблячи це, я хочу перевірити диспетчер пристроїв Windows (у панелі керування), щоб побачити, чи відсутні драйвери VirtIO та/або чи видає графічний процесор помилку з кодом 43 . Швидше за все, ви побачите помилку Code 43 на своєму GPU, тому ми встановлюємо драйвери. Якщо у вас відсутній VirtIO (зазвичай відображається як «PCI Device» у диспетчері пристроїв із жовтим окликом), просто поверніться до апаратного забезпечення віртуальної машини.У вкладці/вікні повторіть кроки, щоб підключити файл VirtIO ISO до дисковода компакт-дисків, а потім наведіть диспетчер пристроїв у Windows на дисковод компакт-дисків, коли він попросить вас додати/оновити драйвери для невідомого пристрою.
Іноді просте встановлення звичайних драйверів NVIDIA видає помилку (щось про те, що неможливо встановити драйвери). У цьому випадку вам доведеться встановити за допомогою поганого інсталятора NVIDIA GeForce Experience(tm) . Це погано, тому що вам потрібно створити обліковий запис і все таке, але після цього встановлення драйвера має працювати.
Після одного-двох перезавантажень ви тепер зможете побачити панель керування NVIDIA, встановлену у вашій віртуальній машині Windows, а також диспетчер пристроїв, який не показує помилок Code 43 на вашому GPU. Погладьте себе по спині, пострибайте, замовте торт! Ви зробили це!
Multi-GPU Passthrough, це МОЖНА!
Всім дякую!
Коментарі
Дописати коментар
Олег Мічман в X: «Donations and support for media resources, bloggers, projects, and individuals. https://t.co/HPKsNRd4Uo https://t.co/R6NXVPK62M» / X
https://twitter.com/olukawy/status/1703876551505309973