歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 在Ubuntu 10.10版本中如何利用framebuf來驅動fb0設備

在Ubuntu 10.10版本中如何利用framebuf來驅動fb0設備

日期:2017/2/28 16:17:52   编辑:Linux教程

在利用framebuffe來虛擬出個顯示器設備fb0,這個問題想了很久,終於在網上找到答案並且試驗成功記錄下來,以防以後再忘了。

雖然framebuffer有很多局限性,比如在內核啟動之後就無法修改分辨率,但是通過framebuffer這個內核抽象出來的設備文件可以很方便的控制顯卡,顯示圖像。

  由於framebuffer是顯卡的抽象,因此向 /dev/fb0(假設是fb0),就相當於向顯存寫數據,因此無論你是在什麼環境下屏幕都會被覆蓋掉,但是同時還有其他進程和你爭搶顯卡的顯示權,因此需要一種方式獨占顯卡的使用權限,這個也是我找了很久才發現的。

對framebuffer的操作很容易從網上找到例子,我這裡簡單說一下

  1.在未開啟framebuffer的linux系統下開啟framebuffer(以Ubuntu 9.04alpha6為例)

  開啟framebuffer需要修改以下幾個文件,你可以在在命令行裡用vi編輯,也可以個用gedit,我個人還是推薦後者。

注意在進行下一步操作之前必須先改一下文件的權限,默認是只讀。

  sudo gedit /etc/initramfs-tools/modules

  在最後面新起兩行加入

  fbcon

  vesafb

在這個文件中裡面好多#,記住上面要加的兩行前面不能有#,否則給注釋掉了。

  sudo gedit /etc/modprobe.d/blacklist-framebuffer.conf

  執行上面指令之前必須先得修改權限。默認是只讀的。

    注釋掉(前面添加一個#)

  blacklist vesafb

這個很容易發現,直接注釋掉就可以。

  同時還要注釋掉你的顯卡驅動,我的是nVidia

補充:找不見可以用該指令查看:sudo lshw

這裡再補充說一下,你可以在windows下查看自己的顯卡型號(N或T)在裡面找到注釋掉就可以了。

  sudo gedit /boot/grub/menu.lst

這一行指令,在ubuntu10.10版本中沒有meun.lst了現在改成了grub.cfg,所以在這必須這樣來:sudo gedit /boot/grub/grub.cfg

  在kernel啟動參數的行末尾添上 vga=0x317 (1024x768,16位,你也可以使用別的分辨率模式)

注:vga=0×314 即為800*600 16位
終端的分辨率可以用fbset設置。
|640x480 800x600 1024x768 1280x1024
----+-------------------------------------
256 | 0x301 0x303 0x305 0x307
32k | 0x310 0x313 0x316 0x319
64k | 0x311 0x314 0x317 0x31A

16M |0x312  0X315 0x318 0X31B

上面這些我沒有測試過,我用的是0X31B,你們自己根據自己顯卡設置。

在ubuntu10.10中的grub.cfg中沒有了kernel了,在裡面找到這條語句:

linux /boot/vmlinuz-2.6.35-25-generic root=UUID=cabcaf02-31fd-487d-b90c-08c8faaaa2d8 ro quiet splash (vga=0x31B)括號裡面是自己加上的,估計這個文件也得改權限。特別提示在裡面找可以用“splash”作為關鍵詞查找或定位。

  然後

  sudo update-initramfs -u

  重新啟動就可以了!

到這基本就搞定了。

Copyright © Linux教程網 All Rights Reserved