Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

X11 unter Cygwin auf Win10 Home aufsetzen

84 views
Skip to first unread message

Michael Ottenbruch

unread,
Aug 22, 2020, 6:16:42 PM8/22/20
to
Hallo, Leute!

Ich habe ein Hardwareupdate durchgeführt und will jetzt X11 unter Cygwin
neu aufsetzen.

Die neue Hardware sieht folgendermaßen aus:

HP Pavilion Desktop TP01-0xxx, 16 GB RAM
NVIDIA GeForxe GTX 1650, 12226 MB Grafikspeicher

Windows 10 Home, VBersion 2004 Betriebssystem Build 19041.450
NVIDIA Treiberversion 451.67

Ich habe Cygwin gemäß Anleitung installiert und dann X11 wie bsplsw.
unter https://x.cygwin.com/docs/ug/setup.html dazugepackt.

Dort heißt es unter anderem:

> Cygwin/X packages are located in the X11 category.
>
> xorg-server (required, the Cygwin/X X Server)
>
> xinit (required, scripts for starting the X server: xinit, startx, startwin (and a shortcut on the Start Menu to run it), startxdmcp.bat )
>
> xorg-docs (optional, man pages)
>
> xlaunch (optional, a wizard for starting X sessions)

Das habe ich also alles installiert.

Ich war zunächst erstaunt, daß da unter /etc/X11/xinit wesentlich
weniger liegt, als ich das so gewöhnt war:

| $ ls -al /etc/X11/xinit
| insgesamt 36
| drwxrwx---+ 1 motte motte 0 22. Aug 14:58 .
| drwxrwx---+ 1 motte motte 0 22. Aug 14:58 ..
| -rwxr-xr-x+ 1 motte motte 3770 22. Aug 14:58 startxwinrc
| -rwxr-xr-x+ 1 motte motte 2692 22. Aug 14:58 Xclients
| drwxrwx---+ 1 motte motte 0 22. Aug 14:57 Xclients.d
| -rwxr-xr-x+ 1 motte motte 1486 22. Aug 14:58 xinitrc
| drwxrwx---+ 1 motte motte 0 22. Aug 14:58 xinitrc.d
| -rwxr--r--+ 1 motte motte 1870 22. Aug 14:58 xinitrc-common
| drwxrwx---+ 1 motte motte 0 22. Aug 08:40 xinput.d
| -rwxr-xr-x+ 1 motte motte 4740 22. Aug 14:58 Xsession

Ich hätte da mindestens noch /etc/X11/xinit/xserverrc erwartet, aber ich
habe mir dann selbst eine gebaut:

| $ cat .xserverrc
| #!/bin/sh
| exec XWin -screen 0 800x2000+1150+0@1

So bin ich bis dahin gelangt, daß ich durch einen Aufruf von mintty.exe
mit den Parametern "mintty.exe -i /Cygwin-terminal.ico -p 0,0 -s 100,100
-" vom Win10-Desktop ein Terminalfenster erhalte, in dem ich nach
"startx" (oder auch "startxwin") folgende Ausgabe erhalte:

| $ startx
|
| Welcome to the XWin X Server
| Vendor: The Cygwin/X Project
| Release: 1.20.5.0
| OS: CYGWIN_NT-10.0-19041 MO-PC-Home 3.1.6-340.x86_64 2020-07-09 08:20 UTC x86_64
| OS: Windows 10 [Windows NT 10.0 build 19041] (Win64)
| Package: version 1.20.5-3 built 2019-09-06
|
| XWin was started with the following command line:
|
| XWin -screen 0 800x2000+1150+0@1
|
| (II) xorg.conf is not supported
| (II) See http://x.cygwin.com/docs/faq/cygwin-x-faq.html for more information
| LoadPreferences: Loading /home/motte/.XWinrc
| LoadPreferences: Done parsing the configuration file...
| winDetectSupportedEngines - RemoteSession: no
| winDetectSupportedEngines - DirectDraw4 installed, allowing ShadowDDNL
| winDetectSupportedEngines - Returning, supported engines 00000005
| winSetEngine - Using Shadow DirectDraw NonLocking
| winScreenInit - Using Windows display depth of 32 bits per pixel
| winWindowProc - WM_SIZE - new client area w: 800 h: 2000
| winFinishScreenInitFB - Masks: 00ff0000 0000ff00 000000ff
| MIT-SHM extension disabled due to lack of kernel support
| XFree86-Bigfont extension local-client optimization disabled due to lack of shared memory support in the kernel

