Chủ Nhật, 8 tháng 3, 2015

Cấu hình độ phân giải, VGA rời trên Linux


Khi cài Ubuntu, Kubuntu, Linux mint,...trên màn hình có độ phân giải lớn thì chúng ta bực mình khi HĐH không thể nhận diện được độ phân giải thực tế sẽ làm giảm đi trải nghiệm. Trên linux hiên nay dùng trình điều khiển X (gọi cụ thể là X Windows System, tham khảo tại http://www.x.org) để quản lý toàn bộ hình ảnh xuất ra màn hình. Trình điều khiển X sẽ dùng thiết lập trong file xorg.conf tại thư mục /etc/X11 và nếu file này không tồn tại thì X sẽ dùng thiết thập cơ chuẩn cơ bản. Trong trường hợp bạn có LCD, màn hình laptop độ phân giải lớn hoặc card rời cần được tích hợp và tối ưu với hệ thống X.



1. Trường hợp có card rời (Nvidia hoặc ATI):
- May mắn là cả hai nhà sản xuất đã có trình điều khiển và driver các bạn có thể hiệu chỉnh trên giao diện người dùng (do máy chưa có card để kiểm tra cụ thể và chụp hình, vị dụ chạy dual Card)

- Driver của ATI các bạn có thể tải về tại đây. Chọn thông số thích hợp để tải bản driver đúng, sau khi down về bạn bung nén, nhấn chuột phải vào file .run -> Properties -> Permission -> chọn mục Allow executing file as program (hoặc Is executable trên Kubuntu). Bạn chỉ việc nhấp đúp chuột trên file .run để tiến hành cài đặt như bình thường.

- Driver của Nvidia các bạn có thể tải về tại đây. Cách cài cũng tương tự như trên.

2. Trường hợp không có card rời:
Nếu không may bạn không có card rời để hỗ trợ thay đổi độ phân giải? chúng ta vẫn có giải pháp khác để thay thế đó là dùng file xorg.conf, một số lệnh xrandr, cvt để làm điều đó. Việc đầu tiên bạn cần làm là biết rõ độ phân giải mà màn hình có thể hỗ trợ.

Thay đổi tạm thời: chúng ta muốn thay đổi độ phân giải tạm thời để tiện làm việc các bạn có thể dùng tập lệnh sau. Chú ý thay đổi tạm thời sẽ mấy nếu ta logout.

Tìm thông tin Modeline độ phân giải màn hình cần thay đổi
Code:
cvt widthpx heightpx
widthpx: chiều rộng tính theo pixel, heightpx: chiều cao tính theo pixel. Ví dụ màn hình 19" độ phân giải 1280 x 1024 thì widthpx: 1280, còn heightpx: 1024. Trường hợp 22" FullHD 1920x1080 thì widthpx: 1920 và heightpx:1080.
Code:
username@AnhDuongTalents:~$ cvt 1280 1024
# 1280x1024 59.89 Hz (CVT 1.31M4) hsync: 63.67 kHz; pclk: 109.00 MHz
Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
username@AnhDuongTalents:~$
Các bạn nhớ copy nguyên dòng phía sau từ Modeline "1280x1024_60.00".... +vsync, dùng chuột chọn rồi nhấn Ctrl + Shift + C. Dùng Ctrl + Shift + V để past đoạn đó trên Terminal

Tiếp theo để thêm chế độ này vào hệ thống các bạn dùng lệnh sau:
Code:
xrandr --newmode "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
Để biết hê thông đã thêm vào độ phân giải mới dùng lệnh:
Code:
xrandr -q
Code:
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 4096 x 4096
VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
  1280x1024_60.00  59.9*+
  1024x768      60.0
  800x600        60.3    56.2
  848x480        60.0
  640x480        59.9  
Chú ý: các bạn sẽ thấy dòng thấy phía trước chữ "connected" là VGA1 hay khác, đây là ký hiệu để đặt cho màn hình, sẽ dùng khi muốn xuất độ phân giải mới

Hiện thị độ phân giải vừa mới thêm bằng lệnh:
Code:
xrandr --addmode VGA1 "1280x1024_60.00"
VGA1 chính là màn hình đang kết nối đã được liệt kê trong lệnh "xrandr -q", mọi người nhớ dùng đúng tên để lệnh xuất chính xác.

Thay đổi trên file xorg.conf: thay đổi này bền vững hơn và thông số thiết lập rộng cho nhiều màn hình, nhiều card vga rời.

Nếu bạn là người mới và chưa rành với tập lệnh trên terminal thì có thể copy nội dung sau và chỉ cần điều chỉnh đôi chút cho phù hợp.
Code:
Section "ServerLayout"
    Identifier    "X.org Configured"
    Screen      0  "Screen0" 0 0
EndSection
 
Section "Module"
    Load  "glx"
EndSection
 
Section "Monitor"
    Identifier  "Monitor0"
    Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    Option    "PreferredMode" "1280x1024_60.00"
    VendorName  "Monitor Vendor"
    ModelName    "Monitor Model"
EndSection
 
Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
        ### <percent>: "<f>%"
        ### [arg]: arg optional
        #Option    "SWcursor"              # [<bool>]
        #Option    "kmsdev"                # <str>
        #Option    "ShadowFB"              # [<bool>]
    Identifier  "Card0"
    Driver    "Default Driver"
EndSection
 
Section "Screen"
    Identifier "Screen0"
    Device    "Card0"
    Monitor    "Monitor0"
 
    SubSection "Display"
        Modes    "1280x1024" "1024x768"
        Depth    8
    EndSubSection
 
    SubSection "Display"
        Modes    "1280x1024" "1024x768"
        Depth    24
    EndSubSection
EndSection
Những chữ đậm trong bài để bạn chú ý thay đổi nội dung cho phù hợp như sa:
Load "glx": nạp trình điều khiển openGL.
Modeline: bạn dùng lệnh cvt như trên để tìm Modeline cho độ phân giải màn hình cần.
Option "PreferredMode": chế độ mặc định, bạn chọn độ phân giải tối ứu hay khác tùy theo.
Modes: những độ phân giải bạn muốn có trên thiết lập hệ thống trong phần cài đặt hệ thống.
Depth: bit thể hiện trên màn hình.

3. Tuỳ chỉnh nâng cao xorg.conf:

Nếu bạn muốn có những tuỳ chỉnh riêng cho mình, ví dụng dùng 2 màn hình trên một PC, hay có gắn thêm card,...Thì bạn cần hiểu một số nguyên tắc cơ bản của cặp thẻ trong file xorg.com.

Để tạo hoặc mở file xorg.conf bạn dùng lệnh sau:
Code:
sudo gedit /etc/X11/xorg.conf -> thay gedit bằng kate trên Kubuntu, Pluma trên linux mint MATE hoặc nano cho OS khác
Để hệ thống tự phát sinh file xorg.conf cơ bản bạn tiến hành như sau:
1. Chuyển sang chế độ Terminal toàn màn hình nhấn Ctrl + Alt + F1 sau đó nhập user và password
2. Tắt X bằng lệnh sau. Lưu ý: nếu không dùng lightdm thì thử với gdm hay kdm.
Code:
sudo service lightdm stop
3. Để hệ thống tự phát sinh file xorg.conf cơ bản, bạn nhập tiếp theo. Lúc này tại thư mục /home/username sẽ có file xorg.conf hoặc xorg.conf.new
Code:
X -configure
Giải thích cặp thẻ trong file xorg.conf. Mỗi cặp đều bắt đầu bằng Section và EndSection, hoặc SubSection và EndSubSection. Chú ý: mỗi cặp tương ứng khai báo cho duy nhất 1 thiết bị
, nếu có 2 card hay 2 màn hình bạn phải làm 2 cặp thẻ Device và Monitor tương ứng.

Section "Thẻ thiết lập"
- Nội dung cấu hình bên trong hoặc thông số tham chiếu
EndSection

Chúng ta có nhiều thẻ tuy nhiên trong giới hạn bài viết chỉ đề cập những cặp thẻ thường dung cho nhiều trường hợp:

Module : dùng để nạp các trình điều khiển đồ họa ví dụ glx (openGL), fonts
Device : dùng để khai báo thông số card màn hình, hoặc thiết bị điều khiển vga khác. Có thể khai báo từ một hoặc nhiều hơn (dùng 2 card màn hình thì dùng 2 cặp thẻ)
Monitor : khai báo số lượng màn hình dùng trên hệ thống
Screen : chứa thiệt lập khai báo chi tiết cho màn hình (Monitor) và card rời (Device)
ServerLayout: khai báo thiết bị ngoại vi liên quan, chế độ chạy dual monitor, card...


3.1Cặp thẻ Module, thường mặc định dùng Load "glx" cho hệ thống linux (vì openGL là trình render chính trên linux distro), ngoài ra bạn có thể nạp driver của card đồ họa nếu bạn biết chính xác, font, file hệ thống...Cấu trúc như sau:
Code:
Section "Module"
    Load        "glx"
    Load        "tên module cần khởi động"
EndSection
3.2Cặp thẻ Device, mỗi card rời bạn dùng 1 cặp thẻ Section "Device" và EndSection. Nếu bạn có trên 1 thì dùng n khai báo cụ thể như sau:
Code:
Section "Device"
    Identifier "name" -> chi danh để nhận biết từng card ví dụ "ATI-HD-6670" hay "Nvidia-QUADRO-210S" hay "card0", "card1". Không có card bạn chỉ dùng "Default Device".
    Driver    "driver" -> trình điều khiển bạn cài cho driver nếu không rõ, đơn giản chỉ để "ati" hoặc "ndivia" để hệ thống tự nhận biết.
    Option -> thông số cài đặt cụ thể ,nếu biết bạn nên dùng còn không thì thôi
    ...
EndSection
3.3Cặp thẻ Monitor, nếu một ngày nào đó bạn dùng 2 màn hình thì sẽ phiền bạn thêm chút tùy chỉnh cho phù hợp.
Code:
Section "Monitor"
    Identifier "name" -> chỉ danh dùng để nhận biết từng màn hình
    ModeLine "modes" -> bạn dùng lệnh cvt để thêm ví dụ "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync.
    VendorName "name" -> tên nhả sản xuất
    ModelName "model" -> mã số hay đời màn hình
    Option "PreferredMode" "modeline" -> độ phân giải mặc định dùng trong cvt bạn cọpy cụm thông số trong "", ví dụ "1280x1024_60.00"
    Option "DPMS" -> mặc định, tiêu chuẩn của nhà sản xuất
    HorizSync -> dải tần số kHz quét ngang vị dụ 30-82, nếu không rõ bỏ tham số này để hệ thống dùng chuẩn cơ bản
    VertRefresh -> dải tần số kHz quét dọc dải tần số kHz vị dụ 56-76, nếu không rõ bỏ tham số này để hệ thống dùng chuẩn cơ bản
3.3Cặp thẻ Screen, screen dùng để kết hợp thông số cài đặt của Device và Monitor mà bạn đã khai báo chỉ danh (Identifier) ở trên
Code:
Section "Screen"
    Identifier "name" -> chỉ danh, nếu chỉ có 1 thì "Default Screen"
    Device   "chỉ danh device" -> nếu bạn khai báo Device là ATI-HD-6670/Nvidia-QUADRO-210S, thì bạn phải khai báo chỉ danh Device tương ứng mà bạn muốn dùng. Nếu không có thì ghi là "Default Device" tương ứng với Device ở trên khi không có card màn hình
    Monitor   "chỉ danh monitor" -> tương tự bạn khai báo chỉ danh Monitor tương ứng nếu muốn kế hợp.
    DefaultDepth 24 -> độ sâu bit màu dùng mặc định.
 
    SubSection "Display" -> cặp thẻ con để khai báo chi tiết độ phân giải
                Depth 24 -> độ sâu bit màu
Modes "1280x1024" "1152x864" "1024x768" "832x624"
    EndSubSection
 
  SubSection "Display" -> cặp thẻ con để khai báo chi tiết độ phân giải
                Depth 8 -> độ sâu bit màu
Modes "1280x1024" "1152x864" "1024x768" "832x624"
    EndSubSection
 
EndSection
Tới đây hy vọng các bạn có thể hiểu đôi chút chứng năng của X và file xorg.conf, nguyên tắc đơn giản bạn cần nắm là khai báo từng thẻ Device, Monitor và dùng thẻ Screen để kết hợp giữa Device và Monitor mà bạn muốn.

Hy vọng sẽ giúp các bạn làm chủ hơn về Xorg. Tham khảo chi tiết tại http://www.x.org/archive/X11R6.8.0/doc/xorg.conf.5.html

Không có nhận xét nào:

Đăng nhận xét