| 
		    
                    
   Linux在设计虚拟终端的时候,提供了回顾被卷出屏幕以外的信息的功能,这就是用热键来向上滚屏(shift pageup)。当前被使用的虚拟终端拥有一个公共的缓冲区(soft back),用来存放被滚出屏幕以外的信息。当切换虚拟终端的时候,公共缓冲区的内容会被清除而被新的虚拟终端使用。向上滚屏的时候,显示的是公共缓冲区中的内容。因此,如果我们想在向上滚屏的时候看到汉字,公共缓冲区也必须加倍,以确保没有信息丢失。当滚出屏幕的信息向公共缓冲区填写的时候,必须把相应的附加信息也填写进公共缓冲区的附加区域。这就要求fbcon.c必须懂得利用公共缓冲区的附加信息。 
  当然,有另外一种偷懒的方法,那就是不允许用户向上滚屏,从而避免对公区缓冲区的处理。 
  3.把不同的编码方式(GB、BIG5、日文和韩文)写成不同的module,以实现动态加载,从而使得扩展新的编码方式不需要重新编译核心。  
  小结 
  通过这次针对Linux核心的探索,我们发现,目前Linux的核心设计中,完全没有考虑到双字节编码字符的显示。我们在这种情况下摸索出一套解决核心下汉字显示的方法,并编码实现了该方案. 
  遵循核心的GPL版权声明,我们同时公布了实现这一技术的源代码,当然,这些改动仍然是GPL的.如果能对研究核心的朋友有所帮助,减少一些大家对核心的神秘感,将是我们最大的收获。 
  但是对核心和中文化来说,这仅仅是一种尝试,远不是终点.这种改动多少带有一些 hack的色彩,不太可能融合进权威的核心里去.我们仍在积极探索圆满解决这一问题的方法,相信这一结果必然需要通过国内外Linux群体的共同努力才能实现.我们也非常欢迎大家和我们共同讨论这一问题. 
  测试 
  本文实现的Kernel Patch文件(patch.kernel.chinese)可以从http://www.turbolinux.com.cn下载。Cd /usr/src/(该目录下应有Linux核心源程序所在的目录linux/) patch -p0 -b < patch.kernel.chinese make menuconfig 请选择Console drivers选项中的 
〔*〕 Double Byte Character Display Support(EXPERIMENTAL)  〔*〕 Double Byte GB encode (module only)  〔*〕 VESA VGA graphics console  <*> Virtual Frame Buffer support (ONLY FOR TESTING!)  <*> 8 bpp packed pixels support  <*> 16 bpp packed pixels support  <*> VGA characters/attributes support  〔*〕 Select compiled-in fonts  〔*〕VGA 8x8 font  〔*〕VGA 8x16 font  make dep  make bzImage  make modules  make install  make modules_install 
  然后用新的核心启动。 
insmod encode-gb.o 
  (参考链接: http://linux.ccidnet.com/art/741/20061211/972917_1.html) 
		    
                      
		      
		      
		   |