Hier fehlen mir root-Rechte auf cygwin, weswegen ich an Cygserver-config
scheitere. Wo ich bei der cygwin-Installation die Stelle verpaßt habe,
wie ich root werden kann, muß ich noch herausfinden. Bis jetzt brauchte
ich das noch nie. (Der WIN10-Nutzer, mit dem ich das Ganze mache, hat
Administrator-Rechte.)

| (EE) AIGLX: No native OpenGL in modes with a root window
| (II) IGLX: Loaded and initialized swrast
| (II) GLX: Initialized DRISWRAST GL provider for screen 0
| winPointerWarpCursor - Discarding first warp: 400 1000
| (--) 8 mouse buttons found
| (--) Setting autorepeat to delay=500, rate=31
| (--) Windows keyboard layout: "00000407" (00000407) "German", type 4
| (--) Found matching XKB configuration "German (Germany)"
| (--) Model = "pc105" Layout = "de" Variant = "none" Options = "none"
| Rules = "base" Model = "pc105" Layout = "de" Variant = "none" Options = "none"

Dabei entsteht wie gewünscht das X11-Window an der gewünschten Stelle,
und es passiert ... nichts weiter. Die default-Tools erscheinen nicht,
sondern die Meldung, daß darauf gewartet wird, daß der X-Server anfängt,
Verbindungen zu akzeptieren, was er aber nicht tut. Jetzt kann ich
entweder das X11-Window schließen oder abwarten, bis er von selbst
aufgibt - wie unten dargestellt. Das dauert dann einige Minuten.

| waiting for X server to begin accepting connections .
| ..
| ..
| ..
| ..
| [...]
| ..
| ..
| xinit: giving up
| xinit: unable to connect to X server: Connection refused
|
| waiting for X server to shut down winDeinitMultiWindowWM - Noting shutdown in progress
| (II) Server terminated successfully (0). Closing log file.
|
| xinit: server error

Wenn ich den Versuch mache, X11 über die ensprechenden Einträge im
WIN10-Startmenü zu starten, so erscheint bei "Cygwin-X/User script" Das
Fenster mit der in .xserverrc angegebenen Position und Größe,
verschwindet allerdings nicht wieder von alleine. Bei
"Cygwin-X/X-Launch" kann ich mich durch die Konfig-Felder arbeiten, nach
"Fertig stellen" passiert aber nichts. Bei "Cygwin-X/XWin Server"
erscheint ebenfalls das Fenster mit der in .xserverrc angegebenen
Position und Größe, verschwindet allerdings nicht wieder von alleine.
In /var/log/xwin/XWin.0.log steht anschließend das gleiche wie oben
angegeben (bis auf die command line), allerdings ohne die Zeile:
"waiting for X server to begin accepting connections ." Und ich muß
dabei natürlich zwischendurch immer die lock-Dateien entfernen, weil ich
sonst die Fehlermeldung bekomme, daß bereits ein Server läuft, und zwar
auch, wenn ich das Fenster händisch geschlossen habe. Aus den logs und
diesen Fehlermedungen weiß ich, daß X-Launch den Server via XWin mit den
Parametern startet, die ich in den Einstellungs-Fenstern übergebe, "XWin
Server" mit denen aus .xserverrc - na ja, kein Wunder, sonst wäre das
Fenster ja nicht an der angegebenen Stelle.

