Kay Martinen schrieb:
> Am 06.05.21 um 15:23 schrieb Bernd Mayer:
>> Am 05.05.21 um 22:24 schrieb Kay Martinen:
>>>
>>> Ich überlege einen PC der zwei PEG Slots hat und in dem schon eine
>>> Radeon 4650 HD (mit HDMI, VGA u.a. ausgängen) mit einer kürzlich wieder
>>> gefundenen Geforce 7600 GT ... auf zu rüsten. Die hat allerdings nur
>>> zwei DVI Ports und eine Runde Buchse (S-Video?).
Da es geregnet hat, habe ich hier mal die Restekiste geplündert.
Mitgespielt haben:
- ASRock 939Dual-VSTA
- Das Board hat je einen AGP- und PCIe-Slot.
- ATI Radeon HD 3450 (PCIe)
- Nvidia GeForce 7500 GS (PCIe)
- Nvidia GeForce 6200 (AGP)
- ATI RAGE 3D Rage II+ (PCI)
- Debian bullseye (testing)
- Netinst Basisinstallation
- xorg + xdm + fluxbox
>>> Installiert ist Debian Buster 64bit und die wichtigste Frage ist erst
>>> mal ob damit ein Multimonitor-Setup funktioniert. Also mindestens 1 DVI,
>>> 1 VGA und... evtl. einen weiteren DVI oder ggf. mehr.
Prinzipiell geht das schon, hat aber ein paar Fallstricke.
>>> Ich hab beide Karten im Rechner und er läuft zumindest schon mal ohne
>>> erkennbare Probleme. Allerdings startet der Desktop entweder nicht oder
>>> auf der Falschen (Geforce) denn derzeit hab ich nur die Radeon via HDMI
>>> angeschlossen. Wie man auf der Shell den ausgang wechselt oder den
>>> Primären Ausgang für den Desktop wechselt muß ich auch noch raus finden.
Welches die primäre Karte beim booten ist, ist Sache der Firmware. Ich
kenne da nur Einstellmöglichkeiten bezüglich "Integrierte Grafik" vor
PCIe bzw. PCI/AGP. Bei 2 Karten im PCIe gewinnt vermutlich einfach die
im Slot mit der niedrigeren Adreesse, oder so.
Wo die Linux-Console landet, lässt sich laut Dokumentation[1] über den
Kernelparameter "fbcon=map:..." beeinflussen. Habe ich nicht näher
untersucht. Da hier aber auch nicht ganz klar ist, welche Karte auf
welchem Framebuffer landet, würde ich es im Mischbetrieb eher mit
geschicktem Blacklisting der jeweiligen Module probieren.
>> werden denn mit lspci beide Karten erkannt?
>
> Ja. Daher habe ich die Bezeichnungen der Karten. Denn zumindest auf der
> (Dualslot-Passiv gekühlten) Geforce steht nichts verwertbares zu Modell
> und Type drauf.
Die relevanten Ausgaben von lspci sehen hier so aus:
$ lspci
[...]
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV620 LE [Radeon HD 3450]
[...]
04:00.0 VGA compatible controller: NVIDIA Corporation NV44A [GeForce 6200] (rev a1)
05:06.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Mach64 GT-B [3D Rage II+ DVD] (rev 9a)
> Ich hab versucht als root mit 'xrandr' irgendwie den ausgang um zu
> schalten. Aber er sagt immer 'no Display' (o.ä.) und auch wenn ich
> 'startx' in einer konsole aufrufe und noch mal auf der anderen versuche,
> immer noch 'no display'.
Das funktioniert natürlich so nicht. Das Programm "xrandr" ist ein
X-Client, das braucht mindestens eine gesetzte DISPLAY-Variable und
idr. auch ein X-Cookie oder anderweitige Freigabe zum Zugriff auf das
Display des X-Servers.
Du verlässt mit so einem Setup auch den Bereich, in dem die
automagische Konfiguration von xorg noch funktioniert. Da hilft dann
nur noch Ärmel hochkrempeln und selber Einrichten, so wie früher™
halt. ;) Siehe unten.
> im x-org.log war so ziemlich die einzige fehlermeldung 'can not load
> module nv' was wohl eh obsolet ist. Nach dem was ich dort entzifferte
> werden wohl beide karten von X erkannt und genutzt wobei auch da erst
> die Radeon kam und dann die Geforce (treiber nouveau) die dann aber auch
> gleich als Primäre gilt.
IIRC hat der X-Server eine fest einkompilierte Prioritätsliste für die
Treiber, die er der Reihe nach probiert.
Hier mal eine Rumpfkonfig, die hier funktioniert. Ich hab das aud
mehrere Dateien aufgeteilt. Manchmal ist der neumodische Kram dann
doch ganz nützlich.
#----------------------------------------------------------------------#
# /etc/X11/xorg.conf.d/cards.conf
#----------------------------------------------------------------------#
Section "Device"
Identifier "Card0"
Driver "radeon"
BusID "PCI:1:0:0"
Screen 0
EndSection
Section "Device"
Identifier "Card1"
Driver "nouveau"
BusID "PCI:4:0:0"
Screen 0
EndSection
Section "Device"
Identifier "Card2"
Driver "mach64"
BusID "PCI:5:6:0"
Screen 0
EndSection
#----------------------------------------------------------------------#
Die PCI-IDs kommen von lspci oben. Es muss in allen Fällen oben
"Screen 0" heissen, kann man eventuell auch weglassen. Das bezieht
sich auf die Instanz der Karte, nicht auf den X11-Screen. (siehe
später)
#----------------------------------------------------------------------#
# /etc/X11/xorg.conf.d/monitors.conf
#----------------------------------------------------------------------#
Section "Monitor"
Identifier "Monitor0"
EndSection
Section "Monitor"
Identifier "Monitor1"
EndSection
Section "Monitor"
Identifier "Monitor2"
EndSection
#----------------------------------------------------------------------#
Die Monitor-Sections kann man vermutlich auch weglassen, werden aber
gerbraucht, wenn man die Ausgänge direkt in der xorg.conf einrichten
will oder muss.
#----------------------------------------------------------------------#
# /etc/X11/xorg.conf.d/screens.conf
#----------------------------------------------------------------------#
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
EndSection
Section "Screen"
Identifier "Screen1"
Device "Card1"
Monitor "Monitor1"
EndSection
Section "Screen"
Identifier "Screen2"
Device "Card2"
Monitor "Monitor2"
EndSection
#----------------------------------------------------------------------#
Für jede Karte bzw. Monitor/Ausgang einen Screen. Siehe Anmerkung zu
"Xinerama" unten.
#----------------------------------------------------------------------#
# /etc/X11/xorg.conf.d/layout.conf
#----------------------------------------------------------------------#
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
Screen 1 "Screen2" LeftOf "Screen0"
Screen 2 "Screen1" LeftOf "Screen2"
Option "Xinerama" "off"
EndSection
#----------------------------------------------------------------------#
Anordnung der Screens nach Geschmack anpassen. Siehe xorg.conf(5) dazu.
Interessant hier ist noch die "Xinerama"-Option. Der Default ist hier
"off". Das sorgt dafür, dass die Karten (so wie konfiguriert)
tatsächlich zu separaten X11-Screens werden. In diesem Modul kann man
*keine Fenster* von einem Screen zum anderen schieben, nur den
Mauszeiger! Fluxbox, den ich zum Testen verwendet habe, hat die - in
diesem Zusammenhang nützliche - Eigenschaft, dass er von sich aus alle
Screens eines X11-Displays managt. Mehrere Ausgänge einer Grafikkarte
lassen sich hier dann mit xrandr (Option -screen) steuern und
3D-Beschleunigung funktioniert - im Rahmen der Möglichkeiten des
Treibers - auch.
Mit "Xinerama" "on" werden alle Screen zu einem großen Bereich
vereinigt. So wie man das heutzutage von einer Grafikkarte mit
mehreren Ausgängen kennt. In dem Setup mit mehreren Karten hat das
aber den Nachteil, dass man die RANDR-Extension verliert (xrandr
funktioniert nicht mehr) und dann die multiplen Anschlüsse der
Grafikkarten in der xorg.conf konfigurieren muss. Noch schlimmer ist
aber, dass dann die Harwdwarebeschleunigung der 3D-Grafik nicht mehr
geht. Dafür kann man dann aber ein Fenster über alle Bildschurme
ziehen. So ein Terminal mit 1000 Spalten hat schließlich auch was für
sich. ;)
Die zwei Nvidias zusammen mit dem nouveau-Treiber funktionieren.
Mischbetrieb mit verschiedenen Treibern geht aber genauso. Ob man den
Binärtreiber von Nvidia zum Mispielen überreden kann ist fraglich.
Have a lot of fun,
Lutz
[1] <
https://www.kernel.org/doc/html/latest/fb/fbcon.html>