giao diện điều khiển virsh và kích thước tty


11

Tôi có một máy chủ ảo hóa mà tôi kết nối qua ssh. Nếu bây giờ tôi thay đổi kích thước của cửa sổ, nó sẽ tự động truyền đến máy chủ. Dễ thấy nhất khi sử dụng stty -a, kiểm tra các giá trị cột và hàng.

Sau đó tôi sử dụng virsh consoleđể kết nối với giao diện nối tiếp trên máy ảo dựa trên KVM. Khi tôi thay đổi kích thước của cửa sổ, nó không truyền đến máy chủ ảo. Điều này dễ thấy nhất bằng cách kiểm tra stty -a, không được cập nhật trên máy ảo khi tôi thay đổi kích thước cửa sổ. Điều này có nghĩa là ngắt dòng không hoạt động chính xác trong thiết bị đầu cuối và bất kỳ ứng dụng nào dựa trên kích thước cửa sổ để định dạng (emacs, man, v.v.) sẽ bị rối trừ khi kích thước cửa sổ trên máy khách khớp với kích thước mặc định trên máy chủ.

Cách giải quyết là đặt thủ công kích thước cửa sổ khớp với cửa sổ máy khách bằng stty, nhưng tôi tự hỏi liệu có cách nào để có được thông tin này để truyền và đặt kích thước cửa sổ trong máy ảo tự động không.

Câu trả lời:


7

Bạn chủ yếu có thể làm việc xung quanh vấn đề này trong vỏ.

Lệnh:

eval `/usr/bin/resize`

sẽ thiết lập các biến shell COLUMNS và LINES một cách thích hợp và sau đó xuất chúng. Vì vậy, trong bash, bạn có thể thêm phần sau vào .bash_profile (hoặc .profile, tùy thuộc vào loại bạn sử dụng)

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

Hoặc trong zsh:

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

Vì vậy, thay đổi kích thước sẽ được thực hiện ngay trước khi mỗi dấu nhắc được hiển thị. Hiệu ứng sẽ không giống như của ssh hoặc telnet khi thay đổi cửa sổ sẽ được xử lý ngay lập tức, tuy nhiên tôi nghĩ rằng đây có lẽ là điều tốt nhất bạn sẽ nhận được.


Một chút hacky, nhưng vẫn là một giải pháp tốt. Cảm ơn bạn!
pehrs

Xem thêm câu trả lời này để thực hiện mà không cần resizelệnh của xterm : unix.stackexchange.com/a/283206
rsaw

2

Telnet và SSH có một kênh ngoài băng tần để định cấu hình các cài đặt này. Giao diện nối tiếp không. Xem: http://tools.ietf.org/html/rfc1073http://tools.ietf.org/html/rfc4254#page-14


2
Tôi nhận ra rằng có một kênh kiểm soát liên quan. Nhưng câu hỏi vẫn còn, liệu có cách giải quyết tốt hơn cho các máy chơi game dựa trên KVM không? (Tôi không ngại cấu hình lại các máy móc)
pehrs

0

Chỉ cần thêm vào đánh dấu câu trả lời, vì Serverfault không cho phép tôi nhận xét.

Khi miền đích là OpenBSD 6.6 , thay đổi kích thước được đặt ở nơi khác và yêu cầu ít nhất là xbase66.

Ngoài ra, nếu bạn đang sử dụng ksh mặc định , nó là đủ để chạy:

eval `/usr/X11R6/bin/resize`

Thật đáng tiếc khi điều này không có trong Hướng dẫn quản trị KVM của Red Hat.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.