Kennt jemand das Problem und kann mir sagen, wo ich noch suchen oder was
ich noch ausprobieren kann?

Ich habe übrigens beim Googeln nach "waiting for X server to begin
accepting connections" vage Hinweise erhalten, daß ein solches Problem
mglw. etwas mit den NVIDIA-Treibern zu tun haben könnte, aber das
bezieht sich AFAIU nicht auf Cygwin, sondern auf echte
Linux-Distributionen. Ich habe aber keine Ahnung, ob Cygwin eigene
Grafik-Treiber verwendet. Ich hätte vermutet, der Witz liegt darin, daß
die WIN10-Treiber verwendet werden. Aber davon verstehe ich viel zu
wenig.

TIA
--
...und tschuess!

Michael
E-mail: M.Otte...@sailor.ping.de

Michael Ottenbruch

unread,
Aug 22, 2020, 10:13:20 PM8/22/20
to
Nachtrag:

Am Sun, 23 Aug 2020 00:16:39 +0200, schrieb ich:

> | XWin was started with the following command line:
> |
> | XWin -screen 0 800x2000+1150+0@1

Ich bin jetzt mal auf die Idee gekommen, nach Ausgaben bzw. logs von
erfolgreichen Versuchen zu googeln, X11 zu starten. dabei ist mir
aufgefallen, daß dort stets auch ein parameter "-auth" auftaucht, wie in

| XWin was started with the following command line:
|
| /usr/bin/X :0 -auth /cygdrive/c/users/bcs/bcs/.serverauth.6384

