2011年12月12日 星期一

重新配置xorg.conf

service gdm stop
Xorg -configure
mv ~/xorg.conf.new /etc/X11/xorg.conf
service gdm start


Ubuntu tty 無法正常顯示/修改解析度的解決辦法

1.在Ubuntu較舊的版本下
在 Xwindow 的環境中,通常按下 Ctrl+Alt+Fn (1~6) 可以進入 tty 模式,不過某些情況下可能是一片黑無法正常顯示,或是顯示的解析度並非 LCD 的原生解析度,這時候的作法通常是修改 /boot/grub/menu.lst 中的 kernel 參數加上 vga=xxxxxx 是解析度和色彩深度的參數)來解決。

但是在 Ubuntu 底下這招行不通,
因為預設狀況下 vesafb、vga16fb 這幾個 framebuffer 顯示驅動程式在 Ubuntu 中是被列入 blacklist 而無法啟用的。
因此首先我們要把這些驅動程式黑名單註解掉:
username@ubuntu:~$ sudo vi /etc/modprobe.d/blacklist-framebuffer
把 vesafb 和 vga16fb 最前面加上 #

再來將這些驅動程式加入到開機載入的模組中:
username@ubuntu:~$ sudo vi /etc/initramfs-tools/modules
在最後面加入以下三行內容:
vesafb
vga16fb
fbcon

然後把修改過後的內容儲存至系統中:
username@ubuntu:~$ sudo update-initramfs -u

接下來要查看顯示卡所能支援的顯示模式參數:
username@ubuntu:~$ sudo hwinfo --framebuffer
若是沒有安裝 hwinfo 的話請先安裝:
username@ubuntu:~$ sudo apt-get install hwinfo

執行完畢後會列出所有可以支援的模式和參數,
以我的電腦為例:
02: None 00.0: 11001 VESA Framebuffer 
[Created at bios.447]
Unique ID: rdCR.94E0DOEgq9F
Hardware Class: framebuffer
Model: "Intel(r)Broadwater-G Graphics Chip Accelerated VGA BIOS Intel(r)Broadwater-G Graphics Controller"
Vendor: "Intel Corporation"
Device: "Intel(r)Broadwater-G Graphics Controller"
SubVendor: "Intel(r)Broadwater-G Graphics Chip Accelerated VGA BIOS"
SubDevice: 
Revision: "Hardware Version 0.0"
Memory Size: 7 MB + 448 kB
Memory Range: 0xc0000000-0xc076ffff (rw)
Mode 0x033c: 1920x1440 (+1920), 8 bits
Mode 0x034d: 1920x1440 (+3840), 16 bits
Mode 0x033a: 1600x1200 (+1600), 8 bits
Mode 0x034b: 1600x1200 (+3200), 16 bits
Mode 0x035a: 1600x1200 (+6400), 24 bits
Mode 0x0307: 1280x1024 (+1280), 8 bits
Mode 0x031a: 1280x1024 (+2560), 16 bits
Mode 0x031b: 1280x1024 (+5120), 24 bits
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x0318: 1024x768 (+4096), 24 bits
Mode 0x0312: 640x480 (+2560), 24 bits
Mode 0x0314: 800x600 (+1600), 16 bits
Mode 0x0315: 800x600 (+3200), 24 bits
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+832), 8 bits
Mode 0x0311: 640x480 (+1280), 16 bits
Config Status: cfg=new, avail=yes, need=no, active=unknown

最重要的是 Mode 後面的代碼,把想要用的記下來,以 1280x1024, 24 bits 為例子,他的代碼就是 0x031b

編輯 grub 開機參數:
username@ubuntu:~$ sudo vi /boot/grub/menu.lst
找到開機選項下的 kernal 加上 vga=0x031b(以下都是同一行沒有換行):
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=452c3352-f739-4df0-8930-8c80a9f212d4 ro quiet splash locale=zh_TW vga=0x031b
儲存後重新開機,
這樣就能在 tty 下使用新設定的解析度了。

後記:
記得在 menu.lst 前面的一大堆註解裡面找到一行 defoptions 在最後面也加上 vga=0x031b (註解符號不要去掉)
# defoptions=quiet splash locale=zh_TW vga=0x031b

這樣以後才不會在 Linux 核心更新後,
修改過的內容又恢復成原本的樣子。

2.新版本的Ubuntu下

現在新版本的 Ubuntu 切換到 tty1~tty6 無法使用螢幕原生解析度的問題還是存在,不過幸運的是要解決這個問題已經簡化了很多,只需要直接編輯 /boot/grub/menu.lst 裡面的設定,把 mode 代碼加入 kernal 參數即可,不需要更動到 initramfs 的設定和 framebuffer 驅動程式了。

常用的 mode 參數:
1024 x 768:  0x0305
1280 x 1024: 0x0307