Làm thế nào để làm cho giao diện điều khiển bộ đệm khung linux hẹp hơn?


3

Tôi vừa cài đặt một hộp Wheezy Debian (Debian 7.0rc1). Theo mặc định, bảng điều khiển được hiển thị bằng bộ đệm khung và do một thiết lập phần cứng nhất định mà tôi sẽ không thực hiện, điều này xuất hiện quá rộng trên màn hình của tôi, ví dụ: cột ngoài cùng bên trái của giao diện điều khiển không hiển thị.

Có cách nào để tôi có thể làm cho bàn điều khiển hẹp hơn một hoặc hai cột không? Ý tôi là, tôi không muốn làm phông chữ hẹp hơn hoặc rộng hơn, tôi muốn có ít cột hơn ở cùng chiều rộng và cho toàn bộ màn hình bảng điều khiển được hiển thị có chiều rộng nhỏ hơn nhưng được căn giữa theo cùng một cách.

Cập nhật: Dựa trên câu trả lời của @ mr.spuratic, tôi đã cài đặt và thử sử dụng fbset; mà không làm chính xác những gì tôi yêu cầu nhưng về mặt lý thuyết có thể giúp tôi khắc phục vấn đề. Dù sao, khi tôi cố gắng thiết lập chế độ với nó, tôi nhận được:

fbset FBIOPUT_VSCREENINFO: invalid argument

Ghi chú:

  • Tôi muốn có một giải pháp thông qua cấu hình của thao tác grub và đang di chuyển từ bảng điều khiển sau khi tôi khởi động.
  • Nếu có thêm thông tin bạn cần để cung cấp giải pháp, hãy bình luận và hỏi.

Câu trả lời:


1

Tôi đã tự hỏi nơi để đặt đoạn văn bản này. Trang web riêng là một ứng cử viên có thể, hoặc tìm một số chủ đề tại superuser.com gần nhất với chủ đề của tôi (và có thể đã giúp tôi). Đây là cách tôi đã đến đây :-)

Vấn đề cụ thể của tôi là, làm thế nào để buộc một chế độ video cụ thể vào bảng điều khiển văn bản của tôi. Thiết lập hệ thống: Debian 9 Trải dài trên phần cứng Haswell, IGP của nó được xử lý bởi trình điều khiển i915 trong Linux (hiện hỗ trợ KVM và DRI / DRM trong một thời gian dài). Một số công tắc KVM tương tự ngu ngốc, nói với PC thông qua DDC / EDID rằng độ phân giải tối đa là 1600x1200, nhưng trong thực tế, màn hình LCD có khả năng 1280x1024 :-)

Tôi bắt đầu chơi xung quanh với vbetoolfbset, tuy nhiên đã hết hạn / không phù hợp cho mục đích này, vì chúng không tương thích với KMS + DRM. "Inteldrmfb" dường như chỉ là một phần nhỏ của KMS + DRM (và, dường như không được thể hiện trong một mô-đun hạt nhân của chính nó). Các tham số hình học là chỉ đọc. Ít nhất fbset có thể hiển thị thụ động độ phân giải hoạt động, có một số giá trị thông tin.

Tuy nhiên, dường như có một cách để bạn và tôi thiết lập độ phân giải và tốc độ khung hình AKA làm mới theo chiều dọc từ dòng lệnh kernel (tham số bộ nạp khởi động trên dòng bắt đầu bằng "linux", nằm ở cuối của một hiện đại phần grub.conf đa dòng).

Bạn có thể mân mê các thông số khi khởi động, nếu bạn nhấn e trong khi Grub đếm ngược thời gian chờ. Thực hiện theo sự giúp đỡ từ đó. Khi bạn hài lòng với các chỉnh sửa của mình, hãy nhấn Ctrl + X hoặc F10 để khởi động cấu hình đã sửa đổi. . Để lưu trữ liên tục các tham số khởi động bổ sung của bạn (kernel cmdline args), trong Debian bạn nên nhập chúng vào /etc/default/grub, trong một biến được gọi là GRUB_CMDLINE_LINUX_DEFAULT . Và chạy update-grub.

