# PCIE-Karte beim Laden des Kernels deaktivieren

## schachti

Da ich eine onboard-Grafikkarte und eine separate Grafikkarte habe, muss ich eine davon deaktivieren, um 3D-Beschleunigung mit xf86-video-ati nutzen zu können (siehe http://disparitybit.blogspot.com/2010/01/how-to-enable-dri-xvideo-with-several.html). Das mache ich mit dem Befehl

```

echo 1 > /sys/bus/pci/devices/0000\:01\:05.0/remove

```

Kann man das auch direkt beim Laden des Kernels (als Parameter in der grub.conf) machen?

----------

## Klaus Meier

Ich gehe mal davon aus, dass du sie dann später nicht wieder aktivieren willst. Bau dir doch 2 Kernel, einen mit und einen ohne Unterstützung für PCIE.

----------

## schachti

Das Problem dabei ist, dass es ja letztlich 2 Karten sind - eine brauche ich, und nur die zweite will ich deaktivieren. Deaktiviere ich PCIE generell, geht auch die 2. Karte nicht mehr.

----------

## Klaus Meier

Danke, die Idee ist mir inzwischen auch schon gekommen, konnte es aber vorher nicht mehr löschen...... Auch nach dem Kaffee schreibt man manchmal Mist.

----------

## Hollowman

Wieso deaktivierst du das Teil nicht im Bios? Das müsste normal gehen.

Sebastian

----------

## schachti

Das habe ich als erstes getan - das kümmert aber den Kernel nicht.   :Wink: 

----------

## Hollowman

Dann haste was falsch gemacht.

Wenn das Teil im Bios aus ist sollte der Kernel die Karte nicht mehr sehen.

Sebastian

----------

## Klaus Meier

Welche soll denn überhaupt deaktiviert werden? Die onboard oder die im Steckplatz?

Und ansonsten ist es so, dass Linux auch am BIOS vorbei auf Hardware zugreift. Ist dem Kernel egal, ob man es abgeschaltet hat oder nicht. Aber das geht ja auch nur mit der onboard. Und selbst die kann man nicht immer abschalten. Früher war es so, dass die automatisch aus war, wenn man eine Externe eingesteckt hat. Aber heute sollen die sich ja beide unter die Arme greifen.

----------

## Hollowman

Also ich hab noch kein Board gesehen bei der man die nicht abschalten kann.

Meistens ist da Deaktiviert und Automatisch auswählbar.

Automatisch = Aus wenn andere Graka drin

Deaktiviert = Karte aus

Ich hab das bei meinem Desktop auch gehabt. Da taucht die Karte in lspci nicht auf wenn sie auf Deaktiviert steht.

Schreib doch ma rein was das für ein Board ist.

Sebastian

----------

## Josef.95

Vermutlich Wunschdenken...,aber

gibt es für die onboard Grafik  evtl. ein Jumper (Steckschalter) auf dem Motherboard?

----------

## Klaus Meier

 *Josef.95 wrote:*   

> Vermutlich Wunschdenken...,aber
> 
> gibt es für die onboard Grafik  evtl. ein Jumper (Steckschalter) auf dem Motherboard?

 Die gab es mal im letzten Jahrtausend.... Und ich denke, er möchte nicht alle halbe Stunde den Rechner aufschrauben und umjumpern.

@Hollowman: Ich hatte knapp 10 Jahre Computergeschäft, ich hab da ein paar tausend in den Händen gehabt. Das was du beschreibst war mal. Bei aktuellen Boards kannst beide parallel laufen lassen, also als Croffire . Der Nutzen geht gegen Null. Und ob Linux auf das BIOS regiert oder nicht, das steht in den Sternen. Kann sein, oder halt auch nicht.

Aber ich bin mir immer noch nicht im Klaren, welche Karte denn nun aus soll. Wenn es die Externe ist, dann hilft da auch kein Jumper und BIOS.

----------

## schachti

 *Hollowman wrote:*   

> Dann haste was falsch gemacht.
> 
> Wenn das Teil im Bios aus ist sollte der Kernel die Karte nicht mehr sehen.

 

Ist definitiv deaktiviert im BIOS, Board ist ein MSI 785GM-E51.

----------

## schachti

 *Klaus Meier wrote:*   

> Welche soll denn überhaupt deaktiviert werden? Die onboard oder die im Steckplatz?

 

Die onboard-Karte.

----------

## schachti

 *Josef.95 wrote:*   

> Vermutlich Wunschdenken...,aber
> 
> gibt es für die onboard Grafik  evtl. ein Jumper (Steckschalter) auf dem Motherboard?

 

Leider nein.

----------

## 69719

Wieso schreibst du es nicht in die /etc/conf.d/local.start ?

----------

## Josef.95

 *escor wrote:*   

> Wieso schreibst du es nicht in die /etc/conf.d/local.start ?

 Da ist die Ausführung vermutlich zu spät.

Aber evtl. kannst du mit einem Initskript im Runlevel boot dein Befehl früh genug starten!?

Für die Erstellung siehe zb auch: http://www.gentoo.de/doc/de/handbook/handbook-x86.xml?part=2&chap=4#doc_chap4

----------

## schachti

 *Josef.95 wrote:*   

>  *escor wrote:*   Wieso schreibst du es nicht in die /etc/conf.d/local.start ? Da ist die Ausführung vermutlich zu spät.

 

Ganz genau, damit gab es Probleme, weil der X-Server schon gestartet ist, wenn /etc/init.d/local gestartet wird.

 *Josef.95 wrote:*   

> Aber evtl. kannst du mit einem Initskript im Runlevel boot dein Befehl früh genug starten!?

 

Das geht sicher - momentan habe ich es quick&dirty so gelöst, dass ich den Befehl einfach zu /etc/init.d/xdm hinzugefügt habe. Ich dachte nur dass es evtl. einfacher ist, dem Kernel bereits beim Laden zu sagen, dass ich das Gerät nicht nutzen will (weil ich mir vorstellen kann, dass das Vorhandensein von zwei Karten und die damit verbundene automatische Nutzung von VGA arbitration nicht nur den entsprechenden X-Treiber stört, sondern auch den Kernel-Treiber für KMS.

----------

## Klaus Meier

Also erst mal eine Lösung, die nur halb so dirty ist wie deine.... Schreib dir doch ein Script und starte dieses mit Runlevel boot, dann wird es vor xdm ausgeführt und auch nie überschrieben, wenn xdm mal aktualisiert wird.

----------

## schachti

Habe ich inzwischen, nach dem Tipp von Josef.95, auch gemacht. Ist noch nicht optimal, aber besser als vorher.   :Wink: 

----------

## mv

 *Klaus Meier wrote:*   

> Schreib dir doch ein Script und starte dieses mit Runlevel boot

 

Eigentlich hat das im boot runlevel nichts verloren - dort ist ja möglicherweise das entsprechende Kernel-Modul noch gar nicht geladen, außer Du machst das Skript von den Modulen abhängig (was Du natürlich sinnvollerweise ohnehin tun solltest). Sauberer erschiene mir aber, (zusätzlich) xdm von dem Script abhängig zu machen, und dieses in gar kein Runlevel zu setzen sondern eben nur per Abhängigkeit zu laden (ohne xdm brauchst Du ja auch das Script nicht). Mit openrc geht das per  */etc/conf.d/xdm wrote:*   

> rc_need="Name Deines Scriptes"

  ohne Patchen von /etc/init.d/xdm

----------

## firefly

oder man schreibt im init script, dass es vor xdm gestartet werden soll. (in der depend methode)

----------

## mv

 *firefly wrote:*   

> oder man schreibt im init script, dass es vor xdm gestartet werden soll. (in der depend methode)

 

Dann muss man es aber in den runlevel aufnehmen. Außerdem bekommt man Ärger, wenn man mal in einem anderen Runlevel booten will und dann /etc/init.d/xdm manuell aufruft - dann wird das Skript vorher nicht ausgeführt. Falls das Script beim Stoppen das Flag wieder umlegen soll, ist diese Methode auch nicht so sicher (bei "need" ist die Reihenfolge zum Stoppen dokumentiert, bei "before" bin ich nicht so sicher - da könnte es sogar umgekehrt sei).

----------

