\documentclass[a4paper]{article} \usepackage{CJK} \usepackage{html} \begin{document} \begin{CJK*}{GB}{fs} \title{zhconÓû§ÊÖ²á} \author{ejoy\\ \htmladdnormallink{ejoy@users.sourceforge.net}{mailto:ejoy@users.sourceforge.net}} \maketitle \pagebreak \section{½éÉÜ} \subsection{Linux¿ØÖÆ̨ÖÐÎÄ»¯µÄÏÖ×´} LinuxÊÇÒ»¸ö¹¦ÄÜÇ¿´ó£¬ÐÔÄܳöÖÚ£¬Îȶ¨¿É¿¿µÄ²Ù×÷ϵͳ£¬µ«LinuxÉè¼ÆÖ®³õ²¢Î´¿¼Âǵ½·ÇÓ¢Óï¹ú¼ÒʹÓÃÕßµÄÐèÒª£¬´Ó¶øÔì³ÉÔÚLinuxÉÏʹÓÃÖÐÎĵÄÀ§ÄÑ£¬¼«´óÖÆÔ¼ÁËLinuxÔÚ¹úÄÚµÄÓ¦ÓúÍÆÕ¼°¡£Ëæ×ÅLinuxµÄÆÕ¼°£¬Ò»Ð©ÓÐʶ֮ʿÒѾÔÚÖÐÎÄ»¯¿ÎÌâÉÏÕ¹¿ªÁËÑо¿£¬´ÓÔçÆÚµÄchdrv,yact,wzce,cceµ½ºóÀ´µÄÀ¶µã£¬TurboLinuxºº»¯Äںˣ¬Ðí¶à×ÔÓÉÈí¼þµÄ°®ºÃÕßΪLinuxÖÐÎÄ»¯×÷³öÁ˹±Ïס£ »ùÓÚ×Ö·û½çÃæµÄ¿ØÖÆ̨±¾Éí²¢²»Ö§³ÖµãÕó»¯×Ö·ûÊä³ö£¬ÒªÏëʹ֧֮³ÖÖÐÎÄ£¬±ØÐ뽫¿ØÖÆ̨Çл»µ½Í¼ÐÎģʽ²¢¼ÓÈëÖÐÎĽâÂëÖ§³Ö¡£ÕâЩ¿ØÖÆ̨ÖÐÎĽâ¾ö·½°¸Ê¹Óõļ¼Êõ²»¾¡Ïàͬ£¬»ù±¾ÉÏ¿ÉÒÔ·ÖΪÍâ¹ÒʽºÍÄں˺º»¯Á½ÖÖ·½Ê½¡£Íâ¹Òʽ½â¾ö·½°¸Ê¹ÓÃαÖն˼¼ÊõÀ´¹Ò½ÓÖÐÎÄƽ̨£¬ÓŵãÊDz»ÓÃÖØбàÒëÄںˣ¬È±µãÊǼæÈÝÐÔ²»Ì«ºÃ£¬ÌرðÊÇ¿ØÖÆ̨µÄescape´¦Àí£¬Ï൱À§ÄÑ¡£ ÏÖÓеÄÖÐÎÄƽ̨ÔÚÒ×ÓÃÐÔ£¬¿ÉÀ©Õ¹ÐÔ£¬Ó¦ÓóÌÐò¼æÈÝÐÔ·½Ãæ»ò¶à»òÉÙ´æÔÚ×Ų»×㣬zhcon¾ÍÊÇÔÚÕâÑùµÄ±³¾°Ïµ®ÉúµÄ¡£zhconµÄÄ¿±êÊÇΪÖÐÎÄLinuxʹÓÃÕßÌṩһ¸ö±ã½ÝÒ×ÓõÄÖÐÎÄ»·¾³¡£ \subsection{zhcon¼ò½é} zhconÊÇÒ»¸ö¹¤×÷ÔÚLinux¿ØÖÆ̨ϵĶàÄÚÂëÖÐÎÄƽ̨¡£ ËüÄܹ»¿ØÖÆ̨ÉÏÏÔʾ¼òÌåÖÐÎÄ¡¢·±ÌåÖÐÎÄ¡¢ÈÕÎÄ¡¢º«ÎĵÈË«×Ö½Ú×Ö·û¡£ µ±Ç°°æ±¾µÄzhconÓµÓÐÒÔÏÂÌØÐÔ: \begin{itemize} \item ¹ã·ºµÄÓ²¼þ¼æÈÝÐÔ\\ zhconÖ§³Öframebuffer,vga,libggiÈýÖÖÏÔʾÇý¶¯·½Ê½£¬¿ÉÒÔÖ§³Ö¼¸ºõËùÓеÄÏÔ¿¨¡£ÔÚÄں˱àÒëÓÐFrameBufferÇý¶¯³ÌÐòµÄÇé¿öÏ£¬zhcon½«Ê¹ÓÃFrameBuffer×öºº×ÖÊä³ö£¬Ö§³Ö´Ó640x480x8bpp µ½ 1024x768x32bppµÄ·Ö±çÂÊ¡£Èç¹ûÄúµÄÄÚºËûÓÐÌṩFrameBufferÉ豸µÄÖ§³Ö»òÕß¹¤×÷ÔÚVGAÎı¾Ä£Ê½£¬zhcon½«Ê¹ÓÃÄÚ½¨µÄvgaÇý¶¯£¬Ê¹ÏÔ¿¨¹¤×÷ÔÚ640x480x16ɫģʽÏ¡£´ËÍ⣬ÈôϵͳÖÐ×°ÓÐlibggi£¬zhcon¿ÉÒÔͨ¹ýlibggiÖ§³Ö¸ü¶àµÄÏÔʾӲ¼þºÍÏÔʾģʽ¡£ \item ¶àÄÚÂëÖ§³Ö£¬¼ò·±ÌåÄÚÂë×Ô¶¯×ª»» \\ zhconÖ§³ÖGB2312,GBK,BIG5,JIS,KSCMµÈ¶àÖÖË«×Ö½Ú±àÂ뷽ʽ£¬¿ÉʹÓÃÈȼüÔÚÎåÖÖÄÚÂë¼ä¶¯Ì¬Çл»£¬Í¨¹ýÉèÖã¬zhcon¿ÉÒÔ×Ô¶¯¼ì²âGB2312ºÍBIG5ÄÚÂ룬²¢ÄÜÔÚ¶þÕß¼ä×Ô¶¯×ª»»(ÀàËÆhztty)¡£ \item ¶àÖÖÊäÈë·¨Ö§³Ö\\ ¾¹ýת»»£¬zhconÄܹ»ÓÃWindows98ºÍUCDOSÖеÄÂë±íÊäÈë·¨(×Ô´ø14ÖÖ)¡£Í¬Ê±£¬zhcon»¹Ö§³ÖUNICONµÄÊäÈ뷨ģ¿é£¬¿ÉÒÔºÍChinput¹²ÏíÊäÈë·¨¡£ \item ¶þÖÖÊäÈë·ç¸ñ\\ zhconÔÚ¿ØÖÆ̨ʵÏÖÁËOverspot¹â±ê¸úË淽ʽºÍµ×²¿×´Ì¬Ðз½Ê½¶þÖÖÊäÈë·ç¸ñ£¬½çÃæÃÀ¹Û´ó·½£¬²¢¿É×Ô¶¨ÒåÊäÈëÌõµÄÑÕÉ«¡£ \item ÓÅÐãµÄÖÐÎÄÖƱí·ûʶ±ð\\ zhcon¿ÉÒÔÕýȷʶ±ð¾ø´ó¶àÊýÓ¦ÓóÌÐò(mc,linuxconf...)ÖеÄÖƱí·ûºÅ£¬²»»á³öÏÖÂÒÂë¡£ \item ÀúÊ·ÆÁÄ»ä¯ÀÀ\\ ÔÚzhconÖпÉÒÔËæʱʹÓÃSHIFT-PAGEUP,SHIFT-PAGEDOWN,SHIFT-UP,SHIFT-DOWNÀ´ä¯ÀÀÀúÊ·ÆÁÄ»¡£ \item ¶àµãÕó×ÖÌåÖ§³Ö\\ zhconÖ§³Ö12µãÕó£¬14µãÕó£¬16µãÕó£¬24µãÕóµÈ¶àÖÖ²»Í¬µãÕó×ÖÌåµÄÏÔʾ£¬¿É¸ù¾ÝÆÁÄ»·Ö±çÂʵIJ»Í¬Ñ¡Óò»Í¬µãÕóµÄ×ÖÌåÀ´ÓÅ»¯ÏÔʾЧ¹û¡£ \item ¶ÔFreeBSDµÄÖ§³Ö\\ ´ÓV0.2¿ªÊ¼zhconÕýʽÔö¼ÓÁ˶ÔFreeBSDµÄÖ§³Ö¡£ \end{itemize} \subsection{zhconµÄ»ù±¾¹¤×÷ÔÀí} ͨ³£ Linux µÄ¿ØÖÆ̨¹¤×÷ÔÚÎı¾Ä£Ê½Ï£¬ÒªÏëÔÚÆÁÄ»ÉÏÕýÈ·ÏÔʾ£¬ºº×Ö±ØÐ뽫ÆÁÄ»Çл»µ½ ͼÐÎģʽ£¬Õâ¿ÉÒÔͨ¹ýµ÷ÓÃÄÚºË FrameBuffer Çý¶¯³ÌÐòÀ´ÊµÏÖ¡£´ËÍ⣬»¹ÒªÄÜÕýȷʶ±ðϵ ͳÊä³öµ½¿ØÖÆ̨µÄºº×ÖÐÅÏ¢£¬²¢µ÷Óúº×ÖÏÔʾģ¿é½«ÆäÊä³öµ½ÆÁÄ»¡£Ò»ÖÖ·½·¨ÊÇÏñ DOS Ï µÄºº×ÖϵͳËù×öµÄÄÇÑù£ºÀûÓÃϵͳʱÖÓÖж϶¨Ê±¼àÊÓÏÔ´æµØÖ· B800:0000 ´¦µÄÏÔʾ»º³åÇø £¬¶¯Ì¬Ê¶±ð»º³åÇøÖеÄ×Ö·ûÐÅÏ¢¡£ÕâÖÖ·½·¨ÒªÇóÐÞ¸ÄÄÚºËÖÐ¶ÏºÍ TTY Çý¶¯³ÌÐò£¬ÊµÏÖÆðÀ´ ±È½ÏÀ§ÄÑ£¬¶øÇÒÐèÒªÖ±½Ó²Ù×ÝÓ²¼þÊÓƵ»º³åÇø£¬´ó´óÓ°ÏìÁËϵͳµÄ¿ÉÒÆÖ²ÐÔºÍÎȶ¨ÐÔ¡£ÁíÒ» ÖÖ·½·¨¾ÍÊDZ¾ÏµÍ³Ëù²ÉÓõĻùÓÚαÖնˣ¨ Pseudo-Terminals £©µÄÍâ¹Òʽ½â¾ö·½°¸¡£ αÖնˣ¨ Pseudo-Terminal £©ÊÇÒ»ÖÖÀàËÆÓÚÖն˵ÄÌØÊâµÄ½ø³Ì¼äͨÐÅͨµÀ£¨ channel £©¡£ ͨµÀµÄÒ»¶Ë±»³ÆΪÖ÷É豸£¨ master pseudo-terminal device £©£¬ÁíÒ»¶Ë±»³ÆΪ´ÓÉ豸¡£> дÈëÖ÷É豸µÄÊý¾Ý±»·¢Ë͵½´ÓÉ豸£¬¶øдÈë´ÓÉ豸µÄÊý¾ÝÒ²¿É´ÓÖ÷É豸¶Á³ö£¬¶ÔÓû§À´Ëµ¾Í ºÃÏñ×Ô¼ºÊµ¼ÊÉÏÁ¬½Óµ½ÁËÕæÕýµÄ¼ÆËã»úÖÕ¶ËÖ®ÉÏ¡£¼ò¶øÑÔÖ®£¬Î±ÖÕ¶ËÊÇλÓÚÐéÄâÖն˺Í×îÖÕ ÖÕ¶ËÉ豸֮¼äµÄÒ»Öֳе£×ÅÊäÈëÊä³öת»»¹¦ÄܵÄÉ豸¡£ αÖն˵®ÉúÖ®³õ¾ÍµÃµ½Á˹㷺ӦÓ㬵äÐ͵ÄÀý×ÓÊÇTelnet·þÎñ³ÌÐò¡£TelnetÊÇÒ»ÖÖÔ¶³ÌµÇ¼ ·þÎñ£¬Óû§Ê¹ÓÃTelnet¿Í»§¶Ë³ÌÐòͨ¹ýÍøÂçµÇ¼µ½Ô¶³ÌÖ÷»úÖ®ÉϽøÐи÷ÖÖ²Ù×÷¡£Telnet·þÎñ ³ÌÐò¾ÍÊÇÒ»¸öαÖնˣ¬Ò»¶ËÁ¬½Óµ½Telnet¿Í»§¶Ë³ÌÐò£¬ÁíÒ»¶ËÁ¬½Óµ½Ö÷»úÓ¦ÓóÌÐò£¬¿Í»§ºÍ Ó¦ÓóÌÐòÖ®¼äͨ¹ýαÖն˽øÐжԻ°¡£ µ±Ó¦ÓóÌÐòÐèÒª´ÓÊäÈëÉ豸£¨¼üÅÌ£©¶ÁÈëÊý¾Ýʱ£¬ËüÏò¿ØÖÆ̨É豸£¨ /dev/console £©·¢³ö ϵͳµ÷Óà read() £¬½Ó×ÅÄÚºË console Çý¶¯ÏìÓ¦¸ÃϵͳÇëÇ󣬴ÓÊäÈëÉ豸Çý¶¯³ÌÐò£¨Í¨³£ Ϊ¼üÅÌÇý¶¯ keyboard.c £©»ñµÃÊäÈëÊý¾Ý£¬²¢½«Ö®·µ»Ø¸øÓ¦ÓóÌÐò¡£¶øµ±Ó¦ÓóÌÐòÐèÒªÏë¿Ø ÖÆ̨Êä³öÊý¾Ýʱ£¬Ëüͨ¹ý write() ϵͳµ÷Óý«Êý¾Ý·¢ËÍÖÁ console É豸£¬ÔÙÓÉÄÚºË console Çý¶¯×ª·¢µ½ÕæÕýµÄÊä³öÉ豸£¨Öնˡ¢´òÓ¡»ú£®£®£®£®£®£®£©ÉÏÈ¥¡£ ͨ¹ýÒÔÉÏ·ÖÎö¿ÉÒÔ·¢ÏÖÈç¹ûÔÚÓ¦ÓóÌÐò´Ó¿ØÖÆ̨É豸£¨ /dev/console £©¶ÁÈëÊý¾Ý֮ǰ½Ø»ñ ¼üÅÌÊäÈëÐÅÏ¢£¬²¢Ìá½»ÊäÈ뷨ģ¿é´¦Àí£¬ÔÙ½«´¦ÀíºóµÃµ½µÄÖÐÓ¢ÎÄÐÅÏ¢·¢ËÍÖÁÓ¦ÓóÌÐò¼´¿É Íê³ÉÖÐÎÄÊäÈë¡£¶øÔÚÓ¦ÓóÌÐò½«Êä³öÊý¾ÝдÈë /dev/console É豸֮ǰ½Ø»ñÊä³ö²¢½»Óɺº×Ö Ê¶±ðÄ£¿é´¦Àí£¬×îÖÕÓɺº×ÖÏÔʾģ¿éÊä³öÖÁÆÁÄ»£¬¼´¿ÉʵÏÖÖÐÓ¢ÎÄÊä³ö¡£ \section{ÏÂÔغͰ²×°} \subsection{ϵͳÐèÇó} zhconÊÇÒ»¸ö±ê×¼µÄLinux¿ØÖÆ̨³ÌÐò£¬ÎªÁ˱àÒëºÍÔËÐÐzhconÄúÐèÒªÒÔÏÂÈí¼þ£º \begin{itemize} \item ÔËÐÐÄں˰汾2.2ÒÔÉϵÄLinuxϵͳ(»òFreeBSD)¡£½¨ÒéÔÚ±àÒëÄں˽ø¼ÓÈë¶ÔFrameBufferµÄÖ§³Ö¡£ GNU C++(gcc).½¨ÒéʹÓÃgcc 2.95.2ÒÔÉÏ°æ±¾¡£ \item GNU autoconf/automake \item UNICON\&Chinput(¿ÉÑ¡) \item libggi(¿ÉÑ¡) \end{itemize} µ½Ä¿Ç°ÎªÖ¹£¬zhconÒѾÄÜÔÚÏÂÁÐϵͳÉÏÕý³£ÔËÐУº \begin{itemize} \item RedHat 6.2,7.1 \item Mandrake 8.1 \item Debian 2.2,woody \item Slackware \item FreeBSD(???) \end{itemize} Èç¹ûÄúÔÚÆäËüƽ̨ÉϵÄϵͳҲÄÜÔËÐÐzhcon£¬Çëemail¸æËßÎÒÃÇ¡£ \subsection{ÏÂÔØ} ×îа汾µÄÔ´´úÂë¿ÉÒÔ´ÓzhconµÄÕ¾µã:zhcon.gnuchina.orgÉÏÏÂÔØ¡£ ÏÂÔصÄÊÇÒ»¸öÔ´Âë°ü£¨ÒÔv0.2ΪÀý£©£ºzhcon-0.2.tar.gz Ê×ÏȽ«Ô´´úÂë½â¿ªµ½Ò»¸öÁÙʱĿ¼£º \begin{verbatim} tar zxf zhcon-0.2.tar.gz -C /tmp cd /tmp/zhcon-0.2 \end{verbatim} È»ºóÔËÐÐconfigure½Å±¾¼ì²éϵͳ±àÒë»·¾³£¬´´½¨Makefile: \begin{verbatim} ./configure \end{verbatim} ÕâʱÆÁÄ»ÉÏ»á³öÏֺܶà¼ì²âÐÅÏ¢£¬Èç¹ûûÓÐÎÊÌâµÄ»°½Ó×ÅÖ´ÐÐmake¿ªÊ¼±àÒëÔ´´úÂ룺 \begin{verbatim} make \end{verbatim} ±àÒëÍê³ÉºóÇл»µ½rootÓû§Ö´ÐÐmake install°²×°¿ÉÖ´ÐÐÎļþ²¢É¾³ýÁÙʱĿ¼: \begin{verbatim} su make install cd .. rm -rf /tmp/zhcon-0.2 \end{verbatim} ÖÁ´Ë£¬zhconÒѾ³É¹¦°²×°µ½ÄúµÄϵͳÖС£ÔÚ¿ØÖÆִ̨ÐÐzhcon¾ÍÄܽøÈëÖÐÎÄ»·¾³¡£ Èç¹ûÄúÏëжÔØzhconÇëÒÔrootÉí·ÝµÇ½²¢Ö´ÐУº \begin{verbatim} make uninstall \end{verbatim} ¾ÍÄÜÍê³ÉжÔØ¡£ \section{ʹÓÃÖ¸ÄÏ} \subsection{ÉèÖÃÏÔʾģʽ} ÒªÔÚ¿ØÖÆ̨ÉÏÏÔʾÖÐÎÄ£¬Ê×ÏÈҪʹ¿ØÖÆ̨½øÈëͼÐÎ״̬¡£zhconÄ¿Ç°Ö§³ÖFrameBuffer,libggi,vgaÈýÖÖͼÐÎÇý¶¯¡£zhconÔÚ×°ÔØʱ»á¼ì²âÊÇ·ñ´æÔÚFrameBufferͼÐÎÇý¶¯£¬Èç¹ûûÓУ¬ÔòÖ±½Ó¶ÔVGA½øÐпØÖÆ£¬½øÈë640X480µÄ16ɫͼÐÎģʽ¡£ÕâÑù£¬ÉõÖÁ²»ÐèÒªÖØбàÒëÄںˣ¬Ò²¿ÉÒÔ×°Ôغº×Öϵͳ¡£ \begin{itemize} \item FrameBuffer: FrameBuffer¿ÉÒÔÒë×÷¡°Ö¡»º³å¡±£¬ÕâÊÇÒ»ÖÖ¶ÀÁ¢ÓÚÓ²¼þµÄ³éÏóͼÐÎÉ豸¡£ FrameBufferµÄÓŵãÔÚÓÚÆä¸ß¶ÈµÄ¿ÉÒÆÖ²ÐÔ£¬Ò×ʹÓÃÐÔÉÏÎȶ¨ÐÔ¡£ fbdrvÊÇLinux kernelºÜÔç¾ÍÌṩµÄͼÐÎÇý¶¯£¬ËüÉõÖÁ¿ÉÒÔ×÷ΪX WindowµÄµ×²ãÇý¶¯£¬²»¹ýÓÐЩLinuxµÄ°æ±¾²¢Ã»ÓаÑËü±àÒëµ½ºËÐÄÖУ¬»òÊÇûÓÐȱʡµÄÅäÖúÍʹÓÃËü¡£¼òµ¥µØÐÞ¸Ä/etc/lilo.cfg£¬Ö´ÐÐlilo -v£¬ÖØÆô¶¯¼ÆËã»úÈç¹ûÄúÐÒÔ˵Ļ°£¬¾Í¿ÉÒÔ¿´µ½¿É°®µÄÆó¶ìͼ±êÁË¡£ fbdrv¿ÉÒÔÖ§³ÖºÜ¶àÀϵÄÏÔ¿¨£¬ÈçVGA£¬EGA£¬´óÁ¦Éñµ¥ÏԵȣ¬Ò²Ö§³Ö×îеÄVESA 2.0±ê×¼¡£ËùÒÔ£¬¾¡Á¿Ñ¡ÓÃfbdrv£¬¿ÉÒԵõ½×î¼Ñ¡¢×î¿ìµÄÏÔʾ£¬Ê¹zhcon¿ÉÒÔÔËÐÐÔÚ640X480X8bppµ½1024x768x32bpp£¬Ò²¾ÍÊÇ˵¿ÉÒÔ³ä·Ö·¢»ÓÏÔ¿¨ºÍÏÔʾÆÁµÄÍþÁ¦¡£Ê¹ÓÃLinuxÄں˵ÄFrameBufferÇý¶¯£¨vesafb£©£¬¿ÉÒÔÇáËÉÖ§³Öµ½1024X768X32bppÒÔÉϵķֱçÂÊ¡£ FrameBufferÊÇÍƼöʹÓõÄÇý¶¯·½Ê½¡£ ¿ÉÒÔÔÚϵͳÆô¶¯Ê±Ïòkernel´«ËÍvga=mode-numberµÄ²ÎÊýÀ´¼¤»îFrameBufferÉ豸£¬È磺 lilo:linux vga=305 ½«»áÆô¶¯1024X768X8bppģʽ¡£ ϱíÁгöÁ˲»Í¬É«²ÊģʽºÍÏàÓ¦µÄ²ÎÊý£º \begin{tabular}{|c|c|c|c|c|c|c|} \hline É«Éî& 640x400& 640x480& 800x600& 1024x768& 1280x1024& 1600x1200\\ \hline \hline 4bits& ?& ?& 0x302& ?& ?& ?\\ \hline 8bits& 0x300& 0x301& 0x303& 0x305& 0x307& 0x31C\\ \hline 15bits& ?& 0x310& 0x313& 0x316& 0x319& 0x31D\\ \hline 16bits& ?& 0x311& 0x314& 0x317& 0x31A& 0x31E\\ \hline 24bits& ?& 0x312& 0x315& 0x318& 0x31B& 0x31F\\ \hline 32bits& ?& ?& ?& ?& ?& ?\\ \hline \end{tabular} ÓйØFrameBuffer¸üÏêϸµÄÐÅÏ¢Çë²ÎÔÄ£º\textit{/usr/src/linux/Documentation/fb/vesafb.txt ºÍ£¼£¼Framebuffer HOWTO£¾£¾} \item libggi:\\ libggiÊÇÒ»¸ö¿çƽ̨µÄ»æͼ¿â¡£ ÓÉÓÚfbdrvÖ§³ÖµÄÏÔʾÀàÐͺܶ࣬Çý¶¯·½Ê½ÓÖ²»Í³Ò»£¬zhconÖ»ÄÚ½¨ÁË×î³£ÓõÄ4bppµ½32bppµÄVESA 2.0Ö§³Ö£¬ÆäËüµÄÏÔʾÀàÐÍÔò͸¹ýlibggiµÄͳһͼÐνӿÚÌṩ֧³Ö£¬ËùÒÔzhconʵ¼ÊÉÏ¿ÉÒÔÖ§³Ö¸ü¶àµÄfbdrv£¬Ö»ÒªÊÇlibggiÖ§³ÖµÄ¡£ ÔÚLinuxÉÏ£¬libggiÊÇͨ¹ýµ÷ÓÃFrameBuffer»òsvgalibÀ´Íê³ÉͼÐβÙ×÷µÄ£¬Òò´ËËٶȱȽÏÂý¡£ µ«ÔÚijЩ²»Ö§³ÖFrameBufferºÍvgaµÄϵͳÉÏ¿ÉÒÔͨ¹ýlibggiÀ´Íê³É»æͼ²Ù×÷¡£ ҪʹÓÃlibggi£¬ÐèÒªÉèÖÃGGI\_DISPLAY»·¾³±äÁ¿£¬ÀýÈ磺 ÔÚ.bash\_profileÖмÓÈëexport GGI\_DISPLAY=display-fbdev:-noinput ½«Ê¹ÓÃlibggiÌṩµÄ½Ó¿ÚÀ´Íê³ÉͼÐÎÊä³ö£¨Ê¹ÓÃFrameBuffer£©¡£¸üÏêϸµÄÐÅÏ¢Çë²ÎÔÄlibggiµÄÎĵµ¡£ \item vga:\\ Èç¹ûÄúµÄÄں˲¢Ã»ÓбàÒë½ø¶ÔFrameBufferµÄÖ§³Ö£¬ÄÇô¿ÉÒÔʹÓÃÄÚ½¨µÄvgaÇý¶¯À´Ê¹ÏÔÄ¿¹¤×÷ÔÚ640X480X16É«µÄģʽÏ¡£ÒòΪvgaÇý¶¯ÊÇÖ±½Ó¶ÔÏÔ¿¨É쵀 ¼Ä´æÆ÷²Ù×÷£¬ËùÒÔÕâÖÖ·½Ê½µÄÒÆÖ²ÐԺܲ \end{itemize} ϵͳÆô¶¯Ê±»á°´ÒÔÏÂ˳ÐòÀ´Ñ¡ÔñͼÐÎÇý¶¯£ºlibggi£¨Èç¹ûÉèÖÃÁË»·¾³±äÁ¿GGI\_DISPLAY£©,framebuffer,vga. \subsection{¶àÄÚÂëÖ§³Ö} ¶àÄÚÂëÖ§³Ö zhconÊÇÒ»¸ö¶àÄÚÂëÖÐÎÄƽ̨¡£Ä¿Ç°Ö§³ÖGB2312,GBK,BIG5,JIS,KSCMµÈ¶àÖÖÄÚÂë¡£ ÔÚϵͳÔËÐÐʱ¿ÉÒÔͨ¹ýÈȼüCTRL-F1 - CTRL-F5ÔÚÒÔÉϼ¸ÖÖ±àÂ뷽ʽ¼äÇл»¡£ zhcon»¹ÓÐÒ»¸öÄÚÂë×Ô¶¯×ª»»µÄÌØÐÔ¡£¿ÉÒÔÔÚGB2312ºÍBIGÄÚÂëÖ®¼ä×Ô¶¯Ê¶±ð£¬×ª»»¡£ ʹÓÃCTRL-F9¿ÉÒÔÔÚmanual,auto,auto-gb,auto-b5ËÄÖÖ·½Ê½¼äÇл»£º \begin{itemize} \item manual£ºÐèÒªÊÖ¹¤Çл»ÄÚÂë \item auto:ϵͳ×Ô¶¯Ê¶±ðGB2312ºÍBIG5Âë \item auto-gb:ϵͳ×Ô¶¯Ê¶±ðGB2312ºÍBIG5Â룬²¢Ê¹ÓüòÌå×Ö¿âÀ´ÏÔʾºº×Ö \item auto-b5:ϵͳ×Ô¶¯Ê¶±ðGB2312ºÍBIG5Â룬²¢Ê¹Ó÷±Ìå×Ö¿âÀ´ÏÔʾºº×Ö \end{itemize} \textbf{\textit{×¢Ò⣺ÄÚÂë×Ô¶¯Ê¶±ð¹¦ÄܽöÊÊÓÃÓÚGB2312ºÍBIG5Ö®¼äµÄ×Ô¶¯×ª»»ºÍʶ±ð¡£} } \subsection{¶àµãÕó×ÖÌåÖ§³Ö} ÓëÆäËüµÄ¿ØÖÆ̨ÖÐÎÄƽ̨һÑù£¬zhconʹÓõãÕó×ÖÌåÏÔʾºº×Ö¡£ Ä¿Ç°£¬zhconʹÓÃÒ»ÖÖÔÚ±ê×¼µÄLinux PSF×ÖÌå¸ñʽµÄ»ù´¡ÉÏÀ©Õ¹Á˵ÄBPSF¸ñʽÀ´´æ·Å×Ö¿â¡£¶Ô¸Ã¸ñʽµÄÏêϸÃèÊö¿É²ÎÔÄ\textit{doc/bpsf.txt} ¡£ µ±Ç°°æ±¾µÄzhconÖ§³Ö12,14,16,24µÈ¶àÖÖµãÕó×ÖÌå¡£ ÔÚ·Ö±çÂʽϵ͵ÄÇé¿öÏ£¨640X480£©¿ÉÒÔ¿¼ÂÇʹÓÃ12µãÕó×ÖÌåÀ´ÏÔʾºº×Ö£» Ôڸ߷ֱçÂʵÄÇé¿öÏ£¨>=1024X768£©Ôò¿ÉÒÔʹÓÃ24µãÕó×ÖÌåÀ´ÓÅ»¯ÏÔʾЧ¹û¡£ ËùÓÐ×ÖÌåÎļþ¶¼´æ·ÅÔÚ\$prefix/lib/zhcon/font/Ŀ¼Ï¡£ ¿ÉÒÔͨ¹ýÐÞ¸ÄÅäÖÃÎļþzhcon.conf»ò.zhconrcÖеÄ\textit{ascfont} ºÍ(\textit{gbkfont,big5font,jisfont,kscmfont} )À´Ñ¡Ôñ²»Í¬µÄ×ÖÌ壬È磺 \begin{verbatim} ascfont = font/asc16.bpsf gbfont = font/gb-16.bpsf gbkfont = font/gbk-16.bpsf big5font = font/big5-16.bpsf jisfont = font/jis-16.bpsf kscmfont = font/kscm-16.bpsf ½«Ê¹ÓÃ16µãÕó×ÖÌå¡£ ascfont = font/asc12.bpsf gbfont = font/hzk12.bpsf ½«Ê¹ÓÃ12µãÕó×ÖÌåÏÔʾ¼òÌ庺×Ö¡£ ascfont = font/asc24.bpsf gbfont = font/gb-24-kai.bpsf ½«Ê¹ÓÃ24µãÕó¿¬Ìå×ÖÏÔʾ¼òÌ庺×Ö¡£ \end{verbatim} \subsection{ÖÐÎÄÊäÈë} zhconÖ§³ÖÁ½ÖÖÊäÈë·ç¸ñ£º¹â±ê¸úË淽ʽºÍµ×²¿×´Ì¬Ðз½Ê½¡£ ¹â±ê¸úËæÊÇÖ¸ÍâÂë´°ºÍºòÑ¡´°Ê¼ÖÕÔÚÊäÈë¹â±ê¸½½ü³öÏÖ²¢×Ô¶¯¸úËæ¹â±êÒƶ¯£¬ ÒÔʹÓû§ÔÚÖÐÎÄÊäÈëʱ¾ßÓÐÁ¼ºÃµÄÊÓ¾õЧ¹û¡£ ¿ÉÒÔËæʱÓÃCTRL-F7ºÍCTRL-F8ÔÚÕâÁ½ÖÖ·½Ê½¼äÇл»¡£ ʹÓÃCtrl+.£¨¾äºÅ£©¼üÇл»ÖÐÓ¢Îıêµã״̬¡£ ʹÓÃCTRL+,£¨¶ººÅ£©¼üÇл»È«½Ç/°ë½Ç״̬¡£ ϵͳÔËÐÐʱ¿ÉËæʱʹÓÃCTRL-ALT-H¼üÀ´¼¤»î°ïÖú´°¿Ú²é¿´Èȼü¶¨Òå¡£ \subsection{ÅäÖÃÎļþ} ϵͳÆô¶¯Ê±ÏÈÔÚÓû§Ä¿Â¼Ñ°ÕÒ.zhconrcÎļþ£¬Èç¹ûûÓиÃÎļþ¾ÍʹÓÃ\$prefix/lib/zhcon/zhcon.confÖеÄÉèÖᣠÄú¿ÉÒÔͨ¹ý¶¨ÖÆzhcon.conf/.zhconrcÖеÄÄÚÈÝÀ´¸öÐÔ»¯zhcon¡£ ¾ßÌåµÄ¶¨ÖÆÐÅÏ¢Çë¼û¸ÃÎļþÖеÄ×¢ÊÍ¡£ \subsection{zhconÈȼüÒ»ÀÀ} ϱíÁгöÁ˵±Ç°ÏµÍ³ÖпÉÓõÄÈȼü: \begin{tabular}{|c|c|} \hline °´¼ü& ¹¦ÄÜ\\ \hline \hline CTRL-SPACE& ´ò¿ª/¹Ø±ÕÊäÈë·¨\\ \hline ALT -SPACE& ´ò¿ª/¹Ø±ÕCJK·½Ê½\\ \hline CTRL\_F1& ʹÓÃGB2312±àÂë\\ \hline CTRL\_F2& ʹÓÃGBK±àÂë\\ \hline CTRL\_F3& ʹÓÃBIG5±àÂë\\ \hline CTRL\_F4& ʹÓÃJIS±àÂë\\ \hline CTRL\_F5& ʹÓÃKSCM±àÂë\\ \hline CTRL\_F7& Çл»ÊäÈë·ç¸ñ\\ \hline CTRL\_F9& Çл»×Ô¶¯±àÂ뷽ʽ\\ \hline CTRL\_F10& ϵͳ²Ëµ¥\\ \hline CTRL\_ALT\_H& °ïÖú´°¿Ú\\ \hline CTRL\_ALT\_0& ½øÈëÌáʾ״̬\\ \hline CTRL\_ALT\_1 -- CTRL\_ALT\_9& Ñ¡ÔñÊäÈë·¨\\ \hline SHIFT\_PAGEUP& ÉϾí°ëÆÁÀúÊ·ÐÅÏ¢\\ \hline SHIFT\_PAGEDOWN& Ͼí°ëÆÁÀúÊ·ÐÅÏ¢\\ \hline SHIFT\_ARROWUP& ÉϾíÒ»ÐÐÀúÊ·ÐÅÏ¢\\ \hline SHIFT\_ARROWDOWN& ϾíÒ»ÐÐÀúÊ·ÐÅÏ¢\\ \hline \end{tabular} \section{¿ª·¢¼Æ»®} ±àдzhconµÄ³õÖÔÊÇΪ¹ã´óLinux°®ºÃÕßÌṩһ¸ö±ã½ÝµÄ¿ØÖÆ̨ÖÐÎÄʹÓû·¾³Ä¿Ç°zhconÈÔÔ¶·ÇÍêÃÀ£¬»¹ÔÚ²»¶Ï¸Ä½øÖ®ÖС£ zhconÊÇ¿ª·ÅÔ´´úÂëµÄ×ÔÓÉÈí¼þ£¬ÔÚGPL°æȨÏ·¢ÐУ¬»¶Ó¶ÔLinuxÖÐÎÄ¿ª·¢ÓÐÐËȤµÄÅóÓÑ¼Ó È뿪·¢£¬Ô¸ÎÒÃǵĹ²Í¬Å¬Á¦ÄÜΪLinuxÖÐÎÄ»¯×÷³öÒ»µã¹±Ïס£ zhconµÄÖ÷Ò³ÔÚ\htmladdnormallink{http://zhcon.gnuchina.org}{http://zhcon.gnuchina.org}.ÏîÄ¿µÄ¿ª·¢Ò³ÃæÔÚ \htmladdnormallink{http://sourceforge.net/projects/zhcon}{http://sourceforge.net/projects/zhcon}ͨ¹ý¸ÃÒ³Ãæ¿ÉÒÔ·ÃÎʵ½zhconÏîÄ¿µÄһЩÏà ¹Ø ÐŠϢ¡£ ½¨Òé¶Ôzhcon¿ª·¢ÓÐÐËȤµÄÅóÓѼÓÈëÏÂÃæµÄÓʼþÁбízhcon-devel£¬ÈκÎʹÓ㬿ª·¢·½ÃæµÄÎÊÌⶼ¿ÉÒÔ·¢Ðŵ½£º \htmladdnormallink{zhcon-devel@lists.sourceforge.net}{mailto:zhcon-devel@lists.s ourceforge.net}. \section{ÖÂл} ÔÚ¿ª·¢zhconµÄ¹ý³ÌÖУ¬ÎÒÃǵõ½ÁËÐí¶àÅóÓѵİïÖú£¬ÔÚ´ËÏòËûÃDZíʾÕæ³ÏµÄ¸Ðл£¨¼ûTHANKSÎļþ£¬Èç¹û²»É÷ÒÅ©ÁËÄúµÄÃû×Ö£¬Ç뷢ПøÎÒÃÇ£©¡£ ͬʱҲҪ¸Ðл \htmladdnormallink{www.gnuchina.org}{http://www.gnuchina.org} ΪzhconÌṩÖ÷Ò³¿Õ¼ä¡£ \end{CJK*} \end{document}