Bây giờ cho các đối số. Trước tiên, bạn cần i915.modeset=1 (với điều kiện hệ thống con đồ họa của bạn là Intel IGP). Nếu bạn gặp phải vấn đề tương tự như tôi đã làm, tức là hạt nhân thiết lập độ phân giải quá cao, bạn có thể có chế độ = 1 đã được mặc định (được biên dịch trong kernel). Trong khi bạn đang vật lộn với cú pháp của lời nguyền cmdline, và đôi khi bạn chỉ muốn bất kì chế độ đồ họa làm việc, bạn có thể muốn thử i915.modeset=0 . Điều đó rõ ràng ngăn chặn thay đổi chế độ đồ họa hoàn toàn và bạn còn lại một bảng điều khiển 80x25 ký tự gần như cổ điển, tất cả các cách để đăng nhập bảng điều khiển. Bạn cũng sẽ nhận thấy rằng không có / dev / fb0 và không có thông báo gỡ lỗi DRM trong dmesg (đọc để biết chi tiết).

Cũng nhớ tùy chọn quiet. Điều này hoạt động có hoặc không có chế độ. Nó dường như ngăn chặn việc in kernel tin nhắn đến bảng điều khiển của bạn (/ dev / tty) = bạn nhận được một màn hình tối trống trong vài giây và sau đó bạn được chào đón với lời nhắc đăng nhập. Đây là một mặc định trong Debian. (Trên thực tế trong Debian hiện đại với systemd, bạn có thể nhận được thông báo khởi động systemd trên màn hình của bạn, thay vì nhật ký nhân ...) Vấn đề là, nếu bạn muốn thông điệp kernel trở lại, bạn chỉ nên xóa từ "quiet" khỏi dòng lệnh kernel và sử dụng lệnh đó chỉ cho một lần khởi động (nhấn "e" trong Grub, chỉnh sửa, ctrl + x để tiếp tục) hoặc vĩnh viễn (chỉnh sửa / etc / default / grub & amp; & amp; update-grub).

Cuối cùng cũng đến lúc: một khi bạn có i915.modeset=1, bạn cũng cần thêm video=<xres>x<yres>@framerate . Chẳng hạn như, trong trường hợp của tôi, video=1280x1024@60 hoặc là video=1024x768@60. Có nhiều lựa chọn có thể hơn, xem có liên quan chương tại Arch wiki . Ví dụ: bạn cũng có thể chỉ định độ sâu màu, hoặc áp dụng chế độ cho chỉ một cổng đầu ra video (được gọi là "đầu nối" trong ruột DRM). Lưu ý rằng chế độ được chỉ định của bạn có thể cần khớp với một trong các chế độ được biết đến với kernel, tức là một trong những "mô hình EDID". Hạt nhân giữ một danh sách các khối dữ liệu này, thu được thông qua DDC từ màn hình hoặc từ / lib / firmware hoặc có thể được biên dịch trong. Tức là, bạn không thể chỉ định bất kỳ hình học lẻ nào.

Trong một số howtos, bạn sẽ tìm thấy video=<xres>x<yres>, nhu la video=1024x768. Điều này không có hiệu ứng mong muốn, trong đó độ phân giải xuất hiện về đầu ra - nhưng bạn đã để quyết định về tốc độ khung hình cho trình điều khiển, có xu hướng chọn tốc độ khung hình cao nhất có thể (trong số "các dòng chế độ" có sẵn trong bộ khối EDID). Chẳng hạn như, trong trường hợp của tôi, nó đã bật ra mà người lái xe đã chọn 1024x768@85, đó sẽ là một lựa chọn tốt trong thời đại CRT, nhưng lại nằm ngoài phạm vi của nhiều màn hình LCD ngày nay. Lưu ý rằng màn hình LCD hiện đại giá rẻ (trước FreeSync) thường có tốc độ khung hình 60 Hz, vì vậy đây là những gì bạn cần đặt rõ ràng, nếu DDC của bạn vắng mặt hoặc bonkers.

Trong quá trình tìm kiếm một số câu trả lời, tôi đã vấp phải các tài liệu tham khảo về điều này bản vá được thiết lập bởi Dave Airlie - mang lại xử lý video = cmdline arg. Nó chỉ ra rằng điều này đã được sáp nhập vào vanilla Linux vài năm trước.

Trong trường hợp của tôi, màn hình được điều khiển bởi 1600x1200 và đã báo cáo "ngoài phạm vi" vì nó không thể đối phó. Khi tôi đang thử các đối số cmdline khác nhau, Tôi đã thử video=1024x768, dẫn đến "ngoài phạm vi" trên màn hình. Ở bên ngoài, bởi thông báo lỗi mơ hồ, có vẻ như cmdline arg không có tác dụng gì cả Chỉ sau đó tôi phát hiện ra rằng tất cả những gì tôi đang thiếu là một @60 hậu tố :-)