(Aus dem Attachement good.log zu
http://cygwin.1069669.n5.nabble.com/XWin-freezes-during-startup-in-multi-window-but-not-single-window-mode-on-W7-td138460.html)

Der Aufruf von xinit wird ja in startx über die Zeile

| eval xinit \"$client\" $clientargs -- \"$server\" $display $serverargs

zusammengebaut.

Durch set -x (und noch ein paar ander Prüfungen) ändert sich die Ausgabe
wie folgt:

| $ ~/startx.homebat
| PID = 1995
| Filename /home/motte/.serverauth.1995
| + ls -al /home/motte/.serverauth.1995
| -rwxrw-r--+ 1 motte motte 0 23. Aug 03:06 /home/motte/.serverauth.1995
| + set +x
| führe xinit durch
| + eval xinit '"/home/motte/.xinitrc"' -- '"/home/motte/.xserverrc"' :0 -auth ''\''/home/motte/.serverauth.1995'\'''
| ++ xinit /home/motte/.xinitrc -- /home/motte/.xserverrc :0 -auth /home/motte/.serverauth.1995

IOW: Der Filename wird korrekt ermittelt, das authfile angelegt und der
auth-Aufruf korrekt zusammengebaut ...

| Welcome to the XWin X Server
| Vendor: The Cygwin/X Project
| Release: 1.20.5.0
| OS: CYGWIN_NT-10.0-19041 MO-PC-Home 3.1.6-340.x86_64 2020-07-09 08:20 UTC x86_64
| OS: Windows 10 [Windows NT 10.0 build 19041] (Win64)
| Package: version 1.20.5-3 built 2019-09-06
|
| XWin was started with the following command line:
|
| XWin -screen 0 800x2000+1150+0@1

... aber beim Aufruf von XWin nicht übergeben. Das sieht für mich nach
einem Fehler in xinit aus. Und das ist AFAICS kein Skript, sondern ein
binary. was kann man denn da machen?

| (II) xorg.conf is not supported
| (II) See http://x.cygwin.com/docs/faq/cygwin-x-faq.html for more information
| LoadPreferences: Loading /home/motte/.XWinrc
| LoadPreferences: Done parsing the configuration file...
| winDetectSupportedEngines - RemoteSession: no
| winDetectSupportedEngines - DirectDraw4 installed, allowing ShadowDDNL
| winDetectSupportedEngines - Returning, supported engines 00000005
| winSetEngine - Using Shadow DirectDraw NonLocking
| winScreenInit - Using Windows display depth of 32 bits per pixel
| winWindowProc - WM_SIZE - new client area w: 800 h: 2000
| winFinishScreenInitFB - Masks: 00ff0000 0000ff00 000000ff
| MIT-SHM extension disabled due to lack of kernel support
| XFree86-Bigfont extension local-client optimization disabled due to lack of shared memory support in the kernel
| (EE) AIGLX: No native OpenGL in modes with a root window
| (II) IGLX: Loaded and initialized swrast
| (II) GLX: Initialized DRISWRAST GL provider for screen 0
| winPointerWarpCursor - Discarding first warp: 400 1000
| (--) 8 mouse buttons found
| (--) Setting autorepeat to delay=500, rate=31
| (--) Windows keyboard layout: "00000407" (00000407) "German", type 4
| (--) Found matching XKB configuration "German (Germany)"
| (--) Model = "pc105" Layout = "de" Variant = "none" Options = "none"
| Rules = "base" Model = "pc105" Layout = "de" Variant = "none" Options = "none"
|
| waiting for X server to begin accepting connections .
| ..
| ..
| ..
| ..
| ..
| ..
| winWindowProc - WM_*KEYDOWN - Closekey hit, quitting
| winDeinitMultiWindowWM - Noting shutdown in progress
| (II) Server terminated successfully (0). Closing log file.
| xinit: giving up
| xinit: unable to connect to X server: Connection refused
| xinit: server error
| + set +x
| xinit fertig

Nur der Vollständigkeit halber: Die beiden rcs sehen wie folgt aus:

| $ grep ^[^#] .xinitrc
| . /etc/X11/xinit/xinitrc-common
| if [ -f $HOME/.Xclients ]; then
| exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients || \
| exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients
| elif [ -f /etc/X11/xinit/Xclients ]; then
| exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients || \
| exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients
| else
| # Failsafe settings. Although we should never get here
| # (we provide fallbacks in Xclients as well) it can't hurt.
| [ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'
| [ -x /usr/bin/xclock ] && /usr/bin/xclock -geometry 100x100-5+5 &
| [ -x /usr/bin/xterm ] && xterm -geometry 80x50-50+150 &
| [ -x /usr/bin/twm ] && /usr/bin/twm
| fi

Die vier Binaries existieren.

| $ cat .xserverrc
| #!/bin/sh
| exec XWin -screen 0 800x2000+1150+0@1

Wenn ich den -auth-Parameter händisch anhänge, also

| $ cat .xserverrc
| #!/bin/sh
| exec XWin -screen 0 800x2000+1150+0@1 -auth /home/motte/.serverauth.$$

dann erscheint an der entscheidenden Stelle in der Ausgabe:

| XWin was started with the following command line:
|
| XWin -screen 0 800x2000+1150+0@1 -auth
| /home/motte/.serverauth.2135
|
| (II) xorg.conf is not supported
| (II) See http://x.cygwin.com/docs/faq/cygwin-x-faq.html for more information

Sonst bleibt alles beim Alten.

Obwohl: Interessant ist natürlich der Zeilenwechsel in der Ausgabe.

In startx wird ja ein ziemlicher Affe mit dem Quoten der Dateinamen
betrieben:

| xserverauthfilequoted=$(echo ${xserverauthfile} | sed "s/'/'\\\\''/g")
| serverargs=${serverargs}" -auth '"${xserverauthfilequoted}"'"

Allerdings gelingt es mir nicht, dsß so in .xserverrc einzubauen, daß
bei der Ausgabe von xinit zwar der Dateiname, aber kein Zeilenumbruch
vorkommt. (Mit einfachen Anführungsstrichen bleibt der Variablenname ja
stehen, mit doppelten oder ohne wird er zwar in den Dateinamen
aufgelöst, aber dann habe ich immer den zeilenumbruch.)

Vielleicht ist es aber auch schon etwas spät ...
0 new messages