Menu Chiudi

Cygwin con Xfree86

Le esperienze di Matteo: CYGWIN e !XFree86

Fra le cose che ho fatto ieri e l’altro ieri, mi son messo a installare il Cygwin + !XFree86 4.2 sulle macchine dell’aula computer,facendo in modo che offrissero il logon (via xdm) della macchina Linux che fa da server. Nel farlo ho notato un paio di intoppi, che forse vale la pena di segnalare:

Le esperienze di Matteo: CYGWIN e !XFree86

Fra le cose che ho fatto ieri e l’altro ieri, mi son messo a installare il Cygwin + !XFree86 4.2 sulle macchine dell’aula computer,facendo in modo che offrissero il logon (via xdm) della macchina Linux che fa da server. Nel farlo ho notato un paio di intoppi, che forse vale la pena di segnalare:

  1. Per far si che le macchine client possano collegarsi all’application server (via XDMCMP) e avere la finestra di logon, NON BASTA che xdm sia in funzione e che in /etc/X11/xdm/Xaccess ci sia il solito ‘*’ (per indicare che qualunque client puo` essere gestito dall’xdm che funziona lato server): è anche necessario che l’application server sia in grado di risalire al nome della macchina client che tenta di collegarsi (vien fatto un reverse lookup dell’indirizzo IP del client per risalire al suo nome).

    Quindi, o in /etc/hosts, o nel DNS usato, occorre che ci siano nomi ed indirizzi delle macchine client (con anche la zona a rovescio nel caso di un DNS), ANCHE SE si autorizza qualsiasi client alla connessione.

    Pare un controsenso, ma il matching lato server vien fatto sui nomi… anche se son tutti.

  2. Sulla documentazione di !XFree86 per Cygwin si parla di connessione ad un application server lanciando:

    XWin.exe -query xxx.xxx.xxx.xxx  -from yyy.yyy.yyy.yyy

    In altre parole bisogna specificare l’indirizzo dell’application server xxx.xxx.xxx.xxx, e questo è abbastanza ovvio) ed anche il proprio indirizzo: questo perché, a quanto pare, XWin.exe non riesce a determinare in tutte le situazioni l’indirizzo IP della macchina.

    In realtà, se ad !XWin.exe non si specifica l’opzione -from, !XWin.exe usa l’indirizzo della prima interfaccia di rete che trova sulla macchina.

    Ora succede che, in genere, la prima interfaccia di rete che trova è la scheda di Accesso Remoto, che quando la connessione è down è sconfigurata ed ha come indirizzo 0.0.0.0…

    Soluzione: o si rimuovono le varie interfacce di rete da pannello di controllo in modo che rimanga solo quella da usarsi per la connessione all’application server, oppure bisogna fare uno scriptino ad hoc con grep e sed (possibile, visto che c’è il Cygwin) che macini l’output di ipconfig e deduca l’indirizzo locale da usare con il parametro -from.

  3. A quanto pare (ma non ne sono ancora del tutto sicuro), !XWin.exe non supporta l’opzione -broadcast per attaccarsi al primo xdm che risponde in rete… per cui sembra che sia necessario per forza fare una query diretta ad un server specifico, usando -query con il nome/indirizzo di un application server.

  4. !XWin.exe per default parte configurato con la tastiera statunitense, e non c’è modo di specificargli alla partenza un layout diverso.

    È comunque possibile cambiargli la mappatura della tastiera durante l’esecuzione, tramite xmodmap ed un file preparato ad hoc.

    Fortunatamente, i keycode (i codici numerici delle tastiere) sono identici sia su Linux che su Windows con Cygwin, per cui basta andare su una macchina Linux con !XFree86 configurato con la tastiera italiana, eseguire:

    1. xmodmap -pke > keyboard_it.xmodmap

      (oppure si può anche scaricare da qui: keyboard_it.xmodmap).

    2. copiare il file keyboard_it.xmodmap sulla macchina col Cygwin e poi far eseguire un xmodmap keyboard_it.xmodmap subito dopo l’avvio di !XWin.exe (il file startxwin.bat sembra essere il posto ideale).

    Tuttavia, se ci si collega ad un application server, xdm prende controllo completo dell’X server lato client, e di fatto impedisce di eseguire altri comandi che richiedono una connessione finché l’utente non si logga.

    Fortunatamente, è possibile specificare lato application server degli script da eseguire per effettuare il setup dei client che si connettono.

    Tali script vengono eseguiti giusto prima che venga mostrata la finestra di logon su un certo client, ed in uno di essi (lato application server) ci possiamo aggiungere il nostro xmodmap tastiera.it e vivere (relativamente) tranquilli.

  5. Per avere un’icona sul desktop di Windows che avvii l’X server fullscreen e lo faccia connettere direttamente all’application server, basta prendere come esempio il buon startxwin.bat (fornito con !XFree86 per Cygwin), copiarserlo sul desktop e modificarselo per avviare !XWin.exe con le opzioni del caso (i.e.:

    XWin.exe -screen 0 1024 768 -fullscreen -query xxx.xxx.xxx.xxx

    (con anche ”-from yyy.yyy.yyy.yyy” se non si riesce a risolvere il problema di cui al punto 2).

Tenendo conto di questi punti, installare il Cygwin e !XFree86 per Cygwin su una macchina Windows in modo che si connetta ad un application server con xdm o simili è questione di poco tempo (più che altro speso ad attendere la copiatura dei file).

Prossimamente (se mi riesce il trucco): uso di lbxproxy (o di dxpc) per ridurre la quantità di banda e le latenze dell’X protocol su reti intasate (di messaggi di broadcast, ogni quarto d’ora, nientemeno… 🙂

News

Nel frattempo siamo passati ad usare uno switch a 100 Mbps, per cui il problema di ottimizzare ulteriormente l’X protocol non si è più posto… dopo quasi dieci lezioni di corso posso dire che il sistema ha funzionato in maniera impeccabile su 9 macchine su 10. Quella che manca è una macchina su cui, misteriosamente, l’X server si rifiuta categoricamente di contattare l’application server (problemi di configurazione della rete?).

In definitiva posso dire che quella di !XFree86 con Cygwin è un’ottima soluzione se si vuole lavorare in ambienti misti senza troppe rivoluzioni sulle macchine client.

WordPress Appliance - Powered by TurnKey Linux