Một chút thú vị ở đây là, làm sao Tôi phát hiện ra. Có một cmdline kernel khác tạo ra hệ thống con DRI / DRM in nhật ký gỡ lỗi nhiều trò chuyện hơn:

phiên bản kernel nhỏ hơn 4.1:

drm.debug=0xe

phiên bản kernel 4.1 trở lên:

drm.debug=0x1e log_buf_len=1M

( nguồn )

Tôi đang gắn một nhật ký gỡ lỗi từ máy của tôi . Những điều cần tập trung vào (từ khóa để tìm kiếm): Kernel command line, cmdline, adjusted mode, [drm:

"Tên kết nối" có thể được thu thập từ đây: ls /sys/class/drm/ và lưu ý rằng cú pháp arg = video cmdline không lấy Tiền tố "thẻ-" mà bạn có thể thấy trong / sys / class / drm. Cú pháp của video = và tên trình kết nối được mô tả chi tiết trong một chương có liên quan của Arch Linux wiki .

Bây giờ hãy để tôi thay đổi bánh răng / thay đổi chủ đề một chút.

Câu hỏi ban đầu trong chủ đề này là, làm thế nào để sửa đổi hình dạng chế độ video. Tôi đã làm điều này trước đây trong X và trong Windows (sử dụng Intel IEGD quá cố). Trong Linux dưới kvm + drm, cách duy nhất để điều chỉnh hình học và thời gian rõ ràng là bằng cách nộp tệp EDID của riêng bạn, mà trước tiên bạn phải làm thủ công. Cũng gần như vậy.

Cấu trúc EDID là mô tả ngắn gọn trong một đoạn tài liệu đi kèm với nguồn nhân vanilla.

Các định nghĩa Makefile và ví dụ EDID trực tiếp trong thư mục mẹ của nó .

Chọn một số .S làm ví dụ, sao chép vào tệp của riêng bạn (xem quy ước đặt tên trên đỉnh của Makefile), chỉnh sửa thời gian, xây dựng nhị phân EDID của bạn và ... hy vọng nó giải quyết vấn đề của bạn :-)

Việc tính thời gian / số pixel cần một số phép toán để làm đúng. Và, có một số tiêu chuẩn lịch sử thay thế bạn nên tuân thủ tốt hơn và đó là xung đột với nhau (chúng là các giai đoạn tiến hóa của tiêu chuẩn thời gian hiển thị):

  • kỷ nguyên CRT GTF,
  • kỷ nguyên LCD DMT hoặc là CVT,
  • và sau đó CVT-RB (giảm trống).
Hoặc bạn có thể tính toán các số bằng tay, hoặc có một số công cụ và bảng của chế độ tiêu chuẩn. Hãy thử googling cho "máy tính EDID" hoặc "máy tính modeline" hoặc một số thứ khác. Thậm chí còn gọn gàng Công cụ dòng lệnh Linux cho công việc. Xem thêm cơ sở dữ liệu mô hình .

Vấn đề cụ thể của bạn có thể có thể được giải quyết bằng cách thay đổi xung HSYNC ở bên phải (bạn cũng có thể thử thay đổi cực của nó), hoặc bằng cách tạo xung đồng bộ hóa và / hoặc tổng thời gian trống tương đối rộng hơn, hoặc (như bạn đề xuất) bằng cách giảm độ phân giải pixel hiển thị / hiển thị (bội số của 8). Nếu bạn làm trống rộng hơn, bạn có thể cần tăng đồng hồ pixel, để giữ tốc độ khung hình gốc.


0

Thông thường, một bộ điều chỉnh tự động của màn hình sẽ loại bỏ điều này và nó thường ít rắc rối hơn nhiều so với các giải pháp phần mềm.

Mặt khác, kiểm tra menu thông tin màn hình để xem độ phân giải / làm mới nó đang chạy, sau đó tìm kiếm kiểu màn hình và fbset công cụ nào được sử dụng để đặt thời gian ở mức thấp điều khiển thời gian hiển thị .


tự động điều chỉnh không hoạt động trong trường hợp của tôi do một số vấn đề KVM nhất định (cộng với nó không điều chỉnh tốc độ làm mới là vấn đề tôi không đề cập đến.) Chỉnh sửa câu hỏi để phản ánh trải nghiệm fbset của tôi.
einpoklum
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.