﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-YGB.Grushy-文章分类-Linux配置</title><link>http://www.cnitblog.com/ygb/category/1604.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 29 Sep 2011 11:12:54 GMT</lastBuildDate><pubDate>Thu, 29 Sep 2011 11:12:54 GMT</pubDate><ttl>60</ttl><item><title>声卡驱动ALSA安装指南 [转]</title><link>http://www.cnitblog.com/ygb/articles/5747.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Sat, 24 Dec 2005 13:17:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5747.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5747.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5747.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5747.html</trackback:ping><description><![CDATA[ALSA，即Advanced&nbsp;Linux&nbsp;Sound&nbsp;Architecture。它是一款优秀的声卡驱动，能驱动大部
分的声卡，而且支持多音频流，支
持多声卡等等。使我们能在linux下享受到美妙的音乐。也是2.6内核支持的,并且
&nbsp;"After&nbsp;2&nbsp;complete&nbsp;code&nbsp;overhauls&nbsp;they&nbsp;were&nbsp;integrated&nbsp;into&nbsp;kernel&nbsp;2.6.0&nbsp;at&nbsp;the&nbsp;start&nbsp;of&nbsp;2003&nbsp;replacing&nbsp;the&nbsp;now&nbsp;deprecated
(非难，反对)&nbsp;OSS&nbsp;drivers."&nbsp;--引自ALSA的官方网站。<br>
这对我更有吸引力了，到了“非君不嫁”的地步了。但…………命运总是坎坷的，我在官方<br>
网站downlown了安装指南按照这说去做，但&nbsp;&nbsp;…………埃…………可能是我的英文太差了吧，<br>
（我是下载最新的官方ALSA-1.03稳定版的），我又按照install文件的说了，但也不行。只知道<br>
是modprobe文件的问题每次reboot后，kmix总是probe不到声卡。于是我又参考了《声卡驱动ALSA安装指南(第三版)》，可能我太菜了&nbsp;fail…………&nbsp;。<br>
但我老是不甘心，但在网上的写的modprobe配置对我这样的菜鸟来说总是一头雾水。<br>
参考了各种资料后，我总结了&nbsp;LINUX2.6声卡驱动ALSA安装指南（菜鸟版）&nbsp;：）。<br>
<br>
网上的都是写的是旧版的驱动，我这里主要是面对新版的(after0.9.0beta11)，<br>
本文以ALSA1.03＋RH9＋2.**内核为例。我的声卡是内置的cmi8738&nbsp;在Iwill&nbsp;KT133A<br>
<br>
ALSA安装步骤：<br>
一&nbsp;1.&nbsp;到&nbsp;<img src="http://www.blogcn.com/images/aurl.gif" alt="::URL::" align="absbottom" border="0" hspace="2"><a href="http://www.alsa-project.org%e4%b8%8b%e8%bd%bd%e6%9c%80%e6%96%b0%e7%9a%84alsa%e9%a9%b1%e5%8a%a8%ef%bc%8c%e5%ba%93%e6%96%87%e4%bb%b6%ef%bc%8c%e5%92%8c%e5%b7%a5%e5%85%b7/" target="_blank">http://www.alsa-project.org下载最新的ALSA驱动，库文件，和工具</a> <br>
<img src="http://www.blogcn.com/images/aurl.gif" alt="::URL::" align="absbottom" border="0" hspace="2"><a href="http://www.alsa-project.org/alsa/ft...r-1.0.3.tar.bz2" target="_blank">http://www.alsa-project.org/alsa/ft...r-1.0.3.tar.bz2</a> &nbsp;<br>
<img src="http://www.blogcn.com/images/aurl.gif" alt="::URL::" align="absbottom" border="0" hspace="2"><a href="http://www.alsa-project.org/alsa/ft...-1.0.3b.tar.bz2" target="_blank">http://www.alsa-project.org/alsa/ft...-1.0.3b.tar.bz2</a> <br>
<img src="http://www.blogcn.com/images/aurl.gif" alt="::URL::" align="absbottom" border="0" hspace="2"><a href="http://www.alsa-project.org/alsa/ft...s-1.0.3.tar.bz2" target="_blank">http://www.alsa-project.org/alsa/ft...s-1.0.3.tar.bz2</a> &nbsp;<br>
<img src="http://www.blogcn.com/images/aurl.gif" alt="::URL::" align="absbottom" border="0" hspace="2"><a href="http://ftp.freshrpms.net/pub/freshr...2-1.fr.i386.rpm" target="_blank">http://ftp.freshrpms.net/pub/freshr...2-1.fr.i386.rpm</a> <br>
再下载alsaconf&nbsp;这是modprobe配置工具，最好下载rpm包（方便），源代码<br>
也可以的，我下载的是alsaconf-0.9.0-1.noarch.rpm，有更新的版本的，我下不了。不用这工具<br>
我对modprobe文件配置了，但还不行，lsmod没有看到。<br>
2.内核的sound设置要打开，我是把他放在内核里面的，我在用linux-2.6.0-testX版内核时，<br>
要把souod加入到内核里面才能有声音支持的，新的2.**或其他的2.6正式版应该就可把他编译成<br>
module，所以我在&nbsp;＃modinfo&nbsp;soundcore&nbsp;的时候没有soundcore这个module。一般情况下内核的sound设置<br>
这步可以省去的，现在的linux版本都默认设置好了。<br>
3.&nbsp;原来装了OSS驱动的可以把OSS的声音驱动的module删了，或在modprobe文件把它注掉<br>
我的是&nbsp;#alias&nbsp;sound-slot-0&nbsp;cmpci<br>
install&nbsp;sound-slot-0&nbsp;/sbin/modprobe&nbsp;--first-time&nbsp;--ignore-install&nbsp;sound-slot-0&nbsp;&amp;&amp;&nbsp;{&nbsp;/bin/aumix-minimal&nbsp;-f&nbsp;/etc/.aumixrc&nbsp;-L&nbsp;&gt;/dev/null&nbsp;2&gt;&amp;1&nbsp;||&nbsp;:;&nbsp;}<br>
remove&nbsp;sound-slot-0&nbsp;{&nbsp;/bin/aumix-minimal&nbsp;-f&nbsp;/etc/.aumixrc&nbsp;-S&nbsp;&gt;/dev/null&nbsp;2&gt;&amp;1&nbsp;||&nbsp;:;&nbsp;}&nbsp;;&nbsp;/sbin/modprobe&nbsp;-r&nbsp;--first-time&nbsp;--ignore-r&nbsp;<br>
在alias&nbsp;sound-slot-0&nbsp;cmpci前加＃注掉就行。<br>
4.确认有无内核源码包/usr/src目录下看看是否有一个名字类似linux-2.4.x-x的目录。如果没有就得自己装一个。发行版光盘中带有.我是下载kernel2.**的，当然没问题了。<br>
注意：关于redhat发行版2.4.20-xx系列内核的问题。<br>
rehat
发行版中，如果是使用最新的2.4.20-xx内核及其源码包，例如redhat9，应该安装alsa-0.9.4版本，而之前的0.9.x是不能安装使
用的。虽然alsa能成功编译，但在alsa模块加载时会出错而不能使用。(我没有试过，---引自声卡驱动ALSA安装指南(第三版)&nbsp;<img src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" onclick="window.open('/images/wink.gif','_blank');" border="0" hspace="2" vspace="2">.<br>
<br>
5.做一个源码包的链接.ln&nbsp;-s&nbsp;linux-2.x.x-x&nbsp;linux&nbsp;(其中linux-2.x.x-x为源码包的目录名称)<br>
在kernel-2.**可以省去这步的，做了这一步也没用的，在configure时，总是会到<br>
／usr／src／linux-2.**的，我试过了。<br>
<br>
二&nbsp;开始安装&nbsp;把包放进一个目录，以后所有操作均在该目录下执行。<br>
1&nbsp;.解压，执行：<br>
<br>
tar&nbsp;jxvf&nbsp;alsa-driver-1.0.3.tar.bz2<br>
tar&nbsp;jxvf&nbsp;alsa-lib-1.0.3b.tar.bz2<br>
tar&nbsp;jxvf&nbsp;alsa-utils-1.0.3.tar.bz2&nbsp;<br>
<br>
2.安装alsaconfig&nbsp;，#rpm&nbsp;-ivh&nbsp;alsaconf-0.9.0-1.noarch.rpm<br>
<br>
3.编译alsa&nbsp;执行：<br>
<br>
cd&nbsp;alsa-driver-1.0.3<br>
./configure&nbsp;--with-cards=模块名称&nbsp;--with-sequencer=yes<br>
<br>
注
意：如果你知道自己声卡的模块名称,则可以用：&nbsp;./configure&nbsp;--with-cards=模块名称&nbsp;--with-sequencer=
yes&nbsp;如我的是cmi8738片的软声卡，则为：&nbsp;./configure&nbsp;--with-cards=cmipci&nbsp;--with-
sequencer=yes&nbsp;但如果不清楚的话，&nbsp;用lspci命令查询，再到alsa-driver-1.0.3解压出的目录下的CARDS-
STATUS文件找出你的声卡的模块名.如果还不行的请用./congfigure以编译alsa所支持的所有声卡的驱动<br>
如果声卡是ISA的pnp声卡，请用./configure&nbsp;--with-isapnp=yes<br>
./configure&nbsp;的详细参数可通过执行：./configure&nbsp;--help&nbsp;进行查询。<br>
<br>
之后：<br>
make<br>
make&nbsp;install&nbsp;<br>
./snddevices&nbsp;『注：Skip&nbsp;this&nbsp;step,&nbsp;if&nbsp;you&nbsp;
have&nbsp;a&nbsp;kernel&nbsp;with&nbsp;the&nbsp;DEVFS&nbsp;support.不清楚的，
就做了这步也没问题的。<br>
这个script是用来生成ALSA设备文件的。』<br>
<br>
cd&nbsp;alsa-lib-1.0.3b<br>
/configure;<br>
make;<br>
make&nbsp;install<br>
<br>
cd&nbsp;alsa-utils-1.0.3<br>
/configure<br>
make<br>
make&nbsp;install<br>
<br>
<br>
4.运行alsaconf，&nbsp;＃alsaconf，会出现了配置界面，如果以前安装了OSS声卡驱动的会出现2个或更多的设备的。<br>
选择第一个就是了，没错了。第一个才是ALSA&nbsp;的device.&nbsp;我就显视2个名字完全一样的device了。因为我以前<br>
安装过OSS的驱动。<br>
<br>
5。reboot，&nbsp;这样ALSA驱动就安装完了。可以music！music！&nbsp;enjoy！enjoy！<br>
不过因为linux默认静音，所以需要配置音量&nbsp;我是用kmix的，在面板加如小程序kmix<br>
调好音量，就--&gt;控制中心--&gt;声音和多媒体--&gt;声音系统--&gt;混音器&nbsp;载入音量，保存。OK！<br>
这是最菜鸟的方法，其他的方法就不这这里多说了。<br>
<br>
如果想功能更强大的可以用gamix<br>
下载gamix<br>
<img src="http://www.blogcn.com/images/aurl.gif" alt="::URL::" align="absbottom" border="0" hspace="2"><a href="http://www1.tcnet.ne.jp/fmurata/lin...1.99.p14.tar.gz" target="_blank">http://www1.tcnet.ne.jp/fmurata/lin...1.99.p14.tar.gz</a> <br>
解压：tar&nbsp;zxvf&nbsp;gamix-1.99.p14.tar.gz<br>
cd&nbsp;gamix-1.99.p14<br>
./configure<br>
make<br>
make&nbsp;install<br>
以上安装gamix<br>
第一次运行gamix时可能会显视找不到&nbsp;ALSA&nbsp;DEVICE&nbsp;的。reboot就可以了。<br>
<br>
想了解更多的ALSA&nbsp;设置可到&nbsp;alsa-kernel/Documentation/ALSA-Configuration.txt<br>
(or&nbsp;Documentation/sounds/alsa/ALSA-Configuration.txt&nbsp;in&nbsp;linux-2.6<br>
kernel&nbsp;tree).或到[url]<img src="http://www.blogcn.com/images/aurl.gif" alt="::URL::" align="absbottom" border="0" hspace="2"><a href="http://www.alsa-project.org/alsa-doc" target="_blank">http://www.alsa-project.org/alsa-doc</a> [url]&nbsp;看看里面有不同的声卡的具体的安装方法的。)<img src ="http://www.cnitblog.com/ygb/aggbug/5747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-24 21:17 <a href="http://www.cnitblog.com/ygb/articles/5747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux如何启动</title><link>http://www.cnitblog.com/ygb/articles/5746.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Sat, 24 Dec 2005 13:09:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5746.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5746.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5746.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5746.html</trackback:ping><description><![CDATA[<span id="BlogViewId">无论如何，以下是系统启动必经的过程：<br>1，启动器（如grub）在硬盘上找到内核的镜像，把它导入内存中启动；<br>2，由内核初始化设备以及启动它们的驱动程序；<br>3，内核加载根文件系统（root filesystem）；<br>4，内核启动初始化程序init；<br>5，由init设置一系列在配置文件中配置的进程；<br>6，最后init按顺序启动这些进程直至给出登录画面。<br><br>一，init<br>init没有什么特殊的，它也是一个跟其他应用程序差不多的程序，在/sbin里也能够找<br>的到。init的主要作用其实就是是有次序地启动或者关闭一些进程。<br>不同版本的init可能略有不同，不过大部分都是采用的unix V的风格，还有一些是采用<br>的BSD风格，这些其实都无所谓。<br><br>(1)运行级别(Runlevels)<br>   linux系统中任何时刻都会有一些基本的进程在运行(跟废话一样)。机器的运行状态<br>可以用运行级别来描述，运行级别(Runlevels)有七种，用0到6表示。系统通常只运行<br>在一个runlevel下面。在关机的时候，init会把系统终端引导入另一个运行级别下，告<br>诉kernel进行关机操作，关闭系统服务等等。<br>理解runlevels的最好方法是看看init的配置文件：/etc/inittab,找到这一行:<br><br>id:5:initdefault:<br><br>   这一行的意思是系统默认的运行级别为5，也就是图形操作界面。inittab文件里都<br>是这样形式的命令，主要分为4个部分：<br><br>  *一个专门的标识符(很短的字符串，比如上面例子里的id)<br>  *代表运行级别的数字<br>  *init应该采取的动作(在上面的例子里这个action就是initdefault，即设置默认运<br>行级别为5)<br>  *需要运行的命令(可选)<br><br>   在上面的例子里，最后的可选命令是缺省的，既然是设置默认运行级别，也就没有<br>必要再在后面添加什么运行命令。再向下看inittab，可以看到：<br><br>15:5:wait:/etc/rc.d/rc 5<br><br>   这一行非常重要，因为它是用来触发大部分的系统服务和配置的。这些系统服务以<br>及配置信息都保存在rc*.d和init.d目录中。上面的例子里init设置为在运行级别5下运<br>行/etc/rc.d/rc 5命令，采取的动作(action)是wait。整个一行的意思就是：如果进入<br>运行级别 5则运行rc 5命令，并且将一直等待(wait)到这个命令运行完毕后再做其他。<br><br>除了上面的initdefault，wait两个动作(action)以外，还有几个其他的action，尤其<br>是关于电源管理的，inittab(5)的手册页里都一一介绍了它们。一些比较重要的，经常<br>会遇到的有：<br><br>--respawn<br>   respawn动作可以让init运行后面的命令，并且命令一旦停止运行respawn会再次执<br>行这个命令，也就是说循环运行后面的命令。在inittab配置文件里可以找到这样的命<br>令：<br><br>1:2345:respawn:/sbin/mingetty tty1<br><br>   getty程序是用来给出登录提示符的，上面一行指示的是第一虚拟控制台，即按下 <br>ALT+F1或者CONTROL-ALT-F1所进入的终端界面。respawn可以使终端提示符在登录以后<br>一直显示出来。<br><br>--ctrlaltdel<br>   ctrlaltdel控制的是在系统文本终端下按下Ctrl+Alt+Del键所执行的操作，在大部<br>分系统里这个被设置为重新启动。<br><br>--sysinit<br>   sysinit是init首先需要执行的动作，在选择运行级别之前就已经运行了。<br><br>(2)进程启动<br>   现在是时候学习init如何启动系统服务了，在此之前仍然回到先前的inittab配置文<br>件的这一行：<br><br>15:5:wait:/etc/rc.d/rc 5<br><br>   这短短的一行触发了很多的程序，rc的意思就是run commands，并且你会听说或者<br>看到很多朋友提及命令这个词(脚本，程序，服务等各种形式)。不过，这些命令究竟在<br>哪呢？<br>   在runlevel 5中，命令一般会在/etc/rc.d/rc5.d或者/etc/rc5.d这两个目录下。同<br>理，runlevel 1的命令在rc1.d下，runlevel 2的在rc2.d下，依此类推。在rc5.d目录<br>下你能看到这些东西：<br><br>K01yum                       K35smb            K74nscd       S06cpuspeed<br>K02cups-config-daemon        K35vncserver      K74ntpd       S08iptables<br>K02NetworkManager            K35winbind        K75netfs      S10network<br>K02NetworkManagerDispatcher  K50netdump        K85mdmonitor  S12syslog<br>K03rhnsd                     K50snmpd          K85mdmpd      S18auditd<br>K05saslauthd                 K50snmptrapd      K86nfslock    S26lm_sensors<br>K10cups                      K50vsftpd         K87portmap    S44acpid<br>K10psacct                    K66mDNSResponder  K89named      S50hsf<br>K15gpm                       K67nifd           K89netplugd   S90crond<br>K15httpd                     K68rpcidmapd      K89rdisc      S90xfs<br>K17iiim                      K69rpcgssd        K90bluetooth  S95anacron<br>K20nfs                       K69rpcsvcgssd     K91isdn       S95atd<br>K24irda                      K72autofs         K94diskdump   S97messagebus<br>K25sshd                      K73ypbind         K96pcmcia     S98haldaemon<br>K30sendmail                  K74apmd           S05kudzu      S99local<br><br>   在这个运行级别的目录下的命令运行的时候，都是采用下面的模式：<br><br>s10sysklogd start<br>s12kerneld start<br>s15netstd_init start<br>s18netbase start<br>......<br><br>   注意每一个运行命令，命令中的S表示这个命令是在系统启动的时候运行，而数字<br>(00到99)表示这个命令在所有rc中的顺序。这些rc*.d命令一般都是shell脚本，用来运<br>行/sbin和/usr/sbin中的程序。一般来说，通过观察脚本命令的组成就可以知道这个脚<br>本到底运行了哪个程序。<br>   同样，我们也可以手工启动一些服务。比如，如果你想手工启动httpd服务程序，运<br>行s99httpd start就可以了。而且，你也可以非常简单地关闭某个服务，直接对rc*.d<br>目录下的命令使用stop参数：如s99httpd stop即可。<br>   有一些rc*.d目录里有部分K开头的命令，意思就是kill。这样的话，rc运行命令就<br>是使用的stop参数而不是S所表示的start。这种情况一般出现在系统关机的时候，还是<br>比较容易理解的。<br><br>(3)添加删除服务<br>   如果你想要添加删除或者配置rc*.d目录下的服务程序，那么就得先细看一下这个目<br>录里的文件了，使用ls -l命令将可以看到：<br><br>lrwxrwxrwx  1 root root 15 Aug 27 18:18 K03rhnsd -&gt; ../init.d/rhnsd<br>lrwxrwxrwx  1 root root 15 Aug 27 09:39 K15httpd -&gt; ../init.d/httpd<br>lrwxrwxrwx  1 root root 14 Oct 11 20:39 K17iiim -&gt; ../init.d/iiim<br>lrwxrwxrwx  1 root root 13 Aug 27 09:39 K20nfs -&gt; ../init.d/nfs<br>lrwxrwxrwx  1 root root 14 Aug 27 09:39 K24irda -&gt; ../init.d/irda<br>lrwxrwxrwx  1 root root 14 Oct 11 20:39 K25sshd -&gt; ../init.d/sshd<br>lrwxrwxrwx  1 root root 18 Aug 27 11:53 K30sendmail -&gt; ../init.d/sendmail<br>lrwxrwxrwx  1 root root 13 Aug 27 09:40 K35smb -&gt; ../init.d/smb<br>......<br><br>   这个目录下的命令实质上就是一些链接，几乎都是指向init.d目录。从目录前面的<br>..可以推测，一般都是在/etc/init.d或者/etc/rc.d/init.d下。linux发行版包含这些<br>链接的目的其实就是为了使各个运行级别(runlevel)下启动脚本统一起来，除了可以使<br>系统的组织布局更简单一些没有什么特别的意义。<br>   从当前的运行级别中去除某个init.d脚本命令而不让它运行，最容易想到的办法就<br>是在相应的rc*.d目录里删除链接(symbolic link)，不可否认这的确可行，不过如果出<br>了什么差错的话那可就惨了，毕竟这些名字都不短，出了差错想重新添加链接名字很难<br>记清楚。所以，不要直接从rc*.d目录下删除链接，而是在前面加上一个下划线标记就<br>可以了：mvs99httpd_s99httpd。这样的话，在系统启动的时候，rc就会忽略_s99httpd<br>因为它不是S或K开头的，而且这样出了问题还可以非常直接的修复。<br>   要添加一个服务，那么就需要在init.d目录里自己创建一个脚本，然后在rc*.d目录<br>里创建一个指向它的链接。不过，最简单的方法莫过于参照init.d目录里已经有的脚本<br>，然后予以修改即可。<br>   添加服务的时候，需要注意的是应该给你的服务设定一个合适的启动顺序。如果你<br>自己添加的服务启动太早的话可能会无效，因为服务之间存在着一定的依赖关系。对于<br>一些非基本的服务，大部分系统管理员会比较倾向于使用90以后的顺序，那个时候大部<br>分系统服务已经启动完毕了。<br>   linux的发行版本通常都自带了一个添加删除系统服务的命令。比如debian版本里的<br>update-rc.d命令；redhat里的chkconfig命令。相应的GUI程序可以让服务配置更加直<br>观，利于管理。<br><br>(4)控制init<br>   有时候，我们可以稍稍设置一下init改变运行级别(runlevel)，重新审视一下<br>inittab文件或者关闭一次系统。由于init是整个系统中第一个运行的进程，所以它的<br>ID号永远都为1。控制init可以用telinit命令，假设要转换到runlevel 3下：telinit <br>3<br>   运行级别转换的时候，init会关闭所有那些没有被新的runlevel所定义的进程，因<br>此改变运行级别的时候要加以小心。当你需要添加或者去除inittab文件里的一些命令(<br>如respawn类的)时，需要通知init这些改变以使它重新读取一次inittab配置文件。一<br>些人通过kill -HUP 1来实现，这个方法适用于大部分unix版本的系统上，不过也可以<br>用上面的telinit命令：<br><br>telinit q<br><br>(5)关机<br>   init同样也用来控制系统关机或者重新启动，通过shutdown命令可以实现关机操<br>作。要立即关闭计算机，可以使用shutdown -h now命令，h代表的意思就是halt，也就<br>是切断了电源，如果是重新启动，直接把h参数换成r就可以了：shutdown -r now<br>   关机过程需要一些时间，这个过程中不应该手工切断电源或者按下reset键。上面的<br>例子里now参数表示的就是立即的意思，也有许多其他的参数可以选用，比如+n设定倒<br>计时时间，n就是你想要的时间，这些都可以通过man shutdown了解一下。<br>   举例说明，要使系统10分钟后重新起动：shutdown -r +10<br>   在linux系统里，shutdown命令会通知已经登录进来的用户它即将关机，不过意义不<br>大罢了。如果定义了倒计时关机，shutdown命令会生成一个/etc/nologin文件，这个文<br>件的存在能够阻止其他用户再进行登录操作，当然了，root用户除外。<br>   在系统关机时，shutdown命令会告诉init程序转换到0运行级别，如果是重新启动则<br>转换到第6运行级别。当进入0或者6运行级别后，系统将会依照下面的顺序运行：<br><br>   1,init关闭所有它能关闭的进程(转换到其他运行级别也一样)<br>   2,rc0.d/rc6.d目录下的第一个命令开始运行，锁定系统文件为关机作准备<br>   3,rc0.d/rc6.d目录下的第二个命令运行，卸载除根文件系统以外的所有文件系统(<br>如挂载的windows分区)<br>   4,rc0.d/rc6.d中的命令将把根文件系统重新挂载为只读属性<br>   5,rc0.d/rc6.d中的命令调用sync程序把缓存中的数据写入文件系统<br>   6,最后的命令是重新启动或者关闭内核程序<br><br>二，启动加载程序<br>   在kernel运行init程序之前，是启动加载程序启动了内核。有时候需要通过启动加<br>载程序来选择启动不同的内核甚至不同的操作系统，以及不同的启动模式，这种可选择<br>性在系统出现问题需要修复的时候显得特别有用。这种情况下，你可能就需要启动到单<br>用户模式(single-user mode)或者另一个可用内核下了。<br>   系统加载程序把内核镜像导入到内存中，相当于把内核交到了CPU的手里。当然这个<br>过程是可以携带一些参数的，比如-s，表示启动到单用户模式，也可以启动到一个非默<br>认的运行级别下(如默认级别是启动到图形界面runlevel 5下，可以通过这个办法启动<br>到runlevel 3文本模式下)。<br>   为了键入内核名称以及它们的可选参数，首先需要知道怎么才能看到启动提示符<br>(boot prompt)。幸运的是linux发行版本都带有自己的启动加载程序了。主要的有LILO<br>和GRUB，这里只选择介绍一下grub。<br><br>(1)GRUB<br>   GRUB表示的意思是Grand Unified Bootloader，已经逐渐取代了LILO。GRUB有许多<br>很棒的特性，最重要的一点是它可以直接操作文件系统，读取文件而不需要加载内核。<br>GRUB有一个菜单界面可以让我们很容易的进行操作，选择。但这样又带来了一个问题，<br>就是当我们需要自己指定一些参数的时候就需要进入mini-shell了，在菜单界面下按下<br>c就可以得到这个提示符了：<br><br>grub&gt;<br><br>   假定我需要通过/boot/vmlinuz内核启动到/dev/hda3上的根文件系统。并且这个时<br>候系统已经混乱了，因此需要使用-s参数启动到单用户模式，在启动提示符后键入下面<br>的命令：<br><br>root(hd0,2)<br>kernel /boot/vmlinuz root=/dev/hda3 -s<br>boot<br><br>   root(hd0,2)是设定GRUB将要启动的根分区，也就是内核所在的分区。hd0表示第一<br>块硬盘，2表示第三个分区(/dev/hda3)<br>   kernel命令设定内核镜像以及它的参数值。/boot/vmlinuz指示的是(hd0,2)分区上<br>的镜像。由于kernel命令有时候会忽略上面的root，因此在后面总是要再定义一次<br>root=/dev/hda3<br>   也可以用一行命令把上面的两行命令结合起来：<br><br>kernel (hd0,2)/boot/vmlinuz root=/dev/hda3 -s<br><br>   最后一行的boot命令，就是告诉GRUB导入相应的内核镜像执行了。<br><br>(2)单用户模式与救援启动<br>   有时候系统出现错误，系统管理员会采取的第一步措施就是启动至单用户模式。这<br>个时候系统只是快速启动到一个root shell下而不必启动那些不必要的服务。linux中<br>，single-user模式的运行级别为1，进入该模式需要root密码。<br>   单用户模式下可以做的工作如下：<br>  <br>  *系统崩溃后检查文件系统<br>  *修改一些关键的配置文件，如/etc/fstab,/etc/passwd以及/etc/inittab等等<br>  *通过先前的备份恢复系统<br><br>   永远别指望在单用户模式下的操作还那么舒适，在里面需要自己动手设置终端模式(<br>键入TERM=linux)让全屏编辑器(如vi)可以工作，而且网络还不一定可用。当然，这些<br>都可以手工搞定，只是比较痛苦，呵呵！<br>   单用户模式下的必要工作完成后可以试试退出shell看看系统是不是能够正常启动<br>了。最好是重新启动系统，而不是从单用户模式下通过init装入普通模式，因此这个似<br>乎不总是那么有用。<br>   如果系统都无法进入单用户模式，可以试试内核参数-b来进入救援模式。这个模式<br>下并不像通常那样把文件系统挂载为读写模式，这就需要自己重新进行挂载。<br>   如果足够背，把启动加载程序都损坏了或者干脆原来的内核没有用了，这时就需要<br>一些可启动CD来进入系统，这些可启动CD一般就是LIVE CD了。通过LIVE CD进入系统，<br>挂载原来的文件系统，修复GRUB或者重新编译新内核。</span><img src ="http://www.cnitblog.com/ygb/aggbug/5746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-24 21:09 <a href="http://www.cnitblog.com/ygb/articles/5746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fc4的一些多媒体软件的安装指导[转贴]</title><link>http://www.cnitblog.com/ygb/articles/5745.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Sat, 24 Dec 2005 12:24:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5745.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5745.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5745.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5745.html</trackback:ping><description><![CDATA[linux现在越用越方便了，除了游戏还不是很多，一般应用还是可以的，mp3播放器fc4本身就带了xmms,而且rhythmbox和bmp都是可以
通过yum安装的，但是因为mp3版权的问题，默认安装是不包括的，需要自己手动安装一下。首先添加yum的软件仓库，在命令行下输入：<br>
<br>
# rpm -ihv <a href="http://rpm.livna.org/fedora/4/i386/RPMS.lvn/livna-release-4-0.lvn.2.4.noarch.rpm" target="_blank"><font color="#004d9c">http://rpm.livna.org/fedora/4/i386/RPMS.lvn/livna-release-4-0.lvn.2.4.noarch.rpm</font></a> <br>
# rpm -ihv <a href="http://ayo.freshrpms.net/fedora/linux/4/i386/RPMS.freshrpms/freshrpms-release-1.1-1.fc.noarch.rpm" target="_blank"><font color="#004d9c">http://ayo.freshrpms.net/fedora/linux/4/i386/RPMS.freshrpms/freshrpms-release-1.1-1.fc.noarch.rpm</font></a> <br>
添加livna和freshrmps的库，以后一些非官方的软件可以通过这些库安装。<br>
<br>
1）首先安装yumex，虽然默认安装已经安装了命令行的yum，不是很好用，yum是基于rpm的命令行的软件包管理工具，yumex是图形界面的，非常容易操作。<br>
<br>
在终端下输入<br>
yum -y intsall yumex<br>
本命令需要root权限，可以输入<br>
su -l<br>
输入密码就行<br>
<br>
打开yumex，点击左侧栏的Repos，出现软件库的选项，把atrpms-stabl,freshrpms,livna-stable都打上勾，然后点菜单上的Profiles<br>
,save就可以，点一下刷新，更新后转到左侧栏的install下，在filter下，输入想要安装的软件的名称，linux下安装软件软件以后就很方便了<br>
根本不用打着google到处去找<br>
<br>
2）安装xmms的mp3,wma插件包，在yumex下输入mp3,wma，yumex就自动给你找出匹配的，非常方便的说，如果有依赖问题，yumex会自己解决的，<br>
一点也不用担心，以前上rpmfinder上找某个库文件的日子终于一去不复返了<br>
<br>
3）安装mplayer，mplayer是linux非常优秀的影音播放器，各种电影，音乐文件全部一网打尽。<br>
用yumex安装<br>
mplayer<br>
mplayer-fonts<br>
mplayer-skin<br>
w32codec<br>
反正看见Mplayer的都打上，安装完后就能看电影了<br>
<br>
4）totem和rhythmbox是基于gstream或者xine库的，如果没有安装xine，可以直接安装gstream的<br>
用yumex安装gstreamer-plugins-mp3，然后在终端下输入:<br>
gst-register-0.8<br>
现在就可以用rhythmbox欣赏mp3音乐了<br>
如果要totem也能放电影，主要是avi或者mpg格式的，用yumex搜索gstream，把ffmpeg，和extra-vedio的插件包<br>
都安装上，输入命令gst-register-0.8一下，就能用totem播放电影了<br>
用yumex安装totem的xine插件，也是一样可以播放电影的，不过我没有试过，感兴趣的可以自己玩玩。<br>
<br>
5）安装firefox的mplayer的插件，使你的浏览器也可以像windows下ie一样在线观看小电影，嘿嘿<br>
用yumex安装mplayer-plugin就可以了，很简单，不用设置的，打开浏览器就能用了，检查一下你的浏览器<br>
是否能正确运行插件，可以访问 <a href="http://www.apple.com/trailers/" target="_blank"><font color="#004d9c">http://www.apple.com/trailers/</font></a> <br>
<br>
6）APE文件的支持问题：想要支持ape的播放就不那么简单了，需要编译源码，新手不用怕的，呵呵，一步一步来，<br>
大虾都是从小虾米过来的，上http://sourceforge.net/projects/mac-port/，把mac和xmms-mac都<br>
download下来，如果你想要beep media player也支持ape，也可以把bmp-mac一起下来。<br>
<br>
然后解压这几个tgz包，终端下输入<br>
tar xzvf *.tar.gz<br>
先安装mac包，再安装xmms或者bmp的<br>
然后在源码目录下<br>
./configure<br>
make<br>
make install(需要root权限）<br>
<br>
同样方法安装xmms或者bmp的mac包，有不明白的地方可以看源码包的install说明文件。<br>
打开xmms欣赏ape吧，我有3张queen的大碟，可以慢慢听了，呵呵，臭屁一下<br>
<br>
7）虽然瑞典已经禁了BT，还是说一下bt的使用方法,linux下BT首推Azureus，国际化做的非常<br>
好，不但有中文界面，连下载文件的名字的都能正确的显示，对中国用户非常的好，夸奖一下，<br>
先从http://sourceforge.net/project/showfiles.php?group_id=84122下载源码包<br>
Azureus_2.3.0.4_linux.GTK.tar.bz2.解压后，修改azureus脚本文件，<br>
JAVA_PROGRAM=""的引号中加入java的全路径<br>
然后在此目录下输入./azureus就能使用了<br>
输入ln -sf ~/azureus/azureus /usr/bin<br>
使得直接输入azureus就能打开软件，不用去目录里找了<br>
<br>
如果你没有打开6881的bt端口，在终端下输入：<br>
su -l<br>
/sbin/iptables -I INPUT -p tcp --destination-port 6881:6999 -j ACCEPT<br>
/sbin/iptables -I INPUT -p udp --destination-port 6881:6881 -j ACCEPT<br>
把tcp和udp都加上<br>
/sbin/iptables-save &gt; /etc/sysconfig/iptables<br>
写到iptable规则里边<br>
运行azureus，工具-&gt;NAT测试一下<br>
如果不行，那可能是你有路由器没有打开通道映射，怎么设置你的路由器，参看： <a href="http://www.portforward.com/" target="_blank"><font color="#004d9c">http://www.portforward.com/</font></a> <br>
里边有各种各样的路由器设置port-forwarding的指导。<br>
<br>
<br>
8）ntfs分区支持：<br>
安装ntfs的kernel支持，yumex搜索ntfs，选择合适的内核包下载，查看内核用：<br>
uname -r，安装完毕，修改fstab文件就可以挂载ntfs分区了，在终端下输入：<br>
su -l<br>
mkdir /mnt/windows<br>
/sbin/fdisk -l<br>
上一条命令会显示你各个分区信息<br>
gedit /etc/fstab<br>
在fstab添加<br>
/dev/hda1 /mnt/windows ntfs iocharset=utf8,umask=0222,exec 0 0<br>
假设你的ntfs分区是hda1<br>
重启就能打开你的ntfs分区了，不过这个补丁是只读的，不能写。<br>
<br>
9）usb移动硬盘或者usb接口mp3播放器的中文支持：<br>
fc自从fc3开始采用新的HAL来挂载各种设备，挂载的规则在<br>
/usr/share/hal/fdi/policy/10osvendor/目录的fdi下，<br>
你可以编写自己的policy，使得挂载符合你的要求。<br>
10-storage-policy.fdi这个文件规定了怎么没启用SElinux情况下挂载存储设备<br>
具体的规则可以参看 <a href="http://cvs.freedesktop.org/*checkout*/hal/hal/doc/spec/hal-spec.html?only_with_tag=HEAD#using-devices" target="_blank"><font color="#004d9c">http://cvs.freedesktop.org/*checkout*/hal/hal/doc/spec/hal-spec.html?only_with_tag=HEAD#using-devices</font></a> <br>
修改这个fdi文件，用任何一种文本编辑器打开，寻找<br>
&lt;merge key="storage.policy.default.mount_option.exec" type="bool"&gt;true&lt;/merge&gt;一行<br>
然后在下面添加一行<br>
&lt;merge key="storage.policy.default.mount_option.iocharset=utf8" type="bool"&gt;true&lt;/merge&gt;<br>
就可以了，不过不是很推荐修改这个文件，自己加的规则可以新写一个fdi文件，放到20thirdparty目录下。<br>
<br>
10）Truetype字体的支持，可惜对中文不管用，中文还是没有粗体<br>
终端下输入：<br>
rpm -ivh <a href="http://www.mjmwired.net/resources/files/msttcorefonts-1.3-3.noarch.rpm" target="_blank"><font color="#004d9c">http://www.mjmwired.net/resources/files/msttcorefonts-1.3-3.noarch.rpm</font></a> <br>
安装完成英文就有粗体了<br>
<br>
11）firefox的flash插件支持，随便访问一个有flash的网站，firefox会提醒你缺少插件，然后会自动搜索安装，<br>
然后就能用了，非常的方便。<br>
<br>
12）中文字体的改善，fc4自带的字体看起来很模糊，很不爽，从windows目录fonts下复制simsun.ttf,sumhei.ttf<br>
到/usr/share/fonts/chinese/TrueType/下，然后输入<br>
fc-cache usr/share/fonts/chinese/TrueType/<br>
就安装好了中文字体，但是采用simsun后，英文看起来不爽，有点模糊，推荐从firefly网站下载新宋体，中英文显示都<br>
非常的亮丽，下载 <a href="http://www.study-area.org/apt/firefly-font/fireflysung-1.3.0.tar.gz" target="_blank"><font color="#004d9c">http://www.study-area.org/apt/firefly-font/fireflysung-1.3.0.tar.gz</font></a> <br>
一样安装就可以用了。<br>
<br>
13）gDesklets的安装，gDesklets安装前需要检查一下需要的组件是否已经安装<br>
* Python 2.3 or higher<br>
* python-gtk2 2.4 or higher (*)<br>
* python-gtk2-dev if you want to compile gDesklets<br>
* python-pyorbit 2.0.1 (**)<br>
* python-gnome2 2.6.x or higher (***)<br>
* python-gnome2-dev if you want to compile gDesklets<br>
* expat (try to avoid 1.95.7 since it seems to be buggy!)<br>
* libgtop2 (2.8.0 or higher is recommended)<br>
* libgtop2-dev if you want to compile gDesklets<br>
* librsvg (2.8.0 or higher from <a href="http://librsvg.sf.net%29/" target="_blank"><font color="#004d9c">http://librsvg.sf.net)</font></a> <br>
* librsvg-dev if you want to compile gDesklets<br>
* some sensors or controls may have extra requirements<br>
用yumex安装上述你缺少的组件。<br>
然后从http://gdesklets.gnomedesktop.org<br>
下载gDesklet的源码包gDesklets-0.35.1.tar.bz2<br>
解压后：<br>
$ ./configure<br>
$ make<br>
$ su -c "make install"<br>
如果你想gnome菜单里边也有gDestlets，在configure的时候，需要添加参数：<br>
$ ./configure --prefix=/usr --sysconfdir=/etc<br>
打开gDesklets<br>
$ gdesklets shell<br>
上到主页查找喜欢的插件，将联接拖到gDesklets的窗口，就能自动安装了，enjoy<br>
<br>
14)试了一下early-login的功能，发现挺好用的，启动时间大大缩短。<br>
用root登陆，输入下列命令<br>
# chkconfig --add gdm-early-login<br>
# chkconfig --add gdm-allow-login<br>
# chkconfig gdm-early-login on<br>
# chkconfig gdm-allow-login on<br>
然后修改/etc/grub.conf<br>
找到kernel那一行，将rhgb 替换为early-login<br>
title Fedora Core (2.6.11-1.1369_FC4)<br>
root (hd0,0)<br>
kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/VolGroup00/LogVol00 early-login quiet<br>
initrd /initrd-2.6.11-1.1369_FC4.img<br>
重启一下就可以了。<br>
<br>
<br>
15）是不是觉得fc4自带的主题很土呢，上www.gnome-look.org下载最炫的主题打扮你的linux吧。<img src ="http://www.cnitblog.com/ygb/aggbug/5745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-24 20:24 <a href="http://www.cnitblog.com/ygb/articles/5745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Zhcon的安装和使用</title><link>http://www.cnitblog.com/ygb/articles/5744.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Sat, 24 Dec 2005 09:37:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5744.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5744.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5744.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5744.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5744.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 13.5pt;" lang="EN-US">zhcon</span><span lang="EN-US"> </span><span style="font-family: 宋体;">一个快速地外挂式</span><span lang="EN-US">CJK(</span><span style="font-family: 宋体;">中文</span><span lang="EN-US">/</span><span style="font-family: 宋体;">日文</span><span lang="EN-US">/</span><span style="font-family: 宋体;">韩文</span><span lang="EN-US">)</span><span style="font-family: 宋体;">的多内码平台</span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;">下载源代码、编译、安装</span><span style="color: black;" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">最新版本的源代码可以访问<span lang="EN-US"><a href="http://hepg.sdu.edu.cn/download.html"><span lang="EN-US"><span lang="EN-US">软件下载</span></span></a></span>。如果下载的是一个源码包，以<span lang="EN-US">v0.2</span>为例，文件名为<span lang="EN-US">zhcon-0.2.tar.gz</span>。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">首先将源代码解开到一个临时目录：<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">tar zxf zhcon-0.2.tar.gz -C /tmp<br>cd /tmp/zhcon-0.2<o:p></o:p></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">然后运行<span lang="EN-US">configure</span>脚本检查系统编译环境，创建<span lang="EN-US">Makefile</span>。<span lang="EN-US"><br>./configure<o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">这时屏幕上会出现很多检测信息，如果没有问题的话接着执行<span lang="EN-US">make</span>开始编译源代码。<span lang="EN-US"><br>make<o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">编译完成后切换到<span lang="EN-US">root</span>用户执行<span lang="EN-US">make install</span>安装可执行文件并删除临时目录。<span lang="EN-US"><br>su<br>make install<br>cd ..<br>rm -rf /tmp/zhcon-0.2<o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">至此，<span lang="EN-US">zhcon</span>已经成功安装到您的系统中。在控制台执行<span lang="EN-US">zhcon</span>就能进入中文环境。<span lang="EN-US"><br>zhcon<o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">如果您是第一次使用<span lang="EN-US">zhcon</span>，可能还需要下载一些<span lang="EN-US"><a href="http://hepg.sdu.edu.cn/download.html"><span lang="EN-US"><span lang="EN-US">字体文件</span></span></a></span>。详细的配置方法见后。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">如果您想卸载<span lang="EN-US">zhcon</span>请以<span lang="EN-US">root</span>身份登陆并执行下面的命令，就能完成卸载。<span lang="EN-US"><br>make uninstall<o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: black; font-family: 宋体;">如果您已经对<span lang="EN-US">zhcon</span>的缺省设置很满意，就可以开始享受了。如果您还想对<span lang="EN-US">zhcon</span>做个性化的设置，或做进一步的研究，那么，请继续阅读下面的内容。</span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">设置显示模式</span><span style="font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">要显示中文，首先要使控制台进入图形状态。<span lang="EN-US">zhcon</span>目前支持<span lang="EN-US">FrameBuffer,libggi,vga</span>三种图形驱动。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">FrameBuffer</span><span style="color: black; font-family: 宋体;">，可以译作<span lang="EN-US">“</span>帧缓冲<span lang="EN-US">”</span>，有时简称为<span lang="EN-US">fbdrv</span>，基于<span lang="EN-US">fbdrv</span>的<span lang="EN-US">console</span>也被称之为<span lang="EN-US">fbcon</span>。这是一种独立于硬件的抽象图形设备。<span lang="EN-US">FrameBuffer</span>的优点在于其高度的可移植性、易使用性、稳定性。使用<span lang="EN-US">Linux</span>内核的<span lang="EN-US">FrameBuffer</span>驱动（<span lang="EN-US">vesafb</span>），可以轻松支持到<span lang="EN-US">1024X768X32bpp</span>以上的分辩率。而且目前可得到的绝大多数<span lang="EN-US">linux</span>版本所发行的内核中，已经预编译了<span lang="EN-US">FrameBuffer</span>支持，通常不需要重新编译内核就可以使用。所以<span lang="EN-US">FrameBuffer</span>也是<span lang="EN-US">zhcon</span>推荐使用的驱动方式。<span lang="EN-US"><br></span>进入<span lang="EN-US">FrameBuffer</span>可以简单地在系统启动时向<span lang="EN-US">kernel</span>传送<span lang="EN-US">vga=mode-number</span>的参数来激活<span lang="EN-US">FrameBuffer</span>设备，如：<span lang="EN-US"><br>lilo:linux vga=305<br></span>将会启动<span lang="EN-US">1024x768x8bpp</span>模式。<span lang="EN-US"> <o:p></o:p></span></span></p>

<table class="MsoNormalTable" style="border: 1pt outset black;" border="1" cellpadding="0">

<tbody>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;">色彩<span lang="EN-US"><o:p></o:p></span></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">640x400<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">640x480<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">800x600<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">1024x768<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">1280x1024<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">1600x1200<o:p></o:p></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">4bits<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x302<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">8bits<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x300<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x301<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x303<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x305<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x307<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="31" unitname="C">31C</st1:chmetcnv><o:p></o:p></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">15bits<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x310<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x313<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x316<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x319<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x31D<o:p></o:p></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">16bits<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x311<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x314<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x317<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="31" unitname="a">31A</st1:chmetcnv><o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x31E<o:p></o:p></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">24bits<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x312<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x315<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x318<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x31B<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">0x<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="31" unitname="F">31F</st1:chmetcnv><o:p></o:p></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">32bits<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; background-color: transparent;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="color: black; font-family: 宋体;" lang="EN-US">?<o:p></o:p></span></p></td></tr></tbody>
</table>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">要使<span lang="EN-US">linux</span>缺省进入<span lang="EN-US">FrameBuffer</span>，可以修改<span lang="EN-US">/etc/lilo.conf</span>，加入一下语句：<span lang="EN-US"><br>vga=0x303<o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">退出编辑，执行：<span lang="EN-US"><br>lilo -v<o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">重新启动<span lang="EN-US">linux</span>，可以使其进入<span lang="EN-US">800x600</span>的<span lang="EN-US">256</span>色模式。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">libggi</span><span style="color: black; font-family: 宋体;">，<span lang="EN-US">libggi</span>是一个跨平台的绘图库。在<span lang="EN-US">Linux</span>上，<span lang="EN-US">libggi</span>是通过调用<span lang="EN-US">FrameBuffer</span>或<span lang="EN-US">svgalib</span>来完成图形操作的，可能速度速度比较慢。但在某些不支持<span lang="EN-US">FrameBuffer</span>或是<span lang="EN-US">vga</span>的系统上使用<span lang="EN-US">libggi</span>仍然是一种不错的选择。<span lang="EN-US"><br></span>要使用<span lang="EN-US">libggi</span>，需要设置<span lang="EN-US">GGI_DISPLAY</span>环境变量，例如：<span lang="EN-US"><br></span>在<span lang="EN-US">.bash_profile</span>中加入<span lang="EN-US">export GGI_DISPLAY=display-fbdev:-noinput<br></span>将使用<span lang="EN-US">libggi</span>提供的接口来完成图形输出（使用<span lang="EN-US">FrameBuffer</span>）。更详细的信息请参阅<span lang="EN-US"><a href="http://www.ggi-project.org/">libggi</a></span>的文档。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">vga</span><span style="color: black; font-family: 宋体;">，如果您的内核并没有编译进对<span lang="EN-US">FrameBuffer</span>的支持，那么可以使用内建的<span lang="EN-US">vga</span>驱动来使显目工作在<span lang="EN-US">640x480x16</span>色的模式下。因为<span lang="EN-US">vga</span>驱动是直接对显卡上的寄存器操作，所以这种方式的移植性很差，速度也比较慢。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: black; font-family: 宋体;">系统启动时会按以下顺序来选择图形驱动：<span lang="EN-US">libggi</span>（如果设置了环境变量<span lang="EN-US">GGI_DISPLAY</span>）<span lang="EN-US">,framebuffer,vga.<o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">多内码支持<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">多内码平台</span><span style="color: black; font-family: 宋体;">，<span lang="EN-US">zhcon</span>目前支持<span lang="EN-US">GB2312,GBK,BIG5,JIS,KSCM</span>等多种内码。在系统运行时可以通过热键<span lang="EN-US">CTRL-F1</span>到<span lang="EN-US">CTRL-F5</span>在以上几种编码方式间自由切换。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: black; font-family: 宋体;">另外</span><span style="color: black; font-family: 宋体;">，还有一个内码自动转换的特性。<span lang="EN-US">zhcon</span>可以在<span lang="EN-US">GB2312</span>和<span lang="EN-US">BIG</span>内码之间自动识别、转换。使用<span lang="EN-US">CTRL-F9</span>可以在以下几种方式下切换：<span lang="EN-US"><br><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="width: 8.25pt; height: 8.25pt;" type="#_x0000_t75" alt=""></v:shape>manual</span>，需要手工切换内码<span lang="EN-US"> <br><v:shape id="_x0000_i1026" style="width: 8.25pt; height: 8.25pt;" type="#_x0000_t75" alt=""></v:shape>auto</span>，系统自动识别<span lang="EN-US">GB2312</span>和<span lang="EN-US">BIG<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="5" unitname="码">5<span lang="EN-US"><span lang="EN-US">码</span></span></st1:chmetcnv> <br><v:shape id="_x0000_i1027" style="width: 8.25pt; height: 8.25pt;" type="#_x0000_t75" alt=""></v:shape>auto-gb</span>，系统自动识别<span lang="EN-US">GB2312</span>和<span lang="EN-US">BIG<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="5" unitname="码">5<span lang="EN-US"><span lang="EN-US">码</span></span></st1:chmetcnv><span lang="EN-US">，并使用简体字库来显示汉字 <br><v:shape id="_x0000_i1028" style="width: 8.25pt; height: 8.25pt;" type="#_x0000_t75" alt=""></v:shape>auto-big5</span></span>，系统自动识别<span lang="EN-US">GB2312</span>和<span lang="EN-US">BIG<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="5" unitname="码">5<span lang="EN-US"><span lang="EN-US">码</span></span></st1:chmetcnv><span lang="EN-US">，并使用繁体字库来显示汉字 <br></span></span>注意：内码自动识别功能仅适用于<span lang="EN-US">GB2312</span>和<span lang="EN-US">BIG5</span>之间的自动转换和识别。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">多点阵字体支持</span><span style="font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">与其它的控制台中文平台一样，<span lang="EN-US">zhcon</span>使用点阵字体显示汉字。目前，<span lang="EN-US">zhcon</span>使用一种在标准的<span lang="EN-US">Linux PSF</span>字体格式的基础上扩展了的<span lang="EN-US">BPSF</span>格式来存放字库。对该格式的详细描述可参阅<span lang="EN-US"><a href="http://hepg.sdu.edu.cn/doc/bpsf.txt">doc/bpsf.txt</a></span>。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">当前版本的<span lang="EN-US">zhcon</span>支持<span lang="EN-US">12</span>、<span lang="EN-US">14</span>、<span lang="EN-US">16</span>、<span lang="EN-US">24</span>等多种点阵字体。在分辩率较低的情况下（<span lang="EN-US">640X480</span>）可以考虑使用<span lang="EN-US">12</span>点阵字体来显示汉字；在高分辩率的情况下（大于<span lang="EN-US">1024X768</span>）则可以使用<span lang="EN-US">24</span>点阵字体来优化显示效果。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">所有字体文件都存放在<span lang="EN-US">$prefix/lib/zhcon/font/</span>目录下。可以通过修改配置文件<span lang="EN-US">zhcon.conf</span>或<span lang="EN-US">.zhconrc</span>中的<span lang="EN-US">ascfont </span>和<span lang="EN-US">(gbkfont,big5font,jisfont,kscmfont )</span>来选择不同的字体。<span lang="EN-US"><br></span>将使用<span lang="EN-US">16</span>点阵字体。<span lang="EN-US"><br>ascfont = font/asc16.bpsf<br>gbfont = font/gb-16.bpsf<br>gbkfont = font/gbk-16.bpsf<br>big5font = font/big5-16.bpsf<br>jisfont = font/jis-16.bpsf<br>kscmfont = font/kscm-16.bpsf<o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">将使用<span lang="EN-US">12</span>点阵字体显示简体汉字。<span lang="EN-US"><br>ascfont = font/asc12.bpsf<br>gbfont = font/hzk12.bpsf<o:p></o:p></span></span></p>
<span style="color: black; font-family: 宋体;">将使用<span lang="EN-US">24</span>点阵楷体字显示简体汉字。<span lang="EN-US"><br>ascfont = font/asc24.bpsf<br>gbfont = font/gb-24-kai.bpsf<br></span></span>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">中文输入</span><span style="font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">zhcon</span><span style="color: black; font-family: 宋体;">支持两种输入风格：光标跟随方式和底部状态行方式，可以随时用<span lang="EN-US">CTRL-F7</span>在这两种方式间切换。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">光标跟随是指外码窗和候选窗始终在输入光标附近出现并自动跟随光标移动，使用户在中文输入时具有良好的视觉效果。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">底部状态行方式是传统的字符型汉字系统的输入风格，加上了<span lang="EN-US">tips</span>的显示，多了一点现代气息。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">使用<span lang="EN-US">Ctrl+.</span>（句号）键切换中英文标点状态。使用<span lang="EN-US">CTRL+,</span>（逗号）键切换全角<span lang="EN-US">/</span>半角状态。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: black; font-family: 宋体;">系统运行时可随时使用<span lang="EN-US">CTRL-ALT-H</span>键来激活帮助窗口查看热键定义。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">配置文件</span><span style="font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">系统启动时先在用户的<span lang="EN-US">home</span>目录中寻找<span lang="EN-US">.zhconrc</span>文件，如果没有就使用<span lang="EN-US">$prefix/lib/zhcon/zhcon.conf</span>中的设置。<span lang="EN-US"> <o:p></o:p></span></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: black; font-family: 宋体;">您可以通过定制<span lang="EN-US">zhcon.conf/.zhconrc</span>中的内容来个性化<span lang="EN-US">zhcon</span>。具体的定制信息请见该文件中的注释。<span lang="EN-US"><o:p></o:p></span></span></p>






<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">热键一览</span><span style="color: black; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">下表列出了当前系统中可用的热键<span lang="EN-US">: <o:p></o:p></span></span></p>



<table class="MsoNormalTable" style="border: 1pt outset black; width: 482.25pt;" border="1" cellpadding="0" width="643">
<tbody><tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">按键<span lang="EN-US"><o:p></o:p></span></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">功能<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL-SPACE<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">打开<span lang="EN-US">/</span>关闭输入法<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">ALT -SPACE<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">打开<span lang="EN-US">/</span>关闭<span lang="EN-US">CJK</span>方式<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_F1<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">使用中文<span lang="EN-US">GB2312</span>编码<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_F2<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">使用中文<span lang="EN-US">GBK</span>编码<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_F3<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">使用中文<span lang="EN-US">BIG5</span>编码<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_F4<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">使用日文<span lang="EN-US">JIS</span>编码<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_F5<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">使用韩文<span lang="EN-US">KSCM</span>编码<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_F7<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">切换输入风格<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_F9<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">切换到自动识别编码方式<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_F10<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">系统菜单<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_ALT_H<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">帮助窗口<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_ALT_0<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">进入提示状态<span lang="EN-US"><o:p></o:p></span></span></p></td></tr>
<tr>
<td style="border: 1pt inset black; padding: 2.25pt; width: 172.5pt; background-color: transparent;" width="230">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;" lang="EN-US">CTRL_ALT_1 - CTRL_ALT_9<o:p></o:p></span></p></td>
<td style="border: 1pt inset black; padding: 2.25pt; width: 291.75pt; background-color: transparent;" width="389">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;">选择输入法</span></p></td></tr></tbody>
</table>
<img src ="http://www.cnitblog.com/ygb/aggbug/5744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-24 17:37 <a href="http://www.cnitblog.com/ygb/articles/5744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从源码编译安装软件经验+技巧</title><link>http://www.cnitblog.com/ygb/articles/5473.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Fri, 16 Dec 2005 11:20:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5473.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5473.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5473.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5473.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5473.html</trackback:ping><description><![CDATA[<P>从源码编译安装东东，不是很容易，想想在使用lfs之前，源码编译安装软件从来没<BR>成功过，甚至出现错误都无从下手，只能放弃 :( <BR>经过lfs的洗礼，总算对源码编译安装有了一点认识，可惜当初没有把这些经验写下来 :(<BR>不过现在开始写也不迟 :)&nbsp; 将编译中遇到的问题及解决的方法记下来，积累经验，<BR>也可以让来往的newbie对源码安装软件了解一些，多一些成功机率，毕竟从源码包编译<BR>东东还是有一定好处的 ^_^<BR>先说一下源码编译的<STRONG>基本方法</STRONG>及源码编译过程中几个重要的文件，以及重要变量<BR><STRONG>PKG_CONFIG_PATH </STRONG>的设定，经常在论坛看到有人源码编译失败，都是这个东东搞的鬼 ^_^ <BR><BR><STRONG>ChangeLog</STRONG> :<BR>05/02/06 :编译dosbox make时出现找不到头文件错误，类似的错误曾经碰到过.记录。:)<BR>LD_LIBRARY_PATH的作用。<BR>
<BLOCKQUOTE>从源码编译安装东东，不是很容易，想想在使用lfs之前，源码编译安装软件从来没<BR>成功过，甚至出现错误都无从下手，只能放弃 :( <BR>经过lfs的洗礼，总算对源码编译安装有了一点认识，可惜当初没有把这些经验写下来 :(<BR>不过现在开始写也不迟 :)&nbsp; 将编译中遇到的问题及解决的方法记下来，积累经验，<BR>也可以让来往的newbie对源码安装软件了解一些，多一些成功机率，毕竟从源码包编译<BR>东东还是有一定好处的 ^_^<BR>先说一下源码编译的<STRONG>基本方法</STRONG>及源码编译过程中几个重要的文件，以及重要变量<BR><STRONG>PKG_CONFIG_PATH </STRONG>的设定，经常在论坛看到有人源码编译失败，都是这个东东搞的鬼 ^_^ <BR><BR></BLOCKQUOTE><PRE><STRONG>如何从源码包安装软件？</STRONG></PRE><PRE><STRONG>从源码包安装软件最重要的就是仔细阅读README INSTALL等说明文件</STRONG></PRE>它会告诉你怎样才能成功安装&nbsp; :) <BR>通常从源码包安装软件的步骤是：<BR><STRONG>tar jxvf gtk+-2.4.13.tar.bz2</STRONG>&nbsp; 解开源码包 <BR><STRONG>cd gtk+-2.4.13/</STRONG> 进入源码目录<BR><STRONG>./configure&nbsp; </STRONG>似乎在某些环境下./configure会造成终端退出<BR>而使用<STRONG>. configure</STRONG>则会正常运行,如果有这个现象，就试试 <STRONG>. configure<BR><BR></STRONG>通过configure程序猜测主机信息，最终建立Makefile,以完成make，所以如果./configure不成功<BR>而去make的话,就会出现<STRONG>"make: *** No targets specified and no makefile found. Stop."</STRONG><BR><STRONG>make</STRONG> 当./configure成功结束后，就开始正式编译程序了.<BR><STRONG>make install&nbsp;</STRONG> 编译成功后使用make install安装 <BR><STRONG>make uninstall </STRONG>某些软件支持卸载<STRONG>，</STRONG>可能使用该方法卸载，如果支持的话，通常会在README中写到(似乎比较少)<BR><BR>configure程序带有很多参数，可以通过 ./configure <STRONG>--help</STRONG> 查看详细内容,通常位于前面的是常规configure的<BR>参数说明，末尾是该程序的可用参数说明。 <BR>./configure <STRONG>--prefix=/usr</STRONG> 指定安装目录，通常从源码包编译安装的软件默认会放在<STRONG>/usr/local</STRONG>下<BR>因为这是<STRONG>FHS(Filesystem Hierarchy Standard)</STRONG>的规定，不知道什么是FHS？看看这篇文章吧：<BR><STRONG><A href="http://www.pathname.com/fhs/pub/fhs-2.3.html">http://www.pathname.com/fhs/pub/fhs-2.3.html</A></STRONG> 相信它会让你对linux系统结构有更好的理解，很值得读读。<BR><BR>再说一下几个关系到能否成功编译的东东：<STRONG>/etc/ld.so.conf&nbsp; ldconfig &nbsp; PKG_CONFIG_PATH </STRONG><BR><PRE><STRONG>首先说下/etc/ld.so.conf: </STRONG></PRE>这个文件记录了编译时使用的动态链接库的路径。<BR>默认情况下，编译器只会使用/lib和/usr/lib这两个目录下的库文件<BR>如果你安装了某些库，比如在安装gtk+-2.4.13时它会需要glib-2.0 &gt;= 2.4.0,辛苦的安装好glib后<BR>没有指定 --prefix=/usr&nbsp; 这样glib库就装到了/usr/local下，而又没有在/etc/ld.so.conf中添加/usr/local/lib<BR>这个搜索路径，所以编译gtk+-2.4.13就会出错了 :( <BR><STRONG>对于这种情况有两种方法解决：</STRONG><BR>一：在编译glib-2.4.x时，指定安装到/usr下，这样库文件就会放在/usr/lib中，gtk就不会找不到需要的库文件了 :) <BR>对于安装库文件来说，这是个好办法，这样也不用设置<STRONG>PKG_CONFIG_PATH</STRONG>了 (稍后说明)<BR><BR>二：将/usr/local/lib加入到/etc/ld.so.conf中，这样安装gtk时就会去搜索/usr/local/lib,同样可以找到需要的库 :) <BR>将/usr/local/lib加入到/etc/ld.so.conf也是必须的，这样以后安装东东到local下，就不会出现这样的问题了。<BR><STRONG>将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择 ^_^ </STRONG><BR>添加方法也极其简单，将库文件的绝对路径直接写进去就OK了，一行一个。例如：<BR><STRONG>/usr/X11R6/lib<BR>/usr/local/lib<BR>/opt/lib</STRONG><BR><BR><PRE><STRONG>再来看看ldconfig是个什么东东吧 ：</STRONG></PRE>它是一个程序，通常它位于/sbin下，是root用户使用的东东。具体作用及用法可以<STRONG>man ldconfig</STRONG>查到<BR>简单的说，它的作用<STRONG>就是将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用</STRONG><BR>因此当安装完一些库文件，(例如刚安装好glib)，或者修改ld.so.conf增加新的库路径后，需要运行一下/sbin/ldconfig<BR>使所有的库文件都被缓存到ld.so.cache中，如果没做，<STRONG>即使库文件明明就在/usr/lib下的，也是不会被使用的</STRONG>，结果<BR>编译过程中抱错，缺少xxx库，去查看发现明明就在那放着，搞的想大骂computer蠢猪一个。 ^_^ <BR>我曾经编译KDE时就犯过这个错误，(它需要每编译好一个东东，都要运行一遍)，所以<STRONG><BR></STRONG><PRE><STRONG>切记改动库文件后一定要运行一下ldconfig，在任何目录下运行都可以。</STRONG></PRE><BR><PRE><STRONG>再来说说 PKG_CONFIG_PATH这个变量吧:</STRONG></PRE>经常在论坛上看到有人问"<STRONG>为什么我已经安装了glib-2.4.x，但是编译gtk+-2.4.x 还是提示glib版本太低阿？<BR>为什么我安装了glib-2.4.x，还是提示找不到阿？。。。。。。</STRONG>"都是这个变量搞的鬼。<BR>先来看一个编译过程中出现的错误 (编译gtk+-2.4.13):<BR><BR>checking for pkg-config... <STRONG>/usr/bin/pkg-config</STRONG><BR>checking for glib-2.0 &gt;= 2.4.0&nbsp;&nbsp;&nbsp; atk &gt;= 1.0.1&nbsp;&nbsp;&nbsp; pango &gt;= 1.4.0... <STRONG>Package glib-2.0 was not found in the pkg-config search path.</STRONG><BR><STRONG>Perhaps you should add the directory containing `glib-2.0.pc'<BR>to the PKG_CONFIG_PATH environment variable<BR>No package 'glib-2.0' found</STRONG><BR><BR>configure: error: Library requirements (glib-2.0 &gt;= 2.4.0&nbsp;&nbsp;&nbsp; atk &gt;= 1.0.1&nbsp;&nbsp;&nbsp; pango &gt;= 1.4.0) not met;<STRONG> consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.</STRONG><BR>[root@NEWLFS gtk+-2.4.13]#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>很明显，上面这段说明，<STRONG>没有找到glib-2.4.x,并且提示应该将glib-2.0.pc加入到PKG_CONFIG_PATH下。</STRONG><BR>究竟这个<STRONG>pkg-config PKG_CONFIG_PATH glib-2.0.pc </STRONG>是做什么的呢？ let me tell you ^_^ <BR>先说说它是哪冒出来的，当安装了<STRONG>pkgconfig-x.x.x</STRONG>这个包后，就多出了<STRONG>pkg-config</STRONG>，它就是需要<STRONG>PKG_CONFIG_PATH</STRONG>的东东<BR>pkgconfig-x.x.x又是做什么的？ 来看一段说明： <BR><BR>The pkgconfig package contains tools for <STRONG>passing the include path and/or library paths to build tools during the make file execution.</STRONG><BR><BR><STRONG>pkg-config</STRONG> <STRONG>is a function that returns meta information for the specified library.</STRONG><BR>
<P>The default setting for PKG_CONFIG_PATH is /usr/lib/pkgconfig because of the prefix we use to install pkgconfig. You may add to PKG_CONFIG_PATH by exporting additional paths on your system where pkgconfig files are installed. Note that PKG_CONFIG_PATH <STRONG>is only needed when compiling packages, not during run-time.</STRONG><BR></P>
<P>我想看过这段说明后，你已经大概了解了它是做什么的吧。<BR>其实pkg-config就是向configure程序提供系统信息的程序，比如<STRONG>软件的版本啦，库的版本啦，库的路径啦</STRONG>，等等<BR>这些信息只是在<STRONG>编译其间使用</STRONG>。你可以<STRONG> ls /usr/lib/pkgconfig </STRONG>下，会看到许多的*.pc,用文本编辑器打开<BR>会发现类似下面的信息：</P>
<P><STRONG>prefix=/usr<BR>exec_prefix=${prefix}<BR>libdir=${exec_prefix}/lib<BR>includedir=${prefix}/include<BR><BR>glib_genmarshal=glib-genmarshal<BR>gobject_query=gobject-query<BR>glib_mkenums=glib-mkenums<BR><BR>Name: GLib<BR>Description: C Utility Library<BR>Version: 2.4.7<BR>Libs: -L${libdir} -lglib-2.0<BR>Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include<BR><BR></STRONG>明白了吧，configure就是靠这些信息判断你的软件版本是否符合要求。并且得到这些东东所在的位置，要不去哪里找呀。<BR>不用我说你也知道为什么会出现上面那些问题了吧。</P>
<P>解决的办法很简单，<STRONG>设定正确的PKG_CONFIG_PATH</STRONG>，假如将glib-2.x.x装到了/usr/local/下，那么glib-2.0.pc就会在<BR><STRONG>/usr/local/lib/pkgconfig</STRONG>下，将这个路径添加到<STRONG>PKG_CONFIG_PATH</STRONG>下就可以啦。<STRONG>并且确保configure找到的是正确的<BR>glib-2.0.pc</STRONG>,就是将其他的lib/pkgconfig目录glib-2.0.pc干掉就是啦。(如果有的话 ^-^)<BR>设定好后可以加入到<STRONG>~/.bashrc</STRONG>中，例如：<STRONG><BR>PKG_CONFIG_PATH=/opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:<BR>/usr/X11R6/lib/pkgconfig</STRONG><BR>[root@NEWLFS ~]#echo $PKG_CONFIG_PATH<BR>/opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:/usr/X11R6/lib/pkgconfig<BR></P>
<P>从上面可以看出，<STRONG>安装库文件时，指定安装到/usr，是很有好处的，无论是/etc/ld.so.conf还是PKG_CONFIG_PATH<BR>默认都会去搜索/usr/lib的</STRONG>，可以省下许多麻烦，不过从源码包管理上来说，都装在/usr下<BR>管理是个问题，不如装在/usr/local下方便管理<BR><STRONG>其实只要设置好ld.so.conf，PKG_CONFIG_PATH</STRONG>路径后<STRONG>，</STRONG>就OK啦 ^_^ <BR></P>
<P><STRONG>另外某些软件因为版本原因(比如emacs-21.3)，在gcc-3.4.x下编译无法成功,(make 出错)<BR>使用低版本的gcc就可能编译通过。</STRONG><BR>可能是因为gcc-3.3.x和gcc-3.4.x变化很大的缘故吧。 <BR></P>
<P>暂时想到了这么多，先记下这些吧，如果你对源码包编译有了一点的了解，就不枉我打了这么半天字啦。 ^_^&nbsp;<BR></P>
<P>另外./configure 通过，make 出错，遇到这样的问题比较难办，只能凭经验查找原因，比如某个头文件没有找到，<BR>这时候要顺着出错的位置一行的一行往上找错，比如显示<STRONG>xxxx.h&nbsp; no such file or directory</STRONG> 说明缺少头文件<BR>然后去google搜。<BR>或者找到感觉有价值的错误信息，拿到google去搜，往往会找到解决的办法。还是开始的那句话，要仔细看README,INSTALL <BR>程序如何安装，需要什么依赖文件，等等。</P>
<P>另外对于newbie来说，编译时，往往不知道是否成功编译通过，而编译没有通过就去make install<BR>必然会出错，增加了解决问题的复杂性，可以通过下面方法检查是否编译成功：</P>
<P><STRONG>一：编译完成后，输入echo $? 如果返回结果为0,则表示正常结束，否则就出错了 :( </STRONG><BR>echo $? 表示 检查上一条命令的退出状态，程序正常退出 返回0,错误退出返回非0。</P>二：编译时，可以用<STRONG>&amp;&amp;</STRONG>连接命令， <STRONG>&amp;&amp;</STRONG> 表示"当前一条命令正常结束，后面的命令才会执行"，就是"与"啦。<BR>这个办法很好，即节省时间，又可防止出错。例：<BR><STRONG>./configure --prefix=/usr &amp;&amp; make &amp;&amp; make install<BR><BR></STRONG><PRE><STRONG>ChangLog :</STRONG></PRE><PRE><STRONG></PRE><STRONG><STRONG>05/02/06 :<BR><BR><U>编译DOSBOX时出现"cdrom.h:20:23: SD</U><STRONG><U>L_sound.h: No such file or directory"</U><BR><BR></STRONG>今天忽然想回味下经典DOS游戏，于是编译这个DOSBOX模拟器，README中说明需要SDL_SOUND<STRONG><BR>于是下载，安装，很顺利，没有指</STRONG>定安装<STRONG>路径，于是默认的安装到了/usr/local/<BR>当编译DOSBOX make 时，出现如下错误：<BR></STRONG>if g++ -DHAVE_CONFIG_H -I. -I. -I../..&nbsp; -I../../include -I/usr/include/SDL -D_REENTRANT&nbsp; -march=pentium4 -O3 -pipe -fomit-frame-pointer -MT dos_programs.o -MD -MP -MF ".deps/dos_programs.Tpo" -c -o dos_programs.o dos_programs.cpp; \<BR>then mv -f ".deps/dos_programs.Tpo" ".deps/dos_programs.Po"; else rm -f ".deps/dos_programs.Tpo"; exit 1; fi<BR>In file included from dos_programs.cpp:30:<BR><U>cdrom.h:20:23: SDL_sound.h: No such file or directory&nbsp; &lt;------错误的原因在这里</U><BR>In file included from dos_programs.cpp:30:<BR>cdrom.h:137: error: ISO C++ forbids declaration of `Sound_Sample' with no type<BR>cdrom.h:137: error: expected `;' before '*' token<BR>make[3]: *** [dos_programs.o] Error 1<BR>make[3]: Leaving directory `/root/software/dosbox-0.63/src/dos'<BR>make[2]: *** [all-recursive]&nbsp; Error 1<BR>make[2]: Leaving directory `/root/software/dosbox-0.63/src'<BR>make[1]: *** [all-recursive] Error 1<BR>make[1]: Leaving directory `/root/software/dosbox-0.63'<BR>make: *** [all] Error 2<BR>[root@NEWLFS dosbox-0.63]#<BR>看来是因为cdrom.h没有找到SDL_sound.h这个头文件<BR>所以出现了下面的错误，但是我明明已经安装好了SDL_sound阿？<BR>经过查找，在/usr/local/include/SDL/下找到了SDL_sound.h<BR>看来dosbox没有去搜寻/usr/local/include/SDL下的头文件，既然找到了原因，就容易解决啦<BR></STRONG><STRONG><BR><U>[root@NEWLFS dosbox-0.63]#ln -s /usr/local/include/SDL/SDL_sound.h /usr/include</U><BR><BR>做个链接到/usr/include下，这样DOSBOX就可以找到了，顺利编译成功，回味仙剑ing....^_^<BR>曾经编译Xorg-6.8.1的时候，也出现找不到freetype.h的问题，原因也是如此。<BR>编译安装软件时，经常遇到类似的情况，都是因为找不到需要的头文件而出现错误，也许是因为<BR>没有安装相关的头文件，或者是安装了但没有找到，如上例。<BR>找不到的情况：做个链接到/usr/include下，就可以了。<BR>没安装的情况：去google找什么东东包括该头文件，安装上就应该可以了。<BR>通常错误提示也都是"No such file or directory"，所以编译失败时要好好找找错误信息哦。 <BR>错误信息总是在Error上面不远的，耐心点 ^_^<BR>&nbsp;<BR>不修改/etc/ld.so.conf使用非默认路径下的库文件-----LD_LIBRARY_PATH<BR></STRONG><BR><U><STRONG>环境变量LD_LIBRARY_PATH列出了查找共享库时除了默认路径之外的其他路径。</STRONG></U><BR><STRONG>如果不想修改或无法修改(无root权限)/etc/ld.so.conf而使用其他路径下的库文件<BR>就需要设置LD_LIBRARY_PATH了，例：export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/lib<BR>这样就可以使用/opt/lib下的库文件啦。当然还是修改/etc/ld.so.conf方便。</STRONG></STRONG></STRONG><img src ="http://www.cnitblog.com/ygb/aggbug/5473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-16 19:20 <a href="http://www.cnitblog.com/ygb/articles/5473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下常用压缩格式的压缩与解压方法</title><link>http://www.cnitblog.com/ygb/articles/5375.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Wed, 14 Dec 2005 05:08:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5375.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5375.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5375.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5375.html</trackback:ping><description><![CDATA[<DIV>整理：会游泳的鱼 <BR>来自：www.LinuxByte.net <BR>最后更新时间：2004-10-20 <BR><BR>.tar <BR>解包：&nbsp;tar&nbsp;xvf&nbsp;FileName.tar <BR>打包：tar&nbsp;cvf&nbsp;FileName.tar&nbsp;DirName <BR>（注：tar是打包，不是压缩！） <BR>--------------------------------------------- <BR>.gz <BR>解压1：gunzip&nbsp;FileName.gz <BR>解压2：gzip&nbsp;-d&nbsp;FileName.gz <BR>压缩：gzip&nbsp;FileName <BR>.tar.gz&nbsp;和&nbsp;.tgz <BR>解压：tar&nbsp;zxvf&nbsp;FileName.tar.gz <BR>压缩：tar&nbsp;zcvf&nbsp;FileName.tar.gz&nbsp;DirName <BR>--------------------------------------------- <BR>.bz2 <BR>解压1：bzip2&nbsp;-d&nbsp;FileName.bz2 <BR>解压2：bunzip2&nbsp;FileName.bz2 <BR>压缩：&nbsp;bzip2&nbsp;-z&nbsp;FileName <BR>.tar.bz2 <BR>解压：tar&nbsp;jxvf&nbsp;FileName.tar.bz2 <BR>压缩：tar&nbsp;jcvf&nbsp;FileName.tar.bz2&nbsp;DirName <BR>--------------------------------------------- <BR>.bz <BR>解压1：bzip2&nbsp;-d&nbsp;FileName.bz <BR>解压2：bunzip2&nbsp;FileName.bz <BR>压缩：未知 <BR>.tar.bz <BR>解压：tar&nbsp;jxvf&nbsp;FileName.tar.bz <BR>压缩：未知 <BR>--------------------------------------------- <BR>.Z <BR>解压：uncompress&nbsp;FileName.Z <BR>压缩：compress&nbsp;FileName <BR>.tar.Z <BR>解压：tar&nbsp;Zxvf&nbsp;FileName.tar.Z <BR>压缩：tar&nbsp;Zcvf&nbsp;FileName.tar.Z&nbsp;DirName <BR>--------------------------------------------- <BR>.zip <BR>解压：unzip&nbsp;FileName.zip <BR>压缩：zip&nbsp;FileName.zip&nbsp;DirName <BR>--------------------------------------------- <BR>.rar <BR>解压：rar&nbsp;a&nbsp;FileName.rar <BR>压缩：r&nbsp;ar&nbsp;e&nbsp;FileName.rar <BR><BR><BR>rar请到：<A href="http://www.rarsoft.com/download.htm" target=_blank><U><FONT color=#0000ff>http://www.rarsoft.com/download.htm</FONT></U></A>&nbsp;下载！ <BR>解压后请将rar_static拷贝到/usr/bin目录（其他由$PATH环境变量指定的目录也可以）： <BR>[root@www2&nbsp;tmp]#&nbsp;cp&nbsp;rar_static&nbsp;/usr/bin/rar <BR>--------------------------------------------- <BR>.lha <BR>解压：lha&nbsp;-e&nbsp;FileName.lha <BR>压缩：lha&nbsp;-a&nbsp;FileName.lha&nbsp;FileName <BR><BR>lha请到：<A href="http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/" target=_blank><U><FONT color=#0000ff>http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/</FONT></U></A>下载！ <BR>&gt;解压后请将lha拷贝到/usr/bin目录（其他由$PATH环境变量指定的目录也可以）： <BR>[root@www2&nbsp;tmp]#&nbsp;cp&nbsp;lha&nbsp;/usr/bin/ <BR>--------------------------------------------- <BR>.rpm <BR>解包：rpm2cpio&nbsp;FileName.rpm&nbsp;|&nbsp;cpio&nbsp;-div <BR>--------------------------------------------- <BR>.deb <BR>解包：ar&nbsp;p&nbsp;FileName.deb&nbsp;data.tar.gz&nbsp;|&nbsp;tar&nbsp;zxf&nbsp;- <BR>--------------------------------------------- <BR>.tar&nbsp;.tgz&nbsp;.tar.gz&nbsp;.tar.Z&nbsp;.tar.bz&nbsp;.tar.bz2&nbsp;.zip&nbsp;.cpio&nbsp;.rpm&nbsp;.deb&nbsp;.slp&nbsp;.arj&nbsp;.rar&nbsp;.ace&nbsp;.lha&nbsp;.lzh&nbsp;.lzx&nbsp;.lzs&nbsp;.arc&nbsp;.sda&nbsp;.sfx&nbsp;.lnx&nbsp;.zoo&nbsp;.cab&nbsp;.kar&nbsp;.cpt&nbsp;.pit&nbsp;.sit&nbsp;.sea <BR>解压：sEx&nbsp;x&nbsp;FileName.* <BR>压缩：sEx&nbsp;a&nbsp;FileName.*&nbsp;FileName <BR><BR>sEx只是调用相关程序，本身并无压缩、解压功能，请注意！ <BR>sEx请到：&nbsp;<A href="http://sourceforge.net/projects/sex" target=_blank><U><FONT color=#0000ff>http://sourceforge.net/projects/sex</FONT></U></A>&nbsp;下载！ <BR>解压后请将sEx拷贝到/usr/bin目录（其他由$PATH环境变量指定的目录也可以）： <BR>[root@www2&nbsp;tmp]#&nbsp;cp&nbsp;sEx&nbsp;/usr/bin/ <BR><BR><BR>参考文献：Linux&nbsp;文件压缩工具指南 <BR>（其实看帮助是最好的方法，一般各个命令都可以用“--help”参数得到常用使用方法！） <BR><BR>来源： <BR><A href="http://www.linuxbyte.net/view.php?skin=art&amp;ID=3576" target=_blank><U><FONT color=#0000ff>http://www.linuxbyte.net/view.php?skin=art&amp;ID=3576</FONT></U></A>&nbsp; </DIV><img src ="http://www.cnitblog.com/ygb/aggbug/5375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-14 13:08 <a href="http://www.cnitblog.com/ygb/articles/5375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux一句话精彩问答</title><link>http://www.cnitblog.com/ygb/articles/5374.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Wed, 14 Dec 2005 05:06:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5374.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5374.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5374.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5374.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 04年11月9号版本及pdf版本下载 http://www.linuxhero.com/linuxdocs_20041109.pdf&nbsp; 编者按：鉴于目前中国Linux的发展现状，90%以上的问题都可以用一句话来回答，这便是&nbsp; 本文的初衷。欢迎大家添加自己的“一句话”，收录后注明原始提供者。更详细的文档，&nbsp; 请浏览本版精华区或http://www.linuxhero.c...&nbsp;&nbsp;<a href='http://www.cnitblog.com/ygb/articles/5374.html'>阅读全文</a><img src ="http://www.cnitblog.com/ygb/aggbug/5374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-14 13:06 <a href="http://www.cnitblog.com/ygb/articles/5374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下软件的安装与卸载</title><link>http://www.cnitblog.com/ygb/articles/5373.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Wed, 14 Dec 2005 05:04:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5373.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5373.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5373.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5373.html</trackback:ping><description><![CDATA[<DIV>在Windows下安装软件时，只需运行软件的安装程序（setup、install等）或者用zip等解压缩软件解开即可安装，运行反安装程序（uninstall、unware、“卸载”等）就能将软件清除干净，完全图形化的操作界面，简单到只要用鼠标一直点击“下一步”就可以了。而Linux好象就不一样了，很多的初学者都抱怨在Linux下安装和卸载软件非常地困难，没有像使用Windows时那么直观。其实在Linux下安装和卸载软件也非常简单，同样也有安装向导或解压安装的方式，不相同的只不过是除了二进制形式的软件分发外，还有许许多多以源代码形式分发的软件包，下面就来详细地讲一讲这些软件的安装与卸载：</DIV>
<DIV>一、二进制分发软件包的安装与卸载<BR>Linux软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式，其优点是安装使用容易，缺点则是缺乏灵活性，如果该软件包是为特定的硬件/操作系统平台编译的，那它就不能在另外的平台或环境下正确执行。<BR>1、*.rpm形式的二进制软件包<BR>安装：rpm -ivh *.rpm<BR>卸载：rpm -e packgename<BR>说明：RPM（RedHat Packge Manager）是RedHat公司出的软件包管理器，使用它可以很容易地对rpm形式的软件包进行安装、升级、卸载、验证、查询等操作，安装简单，而卸载时也可以将软件安装在多处目录中的文件删除干净，因此推荐初学者尽可能使用rpm形式的软件包。rpm的参数中-i是安装，-v是校验，-h是用散列符显示安装进度，*.rpm是软件包的文件名（这里的*.rpm特指*.src.rpm以外的以rpm为后缀的文件）；参数-e是删除软件包，packgename是软件包名，与软件包的文件名有所区别，它往往是文件名中位于版本号前面的字符串，例如apache-3.1.12-i386.rpm和apache-devel-3.1.12-i386.rpm是软件包文件名，它们的软件包名称分别是apache和apache-devel。更多的rpm参数请自行参看手册页：man rpm。<BR>如果你不喜欢在字符界面下安装或卸载这些软件包，完全可以在X-Window下使用图形界面的软件包管理程序，如glint、xrpm这样的图形接口，或者是KDE的kpackge等，这样对软件包的安装、升级、卸载、验证和查询就可以通过点击鼠标来轻松完成。<BR>2、*.tar.gz/*.tgz、*.bz2形式的二进制软件包<BR>安装：tar zxvf *.tar.gz 或 tar yxvf *.bz2<BR>卸载：手动删除<BR>说明：*.tar.gz/*.bz2形式的二进制软件包是用tar工具来打包、用gzip/bzip2压缩的，安装时直接解包即可。对于解压后只有单一目录的软件，卸载时用命令“rm -rf 软件目录名”；如果解压后文件分散在多处目录中，则必须一一手动删除（稍麻烦），想知道解压时向系统中安装了哪些文件，可以用命令“tar ztvf *.tar.gz”/“tar ytvf *.bz2”获取清单。tar的参数z是调用gzip解压，x是解包，v是校验，f是显示结果，y是调用bzip2解压，t是列出包的文件清单。更多的参数请参看手册页：man tar。<BR>如果你更喜欢图形界面的操作，可以在X-Window下使用KDE的ArK压缩档案管理工具。<BR>3、提供安装程序的软件包<BR>这类软件包已经提供了安装脚本或二进制的安装向导程序（setup、install、install.sh等），只需运行它就可以完成软件的安装；而卸载时也相应地提供了反安装的脚本或程序。例如SUN公司的StarOffice办公软件套件就使用名为setup的安装程序，而且在软件安装后提供反安装的功能，目前这种类型的软件包还比较少，因其安装与卸载的方式与Windows软件一样，所以就无需多讲了。</DIV>
<DIV>二、源代码分发软件包的安装与卸载<BR>Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式，需要用户自己编译成可执行的二进制代码并进行安装，其优点是配置灵活，可以随意去掉或保留某些功能/模块，适应多种硬件/操作系统平台及编译环境，缺点是难度较大，一般不适合初学者使用。<BR>1、*.src.rpm形式的源代码软件包<BR>安装：rpm -rebuild *.src.rpm<BR>cd /usr/src/dist/RPMS<BR>rpm -ivh *.rpm<BR>卸载：rpm -e packgename<BR>说明：rpm --rebuild *.src.rpm命令将源代码编译并在/usr/src/dist/RPMS下生成二进制的rpm包，然后再安装该二进制包即可。packgename如前所述。<BR>2、*.tar.gz/*.tgz、*.bz2形式的源代码软件包<BR>安装：tar zxvf *.tar.gz 或 tar yxvf *.bz2 先解压<BR>然后进入解压后的目录：<BR>./configure 配置<BR>make 编译<BR>make install 安装<BR>卸载：make uninstall 或 手动删除<BR>说明：建议解压后先阅读说明文件，可以了解安装有哪些需求，有必要时还需改动编译配置。有些软件包的源代码在编译安装后可以用make install命令来进行卸载，如果不提供此功能，则软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中，往往很难把它删除干净，那你应该在编译前进行配置，指定软件将要安装到目标路径：./configure --prefix=目录名，这样可以使用“rm -rf 软件目录名”命令来进行干净彻底的卸载。与其它安装方式相比，需要用户自己编译安装是最难的，它适合于使用Linux已有一定经验的人，一般不推荐初学者使用。</DIV>
<DIV>关于Linux下软件的安装与卸载lanche已经讲了这么多，但可能还会有人问怎么知道一个tar.gz/bz2包是二进制文件包呢还是源代码包？如果你用过压缩工具就会明白，压缩包未必就是软件，它也可能是备份的许多图片，也可能是打包在一起的普通资料，要分辨它到底是什么最好的办法就是查看包里的文件清单，使用命令tar ztvf *.tar.gz / tar ytvf *.bz2或者在X-Window下使用图形化的ArK压缩档案管理工具都可以，源代码包里的文件往往会含有种种源代码文件，头文件*.h、c代码源文件*.c、C++代码源文件*.cc/*.cpp等；而二进制包里的文件则会有可执行文件（与软件同名的往往是主执行文件），标志是其所在路径含有名为bin的目录（仅有少数例外）。原来这么简单呀，还不快点自己试试！<BR>在windows下安装软件大家都觉得很容易，只要双击setup或是install的图标，然后跟着向导一步一步的按提示做就可以了，但是在linux下安装软件就不像windows下那样容易了，有时你找到的是没有编译过的软件源码，那就更加的麻烦了，这里就介绍一下如何安装linux的软件啦！<BR>linux下的软件一般都是经过压缩的，主要的格式有这几种：rpm、tar、tar.gz、tgz等。所以首先拿到软件后第一件事就是解压缩。<BR>一、在xwindow下以rpm格式的软件安装比较容易，只要在把鼠标移到文件上单击右键，在弹出的菜单里会有专门的三项（只有在右键单击rpm文件才会出现）show info，upgrade和install，这三项的意思大家都很清楚了，我就不多说了。rpm格式说了，接着就是tar，tar.gz，tgz等，在xwindow下双击这些格式的文件就会自动解压缩的，是解压缩而不是像rpm那样有install选项的，install文件会在你解压缩后才出现，不过这里我要先说一下，在你双击install前建议先好好看一下readme，因为你所要安装这些软件可能是没有编译的，所以看一下会比较好。<BR>二、说完了xwindow下的安装和解压缩，接着说在文本模式下如何解压缩和安装，还有编译源码了。首先说rpm的，以root身份登陆后（用其他的身份登陆也可以但有些软件就不能被安装）键入rpm －i你所要解压缩的文件＋扩展名（当然是rpm）也不是很难吧，这里我要说的是“－i”意思是install，如果你想要卸载或是要执行其他的指令就打rpm －－help，看电脑给你的提示吧，为了照顾那些E文不太好的人我这里就写几个常用的参数：－e：卸载相关的应用程序，－U（注意是大写）：升级软件包，－pql：列出rpm软件包的相关信息，－qf：查找指定文件属于哪个软件包。至于那些其他格式的软件则可以用gunzip，gzip，tar和unzip等指令来解压缩，然后再运行install。通过解包后会得到一些文件，然后进入刚才解压缩后文件目录用“ls －F －color”指令看一下所得到的文件，一般有两种情况：第一种是文件为已经编译好的程序（无须再编译了）用上面的察看文件命令会以带“＊”标记的亮绿色显示；第二种则是需要由你自己编译的源代码。得到的是源代码的话，就需要我们自己编译来得到可运行的程序。编译源代码听到编译是不是就吓到你了呢，其实说穿了也就加上几句话而已，对初学者是有些困难想用好的操作系统就需要学习嘛，等你学会了在MM前露一手的时候想想吧……，在编译之前先要认真的阅读一下readme文档，老鸟们就不需要了吧，等你阅读完了以后就执行<BR>./configure<BR>make<BR>make install（只有Root身份才能执行此命令），编译完成之后便会在当前目录或src子目录下得到软件的可执行程序。<BR>介绍完了，大家是不是觉的RPM的软件安装比较容易一点呢，但我个人意见初学者还是多选择RPM格式以外的软件，因为通过编译软件的源码可以为你以后编译内核打下一定的基础。<BR>Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中，我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实现。与其相类似，在Linux下有一个功能强大的软件安装卸载工具，名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm，就可获得该命令的帮助信息。</DIV>
<DIV>软件的安装<BR>Linux下软件的安装主要有两种不同的形式。第一种安装文件名为xxx.tar.gz；另一种安装文件名为xxx.i386.rpm。以第一种方式发行的软件多为以源码形式发送的；第二种方式则是直接以二进制形式发送的。</DIV>
<DIV>对于第一种，安装方法如下：</DIV>
<DIV>1.首先，将安装文件拷贝至你的目录中。例如，如果你是以root身份登录上的，就将软件拷贝至/root中。</DIV>
<DIV>#cp xxx.tar.gz /root</DIV>
<DIV>2.由于该文件是被压缩并打包的,应对其解压缩。命令为：</DIV>
<DIV>#tar xvzf filename.tar.gz</DIV>
<DIV>3.执行该命令后，安装文件按路径，解压缩在当前目录下。用ls命令可以看到解压缩后的文件。通常在解压缩后产生的文件中，有“Install”的文件。该文件为纯文本文件，详细讲述了该软件包的安装方法。</DIV>
<DIV>4.执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译时所需的库，以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。命令为：#./configure。</DIV>
<DIV>5.检查通过后，将生成用于编译的MakeFile文件。此时，可以开始进行编译了。编译的过程视软件的规模和计算机性能的不同，所耗费的时间也不同。命令为：#make。</DIV>
<DIV>6.成功编译后，键入如下的命令开始安装：</DIV>
<DIV>#make install</DIV>
<DIV>7.安装完毕，应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下命令：</DIV>
<DIV>#make clean<BR>#make distclean</DIV>
<DIV>至此，软件的安装结束。</DIV>
<DIV>对于第二种，其安装方法要简单得多。</DIV>
<DIV>同第一种方式一样，将安装文件拷贝至你的目录中。然后使用rpm来安装该文件。命令如下：</DIV>
<DIV>#rpm -i filename.i386.rpm</DIV>
<DIV>rpm将自动将安装文件解包，并将软件安装到缺省的目录下。并将软件的安装信息注册到rpm的数据库中。参数i的作用是使rpm进入安装模式。</DIV>
<DIV>软件的卸载<BR>1.软件的卸载主要是使用rpm来进行的。卸载软件首先要知道软件包在系统中注册的名称。键入命令：</DIV>
<DIV>#rpm -q -a</DIV>
<DIV>即可查询到当前系统中安装的所有的软件包。</DIV>
<DIV>2.确定了要卸载的软件的名称，就可以开始实际卸载该软件了。键入如下命令即可卸载软件：</DIV>
<DIV>#rpm -e [package name]</DIV>
<DIV>参数e的作用是使rpm进入卸载模式。对名为[package name]的软件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系而不能卸载，rpm将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系，直接开始卸载：</DIV>
<DIV>#rpm -e [package name] -nodeps</DIV>
<DIV>忽略依赖关系的卸载可能会导致系统中其它的一些软件无法使用。</DIV>
<DIV>补充：</DIV>
<DIV>如果是以.bin结尾的二进制软件，可以用以下方法安装（以so-6_0-beta-bin-linux-zh-Tw1.bin为例）：</DIV>
<DIV>在so-6_0-beta-bin-linux-zh-Tw1.bin所在文件夹下运行模拟终端<BR>输入：<BR>./so-6_0-beta-bin-linux-zh-Tw1.bin<BR>并按回车！</DIV>
<DIV>当然也可以输入：<BR>./so 再用[Tab]键补全</DIV>
<DIV>（./表示当前目录，如果终端不在该软件所在目录下打开，则在软件名前尚需输入相应的路径。）<BR></DIV><img src ="http://www.cnitblog.com/ygb/aggbug/5373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-14 13:04 <a href="http://www.cnitblog.com/ygb/articles/5373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Fcitx 3.x在 Fedora core 4的安装和配置</title><link>http://www.cnitblog.com/ygb/articles/5372.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Wed, 14 Dec 2005 05:03:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5372.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5372.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5372.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5372.html</trackback:ping><description><![CDATA[<font size="4"><b>
一、下载；<br>
</b></font>
<p>源码包：<br>
fcitx-3.2-050827.tar.bz2</p>

<p>RPM 包：fcitx-3.2.050827-fc4.noarch.rpm</p>

<p>请到 http://www.fcitx.org 下载区下载；</p>

<p><font size="4"><b><br>
二、安装 fcitx，二选其一；<br>
</b></font></p>

<p><font size="3"><b><br>
1、RPM包的安装；<br>
</b></font><br>
</p>
<div class="codeblock"><code>[root@localhost beinan]# rpm -ivh fcitx-3.2.050827-fc4.noarch.rpm</code></div>

<p>配置请看第三点；</p>

<p><font size="3"><b><br>
2、源码包的安装；<br>
</b></font><br>
</p>
<div class="codeblock"><code>[root@localhost beinan]# tar jxvf fcitx-3.2-050827.tar.bz2<br>
[root@localhost beinan]# cd fcitx<br>
[root@localhost fcitx-3.1.1]# ./configure<br>
[root@localhost fcitx-3.1.1]# make<br>
[root@localhost fcitx-3.1.1]# make install</code></div>

<p><font size="4"><b><br>
三、Fcitx 3.x的配置；<br>
</b></font></p>

<p>让fcitx 进入桌面自动运行；方法有二；<br>
<font size="3"><b><br>
方法一：<br>
</b></font></p>

<p>请在 /etc/X11/xinit/xinput.d/ 目录中查看文件zh_CN ，如果没有就建一个；把里面的内容改为如下的；</p>

<div class="codeblock"><code>XIM=fcitx<br>
XIM_PROGRAM=fcitx<br>
GTK_IM_MODULE=fcitx<br>
gnome-im-settings-daemon &gt;/dev/null</code></div>

<p><font size="3"><b><br>
方法二：<br>
</b></font><br>
在$HOME/.xinput.d/里建立文件zh_CN，包含下面内容, 就可以了；<br>
</p>
<div class="codeblock"><code>XIM=fcitx<br>
XIM_PROGRAM=fcitx<br>
GTK_IM_MODULE=fcitx<br>
XMODIFIERS="@im=fcitx"<br>
gnome-im-settings-daemon &gt;/dev/null</code></div>
<br>

如果当前用户目录下没有 .xinput.d目录，就建一个。然后再建一个zh_CN的文件，内容就是上面的那段。
<div class="codeblock"><code>[root@localhost beinan]# mkdir ~/.xinput.d</code></div>

<p><font color="blue">这样就差不多能用起来了。直接运行一下命令；</font><br>
</p>
<div class="codeblock"><code>[root@localhost beinan]# fcitx</code></div>

<p><font color="blue"><br>
如果不能使用fcitx ，可能得设置设置一下变量；<br>
</font></p>

<p>还得设置一下当前用户的环境变量，也就是在你想用的那个用户的家目录下的 .bashrc 文件。</p>

<p>.bashrc这个文件是隐藏的，你可以用 vi 或者gedit编辑都行。看你习惯吧。</p>

<p>在里面加两行，如下：<br>
</p>
<div class="codeblock"><code>export LC_CTYPE="zh_CN"<br>
export XMODIFIERS="@im=fcitx"</code></div>
<br>

注意保存一下，否则不起做用；
<p>我是刚安装好的系统，一切都是新的，看一下我的beinan这个用户下的 .bashrc的配置吧。</p>

<div class="codeblock"><code># .bashrc<br>
# User specific aliases and functions<br>
export LC_CTYPE="zh_CN"<br>
export XMODIFIERS="@im=fcitx"<br>
# Source global definitions<br>
if [ -f /etc/bashrc ]; then<br>
. /etc/bashrc<br>
fi</code></div>

<p><font size="4"><b><br>
存在的问题；<br>
</b></font></p>

<p>如果您用中文桌面环境，能启动fcitx ，但不能输入，大多是控制台的locale和桌面的locale不一致所引起的。</p>

<p>请在用户家目录下的.bashrc 中加入一行；</p>

<div class="codeblock"><code>export LANG="zh_CN.UTF-8"</code></div>

<p>另外还在建一个 .i18n的文件；内容如下：</p>

<div class="codeblock"><code>LANG="zh_CN.UTF-8"</code></div>

<p>重启X就好了，按CTRL+ALT+BACKSPACE；就重新启动系统；</p>
<br>四、多语言的支持；<br><br>如何才能做到支持不同的语言呢？<br>只需要您在 .bashrc 再加一行。<br><br>export LANG="ja"<br>这样系统的桌面环境的语言就变成日语的了。<br><br>如果您把 上面的一行改为<br><br>export LANG="en_US"<br>这样系统桌面环境就成为英文的了。<img src ="http://www.cnitblog.com/ygb/aggbug/5372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-14 13:03 <a href="http://www.cnitblog.com/ygb/articles/5372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 系统中的超级权限的控制</title><link>http://www.cnitblog.com/ygb/articles/5368.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Wed, 14 Dec 2005 04:45:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5368.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5368.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5368.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5368.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5368.html</trackback:ping><description><![CDATA[<P>在Linux操作系统中，root的权限是最高的，也被称为超级权限的拥有者。普通用户无法执行的操作，root用户都能完成，所以也被称之为超级管理用户。</P>
<P>在系统中，每个文件、目录和进程，都归属于某一个用户，没有用户许可其它普通用户是无法操作的，但对root除外。root用户的特权性还表现在 root可以超越任何用户和用户组来对文件或目录进行读取、修改或删除（在系统正常的许可范围内）；对可执行程序的执行、终止；对硬件设备的添加、创建和移除等；也可以对文件和目录进行属主和权限进行修改，以适合系统管理的需要（因为root是系统中权限最高的特权用户）；</P>
<P><FONT size=4><B><BR>一、对超级用户和普通用户的理解；<BR></B></FONT></P>
<P><FONT size=3><B><BR>1、什么是超级用户；<BR></B></FONT><BR>在所有Linux系统中，系统都是通过UID来区分用户权限级别的，而UID为0的用户被系统约定为是具有超级权限。超级用户具有在系统约定的最高权限满园内操作，所以说超级用户可以完成系统管理的所有工具；我们可以通过/etc/passwd 来查得UID为0的用户是root，而且只有root对应的UID为0，从这一点来看，root用户在系统中是无可替代的至高地位和无限制权限。root 用户在系统中就是超级用户；</P>
<P><FONT size=2><B><BR>2、理解 UID 和用户的对应关系<BR></B></FONT></P>
<P>当系统默认安装时，系统用户和UID 是一对一的对关系，也就是说一个UID 对应一个用户。我们知道用户身份是通过UID 来确认的，我们在中的UID 的解说中有谈到“UID 是确认用户权限的标识，用户登录系统所处的角色是通过UID 来实现的，而非用户名；把几个用户共用一个UID 是危险的，比如我们把普通用户的UID 改为0，和root共用一个UID ，这事实上就造成了系统管理权限的混乱。如果我们想用root权限，可以通过su或sudo来实现；切不可随意让一个用户和root分享同一个UID ；”</P>
<P>在系统中，能不能让UID 和用户是一对多的关系？是可以的，比如我们可以把一个UID为0这个值分配给几个用户共同使用，这就是UID 和用户的一对多的关系。但这样做的确有点危险；相同UID的用户具有相同的身份和权限。比如我们在系统中把beinan这个普通用户的UID改为0后，事实上这个普通用户就具有了超级权限，他的能力和权限和root用户一样；用户beinan所有的操作都将被标识为root的操作，因为beinan的 UID为0,而UID为0的用户是root ，是不是有点扰口？也可以理解为UID为0的用户就是root ，root用户的UID就是0；</P>
<P>UID和用户的一对一的对应关系 ，只是要求管理员进行系统管理时，所要坚守的准则，因为系统安全还是第一位的。所以我们还是把超级权限保留给root这唯一的用户是最好的选择；</P>
<P>如果我们不把UID的0值的分享给其它用户使用，只有root用户是唯一拥有UID=0的话，root用户就是唯一的超级权限用户；<BR><FONT size=3><B><BR>3、普通用户和伪装用户<BR></B></FONT><BR>与超级用户相对的就是普通用户和虚拟（也被称为伪装用户），普通和伪装用户都是受限用户；但为了完成特定的任务，普通用户和伪装用户也是必须的； Linux是一个多用户、多任务的操作系统，多用户主要体现在用户的角色的多样性，不同的用户所分配的权限也不同；这也是Linux系统比Windows 系统更为安全的本质所在，即使是现在最新版本的Windows 2003 ，也无法抹去其单用户系统的烙印；</P>
<P><FONT size=4><B><BR>二. 超级用户（权限）在系统管理中的作用<BR></B></FONT></P>
<P><B><BR>超级权限用户（UID为0的用户）到底在系统管理中起什么作用呢？主要表现在以下两点；<BR></B><BR><FONT size=3><B><BR>1、对任何文件、目录或进程进行操作；<BR></B></FONT></P>
<P><FONT color=red>但值得注意的是这种操作是在系统最高许可范围内的操作；有些操作就是具有超级权限的root也无法完成；</FONT></P>
<P>比如/proc 目录，/proc 是用来反应系统运行的实时状态信息的，因此即便是root也无能为力；它的权限如下</P>
<DIV><CODE>[root@localhost ~]# pwd<BR>/root<BR>[root@localhost ~]# cd /<BR>[root@localhost /]# ls -ld /proc/<BR>dr-xr-xr-x 134 root root 0 2005-10-27 /proc/</CODE></DIV>
<P>就是这个目录，只能是读和执行权限，但绝对没有写权限的；就是我们把/proc 目录的写权限打开给root，root用户也是不能进行写操作；</P>
<DIV><CODE>[root@localhost ~]# chmod 755 /proc<BR>[root@localhost /]# ls -ld /proc/<BR>drwxr-xr-x 134 root root 0 2005-10-27 /proc/<BR>[root@localhost /]# cd /proc/<BR>[root@localhost proc]# mkdir testdir<BR>mkdir: 无法创建目录‘testdir’: 没有那个文件或目录</CODE></DIV>
<P><FONT size=3><B><BR>2、对于涉及系统全局的系统管理；<BR></B></FONT></P>
<P>硬件管理、文件系统理解、用户管理以及涉及到的系统全局配置等等......如果您执行某个命令或工具时，提示您无权限，大多是需要超级权限来完成；</P>
<P>比如用adduser来添加用户，这个只能用通过超级权限的用户来完成；</P>
<P><FONT size=4><B><BR>3、超级权限的不可替代性；<BR></B></FONT></P>
<P>由于超级权限在系统管理中的不可缺少的重要作用，为了完成系统管理任务，我们必须用到超级权限；在一般情况下，为了系统安全，对于一般常规级别的应用，不需要root用户来操作完成，root用户只是被用来管理和维护系统之用；比如系统日志的查看、清理，用户的添加和删除......</P>
<P>在不涉及系统管理的工作的环境下，普通用户足可以完成，比如编写一个文件，听听音乐；用gimp 处理一个图片等...... 基于普通应用程序的调用，大多普通用户就可以完成；</P>
<P>当我们以普通权限的用户登录系统时，有些系统配置及系统管理必须通过超级权限用户完成，比如对系统日志的管理，添加和删除用户。而如何才能不直接以root登录，却能从普通用户切换到root用户下才能进行操作系统管理需要的工作，这就涉及到超级权限管理的问题；</P>
<P>获取超级权限的过程，就是切换普通用户身份到超级用户身份的过程；这个过程主要是通过su和sudo 来解决；</P>
<P><FONT size=4><B><BR>三、使用 su 命令临时切换用户身份；<BR></B></FONT></P>
<P><FONT size=3><B><BR>1、su 的适用条件和威力<BR></B></FONT><BR>su命令就是切换用户的工具，怎么理解呢？比如我们以普通用户beinan登录的，但要添加用户任务，执行useradd ，beinan用户没有这个权限，而这个权限恰恰由root所拥有。解决办法无法有两个，一是退出beinan用户，重新以root用户登录，但这种办法并不是最好的；二是我们没有必要退出beinan用户，可以用su来切换到root下进行添加用户的工作，等任务完成后再退出root。我们可以看到当然通过su 切换是一种比较好的办法；</P>
<P>通过su可以在用户之间切换，如果超级权限用户root向普通或虚拟用户切换不需要密码，什么是权力？这就是！而普通用户切换到其它任何用户都需要密码验证；</P>
<P><FONT size=3><B><BR>2、su 的用法：<BR></B></FONT></P>
<DIV><CODE>su [OPTION选项参数] [用户]<BR>&nbsp;&nbsp;-, -l, --login 登录并改变到所切换的用户环境；<BR>&nbsp;&nbsp;-c, --commmand=COMMAND 执行一个命令，然后退出所切换到的用户环境；</CODE></DIV>
<P>至于更详细的，请参看man su ；</P>
<P><FONT size=3><B><BR>3、su 的范例：<BR></B></FONT></P>
<P>su 在不加任何参数，默认为切换到root用户，但没有转到root用户家目录下，也就是说这时虽然是切换为root用户了，但并没有改变root登录环境；用户默认的登录环境，可以在/etc/passwd 中查得到，包括家目录，SHELL定义等；</P>
<DIV><CODE>[beinan@localhost ~]$ su<BR>Password:<BR>[root@localhost beinan]# pwd<BR>/home/beinan</CODE></DIV>
<P>su 加参数 - ，表示默认切换到root用户，并且改变到root用户的环境；</P>
<DIV><CODE>[beinan@localhost ~]$ pwd<BR>/home/beinan<BR>[beinan@localhost ~]$ su -<BR>Password:<BR>[root@localhost ~]# pwd<BR>/root</CODE></DIV>
<P>su 参数 - 用户名 </P>
<DIV><CODE>[beinan@localhost ~]$ su - root 注：这个和su - 是一样的功能；<BR>Password:<BR>[root@localhost ~]# pwd<BR>/root</CODE></DIV>
<DIV><CODE>[beinan@localhost ~]$ su - linuxsir 注：这是切换到 linuxsir用户<BR>Password: 注：在这里输入密码；<BR>[linuxsir@localhost ~]$ pwd 注：查看用户当前所处的位置；<BR>/home/linuxsir<BR>[linuxsir@localhost ~]$ id 注：查看用户的UID和GID信息，主要是看是否切换过来了；<BR>uid=505(linuxsir) gid=502(linuxsir) groups=0(root),500(beinan),502(linuxsir)<BR>[linuxsir@localhost ~]$</CODE></DIV>
<DIV><CODE>[beinan@localhost ~]$ su - -c ls 注：这是su的参数组合，表示切换到root用户，并且改变到root环境，然后列出root家目录的文件，然后退出root用户；<BR>Password: 注：在这里输入root的密码；<BR>anaconda-ks.cfg Desktop install.log install.log.syslog testgroup testgroupbeinan testgrouproot<BR>[beinan@localhost ~]$ pwd 注：查看当前用户所处的位置；<BR>/home/beinan<BR>[beinan@localhost ~]$ id 注：查看当前用户信息；<BR>uid=500(beinan) gid=500(beinan) groups=500(beinan)</CODE></DIV>
<P><FONT size=3><B><BR>4、su的优缺点；<BR></B></FONT></P>
<P>su 的确为管理带来方便，通过切换到root下，能完成所有系统管理工具，只要把root的密码交给任何一个普通用户，他都能切换到root来完成所有的系统管理工作；</P>
<P>但通过su切换到root后，也有不安全因素；比如系统有10个用户，而且都参与管理。如果这10个用户都涉及到超级权限的运用，做为管理员如果想让其它用户通过su来切换到超级权限的root，必须把root权限密码都告诉这10个用户；如果这10个用户都有root权限，通过root权限可以做任何事，这在一定程度上就对系统的安全造成了威协；想想Windows吧，简直就是恶梦；</P>
<P>“没有不安全的系统，只有不安全的人”，我们绝对不能保证这10个用户都能按正常操作流程来管理系统，其中任何一人对系统操作的重大失误，都可能导致系统崩溃或数据损失；</P>
<P>所以su 工具在多人参与的系统管理中，并不是最好的选择，su只适用于一两个人参与管理的系统，毕竟su并不能让普通用户受限的使用；</P>
<P>超级用户root密码应该掌握在少数用户手中，这绝对是真理！所以集权而治的存在还是有一定道理的；</P>
<P><FONT size=4><B><BR>四、sudo 授权许可使用的su，也是受限制的su<BR></B></FONT></P>
<P><FONT size=3><B><BR>1. sudo 的适用条件；<BR></B></FONT><BR>由于su 对切换到超级权限用户root后，权限的无限制性，所以su并不能担任多个管理员所管理的系统。如果用su 来切换到超级用户来管理系统，也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时，最好是针对每个管理员的技术特长和管理范围，并且有针对性的下放给权限，并且约定其使用哪些工具来完成与其相关的工作，这时我们就有必要用到 sudo。</P>
<P>通过sudo，我们能把某些超级权限有针对性的下放，并且不需要普通用户知道root密码，所以sudo 相对于权限无限制性的su来说，还是比较安全的，所以sudo 也能被称为受限制的su ；另外sudo 是需要授权许可的，所以也被称为授权许可的su；</P>
<P>sudo 执行命令的流程是当前用户切换到root（或其它指定切换到的用户），然后以root（或其它指定的切换到的用户）身份执行命令，执行完成后，直接退回到当前用户；而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权；</P>
<P><FONT size=3><B><BR>2、从编写 sudo 配置文件/etc/sudoers开始；<BR></B></FONT></P>
<P>sudo的配置文件是/etc/sudoers ，我们可以用他的专用编辑工具visodu ，此工具的好处是在添加规则不太准确时，保存退出时会提示给我们错误信息；配置好后，可以用切换到您授权的用户下，通过sudo -l 来查看哪些命令是可以执行或禁止的；</P>
<P>/etc/sudoers 文件中每行算一个规则，前面带有#号可以当作是说明的内容，并不执行；如果规则很长，一行列不下时，可以用\号来续行，这样看来一个规则也可以拥有多个行；</P>
<P>/etc/sudoers 的规则可分为两类；一类是别名定义，另一类是授权规则；别名定义并不是必须的，但授权规则是必须的；</P>
<P><FONT size=3><B><BR>3、/etc/sudoers 配置文件中别名规则<BR></B></FONT></P>
<P>别名规则定义格式如下：</P>
<DIV><CODE>Alias_Type NAME = item1, item2, ...</CODE></DIV>
<P>或<BR></P>
<DIV><CODE>Alias_Type NAME = item1, item2, item3 : NAME = item4, item5</CODE></DIV>
<P><B><BR>别名类型（Alias_Type）：别名类型包括如下四种<BR></B></P>
<P><B>Host_Alias</B> 定义主机别名；<BR><B>User_Alias</B> 用户别名，别名成员可以是用户，用户组（前面要加%号）<BR><B>Runas_Alias</B> 用来定义runas别名，这个别名指定的是“目的用户”，即sudo 允许切换至的用户；<BR><B>Cmnd_Alias</B> 定义命令别名；</P>
<P><B>NAME</B> 就是别名了，NMAE的命名是包含大写字母、下划线以及数字，但必须以一个大写字母开头，比如SYNADM、SYN_ADM或SYNAD0是合法的，sYNAMDA或1SYNAD是不合法的；</P>
<P><B>item </B>按中文翻译是项目，在这里我们可以译成成员，如果一个别名下有多个成员，成员与成员之间，通过半角,号分隔；成员在必须是有效并事实存在的。什么是有效的呢？比如主机名，可以通过w查看用户的主机名（或ip地址），如果您只是本地机操作，只通过hostname 命令就能查看；用户名当然是在系统中存在的，在/etc/paswd中必须存在；对于定义命令别名，成员也必须在系统中事实存在的文件名（需要绝对路径）；</P>
<P>item成员受别名类型 Host_Alias、User_Alias、Runas_Alias、Cmnd_Alias 制约，定义什么类型的别名，就要有什么类型的成员相配。我们用Host_Alias定义主机别名时，成员必须是与主机相关相关联，比如是主机名（包括远程登录的主机名）、ip地址（单个或整段）、掩码等；当用户登录时，可以通过w命令来查看登录用户主机信息；用User_Alias和 Runas_Alias定义时，必须要用系统用户做为成员；用Cmnd_Alias 定义执行命令的别名时，必须是系统存在的文件，文件名可以用通配符表示，配置Cmnd_Alias时命令需要绝对路径；</P>
<P>其中 Runas_Alias 和User_Alias 有点相似，但与User_Alias 绝对不是同一个概念，Runas_Alias 定义的是某个系统用户可以sudo 切换身份到Runas_Alias 下的成员；我们在授权规则中以实例进行解说；</P>
<P>别名规则是每行算一个规则，如果一个别名规则一行容不下时，可以通过\来续行；同一类型别名的定义，一次也可以定义几个别名，他们中间用:号分隔，</P>
<DIV><CODE>Host_Alias HT01=localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24 注：定义主机别名HT01，通过=号列出成员<BR>Host_Alias HT02=st09,st10 注：主机别名HT02，有两个成员；<BR>Host_Alias HT01=localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24:HT02=st09,st10 注：上面的两条对主机的定义，可以通过一条来实现，别名之间用:号分割；</CODE></DIV>
<P>注：我们通过Host_Alias 定义主机别名时，项目可以是主机名、可以是单个ip（整段ip地址也可以），也可以是网络掩码；如果是主机名，必须是多台机器的网络中，而且这些机器得能通过主机名相互通信访问才有效。那什么才算是通过主机名相互通信或访问呢？比如 ping 主机名，或通过远程访问主机名来访问。在我们局域网中，如果让计算机通过主机名访问通信，必须设置/etc/hosts， /etc/resolv.conf ，还要有DNS做解析，否则相互之间无法通过主机名访问；在设置主机别名时，如果项目是中某个项目是主机名的话，可以通过hostname 命令来查看本地主机的主机名，通过w命令查来看登录主机是来源，通过来源来确认其它客户机的主机名或ip地址；对于主机别名的定义，看上去有点复杂，其实是很简单。</P>
<P>如果您不明白Host_Alias 是怎么回事，也可以不用设置主机别名，在定义授权规则时通过ALL来匹配所有可能出现的主机情况。如果您把主机方面的知识弄的更明白，的确需要多多学习。</P>
<DIV><CODE>User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun 注：定义用户别名，下有四个成员；要在系统中确实在存在的；<BR>User_Alias NETAD=beinan,bnnb 注：定义用户别名NETAD ，我想让这个别名下的用户来管理网络，所以取了NETAD的别名；<BR>User_Alias WEBMASTER=linuxsir 注：定义用户别名WEBMASTER，我想用这个别名下的用户来管理网站；<BR>User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun:NETAD=beinan,bnnb:WEBMASTER=linuxsir 注：上面三行的别名定义，可以通过这一行来实现，请看前面的说明，是不是符合？</CODE></DIV>
<DIV><CODE>Cmnd_Alias USERMAG=/usr/sbin/adduser,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,/bin/chown,/bin/chmod <BR>&nbsp;注意：命令别名下的成员必须是文件或目录的绝对路径；<BR>Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/parted<BR>Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/network<BR>Cmnd_Alias KILL = /usr/bin/kill<BR>Cmnd_Alias PWMAG = /usr/sbin/reboot,/usr/sbin/halt<BR>Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/local/bin/tcsh, /usr/bin/rsh, \<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/local/bin/zsh<BR>注：这行定义命令别名有点长，可以通过 \ 号断行；<BR>Cmnd_Alias SU = /usr/bin/su,/bin,/sbin,/usr/sbin,/usr/bin</CODE></DIV>
<P>在上面的例子中，有KILL和PWMAG的命令别名定义，我们可以合并为一行来写，也就是等价行；</P>
<DIV><CODE>Cmnd_Alias KILL = /usr/bin/kill:PWMAG = /usr/sbin/reboot,/usr/sbin/halt 注：这一行就代表了KILL和PWMAG命令别名，把KILL和PWMAG的别名定义合并在一行写也是可以的；</CODE></DIV>
<DIV><CODE>Runas_Alias OP = root, operator<BR>Runas_Alias DBADM=mysql:OP = root, operator 注：这行是上面两行的等价行；至于怎么理解Runas_Alias ，我们必须得通过授权规则的实例来理解；</CODE></DIV>
<P><FONT size=3><B><BR>4、/etc/sudoers中的授权规则：<BR></B></FONT></P>
<P>授权规则是分配权限的执行规则，我们前面所讲到的定义别名主要是为了更方便的授权引用别名；如果系统中只有几个用户，其实下放权限比较有限的话，可以不用定义别名，而是针对系统用户直接直接授权，所以在授权规则中别名并不是必须的；</P>
<P>授权规则并不是无章可寻，我们只说基础一点的，比较简单的写法，如果您想详细了解授权规则写法的，请参看man sudoers<BR></P>
<DIV><CODE>授权用户 主机=命令动作</CODE></DIV>
<P>这三个要素缺一不可，但在动作之前也可以指定切换到特定用户下，在这里指定切换的用户要用( )号括起来，如果不需要密码直接运行命令的，应该加NOPASSWD:参数，但这些可以省略；举例说明；</P>
<P><B><BR>实例一：<BR></B><BR></P>
<DIV><CODE>beinan ALL=/bin/chown,/bin/chmod</CODE></DIV>
<P>如果我们在/etc/sudoers 中添加这一行，表示beinan 可以在任何可能出现的主机名的系统中，可以切换到root用户下执行 /bin/chown 和/bin/chmod 命令，通过sudo -l 来查看beinan 在这台主机上允许和禁止运行的命令；</P>
<P>值得注意的是，在这里省略了指定切换到哪个用户下执行/bin/shown 和/bin/chmod命令；在省略的情况下默认为是切换到root用户下执行；同时也省略了是不是需要beinan用户输入验证密码，如果省略了，默认为是需要验证密码。</P>
<P>为了更详细的说明这些，我们可以构造一个更复杂一点的公式；</P>
<P><B><BR>授权用户 主机=[(切换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(切换到哪些用户或用户组)] [是否需要密码验证] [命令2],[(切换到哪些用户或用户组)] [是否需要密码验证] [命令3]......<BR></B></P>
<P><B>注解：</B></P>
<P>凡是[ ]中的内容，是可以省略；命令与命令之间用,号分隔；通过本文的例子，可以对照着看哪些是省略了，哪些地方需要有空格；<BR>在[(切换到哪些用户或用户组)] ，如果省略，则默认为root用户；如果是ALL ，则代表能切换到所有用户；注意要切换到的目的用户必须用()号括起来，比如(ALL)、(beinan)</P>
<P><B><BR>实例二：<BR></B><BR></P>
<DIV><CODE>beinan ALL=(root) /bin/chown, /bin/chmod</CODE></DIV>
<P>如果我们把第一个实例中的那行去掉，换成这行；表示的是beinan 可以在任何可能出现的主机名的主机中，可以切换到root下执行 /bin/chown ，可以切换到任何用户招执行/bin/chmod 命令，通过sudo -l 来查看beinan 在这台主机上允许和禁止运行的命令；<BR><B><BR>实例三：<BR></B></P>
<DIV><CODE>beinan ALL=(root) NOPASSWD: /bin/chown,/bin/chmod</CODE></DIV>
<P>如果换成这个例子呢？表示的是beinan 可以在任何可能出现的主机名的主机中，可以切换到root下执行 /bin/chown ，不需要输入beinan用户的密码；并且可以切换到任何用户下执行/bin/chmod 命令，但执行chmod时需要beinan输入自己的密码；通过sudo -l 来查看beinan 在这台主机上允许和禁止运行的命令；</P>
<P>关于一个命令动作是不是需要密码，我们可以发现在系统在默认的情况下是需要用户密码的，除非特加指出不需要用户需要输入自己密码，所以要在执行动作之前加入NOPASSWD: 参数； </P>
<P>有可能有的弟兄对系统管理的命令不太懂，不知道其用法，这样就影响了他对 sudoers定义的理解，下面我们再举一个最简单，最有说服务力的例子；<BR><B><BR>实例四：<BR></B></P>
<P>比如我们想用beinan普通用户通过more /etc/shadow文件的内容时，可能会出现下面的情况；</P>
<DIV><CODE>[beinan@localhost ~]$ more /etc/shadow<BR>/etc/shadow: 权限不够</CODE></DIV>
<P>这时我们可以用sudo more /etc/shadow 来读取文件的内容；就就需要在/etc/soduers中给beinan授权；</P>
<P>于是我们就可以先su 到root用户下通过visudo 来改/etc/sudoers ；（比如我们是以beinan用户登录系统的）<BR></P>
<DIV><CODE>[beinan@localhost ~]$ su<BR>Password: 注：在这里输入root密码 <BR>下面运行visodu；<BR>[root@localhost beinan]# visudo 注：运行visudo 来改 /etc/sudoers</CODE></DIV>
<P>加入如下一行，退出保存；退出保存，在这里要会用vi，visudo也是用的vi编辑器；至于vi的用法不多说了；<BR></P>
<DIV><CODE>beinan ALL=/bin/more 表示beinan可以切换到root下执行more 来查看文件；</CODE></DIV>
<P>退回到beinan用户下，用exit命令；</P>
<DIV><CODE>[root@localhost beinan]# exit<BR>exit<BR>[beinan@localhost ~]$</CODE></DIV>
<P>查看beinan的通过sudo能执行哪些命令？ </P>
<DIV><CODE>[beinan@localhost ~]$ sudo -l<BR>Password: 注：在这里输入beinan用户的密码<BR>User beinan may run the following commands on this host: 注：在这里清晰的说明在本台主机上，beinan用户可以以root权限运行more ；在root权限下的more ，可以查看任何文本文件的内容的；<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /bin/more</CODE></DIV>
<P>最后，我们看看是不是beinan用户有能力看到/etc/shadow文件的内容；</P>
<DIV><CODE>[beinan@localhost ~]$ sudo more /etc/shadow</CODE></DIV>
<P>beinan 不但能看到 /etc/shadow文件的内容，还能看到只有root权限下才能看到的其它文件的内容，比如；</P>
<DIV><CODE>[beinan@localhost ~]$ sudo more /etc/gshadow</CODE></DIV>
<P>对于beinan用户查看和读取所有系统文件中，我只想把/etc/shadow 的内容可以让他查看；可以加入下面的一行；</P>
<DIV><CODE>beinan ALL=/bin/more /etc/shadow</CODE></DIV>
<P>题外话：有的弟兄会说，我通过su 切换到root用户就能看到所有想看的内容了，哈哈，对啊。但咱们现在不是在讲述sudo的用法吗？如果主机上有多个用户并且不知道root用户的密码，但又想查看某些他们看不到的文件，这时就需要管理员授权了；这就是sudo的好处；</P>
<P><B><BR>实例五：练习用户组在/etc/sudoers中写法；<BR></B><BR>如果用户组出现在/etc/sudoers 中，前面要加%号，比如%beinan ，中间不能有空格；</P>
<DIV><CODE>%beinan ALL=/usr/sbin/*,/sbin/*</CODE></DIV>
<P>如果我们在 /etc/sudoers 中加上如上一行，表示beinan用户组下的所有成员，在所有可能的出现的主机名下，都能切换到root用户下运行 /usr/sbin和/sbin目录下的所有命令；</P>
<P><B><BR>实例六：练习取消某类程序的执行；<BR></B></P>
<P>取消程序某类程序的执行，要在命令动作前面加上!号； 在本例中也出现了通配符的*的用法；</P>
<DIV><CODE>beinan ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk 注：把这行规则加入到/etc/sudoers中；但您得有beinan这个用户组，并且beinan也是这个组中的才行；</CODE></DIV>
<P>本规则表示beinan用户在所有可能存在的主机名的主机上运行/usr/sbin和/sbin下所有的程序，但fdisk 程序除外； </P>
<P>[beinan@localhost ~]$ sudo -l<BR>Password: 注：在这里输入beinan用户的密码；<BR>User beinan may run the following commands on this host:<BR>(root) /usr/sbin/*<BR>(root) /sbin/*<BR>(root) !/sbin/fdisk</P>
<P>[beinan@localhost ~]$ sudo /sbin/fdisk -l<BR>Sorry, user beinan is not allowed to execute '/sbin/fdisk -l' as root on localhost. </P>
<P>注：不能切换到root用户下运行fdisk 程序；<BR></P>
<P><B><BR>实例七：别名的运用的实践；<BR></B></P>
<P>假如我们就一台主机localhost，能通过hostname 来查看，我们在这里就不定义主机别名了，用ALL来匹配所有可能出现的主机名；并且有beinan、linuxsir、lanhaitun 用户；主要是通过小例子能更好理解；sudo虽然简单好用，但能把说的明白的确是件难事；最好的办法是多看例子和man soduers ；</P>
<DIV><CODE>User_Alias SYSADER=beinan,linuxsir,%beinan<BR>User_Alias DISKADER=lanhaitun<BR>Runas_Alias OP=root<BR>Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root<BR>Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk 注：定义命令别名DSKCMD，下有成员parted和fdisk ；<BR>SYSADER ALL= SYDCMD,DSKCMD<BR>DISKADER ALL=(OP) DSKCMD</CODE></DIV>
<P><FONT color=blue><B>注解：</B></FONT></P>
<P><B>第一行：</B>定义用户别名SYSADER 下有成员 beinan、linuxsir和beinan用户组下的成员，用户组前面必须加%号；<BR><B>第二行：</B>定义用户别名 DISKADER ，成员有lanhaitun<BR><B>第三行：</B>定义Runas用户，也就是目标用户的别名为OP，下有成员root<BR><B>第四行：</B>定义SYSCMD命令别名，成员之间用,号分隔，最后的!/usr/bin/passwd root 表示不能通过passwd 来更改root密码；<BR><B>第五行：</B>定义命令别名DSKCMD，下有成员parted和fdisk ；<BR><B>第六行：</B> 表示授权SYSADER下的所有成员，在所有可能存在的主机名的主机下运行或禁止 SYDCMD和DSKCMD下定义的命令。更为明确遥说，beinan、linuxsir和beinan用户组下的成员能以root身份运行 chown 、chmod 、adduser、passwd，但不能更改root的密码；也可以以root身份运行 parted和fdisk ，本条规则的等价规则是；</P>
<DIV><CODE>beinan,linuxsir,%beinan ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk</CODE></DIV>
<P><B>第七行：</B>表示授权DISKADER 下的所有成员，能以OP的身份，来运行 DSKCMD ，不需要密码；更为明确的说 lanhaitun 能以root身份运行 parted和fdisk 命令；其等价规则是：</P>
<DIV><CODE>lanhaitun ALL=(root) /sbin/parted,/sbin/fdisk</CODE></DIV>
<P>可能有的弟兄会说我想不输入用户的密码就能切换到root并运行SYDCMD和DSKCMD 下的命令，那应该把把NOPASSWD:加在哪里为好？理解下面的例子吧，能明白的；</P>
<DIV><CODE>SYSADER ALL= NOPASSWD: SYDCMD, NOPASSWD: DSKCMD</CODE></DIV>
<P><FONT size=3><B><BR>5、/etc/sudoers中其它的未尽事项；<BR></B></FONT></P>
<P>在授权规则中，还有 NOEXEC:和EXEC的用法，自己查man sudoers 了解；还有关于在规则中通配符的用法，也是需要了解的。这些内容不多说了，毕竟只是一个入门性的文档。soduers配置文件要多简单就有多简单，要多难就有多难，就看自己的应用了。</P>
<P><FONT size=3><B><BR>6、sudo的用法；<BR></B></FONT></P>
<P>我们在前面讲的/etc/sudoers 的规则写法，最终的目的是让用户通过sudo读取配置文件中的规则来实现匹配和授权，以便替换身份来进行命令操作，进而完成在其权限下不可完成的任务；</P>
<P>我们只说最简单的用法；更为详细的请参考man sudo</P>
<P>sudo [参数选项] 命令<BR>-l 列出用户在主机上可用的和被禁止的命令；一般配置好/etc/sudoers后，要用这个命令来查看和测试是不是配置正确的；<BR>-v 验证用户的时间戳；如果用户运行sudo 后，输入用户的密码后，在短时间内可以不用输入口令来直接进行sudo 操作；用-v 可以跟踪最新的时间戳；<BR>-u 指定以以某个用户执行特定操作；<BR>-k 删除时间戳，下一个sudo 命令要求用求提供密码；</P>
<P><B>举列：<BR></B><BR>首先我们通过visudo 来改/etc/sudoers 文件，加入下面一行；</P>
<DIV><CODE>beinan,linuxsir,%beinan ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk</CODE></DIV>
<P>然后列出beinan用户在主机上通过sudo 可以切换用户所能用的命令或被禁止用的命令；</P>
<DIV><CODE>[beinan@localhost ~]$ sudo -l 注：列出用户在主机上能通过切换用户的可用的或被禁止的命令；<BR>Password: 注：在这里输入您的用户密码；<BR>User beinan may run the following commands on this host:<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /bin/chown 注：可以切换到root下用chown命令；<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /bin/chmod 注：可以切换到root下用chmod命令；<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /usr/sbin/adduser 注：可以切换到root下用adduser命令；<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /usr/bin/passwd [A-Za-z]* 注：可以切换到root下用 passwd 命令；<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) !/usr/bin/passwd root 注：可以切换到root下，但不能执行passwd root 来更改root密码；<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /sbin/parted 注：可以切换到 root下执行parted ；<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /sbin/fdisk 注：可以切换到root下执行 fdisk ；</CODE></DIV>
<P>通过上面的sudo -l 列出可用命令后，我想通过chown 命令来改变/opt目录的属主为beinan ；<BR></P>
<DIV><CODE>[beinan@localhost ~]$ ls -ld /opt 注：查看/opt的属主；<BR>drwxr-xr-x 26 root root 4096 10月 27 10:09 /opt 注：得到的答案是归属root用户和root用户组；<BR>[beinan@localhost ~]$ sudo chown beinan:beinan /opt 注：通过chown 来改变属主为beinan用户和beinan用户组；<BR>[beinan@localhost ~]$ ls -ld /opt 注：查看/opt属主是不是已经改变了；<BR>drwxr-xr-x 26 beinan beinan 4096 10月 27 10:09 /opt</CODE></DIV>
<P>我们通过上面的例子发现beinan用户能切换到root后执行改变用户口令的passwd命令；但上面的sudo -l 输出又明文写着不能更改root的口令；也就是说除了root的口令，beinan用户不能更改外，其它用户的口令都能更改。下面我们来测试；</P>
<P>对于一个普通用户来说，除了更改自身的口令以外，他不能更改其它用户的口令。但如果换到root身份执行命令，则可以更改其它用户的口令；</P>
<P>比如在系统中有linuxsir这个用户, 我们想尝试更改这个用户的口令，</P>
<DIV><CODE>[beinan@localhost ~]$ passwd linuxsir 注：不通过sudo 直接运行passwd 来更改linuxsir用户的口令；<BR>passwd: Only root can specify a user name. 注：失败，提示仅能通过 root来更改；<BR>[beinan@localhost ~]$ sudo passwd linuxsir 注：我们通过/etc/sudoers 的定义，让beinan切换到root下执行 passwd 命令来改变linuxsir的口令；<BR>Changing password for user linuxsir.<BR>New UNIX password: 注：输入新口令；<BR>Retype new UNIX password: 注：再输入一次；<BR>passwd: all authentication tokens updated successfully. 注：改变成功；</CODE></DIV><img src ="http://www.cnitblog.com/ygb/aggbug/5368.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-14 12:45 <a href="http://www.cnitblog.com/ygb/articles/5368.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FC4 安装配置过程</title><link>http://www.cnitblog.com/ygb/articles/5367.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Wed, 14 Dec 2005 04:43:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5367.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5367.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5367.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5367.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5367.html</trackback:ping><description><![CDATA[FC4&nbsp;安装配置过程-&nbsp;-<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>1、安装FC4<BR>光盘安装是傻瓜化安装，我就不说了，安装过程中出错自己解决。<BR>下载fedora&nbsp;core&nbsp;4&nbsp;4个iso文件，下面将的是硬盘安装方法。为了少打几个字母，我把4个文件放在<BR>d盘的d:\fc4下的1.iso,2.iso,2.iso,4.iso<BR><BR>将1.iso中的isolinux解出到d:\fc4\boot<BR>然后，去红旗盘中找了个loadlin.exe(网络上到处都是)<BR>建立boot.bat<BR>loadlin&nbsp;vmlinuz&nbsp;initrd=initrd.img&nbsp;ramdisk_size=64000&nbsp;%1&nbsp;%2&nbsp;%3&nbsp;%4&nbsp;%5&nbsp;%6&nbsp;%7&nbsp;%8&nbsp;%9<BR>上述文件全部放在d:\fc4\boot下<BR>然后，使用98盘启动（只要是纯dos就行）<BR>d:<BR>cd&nbsp;fc4<BR>cd&nbsp;boot<BR>boot<BR>然后系统控制全被交给你内存虚拟盘中的linux并且开始了安装。<BR>语言我选的是US,键盘US，然后选择硬盘安装。然后用上下光标移动到/dev/hda5输入fc4<BR>然后就开始安装了。再次说明一下。<BR>/dev/hdaX&nbsp;是第一个硬盘，第二个硬盘是/dev/hdbx<BR>每个硬盘的主分区是1－4，第一个硬盘就是/dev/hda1-4如果有了扩展分区，那么下面的逻辑驱动器是从5开始的。如果你的硬盘是一个主分区3个逻辑驱动器，那么编号分别是<BR>/dev/hda1&nbsp;-&gt;c:<BR>/dev/hda5&nbsp;-&gt;d<BR>/dev/hda6&nbsp;-&gt;e<BR>/dev/hda7&nbsp;-&gt;f<BR><BR>然后的安装过程自己看把，一般没有问题。<BR>安装完成的向导中，建立一个非root用户。我建的是admin<BR>一定要建，早晚都要用，现在建更好。<BR>装完了吗？？恭喜你，入门了。<BR><BR>2、安装nvidia的显卡驱动。<BR>FC4的显示驱动安装和FC3稍微有点不一样。ATI的自己研究吧<BR>还有就是装了nvidia的驱动后，鼠标光标旁边的杂点也不见了，一般的屏幕偏移现象有消失了并且打开了3d的opengl支持。<BR>显卡的驱动一定要装，不然后面说的游戏速度慢不要再问我。<BR>下载nvidia的驱动，放到tmp（推荐，避免某些不可预知的权限问题）下。<BR>/tmp/NVIDIA-Linux-x86-1.0-7667-pkg1.run<BR>在安装前确保安装了<BR>GCC,compat-gcc,libstdc++,compat-libstdc++,kernel,kernel-devel<BR>然后更改/etc/selinux/config文件<BR>将SELISELINUX=enforcing加个#注释<BR>再加一行<BR>SELINUX=disabled<BR>然后重新启动你的电脑<BR>起来后用ctrl+alt+f1切到控制台，使用root登录，一应要用root<BR>然后使用init&nbsp;3切换到单用户模式并强行关掉gnome<BR>然后cd&nbsp;/tmp<BR>./NVIDIA*.run<BR>执行安装程序，过程中如果提示没有没有识别出你的kernel并且要上nvidia的网站下更新版本的时候选NO其余都是YES／Accept<BR>安装完成后，把刚才的/etc/selinux/config文件改回来，另外修改/etc/X11/xorg.conf<BR>把启动modules中的"dri"的一行去掉<BR>然后把驱动中有"nv"的地方换成"nvidia"<BR>保存，退出<BR>然后执行fixfiles&nbsp;relabel之后有个几分钟的等待。然后重启，重启过程中有个地方也有大概10分钟的等待，等着吧，他在重新relabel以便selinux<BR>然后进gnome的时候出现了nvidia的logo就成功了。<BR><BR>如果此时的屏幕还有偏移，开个终端运行xvidtune然后调整，然后apply预览一下。调好后选show把参数显示出来，然后在/etc/X11/xorg.conf中，显示器的那节中以下列方式加上一行<BR><BR>Section&nbsp;"Monitor"<BR>Identifier&nbsp;"Monitor0"<BR>VendorName&nbsp;"Monitor&nbsp;Vendor"<BR>ModelName&nbsp;"MIRECHANG&nbsp;77"<BR>DisplaySize&nbsp;320&nbsp;240<BR>HorizSync&nbsp;30.0&nbsp;-&nbsp;71.0<BR>VertRefresh&nbsp;50.0&nbsp;-&nbsp;160.0<BR>Option&nbsp;"dpms"<BR>ModeLine&nbsp;"1024x768"&nbsp;xxx&nbsp;xxx&nbsp;xxx&nbsp;xxx&nbsp;xxx&nbsp;xxx&nbsp;xxx&nbsp;xxx&nbsp;xx&nbsp;xxx&nbsp;xxx&nbsp;xxx<BR>EndSection<BR>然后重启你的x就OK<BR><BR>3、访问NTFS分区<BR>下载<BR>kernel-module-ntfs-2.6.11-1.1369_FC4-2.1.22-0.rr.6.4.i686.rpm<BR>然后rpm&nbsp;-ivh&nbsp;kernel＊.11＊i686.rpm&nbsp;安装该文件<BR><BR>3、自动加载windows下的分区<BR>我有c,d,e，分别是hda1,hda5,hda6,其中c是ntfs的。<BR>在/mnt下建立目录<BR>mkdir&nbsp;c<BR>mkdir&nbsp;d<BR>mkdir&nbsp;e<BR>然后修改/etc/fstab<BR>加上下列几行<BR>/dev/hda1&nbsp;/mnt/c&nbsp;ntfs&nbsp;iocharset=utf8<BR>/dev/hda5&nbsp;/mnt/d&nbsp;vfat&nbsp;iocharset=utf8<BR>/dev/hda6&nbsp;/mnt/e&nbsp;vfat&nbsp;iocharset=utf8<BR>然后重新启动计算机<BR><BR>4、美化中文界面。<BR>上面已经加载了ntfs的分区，不错，那个就是我的windows的安装盘。<BR>将windows/fonts/ 下的中文字体，simsun.ttc是必须的，其他的自己看着办。复制到 /usr/share/fonts/chinese/TrueType下。然后更改配置文件。如果不想该配置文件先把上述目录清空了在将中文字体复制进去就行了，我原来就是这样做的，但是该配置文件更保险。<BR>修改/etc/fonts/fonts.conf<BR>看见下面一段一段的，整个文件中共有6断<BR><BR>Times<BR>Times&nbsp;New&nbsp;Roman<BR>Nimbus&nbsp;Roman&nbsp;No9&nbsp;L<BR>Luxi&nbsp;Serif<BR>Sazanami&nbsp;Mincho<BR>Kochi&nbsp;Mincho<BR>Simsun&nbsp;＃像这样，把Simsun这行加在系统默认所有中文字体的前面。<BR>AR&nbsp;PL&nbsp;SungtiL&nbsp;GB<BR>AR&nbsp;PL&nbsp;Mingti2L&nbsp;Big5<BR>Baekmuk&nbsp;Batang&nbsp;<BR>serif<BR>总共有6段，全部修改完，再把首选项中的字体中的大小改为9。然后注销，重新登录，然后字体近乎完美，和windows已经差距不大了，某些地方比windows更漂亮。比FC中好多了。<BR><BR>5、安装输入法<BR>FC4自带的iiimf有点.....我更喜欢scim<BR>那么装吧,我这个方法首先要保证能上网并连上了。（怎样配制PPPoe上网不要我说了吧）<BR>开个终端然后<BR>yum&nbsp;remove&nbsp;iiimf*<BR>删除原来的输入法，*一定要跟，*是什么意思大家都应该知道吧，和ls中的用法一样。<BR>然后<BR>yum&nbsp;install&nbsp;scim*<BR>安装scim,这是完全的安装，如果要选择一下先用yum&nbsp;list&nbsp;scim*看一下有些什么再分别安装，反正也不大，几个M就完全安装了<BR>然后在配置一下。去首选项中的更多首选项中的scim的配置中，把不用的输入法前面的勾去掉。省得以后ctrl+shift切换输入法使用次数<BR><BR>6、播放MP3<BR>到网络上下个bmp装上就可以了全名是beep-media-player<BR>然后安装它的mp3,wmv的插件。<BR><BR>7、播放rmvb<BR>FC4自己带的helix基本不能放东西。到real.com上下个<BR>RealPlayer10GOLD.bin<BR>然后给执行权限，也可以点右键属性可执行的地方打个勾<BR>chmod&nbsp;a+x&nbsp;RealPlayer10GOLD.bin<BR>然后./RealPlayer10GOLD.bin然后自己看着办<BR><BR>8、配置游戏<BR>鄙人非常喜欢玩游戏，如魔兽，CS<BR>这里使用的是cedega，他对游戏的支持远远比wine好，特别是3D加速。但是cedega是要收钱的。我用的是盗版的，不要告我哦。<BR>wine我也再用，等下你们就知道了。<BR>下载cedega&nbsp;4.3的rpm安装包，然后安装，不要告诉我你不会装rpm<BR>然后就OK了，例如运行魔兽<BR><BR>开个终端然后cedega&nbsp;War3.exe然后就OK了，速度和windows&nbsp;下基本没有差别。<BR><BR>9、配置QQ2005<BR><BR>这是最麻烦的东西了，我安装过程中花的时间最长的就是这个。对wine版本控制的要求几乎到了疯狂的地步，我敢保证你我高诉你的方法能用，并且是独门秘籍。你在整个互联网上都搜不到，我光这个东西花了近150个小时。<BR><BR>首先安装wine注意版本，我用的是最新的20050628<BR><BR>还记得我叫你建的非root用户吗，现在就要用，如果没有建，那么赶快useradd&nbsp;-g&nbsp;root&nbsp;xxxxx一个<BR>下面的安装我一直也必须使用admin用户，非root&nbsp;，一定是重启然后用非root用户登录的，不能su&nbsp;xxxxx,切记<BR><BR>一定要是这个版本，不信你就走这瞧，并且不能下rpm一定要用源码自己编，现在还没有for&nbsp;FC4&nbsp;的rpm<BR>下载源码，然后安装，安装也是有学问的，不要一来就configure&nbsp;然后make&nbsp;&amp;&amp;&nbsp;make&nbsp;install&nbsp;如果你是那样装的，我敢保证你很麻烦。<BR>下载源码包，解压<BR>然后进入cd&nbsp;wine-20050628<BR>然后安装，一定用我这种方法<BR>./tools/wineinstall<BR>输入上面的命令，然后它就自动configure/make&nbsp;depend/make/make&nbsp;install了<BR>慢，我的爱机跑了近半小时然后提示是否要建config文件选是，其他的自己看着半，<BR>如果中途出错了，检查你的系统。如果还是不行，那么很遗憾，用装不上QQ了。<BR><BR>然后安装wine-config-sidenet<BR>到sidenet的网站下，网址我记不清了，自己google一下。<BR>是个tgz的文件，然后cp到／tmp下，解压。<BR><BR>然后最重要的是dcom98.exe和mfc40.dll千万不能用2000或xp下的版本。它的readme中有地址，到微软网站下。<BR>然后解压出dcom98.exe和mfc40.dll放在刚才解出的/tmp/wine-config-sidenet目录下<BR>然后./setup运行<BR>提示语言时输入cn回车<BR>选安装内容的时候选3<BR>是否装ie输入y<BR>是否装dcom98输入y<BR>是否装media&nbsp;player&nbsp;7输入n<BR>其他的一般都是y<BR>然后，它就自动备份了你的/home/admin/.wine目录,自动下载安装，安装速度看你的网络情况和机器配置，期间最好不要动你的机器，不要做任何操作，死了可别怪我没有告诉你。ie的安装过程和windows一样，自己装吧.<BR>我的机器跑了将近半个小是，然后OK了，它会自动启动你的ie看看是否能上网，如果能上，你就基本成功了<BR><BR>最后下载qq2005beta2.exe放在你的虚拟c盘中，我的是/home/admin/c下。（很重要）<BR>然后wine&nbsp;qq2005beta2.exe<BR>然后像windows下一样的安装。装完就能运行了<BR><BR>顺便说一下，运行的速度很慢，不要以为它死了。如果你没有特殊要求，建议使用lumaQQ<img src ="http://www.cnitblog.com/ygb/aggbug/5367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-14 12:43 <a href="http://www.cnitblog.com/ygb/articles/5367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FC4的中文字体美化 </title><link>http://www.cnitblog.com/ygb/articles/5365.html</link><dc:creator>YGB.Grushy</dc:creator><author>YGB.Grushy</author><pubDate>Wed, 14 Dec 2005 04:37:00 GMT</pubDate><guid>http://www.cnitblog.com/ygb/articles/5365.html</guid><wfw:comment>http://www.cnitblog.com/ygb/comments/5365.html</wfw:comment><comments>http://www.cnitblog.com/ygb/articles/5365.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ygb/comments/commentRss/5365.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ygb/services/trackbacks/5365.html</trackback:ping><description><![CDATA[<TABLE class="fixedTable blogpost" cellSpacing=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=ellipse><SPAN class=bvTitle id=subjcns!1pWqyxzwnCjBz9ozXK2WkSkw!112><STRONG>FC4的中文字体美化 </STRONG></SPAN></TD></TR>
<TR>
<TD class=bvh8><STRONG></STRONG></TD></TR>
<TR>
<TD id=msgcns!1pWqyxzwnCjBz9ozXK2WkSkw!112>FC4的中文字体美化<BR>默认配置下，中文的显示看起来比较淡，也比较模糊。普遍的解决方法是使用windows的simsun字体，但是宋体中的英文和数字字体很不美观，结果是英文字体又不好看了。经过摸索，找到了一个两全其美的方案。<BR><BR>美化步骤如下：<BR><BR>1、从windows的fonts文件夹里，复制simsun.ttc，times.ttf， tahoma.ttf<BR>到/usr/share/fonts/chinese/TrueType/ 里。并将simsun.ttc 更名为<BR>simsun.ttf。其中，simsun.ttf 是中文宋体，也是windows里中文采用的字体。times.ttf，<BR>tahoma.ttf是英文字体，显示英文比较好看。<BR><BR>2、在命令行运行命令： fc-cache /usr/share/fonts/chinese/TrueType<BR><BR>3、打开 /etc/fonts/fonts.conf 。在<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;《!--<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Some Asian fonts misadvertise themselves as monospaced when<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in fact they are dual-spaced (half and full).&nbsp;&nbsp;This makes<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeType very confused as it forces all widths to match.<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Undo this magic by disabling the width forcing code --》<BR><BR>&nbsp;&nbsp; 前面，插入：<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《match target="font"》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《test name="family"》《string》SimSun《/string》《/test》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>《edit name="antialias" mode="assign"》《bool》false《/bool》《/edit》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《/match》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;这样来避免字体被过分平滑。<BR><BR>4、在 /etc/fonts/fonts.conf 中，所有类似如下的地方，全部simsun字体<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》Bitstream Vera Serif《/family》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》Times《/family》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》Times New Roman《/family》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》Nimbus Roman No9 L《/family》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》Luxi Serif《/family》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》Sazanami Mincho《/family》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》Kochi Mincho《/family》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》SimSun《/family》&nbsp;&nbsp;&nbsp;&nbsp;《!--增加这样的一行 wh add --》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》AR PL SungtiL GB《/family》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》AR PL Mingti2L Big5《/family》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《family》Baekmuk<BR>Batang《/family》&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《default》《family》serif《/family》《/default》<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;要点就是，simsun要插入到所有英文字体的最后面、非英文字体的最前面！<BR><BR>5、在 /usr/share/fonts/chinese/TrueType/fonts.dir&nbsp;&nbsp;和 fonts.scale 前面，插入<BR><BR>times.ttf -arphic technology co.-ar pl Times New Roman-medium-r-normal--0-0-0-0-p-0-iso10646-1<BR><BR>times.ttf -arphic technology co.-ar pl Times New Roman-medium-r-normal--0-0-0-0-p-0-so8859-1<BR><BR>times.ttf -arphic technology co.-ar pl Times New Roman-medium-r-normal--0-0-0-0-p-0-iso8859-10<BR><BR>times.ttf -arphic technology co.-ar pl Times New Roman-medium-r-normal--0-0-0-0-p-0-iso8859-15<BR><BR>times.ttf -arphic technology co.-ar pl Times New Roman-medium-r-normal--0-0-0-0-p-0-iso8859-2<BR><BR>times.ttf -arphic technology co.-ar pl Times New Roman-medium-r-normal--0-0-0-0-p-0-iso8859-3<BR><BR>times.ttf -arphic technology co.-ar pl Times New Roman-medium-r-normal--0-0-0-0-p-0-iso8859-4<BR><BR>times.ttf -arphic technology co.-ar pl Times New Roman-medium-r-normal--0-0-0-0-p-0-iso8859-5<BR><BR>times.ttf -arphic technology co.-ar pl Times New Roman-medium-r-normal--0-0-0-0-p-0-iso8859-9<BR><BR>tahoma.ttf -arphic technology co.-ar pl Tahoma-medium-r-normal--0-0-0-0-p-0-iso10646-1<BR><BR>tahoma.ttf -arphic technology co.-ar pl Tahoma-medium-r-normal--0-0-0-0-p-0-so8859-1<BR><BR>tahoma.ttf -arphic technology co.-ar pl Tahoma-medium-r-normal--0-0-0-0-p-0-iso8859-10<BR><BR>tahoma.ttf -arphic technology co.-ar pl Tahoma-medium-r-normal--0-0-0-0-p-0-iso8859-15<BR><BR>tahoma.ttf -arphic technology co.-ar pl Tahoma-medium-r-normal--0-0-0-0-p-0-iso8859-2<BR><BR>tahoma.ttf -arphic technology co.-ar pl Tahoma-medium-r-normal--0-0-0-0-p-0-iso8859-3<BR><BR>tahoma.ttf -arphic technology co.-ar pl Tahoma-medium-r-normal--0-0-0-0-p-0-iso8859-4<BR><BR>tahoma.ttf -arphic technology co.-ar pl Tahoma-medium-r-normal--0-0-0-0-p-0-iso8859-5<BR><BR>tahoma.ttf -arphic technology co.-ar pl Tahoma-medium-r-normal--0-0-0-0-p-0-iso8859-9<BR><BR>simsun.ttf -arphic technology co.-ar pl simsun gb-medium-r-normal--0-0-0-0-c-0-ascii-0<BR><BR>simsun.ttf -arphic technology co.-ar pl simsun gb-medium-r-normal--0-0-0-0-c-0-iso10646-1<BR><BR>simsun.ttf -arphic technology co.-ar pl simsun gb-medium-r-normal--0-0-0-0-c-0-gb18030-0<BR><BR>simsun.ttf -arphic technology co.-ar pl simsun gb-medium-r-normal--0-0-0-0-c-0-gb2312-0<BR><BR>simsun.ttf -arphic technology co.-ar pl simsun gb-medium-r-normal--0-0-0-0-c-0-gbk-0<BR><BR>注意要修正第一行的数字，使其等于下面内容的行数。<BR><BR><BR><BR>完成上述步骤后，在Preferences（首选项）里的font（字体）里，不管是中文语言环境还是英文语言环境，都将字体设为英文，具体的那个字体，<BR>就看喜好了。在firefox──包括别的所有不采用系统字体设置的软件里也如此设置。这样，中文和英文就都显示的很完美了，和windows里的一样。<BR><BR><BR><BR>如果还有问题，不妨再增加一个步骤：把 /usr/share/fonts/japanese/TrueType 里的 *.ttf 都用simsun.ttf覆盖──即文件名还是原来的文件名，但是文件内容是simsun.ttf的内容。<BR></TD></TR></TBODY></TABLE><img src ="http://www.cnitblog.com/ygb/aggbug/5365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ygb/" target="_blank">YGB.Grushy</a> 2005-12-14 12:37 <a href="http://www.cnitblog.com/ygb/articles/5365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>