Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

系统字体配置、中文显示和输入法问题
funicorn
帖子: 1293
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi
送出感谢: 0
接收感谢: 65 次

Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#1

帖子 funicorn » 2012-07-24 23:50

中文的locale在tty下查看以及输入中文一直是个头疼问题。FbTerm 是一个使用 frame buffer 设备或 VESA 显卡的终端模拟器,在Ubuntu下可与ibus或fcitx配合使用,实现中文输出和输入。
screen.png
console截屏
在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):
[bash]
#!/bin/bash
# ----------------------------------
# Author: D0rkye
# Homepage: http://d0rkye.zsenialis.com/
# Most code probably by kyleabaker: http://kyleabaker.com/2010/07/11/how-to ... ot-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"
[/bash]
如果你看到有关burg的输出字样而你并没有安装burg,可以无视。

3 安装fbterm

代码: 全选

$ sudo apt-get install fbterm
4 安装输入法的fbterm模块。我使用的是fcitx,就以fcitx为例。fcitx为fbterm提供的输入模块叫fcitx-fbterm。

代码: 全选

sudo apt-get install fcitx-frontend-fbterm
也可以到其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。

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

代码: 全选

$ env DISPLAY=:0 fcitx-fbterm-helper 
如果你使用纯shell,之前fcitx并没有启动,那么

代码: 全选

$ env DISPLAY=:0 fcitx-fbterm-helper -l 
一般情况下,也可以直接指定输入法并启动fbterm

代码: 全选

env DISPLAY=:0 fbterm -i fcitx-fbterm
8 为了方便,可以在.bashrc加入一行,用来在登录tty的时候自动运行fbterm

代码: 全选

echo "[[ $(tty) == \/dev\/tty[0-9]* ]] && fcitx-fbterm-helper" >> ~/.bashrc 
,这样每次你从tty登录,会自动运行fbterm及fcitx-fbterm。

9 fbterm可以将要使用的输入法设置写入配置文件
,在~/.fbtermc中写入

代码: 全选

input-method=fcitx-fbterm
启动fbterm后就会启用fcitx输入,当然你也可以使用ibus-fbterm。

10 fbterm支持256色显示,这样看起来要漂亮一些。默认情况下,fbterm的运行环境是echo $TERM=linux,此时使用16位色;当echo $TERM=fbterm,则使用256色。例如

代码: 全选

 TERM=fbterm vim ~/.fbtermrc
则使用256色运行vim,这样你就可以使用vim的256色主题。一劳永逸的办法是在fbterm中运行

代码: 全选

export TERM=fbterm
这样在本次fbterm会话中将一直使用256色。256色的背景/前景色定义与~/.fbtermrc中的16位色有所不同,具体参考man文档。

11 将灰白调回纯白。fbter默认将白色显示为灰色,看上去很别扭,在fbterm中运行

代码: 全选

echo -ne "\e]P7ffffff"
12 鼠标支持。fbterm可以与gpm server配合用鼠标进行复制/粘贴。

代码: 全选

sudo apt-get install gpm
sudo service gpm start
切换到fbterm,移动鼠标就可以了。

13 fbterm设置背景图片的方法,参考 man fbterm的150行,关于快捷键安全特性,参考207行
上次由 funicorn 在 2012-10-04 21:17,总共编辑 16 次。
这些用户感谢了作者 funicorn 于这个帖子:
careone (2014-04-05 18:49)
评价: 3.7%
头像
ahwad
帖子: 1092
注册时间: 2009-05-06 0:36
送出感谢: 2 次
接收感谢: 13 次

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#2

帖子 ahwad » 2012-07-25 1:10

路过,学习了。。。。。
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
送出感谢: 1 次
接收感谢: 134 次
联系:

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#3

帖子 枫叶饭团 » 2012-07-25 1:18

真不错,英文环境表示无压力。。。
funicorn
帖子: 1293
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi
送出感谢: 0
接收感谢: 65 次

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#4

帖子 funicorn » 2012-07-25 8:17

枫叶饭团 写了:真不错,英文环境表示无压力。。。
吹牛,我就不信你硬盘上一个中文文件名都没有
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
送出感谢: 1 次
接收感谢: 134 次
联系:

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#5

帖子 枫叶饭团 » 2012-07-25 8:19

funicorn 写了:
枫叶饭团 写了:真不错,英文环境表示无压力。。。
吹牛,我就不信你硬盘上一个中文文件名都没有
中文都在音乐和视频文件夹里,玩控制台的时候看视频?听音乐?吃多了。。。 :em20
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
送出感谢: 1 次
接收感谢: 90 次
联系:

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#6

帖子 cuihao » 2012-07-25 8:20

funicorn 写了:
枫叶饭团 写了:真不错,英文环境表示无压力。。。
吹牛,我就不信你硬盘上一个中文文件名都没有
:em11 zsh按tab切文件无压力。
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
funicorn
帖子: 1293
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi
送出感谢: 0
接收感谢: 65 次

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#7

帖子 funicorn » 2012-07-25 10:28

枫叶饭团 写了:
funicorn 写了:
枫叶饭团 写了:真不错,英文环境表示无压力。。。
吹牛,我就不信你硬盘上一个中文文件名都没有
中文都在音乐和视频文件夹里,玩控制台的时候看视频?听音乐?吃多了。。。 :em20
你确实是吃多了,控制台下听音乐有啥奇怪的?再说了,你这是什么逻辑,什么叫中文都在音乐和视频库里,你硬盘上其他类型的文件,文档,一个中文名的都没有,你敢发誓吗?
头像
cjxgm
帖子: 1951
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
送出感谢: 1 次
接收感谢: 30 次
联系:

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#8

