Ubuntu 12.04下fbTerm的使用

来源:互联网 发布:网络交友的利的根据 编辑:程序博客网 时间:2024/06/06 15:37
在Ubuntu下安装和使用fbterm虚拟控制台:

1 安装v86d实现控制台下vesa输出
代码:
$ sudo apt-get install v86d

为了方便你查看显卡可用的输出模式,可以安装hwinfo
代码:
$ sudo apt-get install hwinfo
$ sudo hwinfo --framebuffer

这两个包在下面的脚本中会自动安装,如果你已经安装了,可以无视。

2 配置framebuffer。修改/boot/default/grub,在内核启动选项中加入framebuffer输出和分辨率的设置,在intramfs的模块中加入vesa的framebuffer及其设置,在intramfs的开机splash配置中开启framebuffer(可选)。

以上两个步骤非常重要,是能正常使用fbterm的基础,并且可以解决Ubuntu安装Nvidia二进制驱动后grub、开机动画和控制台分辨率过低的问题。下面这个脚本可以自动完成上面这两个步骤的所有配置工作(感谢D0rkye):
代码:
#!/bin/bash
# ----------------------------------
# Author: D0rkye
# Homepage: http://d0rkye.zsenialis.com/
# Most code probably by kyleabaker: http://kyleabaker.com/2010/07/11/how-to-fix-your-ubuntu-boot-screen/
#
# Fix for Ubuntu 11.04, for BURG, and some extra bloat by Paolo Bernardi (http://paolobernardi.wordpress.com/)
# ----------------------------------

# Usage: install_if_not_installed package_name
function install_if_not_installed
{
   PACKAGE="$1"
   INSTALLED=$(dpkg -L "$PACKAGE" > /dev/null 2>&1 && echo OK || echo KO)
   if [ "$INSTALLED" == "KO" ]
   then
      sudo apt-get install "$PACKAGE" -y
   fi
}

# Usage: contains regexp file
function contains
{
   REGEXP="$1"
   FILE="$2"

   grep "$REGEXP" "$FILE" > /dev/null && echo OK || echo KO
}

install_if_not_installed v86d
install_if_not_installed hwinfo

sudo hwinfo --framebuffer
echo "---------------------------------------------------------------"
echo "Please enter the best resolution from the list above"
echo "It usualy looks like this >>Mode 0x0323: 1024x768 (+4096), 24 bits<<"
echo "And you have to enter it like this >>1024x768-24<<"
echo "---------------------------------------------------------------"
read resolution

sed 's/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\"quiet\ splash\"/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\"quiet\ splash\ nomodeset\ video\=uvesafb\:mode\_option\='$resolution'\,mtrr\=3\,scroll\=ywrap\"/g' /etc/default/grub > ./newgrub
sudo cp -f ./newgrub /etc/default/grub
rm ./newgrub

sed 's/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\"quiet\ splash\"/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\"quiet\ splash\ nomodeset\ video\=uvesafb\:mode\_option\='$resolution'\,mtrr\=3\,scroll\=ywrap\"/g' /etc/default/burg > ./newburg
sudo cp -f ./newburg /etc/default/burg
rm ./newburg

sed 's/\#GRUB\_GFXMODE\=640x480/GRUB\_GFXMODE\='$resolution'/g' /etc/default/grub > ./newgrub
sudo cp -f ./newgrub /etc/default/grub
rm ./newgrub

if [ "$(contains uvesafb /etc/initramfs-tools/modules)" == 'KO' ]
then
   sudo echo "uvesafb mode_option=$resolution mtrr=3 scroll=ywrap" | sudo tee -a /etc/initramfs-tools/modules
fi

if [ "$(contains FRAMEBUFFER=y /etc/initramfs-tools/conf.d/splash)" == 'KO' ]
then
   echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
fi

#sed 's/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\"\(.*\)vt\.handoff\=7\(.*\)\"/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\"\1\2\"/g' /etc/grub.d/10_linux > ./new10linux
sed 's/vt\_handoff\=\(.*\)vt\.handoff\=7\(.*\)/vt\_handoff\=\1\2/g' /etc/grub.d/10_linux > ./new10linux
sudo cp -f ./new10linux /etc/grub.d/10_linux
rm ./new10linux
sudo chmod +x /etc/grub.d/10_linux

sudo update-grub2
which update-burg > /dev/null 2>&1 && sudo update-burg
sudo update-initramfs -u
echo "The resolution should be fixed after a reboot"

如果你看到有关burg的输出字样而你并没有安装burg,可以无视。

3 安装fbterm
代码:
$ sudo apt-get install fbterm

4 安装输入法的fbterm模块。我使用的是fcitx,就以fcitx为例。fcitx为fbterm提供的输入模块叫fcitx-fbterm,目前还没有进入Ubuntu的官方源,可以到其github主页上下载源码包并编译安装。
代码:
$ git clone https://github.com/fcitx/fcitx-fbterm.git
$ cd fcitx-fbterm
$ mkdir build && cd build
$ cmake ..
$ make && sudo make install

编译所依赖的包主要是fcitx的开发库,fcitx-libs-dev。cmake的时候可以指定-DCMAK_INSTALL_PEPREFIX,默认在/usr/local,我觉得无所谓。

5 把用户加入到可以使用framebuffer输出的组,这个组叫video
代码:
$ sudo adduser your_name video

6 配置fbterm,fbterm默认的配置文件在~/.fbtermrc,打开后你可以修改虚拟终端输出分辨率,字体,字号,背景色,前景色,甚至可以选用背景图片。

在这里强调的是fbterm的一个安全特性,这个特性会让普通用户在控制台下无法使用系统快捷键,因此无法调出中文输入法。解决办法是:
代码:
sudo setcap 'cap_sys_tty_config+ep' /usr/bin/fbterm

或者:
代码:
sudo chmod u+s /usr/bin/fbterm

7 到这里,所有工作基本都做完了,接下来你可以按下ctrl+alt+F1,登录后输入fbterm,就可以正常显示中文了。fcitx-fbterm提供了一个脚本,可以直接打开fbterm并调用fcitx,命令名是fcitx-fbterm-helper
代码:
$ fcitx-fbterm-helper -d 0

就可以正常显示并输入中文了。-d 0用来指定输出设备,一般都是0,如果你使用分屏显示,那么可以是0.0,0.1,...

当然如果你愿意你也可以使用
代码:
env DISPLAY=:0 fbterm -i fcitx-fbterm


8 为了方便,你可以在.bashrc加入一行,用来在登录tty的时候自动运行fcitx-fbterm-helper
代码:
echo "[[ $(tty) == \/dev\/tty[0-9]* ]] && fcitx-fbterm-helper -d 0" >> ~/.bashrc
,这样每次你从tty登录,会自动运行fbterm。

9 fbterm设置背景图片的方法,参考 man fbterm的150行,关于快捷键安全特性,参考207行。


_________________
mplayer 支持多线程播放了
代码:
echo "alias mplayer='mplayer -lavdopts threads=N'" >> ~/.bashrc

N为要使用的线程数。 

原文:http://blog.sina.com.cn/s/blog_6b15ff4101011vla.html