Имееются две видеокарты в кудахтере. Одна красная, вторая зеленая. ATI служит заглушкой, но стоит в основном слоте и, соответственно, на ней отображается вся первоначальная загрузка и стартует консольный буфер. У каждой карточки по монитору. OS: Linux Mint 21.3; WM: Cinnamon. Грузится система на проприетарных драйверах nvidia из репозиториев минта.
Энивей, интересует как (!)правильно в таком сетапе «откреплять» зеленую карточку и оставлять красную как активную. Просто откреплять ее я могу, пробрасывать в виртуалку тоже. Это все протестировано. Просто две проблемы. Скрипт открепления срабатывает только со второго раза (а значит уже какой-то не тот порядок) и, соответственно, уже через ssh (и да, сразу через ssh срабатывает тоже со второго раза). После подсоединения GPU назад как-будто спавниться второй юзер (users выдает два моих логина).
Порядок действий при откреплении:
# Для понимания где мы.
set -x
VIRSH_GPU_VIDEO=pci_0000_06_00_0
VIRSH_GPU_AUDIO=pci_0000_06_00_1
# Гасим display-manager и тут я не уверен есть ли смысл отключать мультиюзера.
# sudo systemctl isolate multi-target.service
sudo systemctl stop display-manager.service
# По идее, останавливаем вывод консоли, но так как она на radeon'е,
# я не вижу в этом смысла.
# echo 0 > /sys/class/vtconsole/vtcon0/bind
# echo 0 > /sys/class/vtconsole/vtcon1/bind
sleep 1
# Выгружаем драйвер nvidia, оставляя radeon, делаем передышку.
sudo rmmod nvidia_drm
sudo rmmod nvidia_uvm
sudo rmmod nvidia_modeset
sudo rmmod nvidia
sleep 3
# Собственно, делаем detach устройства.
sudo virsh nodedev-detach $VIRSH_GPU_VIDEO
sudo virsh nodedev-detach $VIRSH_GPU_AUDIO
sleep 1
# Подгружаем драйвер vfio.
sudo modprobe vfio
sudo modprobe vfio_iommu_type1
sudo modprobe vfio_pci
sleep 3
# Стартуем все это дело назад, но уже на одном radeon'е.
sudo systemctl start display-manager.service
Думаю, обратный скрипт представить не сложно, там ничего неожиданного.