So ... (eigentlich wollte ich ja, das du din die Konsole bootest ohne einen K/G/X-DM und von dort das mal testest ...)
BTW: Das mit SuSE und ~/.xinitrc war ein Fehler, da du dein Verhalten ja auch in einem KGX-DM bekommst und in diesem Fall diese Datei ja noch nicht ausgewertet wurde.
Es laufen eine Menge scripts ab, wenn du einen X startest.
Du sagst er verändert deine xorg.conf bei jedem start ... was bedeutet ein Script überschreibt sie.
Diese Scripts werden (unter anderen) "gezündet", wenn du KGX-DM startest:
- [source] /etc/profile.env
- /etc/X11/xinitrc
- /etc/X11/xinitrc.d/* [alles was da drinnen executierbar ist]
- /etc/init.d/xdm ... [darin die start() funktion]
- /etc/X11/startDM.sh ... [vorletzter Aufruf]
- /var/lib/init.d/options/xdm/service ... [letzter Aufruf]
Wenn du startx auf der Konsole tippselst, dann sieht's leicht anders aus. Statt /etc/X11/startDM.sh wird /etc/X11/chooser.sh ausgeführt und ... aber lassen wir das mal.
Ein "Hack" wäre es also bsp. wenn du irgendwo da oben ein
|
Quellcode
|
1
|
cp -f /etc/X11/xorg.conf.mine_good /etc/X11/xorg.conf
|
einbaust, welche dein "gute" xorg.conf beinhart als xorg.conf wieder reinknallt.
Da gibts einige Varianten:
1. Du editierst die /etc/X11/xinitrc
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
...
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
# MY HACK
cp -f /etc/X11/xorg.conf.mine_good /etc/X11/xorg.conf
# First try ~/.xinitrc
if [ -f "$HOME/.xinitrc" ]; then
|
damit hättest du startx im Griff (aber nicht KGX-DM).
2. Du machst irgendeine Datei in /etc/X11/xinit/xinitrc.d (bsp. 99_MyHack)
|
Quellcode
|
1
2
3
4
|
#! /bin/sh...
# MY HACK
cp -f /etc/X11/xorg.conf.mine_good /etc/X11/xorg.conf
|
auch damit solltest du startx im Griff haben.
3. Du erzeugst überhaupt ein shell-script bsp. /usr/local/sbin/XorgHack.sh (ausführbar) mit
|
Quellcode
|
1
2
|
#! /bin/sh
cp -f /etc/X11/xorg.conf.mine_good /etc/X11/xorg.conf
|
und fügst ein dementsprechendes /usr/local/sbin/XorgHack.sh in /etc/X11/chooser.sh und /etc/X11/startDM.sh ein.
/etc/X11/chooser.sh (ganz unten):
|
Quellcode
|
1
2
|
/usr/local/sbin/XorgHack.sh
echo "${GENTOO_EXEC}"
|
/etc/X11/startDM.sh (in der Mitte vor dem if):
|
Quellcode
|
1
2
|
/usr/local/sbin/XorgHack.sh
if [[ -e ${svcdir}/options/xdm/service ]] ; then
|
Und viele andere Möglichkeiten mehr ...
... und das alles in der Hoffnung, der Hack wird *nach* dem Überschreiben der /etc/X11/xorg.conf ausgeführt sonst hat's ja keinen Effekt.
Aber: schlußendlich sind das alles nur Hacks, und gehen dem eigentlichen Problem nicht auf den Grund.
D.h. irgendwo muß es in einem Script ein Kommando geben, welches deine xorg.conf überschreibt. Das Problem ist nur, das es halt nicht leicht zu finden ist. Es muß ja nicht direkt in /etc liegen ...
Jedenfalls:
|
Quellcode
|
1
|
for d in "/etc /usr"; do fgrep -i -R -l "xorg.conf" ${d}; done
|
zeigt dir mal, welche Dateien/Scripts überhaupt mal was mit xorg.conf was am Hut haben (könnte ein bisserl dauern ...). Das sind dann die Startpunkte um zu gucken, wer ... zum Teufel ... deine gute xorg.conf überschreibt ...
... und noch was:
Um herauszufinden, wann denn eigentlich deine xorg.conf überschrieben wird, könnte sich dieses Code-Snippet eignen:
|
Quellcode
|
1
|
echo "1: " `md5sum /etc/X11/xorg.conf` >> /tmp/WTF.log
|
Das kannst du in all den Scripts, welche verdächtig sind einfügen, wobei du "1: " mit etwas sprechendem ersetzt bsp. "Beginn startx: ", "Ende startx: ", "Vor source /etc/profile.env: " usw. damit du dann in der /tmp/WTF.log siehst, wann sich die xorg.conf geändert hat. [Anm.: WTF soll nur heißen "WhatTheFuck"]. Sobald sich die MD5 checksum geändert hat, hast du den Übeltäter eingekreist ...
... ist das hilfreich?