console virsh e dimensioni tty


11

Ho un server di virtualizzazione a cui mi connetto tramite ssh. Se ora modifico la dimensione della finestra, si propaga automaticamente al server. Si vede più facilmente usando stty -a, controllando le colonne e i valori delle righe.

Quindi utilizzo virsh consoleper connettermi all'interfaccia seriale su una macchina virtuale basata su KVM. Quando ora cambio la dimensione della finestra, non si propaga al server virtuale. Questo è più facilmente visibile controllando stty -a, che non viene aggiornato sulla macchina virtuale quando cambio la dimensione della finestra. Ciò significa che le interruzioni di riga non funzionano correttamente nel terminale e qualsiasi applicazione che si basa sulla dimensione della finestra per la formattazione (emacs, man, ecc.) Viene incasinata a meno che la dimensione della finestra sul client corrisponda alla dimensione predefinita sul server.

Una soluzione alternativa consiste nell'impostare manualmente le dimensioni della finestra in modo che corrispondano alla finestra del client utilizzando stty, ma mi chiedo se esiste un modo per propagare queste informazioni e impostare automaticamente le dimensioni della finestra nella macchina virtuale.

Risposte:


7

Potresti principalmente aggirare questo problema nella shell.

Il comando:

eval `/usr/bin/resize`

imposterà le variabili shell COLONNE e LINEE in modo appropriato e quindi le esporterà. Quindi in bash, potresti aggiungere quanto segue al tuo .bash_profile (o .profile, a seconda di quale usi)

PROMPT_COMMAND="eval `/usr/bin/resize`"

O in zsh:

function precmd {
    eval `/usr/bin/resize`
}

In modo che un ridimensionamento venga eseguito subito prima della visualizzazione di ciascun prompt. L'effetto non sarebbe come quello di ssh o telnet in cui le modifiche alla finestra sarebbero gestite immediatamente come risultato, tuttavia penso che questo sia probabilmente il migliore che otterrai.


Un po 'confuso, ma comunque una buona soluzione. Grazie!
pehrs

Vedi anche questa risposta per farlo senza il resizecomando di xterm : unix.stackexchange.com/a/283206
rsaw


0

Basta aggiungere alla risposta di Mark, perché Serverfault non mi permette di commentare.

Quando il dominio di destinazione è OpenBSD 6.6 , il ridimensionamento si trova altrove e richiede almeno il set xbase66.

Inoltre, se stai usando il ksh predefinito , è sufficiente eseguire:

eval `/usr/X11R6/bin/resize`

È un peccato che non sia presente nella Guida all'amministrazione KVM di Red Hat.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.