帖子 cjxgm » 2012-07-25 10:58

funicorn 写了:
枫叶饭团 写了:
funicorn 写了:
枫叶饭团 写了:真不错,英文环境表示无压力。。。
吹牛,我就不信你硬盘上一个中文文件名都没有
中文都在音乐和视频文件夹里,玩控制台的时候看视频?听音乐?吃多了。。。 :em20
你确实是吃多了,控制台下听音乐有啥奇怪的?再说了,你这是什么逻辑,什么叫中文都在音乐和视频库里,你硬盘上其他类型的文件,文档,一个中文名的都没有,你敢发誓吗?
我……很想发誓…… :em06
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
送出感谢: 1 次
接收感谢: 134 次
联系:

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#9

帖子 枫叶饭团 » 2012-07-25 11:01

别把自己的习惯强加于它人身上
头像
lxr1234
帖子: 721
注册时间: 2009-04-10 11:15
来自: 三民主义国国民权利省我的选择市中共下台镇
送出感谢: 0
接收感谢: 14 次

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#10

帖子 lxr1234 » 2012-07-25 12:23

cjxgm 写了:
funicorn 写了:
枫叶饭团 写了:
funicorn 写了:
枫叶饭团 写了:真不错,英文环境表示无压力。。。
吹牛,我就不信你硬盘上一个中文文件名都没有
中文都在音乐和视频文件夹里,玩控制台的时候看视频?听音乐?吃多了。。。 :em20
你确实是吃多了,控制台下听音乐有啥奇怪的?再说了,你这是什么逻辑,什么叫中文都在音乐和视频库里,你硬盘上其他类型的文件,文档,一个中文名的都没有,你敢发誓吗?
我……很想发誓…… :em06
干过tty下放音乐
我也很想发誓,不过/var/mail/username 有中文
不过还是日文比较多,反而有没有中文比较让人怀疑
不过nvidia闭源用户无缘,vesa还是nouveau什么的都会冲突
fbterm别想了
强烈反对M$的ARM Secure Boot 锁定要求,大家请签名反对
http://www.fsf.org/campaigns/secure-boo ... cted-boot/
funicorn
帖子: 1293
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi
送出感谢: 0
接收感谢: 65 次

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#11

帖子 funicorn » 2012-07-25 20:10

枫叶饭团 写了:别把自己的习惯强加于它人身上
你如果完全不用中文,你跑到这个版面干什么来了,来起哄添乱?
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
送出感谢: 1 次
接收感谢: 90 次
联系:

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#12

帖子 cuihao » 2012-07-25 20:20

:em20 嘛嘛,LZ就别钻了,大家习惯不同而已咯。
饭团其实是来顶帖子的。
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
头像
qy117121
论坛版主
帖子: 50355
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
送出感谢: 18 次
接收感谢: 381 次
联系:

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#13

帖子 qy117121 » 2012-07-25 20:21

楼主这态度 有点不太好啊 :em04
渠月 · QY    https://vz.rs/u
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

Ubuntu 20.04 快速设置指南,请配合浏浏览器自动翻译使用

我安装的gnome-shell扩展 https://s1.ax1x.com/2020/06/25/N0IFIS.png

邮箱 chuan@ubuntu.org.cn
头像
icelee123
帖子: 811
注册时间: 2011-07-16 19:48
系统: Arch
送出感谢: 2 次
接收感谢: 7 次

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#14

帖子 icelee123 » 2012-07-25 23:58

代码: 全选

sudo hwinfo --framebuffer
> hal.1: read hal dataprocess 12057: arguments to dbus_move_error() were incorrect, assertion "(dest) == NULL || !dbus_error_is_set ((dest))" failed in file ../../dbus/dbus-errors.c line 282.
This is normally a bug in some application using the D-Bus library.
libhal.c 3483 : Error unsubscribing to signals, error=The name org.freedesktop.Hal was not provided by any .service files
02: None 00.0: 11001 VESA Framebuffer               

正常么
其实我是菜鸟、、、
头像
youzhiyili
帖子: 2418
注册时间: 2012-03-22 20:42
送出感谢: 136 次
接收感谢: 36 次

Re: Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

#15

帖子 youzhiyili » 2012-07-27 21:35

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
呵呵,楼主很火爆,估计这两天遇到烦心事吧?
虽然菜鸟不爽你脾气,但是菜鸟很爽你的技术,诚心讨教,恳请指导

依葫芦画瓢,现在可以显示中文,但是没输入法
make && sudo make install 这一步提示我没有指定什么?

还有这一步也执行了,但是进tty还是要手动输入fbterm才可以
8 为了方便,你可以在.bashrc加入一行,用来在登录tty的时候自动运行fcitx-fbterm-helper

代码: 全选

echo "[[ $(tty) == \/dev\/tty[0-9]* ]] && fcitx-fbterm-helper -d 0" >> ~/.bashrc
,这样每次你从tty登录,会自动运行fbterm。
还有你的签名,我正好有贴是问remastersys
http://forum.ubuntu.org.cn/viewtopic.php?f=77&t=381949
请问楼主有没有找到一个同类软件替代,能不能介绍一下,万分感激!
@自由建客 @qy117121 @枫叶饭团 @cikekid @YeLee @jtshs256 @eexpress @ljj_jjl2008 @zhw2101024 @TeliuTe @月下叹逍遥 @leeaman @懒蜗牛Gentoo @灰色小狼 @photor @adagio @JiangHui @phoenixlzx @oneleaf
回复