﻿<?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>C++博客-to myself 的分类学习日志-随笔分类-linux</title><link>http://www.cppblog.com/toMyself/category/14824.html</link><description>做自己想做的事</description><language>zh-cn</language><lastBuildDate>Tue, 08 Apr 2014 10:23:15 GMT</lastBuildDate><pubDate>Tue, 08 Apr 2014 10:23:15 GMT</pubDate><ttl>60</ttl><item><title>redhat上安装程序</title><link>http://www.cppblog.com/toMyself/archive/2013/07/26/202127.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Fri, 26 Jul 2013 02:15:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2013/07/26/202127.html</guid><wfw:comment>http://www.cppblog.com/toMyself/comments/202127.html</wfw:comment><comments>http://www.cppblog.com/toMyself/archive/2013/07/26/202127.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/toMyself/comments/commentRss/202127.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/toMyself/services/trackbacks/202127.html</trackback:ping><description><![CDATA[<a href="http://blog.csdn.net/zevin/article/details/8234559" style="color: #333333; text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; background-color: #ffffff;">Red Hat Enterprise Linux AS release 4 安装YUM</a><br />原文：<a href="http://blog.csdn.net/zevin/article/details/8234559">http://blog.csdn.net/zevin/article/details/8234559</a><br /><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">在<span style="font-family: 'Times New Roman';">redhat</span><span style="font-family: 宋体;">中，</span><span style="font-family: 'Times New Roman';">yum</span><span style="font-family: 宋体;">需要单独地安装：</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">（1）先查看当前<span style="font-family: 'Times New Roman';">redhat</span><span style="font-family: 宋体;">系统的版本：</span><span style="font-family: 'Times New Roman';">cat&nbsp;/etc/issue</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显示：<span style="font-family: 'Times New Roman';">Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;AS&nbsp;release&nbsp;4&nbsp;(Nahant&nbsp;Update&nbsp;6)</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kernel&nbsp;\r&nbsp;on&nbsp;an&nbsp;\m</p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;系统信息存放在<span style="font-family: 'Times New Roman';">issue</span><span style="font-family: 宋体;">文件中。</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">（2）</span><span style="color: #333333;">下载</span><span style="color: #333333;">yum</span><span style="color: #333333;">软件包：</span><a href="http://yum.baseurl.org/download/2.0/yum-2.0.8-1.src.rpm" style="color: #ff9900; text-decoration: none;"><span style="color: #220000;">http://yum.baseurl.org/download/2.0/yum-2.0.8-1.src.rpm</span></a></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">（3）</span><span style="color: #333333;">安装(<span style="font-family: 宋体;">由于是</span>RPM<span style="font-family: 宋体;">源码包所以安装比较特殊</span>)</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #333333;">#rpmbuild&nbsp;<span style="font-family: 'Times New Roman';">&#8211;</span>rebuild&nbsp;yum-2.0.8-1.src.rpm</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果按照上面的命令安装，会出现如下错误：</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rpmbuild:&nbsp;arguments&nbsp;to&nbsp;--root&nbsp;(-r)&nbsp;must&nbsp;begin&nbsp;with&nbsp;a&nbsp;/</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解决方法：</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #323d4f;">rpmbuild&nbsp;</span><span style="color: #ff0000;">--</span><span style="color: #323d4f;">rebuild&nbsp;xxx.src.rpm</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">（<span style="font-family: 'Times New Roman';">4</span><span style="font-family: 宋体;">）安装成功后，</span><span style="color: #333333;">进入到:/usr/src/redhat/RPMS/noarch/</span><span style="color: #333333;">，并安装</span><span style="color: #333333;">yum<span style="font-family: 宋体;">的</span>rpm<span style="font-family: 宋体;">包：</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">cd&nbsp;/usr/src/redhat/RPMS/noarch/</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">rpm&nbsp;-ivh&nbsp;yum-2.0.8-1.noarch.rpm</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">&nbsp;&nbsp;（5<span style="font-family: 宋体;">）</span>yum<span style="font-family: 宋体;">的配置文件（如果没有的话，可以自己创建）</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">cat&nbsp;/etc/yum.conf</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">[main]</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">cachedir=/var/cache/yum</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">debuglevel=2</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">logfile=/var/log/yum.log</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">pkgpolicy=newest</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">distroverpkg=redhat-release</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">tolerant=1</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">exactarch=1</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">[base]</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">name=Red&nbsp;Hat&nbsp;Linux&nbsp;$releasever&nbsp;-&nbsp;$basearch&nbsp;-&nbsp;Base</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">baseurl=&nbsp;</span><a href="http://centos.ustc.edu.cn/centos/4/os/i386/" style="color: #ff9900; text-decoration: none;"><span style="color: #0000ff;">http://centos.ustc.edu.cn/centos/4/os/i386/</span></a><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">[updates]</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">name=Red&nbsp;Hat&nbsp;Linux&nbsp;$releasever&nbsp;-&nbsp;Updates</span><span style="color: #333333;"><br /></span><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;">baseurl=&nbsp;</span><a href="http://mirror.centos.org/centos/4/updates/i386/" style="color: #ff9900; text-decoration: none;"><span style="color: #0000ff;">http://mirror.centos.org/centos/4/updates/i386/</span></a></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">或者(64&nbsp;bit)</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">[main]</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">cachedir=/var/cache/yum</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">debuglevel=2</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">logfile=/var/log/yum.log</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">pkgpolicy=newest</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">distroverpkg=redhat-release</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">tolerant=1</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">exactarch=1</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">[base]</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">name=Red&nbsp;Hat&nbsp;Linux&nbsp;$releasever&nbsp;-&nbsp;$basearch&nbsp;-&nbsp;Base</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">baseurl=http://centos.ustc.edu.cn/centos/4/os/x86_64/</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">[updates]</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">name=Red&nbsp;Hat&nbsp;Linux&nbsp;$releasever&nbsp;-&nbsp;$basearch&nbsp;-&nbsp;Base</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">baseurl=http://centos.ustc.edu.cn/centos/4/os/x86_64/</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">现在问题的关键是，</span><span style="color: #333333;">AS4<span style="font-family: 宋体;">的</span>yum<span style="font-family: 宋体;">源现在都不维护了，好多源地址都不可用，少数可用的，</span>rpm<span style="font-family: 宋体;">包还不全。现在是</span>AS5<span style="font-family: 宋体;">和</span>AS6<span style="font-family: 宋体;">最常用了。</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;</p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">Yum&nbsp;update&nbsp;<span style="font-family: 宋体;">的可用源：</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">[base]</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">name=Red&nbsp;Hat&nbsp;Enterprise&nbsp;AS&nbsp;release&nbsp;4&nbsp;Updates</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">baseurl=&nbsp;http://apt.sw.be/redhat/el4/en/i386/dag/</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">http://apt.sw.be/redhat/el4/en/i386/rpmforge/</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">http://mirror.cpsc.ucalgary.ca/mirror/dag/redhat/el4/en/i386/dag/</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">http://mirror.cpsc.ucalgary.ca/mirror/dag/redhat/el4/en/i386/rpmforge/</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">gpgcheck=0</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">但是貌似没有</span><span style="color: #333333;">xorg-x11<span style="font-family: 宋体;">的源</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">（6）</span><span style="color: #333333;">执行&nbsp;yum&nbsp;update&nbsp;</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">会出现</span><span style="color: #333333;">No&nbsp;module&nbsp;named&nbsp;rp<span style="font-family: 宋体;">问题</span></span><span style="color: #333333;">，解决方案：</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">常规解决方法比较麻烦，有一种很土但很简便的方法：</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #222222;">由于<span style="font-family: 'andale mono';">yum</span><span style="font-family: 宋体;">是基于</span><span style="font-family: 'andale mono';">python</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">修改</span><span style="color: #555555;">/usr/bin<span style="font-family: 宋体;">下的关于</span><span style="font-family: Verdana;">yum</span><span style="font-family: 宋体;">的</span><span style="font-family: Verdana;">python</span><span style="font-family: 宋体;">文件：</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #454545;">#</span><span style="color: #e36c09;">vim&nbsp;/usr/bin/yum</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #454545;">将首行显示的&nbsp;<span style="font-family: 'andale mono';">#</span></span><span style="color: #454545;">!</span><span style="color: #454545;">/usr/bin/python&nbsp;<span style="font-family: 宋体;">修改为</span></span><span style="color: #e36c09;">&nbsp;#</span><span style="color: #e36c09;">!</span><span style="color: #e36c09;">/usr/bin/python2.</span><span style="color: #e36c09;">3</span><span style="color: #454545;">（我的系统默认安装的是<span style="font-family: 'andale mono';">python2.</span></span><span style="color: #454545;">3</span><span style="color: #454545;">，你也可以用<span style="font-family: 'andale mono';">whereis&nbsp;python&nbsp;</span><span style="font-family: 宋体;">查看升级前和升级后的版本）&nbsp;</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">执行<span style="font-family: Verdana;">yum&nbsp;--version</span><span style="font-family: 宋体;">，可以发现</span><span style="font-family: Verdana;">yum</span><span style="font-family: 宋体;">正确安装。</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">如果还有别的问题，就是<span style="font-family: Verdana;">yum.conf</span><span style="font-family: 宋体;">文件配置的问题，可以去</span><span style="font-family: Verdana;">/etc</span><span style="font-family: 宋体;">下修改该文件。</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;"><span style="font-family: 宋体;"><br /></span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;"><span style="font-family: 宋体;"><br /></span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;"><span style="font-family: 宋体;"><br /></span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #333333;">TIPS: 常规的繁琐解决方案：</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">由于</span>YUM<span style="color: #555555;">包管理是使用<span style="font-family: Verdana;">Python</span><span style="font-family: 宋体;">编写的，因此如果单独对</span><span style="font-family: Verdana;">Python</span><span style="font-family: 宋体;">进行升级可能会导致</span></span>YUM<span style="color: #555555;">服务无法使用。</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">出现这种情况的主要原因在于新安装的<span style="font-family: Verdana;">Python</span><span style="font-family: 宋体;">没有</span></span>YUM<span style="color: #555555;">服务所依赖的<span style="font-family: Verdana;">Packages</span><span style="font-family: 宋体;">。</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">可以尝试在<span style="font-family: Verdana;">Python</span><span style="font-family: 宋体;">中执行</span><span style="font-family: Verdana;">import&nbsp;</span></span>yum<span style="color: #555555;">语句，如果<span style="font-family: Verdana;">Python</span><span style="font-family: 宋体;">此时抛出异常则表示</span></span>YUM<span style="color: #555555;">无法正常运行。</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">一般情况下出现的问题为：<a name="baidusnap1" style="color: rgb(255, 153, 0); width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a></span>No<span style="color: #555555;">&nbsp;<a name="baidusnap2" style="color: rgb(255, 153, 0); width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a></span>module<span style="color: #555555;">&nbsp;<a name="baidusnap3" style="color: rgb(255, 153, 0); width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a></span>named<span style="color: #555555;">&nbsp;<a name="baidusnap4" style="color: rgb(255, 153, 0); width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a></span>rpm<span style="color: #555555;">，如果这时没有</span>rpm<span style="color: #555555;">-python<span style="font-family: 宋体;">的安装包，那么就需要来重新</span><span style="font-family: Verdana;">build</span><span style="font-family: 宋体;">一个，这个</span><span style="font-family: Verdana;">package</span><span style="font-family: 宋体;">被包含在了</span></span>rpm<span style="color: #555555;">代码当中，所以先要到</span>rpm<span style="color: #555555;">.org<span style="font-family: 宋体;">网站上下载对应机器上</span></span>rpm<span style="color: #555555;">版本的源码包，然后解压，执行<span style="font-family: Verdana;">./configure</span><span style="font-family: 宋体;">，进入</span><span style="font-family: Verdana;">python</span><span style="font-family: 宋体;">子目录，执行</span><span style="font-family: Verdana;">make&nbsp;install</span><span style="font-family: 宋体;">。安装完成后，退出</span><span style="font-family: Verdana;">python</span><span style="font-family: 宋体;">子目录，执行</span><span style="font-family: Verdana;">python</span><span style="font-family: 宋体;">，再次</span><span style="font-family: Verdana;">import&nbsp;</span></span>yum<span style="color: #555555;">，查看是否不再出现</span>No&nbsp;module&nbsp;named&nbsp;rpm<span style="color: #555555;">，如果依然出现可以检查一下安装路径的配置。需要注意的是：<span style="font-family: Verdana;">1.</span><span style="font-family: 宋体;">没有必要对整个</span></span>rpm<span style="color: #555555;">进行安装，只需要对<span style="font-family: Verdana;">python</span><span style="font-family: 宋体;">子目录的部分进行安装；</span><span style="font-family: Verdana;">2.</span><span style="font-family: 宋体;">在执行</span><span style="font-family: Verdana;">import&nbsp;</span></span>yum<span style="color: #555555;">前，一定要先退出<span style="font-family: Verdana;">python</span><span style="font-family: 宋体;">子目录，否则</span><span style="font-family: Verdana;">python</span><span style="font-family: 宋体;">会以当前目录下的</span></span>rpm<span style="color: #555555;">目录作为</span>rpm<span style="color: #555555;">包的目录位置，而不会去引用<span style="font-family: Verdana;">site-packages</span><span style="font-family: 宋体;">目录下的</span></span>rpm<span style="color: #555555;">，会导致出现</span>No&nbsp;module&nbsp;named<span style="color: #555555;">&nbsp;_</span>rpm<span style="color: #555555;">异常。</span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;">rpm<span style="color: #555555;">下载地址</span><a href="http://rpm.org/wiki/Download" style="color: #ff9900; text-decoration: none;"><span style="color: #0000ff;">http://</span><span style="color: #000000;">rpm</span><span style="color: #0000ff;">.org/wiki/Download</span></a></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">除了</span>rpm<span style="color: #555555;">-python<span style="font-family: 宋体;">，其他需要的一些</span><span style="font-family: Verdana;">package</span><span style="font-family: 宋体;">：</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">urlgrabber<span style="font-family: 'Times New Roman';">�</span><span style="font-family: Verdana;">0</span><span style="font-family: 'Times New Roman';">�</span><span style="font-family: Verdana;">2</span></span><a href="http://linux.duke.edu/projects/urlgrabber/download/" style="color: #ff9900; text-decoration: none;"><span style="color: #0000ff;">http://linux.duke.edu/projects/urlgrabber/download/</span></a><span style="color: #555555;"><br /></span><span style="color: #555555;">iniparse&nbsp;</span><a href="http://code.google.com/p/iniparse/" style="color: #ff9900; text-decoration: none;"><span style="color: #0000ff;">http://code.google.com/p/iniparse/</span></a><span style="color: #555555;"><br /></span>yum<span style="color: #555555;">-metadata-parser&nbsp;</span><a href="http://yum.baseurl.org/download/yum-metadata-parser/" style="color: #ff9900; text-decoration: none;"><span style="color: #0000ff;">http://</span><span style="color: #000000;">yum</span><span style="color: #0000ff;">.baseurl.org/download/</span><span style="color: #000000;">yum</span><span style="color: #0000ff;">-metadata-parser/</span></a></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">解压后执行<span style="font-family: Verdana;">python&nbsp;setup.py&nbsp;install</span><span style="font-family: 宋体;">，进行安装。</span></span></p><p style="margin: 0px; padding: 0px; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #555555;">最后再次在<span style="font-family: Verdana;">Python</span><span style="font-family: 宋体;">执行</span><span style="font-family: Verdana;">import&nbsp;</span></span>yum<span style="color: #555555;">，如果不在抛出异常则表示修复成功。这时</span>yum<span style="color: #555555;">就可以正常使用了。</span></p><img src ="http://www.cppblog.com/toMyself/aggbug/202127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2013-07-26 10:15 <a href="http://www.cppblog.com/toMyself/archive/2013/07/26/202127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux/ubuntu常用快捷键</title><link>http://www.cppblog.com/toMyself/archive/2011/01/26/139340.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Wed, 26 Jan 2011 04:54:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2011/01/26/139340.html</guid><description><![CDATA[Linux/ubuntu常用快捷键<br><br>使用WINDOWS的朋友应该在很多时候都用快捷键来替代鼠标的操作，因为那样更方便linux.metadata<br><br>在LINUX中也有很多快捷键，并且大家可以编写自己的脚本然后把它设置成一个快捷键<br><br>可以在系统－首选项－键盘快捷键&nbsp;&nbsp;&nbsp; 里设置，下面就看看有哪些常用的快捷键吧！<br><br>窗口类<br>Alt + F4 -关闭窗口<br>Alt + F5 -取消最大化窗口 (恢复窗口原来的大小)<br>Alt + F7 -移动窗口 (注: 在窗口最大化的状态下无效)<br>Alt + F8 -改变窗口大小 (注: 在窗口最大化的状态下无效)<br>Alt + F9 -最小化窗口<br>Alt + F10- 最大化窗口<br>Alt + Space -打开控制菜单<br><br>Alt + F1 -打开&#8221;应用程序&#8221;菜单<br>Alt + F2 -在GNOME中运行应用程序<br>Ctrl + Alt + D 显示桌面<br>Ctrl + Alt + L 锁定桌面并启动屏幕保护程序<br>Alt + Tab -在不同程序窗口间切换<br>PrintScreen- 全屏抓图<br>Alt + PrintScreen -当前窗口抓图<br>Ctrl + Alt + &#8594; / &#8592; -在不同工作台间切换<br>Ctrl + Alt + Shift + &#8594; / &#8592; -移动当前窗口到不同工作台<br>Ctrl+Alt+Shift+Fn -终端N或模拟终端N(n和N为数字1－6)<br>Ctrl+Alt+Shift+F7 -返回桌面<br>Ctrl+Alt+Shift+F8- 未知（终端或模拟终端）<br><br>原创文章如转载请注明：转自Ubuntu之家 {www.ubuntuhome.com}
<br><br><br><br><img src ="http://www.cppblog.com/toMyself/aggbug/139340.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2011-01-26 12:54 <a href="http://www.cppblog.com/toMyself/archive/2011/01/26/139340.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu 安装程序4种方式</title><link>http://www.cppblog.com/toMyself/archive/2011/01/26/139339.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Wed, 26 Jan 2011 04:53:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2011/01/26/139339.html</guid><description><![CDATA[ubuntu 安装程序4种方式<br>在ubuntu里，能用于安装的软件格式有二种（不包括用wine或其它虚拟安装的）。<br><br>一是.deb包，ubuntu系统是从debian发展而来的，软件安装也沿用了debian的格式，这个是最方便的，如果软件有.bin包的话最好下载这个，<br><br>二是.bin包 .bin文件是所有Linux系统用户通用的软件包，一般是压缩成tar.gz格式的，你下载下来解压就可以了。<br><br>安装软件的方式。<br><br>一是通在在终端输入命令行 sudo apt-get install ******<br><br>终端是在&#8220;应用程序&#8221;里的&#8220;系统工具&#8221;上的konsole ****是指软件名，这个要在后面输入你的密码，（这个是直接在ubuntu的源服务器上下载的，你根本就不用自己去找，只要你知道那个软件的名字就可以安 装了，如安装firefox 只要输入sudo apt-get install firefox 就可以安装了，－－－－前提是源服务器上要有这个软件）<br><br>我的firefox因为已经装好了，所以没有出现安装的信息，如果是其它没安装的 软件，他就会自动安装<br><br>二是在新立得软件管理器里，找到软件，双击，也要输入你的密码，才能安装<br><br>新立得软件管理是在菜单上的&#8220;系统／系统管理&#8220;里<br><br>三是自己下载deb文件，双击安装，<br><br>这个是和windows一样的，相对来说比较方便，<br><br>以QQ 为例，到http://dl_dir.qq.com/linuxqq/linuxqq_v1.0-preview2_i386.deb下载deb包，这对，但也要输入密码，<br><br>第4种比较复杂，安装通用的linux软件包.bin文件时，要先下载.bin文件，再运行命令<br><br>先下载文件到系统盘你的文件夹里，我的用户名是doff<br><br>以 RealPlayer11GOLD.bin 为例，把 RealPlayer11GOLD.bin COPY 到系统盘里的/home/doff 里<br><br>再手动改变RealPlayer11GOLD.bin文件的权限，点右键可以看到这个，最下面有一个&#8220;执行&#8221;的选项，如果不勾选&#8220;允许以程序执行文件&#8221;，程序就无法安装<br><br>再打开终端，输入<br>sudo chmod +x RealPlayer11GOLD.bin<br><br>没有反应，是对的，再输入命令<br>./RealPlayer11GOLD.bin<br><br>注意大小写
<br><img src ="http://www.cppblog.com/toMyself/aggbug/139339.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2011-01-26 12:53 <a href="http://www.cppblog.com/toMyself/archive/2011/01/26/139339.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu启动流程及系统服务设置</title><link>http://www.cppblog.com/toMyself/archive/2010/12/23/137246.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Wed, 22 Dec 2010 16:29:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/12/23/137246.html</guid><description><![CDATA[&nbsp;
<h2><span>Ubuntu</span><span>启动流程及系统服务设置</span> </h2>
<h3><span>启动流程</span></h3>
<p><span>Linux</span><span>系统主要通过以下步骤启动：</span><span> </span></p>
<p><span>1</span><span>、读取</span><span>MBR</span><span>的信息，启动</span><span>Boot Manager Windows</span><span>使用</span><span>NTLDR</span><span>作为</span><span>Boot Manager</span><span>，如果您的系统中安装多个版本的</span><span>Windows</span><span>，您就需要在</span><span>NTLDR</span><span>中选择您要进入的系统。</span><span> Linux</span><span>通常使用功能强大，配置灵活的</span><span>GRUB</span><span>作为</span><span>Boot Manager</span><span>，我们将在启动管理章节中向您介绍它的使用方式。</span><span> </span></p>
<p><span>2</span><span>、加载系统内核，启动</span><span>init</span><span>进程</span><span> init</span><span>进程是</span><span>Linux</span><span>的根进程，所有的系统进程都是它的子进程。</span><span> </span></p>
<p><span>3</span><span>、</span><span>init</span><span>进程读取&#8220;</span><span>/etc/inittab</span><span>&#8221;文件中的信息，并进入预设的运行级别，按顺序运行该运行级别对应文件夹下的脚本。脚本通常以&#8220;</span><span>start</span><span>&#8221;参数启动，并指向一个系统中的程序。</span> <span>通常情况下，&#8220;</span><span>/etc/rcS.d/</span><span>&#8221;目录下的启动脚本首先被执行，然后是&#8220;</span><span>/etc/rcN.d/</span><span>&#8221;目录。例如您设定的运行级别为</span><span>3,</span><span>那么它对应的启动目录为&#8220;</span><span>/etc/rc3.d/</span><span>&#8221;。</span><span> </span></p>
<p><span>4</span><span>、根据&#8220;</span><span>/etc/rcS.d/</span><span>&#8221;文件夹中对应的脚本启动</span><span>Xwindow</span><span>服务器&#8220;</span><span>xorg</span><span>&#8221;</span><span> Xwindow</span><span>为</span><span>Linux</span><span>下的图形用户界面系统。</span><span> </span></p>
<p><span>5</span><span>、启动登录管理器，等待用户登录</span><span> Ubuntu</span><span>系统默认使用</span><span>GDM</span><span>作为登录管理器，您在登录管理器界面中输入用户名和密码后，便可以登录系统。（您可以在&#8220;</span><span>/etc/rc3.d/</span><span>&#8221;文件夹中找到一个名为&#8220;</span><span>S13gdm</span><span>&#8221;的链接）</span><span> </span></p>
<p><span>更改运行级别</span></p>
<p><span>在&#8220;</span><span>/etc/inittab</span><span>&#8221;文件中找到如下内容：</span><span> # The default runlevel. id:2:initdefault: </span><span>这一行中的数字</span><span>2,</span><span>为系统的运行级别，默认的运行级别涵义如下：</span><span> 0 </span><span>关机</span><span> 1 </span><span>单用户维护模式</span><span> 2~5 </span><span>多用户模式</span><span> 6 </span><span>重启</span><span> </span></p>
<p><span>服务管理</span><span> </span></p>
<h3><span>更改启动服务</span><span>&nbsp;</span><span>（在终端里输入</span><span>runlevel</span><span>检查当前状态）</span></h3>
<p><span>在运行级别对应的文件夹中，您可以看到许多文件名以&#8220;</span><span>S##</span><span>&#8221;和&#8220;</span><span>K##</span><span>&#8221;起始的启动脚本链接。</span> <span>例如：</span><span> /etc/rcS.d/S35mountall.sh </span><span>挂载文件系统</span><span> /etc/rcS.d/S40networking </span><span>启用网络支持</span><span> /etc/rc2.d/S13gdm </span><span>启动登录管理器</span><span> /etc/rc2.d/S20makedev </span><span>创建设备文件</span><span> /etc/rc2.d/S23xinetd </span><span>启动超级进程</span><span> init</span><span>进程将以&#8220;</span><span>start</span><span>&#8221;为参数，按文件名顺序执行所有以&#8220;</span><span>S##</span><span>&#8221;起始的脚本。脚本名称中的数字越小，它将被越早执行。例如在&#8220;</span><span>/etc/rc2.d/</span><span>&#8221;文件夹中，&#8220;</span><span>S13gdm</span><span>&#8221;文件名中的数字小于&#8220;</span><span>S23xinetd</span><span>&#8221;</span><span>,</span><span>&#8220;</span><span>S13gdm</span><span>&#8221;将比&#8220;</span><span>S23xinetd</span><span>&#8221;先执行。</span> <span>如果一个脚本链接，以&#8220;</span><span>K##</span><span>&#8221;起始，表示它将以&#8220;</span><span>stop</span><span>&#8221;参数被执行。如果相应服务没有启动，则不执行该脚本。</span> <span>例如：</span><span> /etc/rc2.d/K20powernowd </span><span>针对某种硬件的电源管理支持</span> <span>如果您想禁止某一服务在启动时自动运行，您可以将相应运行级别中的脚本由&#8220;</span><span>S##xxx</span><span>&#8221;重命名为&#8220;</span><span>K##xxx</span><span>&#8221;。</span><span><span>&nbsp;&nbsp; </span></span></p>
<h3><span>手动控制服务</span></h3>
<p><span>您也可以手动运行带有以下参数的启动脚本，来控制系统服务。</span><span> start </span><span>启动</span><span> stop </span><span>停止</span><span> restart </span><span>重启</span> <span>例如：</span><span> /etc/rc2.d/K20powernowd start </span><span>有时您并不清楚当前运行级别，该运行级别下未必有相应脚本；而且此类脚本的前三位字符并不固定，不便于记忆。这时，您可以直接使用&#8220;</span><span>/etc/init.d/</span><span>&#8221;文件夹中的启动脚本（&#8220;</span><span>/etc/rcX.d/</span><span>&#8221;中的启动脚本链接到&#8220;</span><span>/etc/init.d/</span><span>&#8221;文件夹下相应脚本），这也是我们向您推荐的方式。</span> <span>例如：</span><span> /etc/init.d/powernowd start Tips</span><span>：以上命令的位置并没有包含在环境变量的搜索路径中，所以要输入完整路径。</span><span> </span></p>
<h3><span>常用系统服务</span></h3>
<p><span>acpi-support </span><span>高级电源管理支持</span><span> acpid acpi</span><span>守护程序</span><span>.</span><span>这两个用于电源管理，非常重要</span><span> alsa </span><span>声音子系统</span><span> alsa-utils anacron cron</span><span>的子系统，将系统关闭期间的计划任务，在下一次系统运行时执行。</span><span> apmd acpi</span><span>的扩展</span><span> atd </span><span>类似于</span><span>cron</span><span>的任务调度系统。建议关闭</span><span> binfmt-support </span><span>核心支持其他二进制的文件格式。建议开启</span><span> bluez-utiles </span><span>蓝牙设备支持</span><span> bootlogd </span><span>启动日志。开启它</span><span> cron </span><span>任务调度系统，建议开启</span><span> cupsys </span><span>打印机子系统。</span><span> dbus </span><span>消息总线系统</span><span>(message bus system)</span><span>。非常重要</span><span> dns-clean </span><span>使用拨号连接时，清除</span><span>dns</span><span>信息。</span><span> evms </span><span>企业卷管理系统（</span><span>Enterprise Volumn Management system</span><span>）</span><span> fetchmail </span><span>邮件用户代理，用于收取邮件</span><span> gdm gnome</span><span>登录和桌面管理器。</span><span> gdomap gpm </span><span>终端中的鼠标支持。</span><span> halt </span><span>别动它。</span><span> hdparm </span><span>调整硬盘的脚本，配置文件为&#8220;</span><span>/etc/hdparm.conf</span><span>&#8221;。</span><span> hibernate </span><span>系统休眠</span><span> hotkey-setup </span><span>笔记本功能键支持。支持类型包括：</span><span> HP, Acer, ASUS, Sony, Dell, </span><span>和</span><span>IBM</span><span>。</span><span> hotplug and hotplug-net </span><span>即插即用支持，比较复杂，建议不要动它。</span><span> hplip HP</span><span>打印机和图形子系统</span><span> ifrename </span><span>网络接口重命名脚本。如果您有十块网卡，您应该开启它</span><span> inetd </span><span>在文件&#8220;</span><span>/etc/inetd.conf</span><span>&#8221;中，注释掉所有你不需要的服务。如果该文件不包含任何服务，那关闭它是很安全的。</span><span> klogd </span><span>重要。</span><span> linux-restricted-modules-common </span><span>受限模块支持。&#8220;</span><span>/lib/linux-restricted-modules/</span><span>&#8221;文件夹中的模块为受限模块。例如某些驱动程序，如果您没有使用受限模块，就不需要开启它。</span><span> lvm </span><span>逻辑卷管理系统支持。</span><span> makedev </span><span>创建设备文件，非常重要。</span><span> mdamd </span><span>磁盘阵列</span><span> module-init-tools </span><span>从</span><span>/etc/modules</span><span>加载扩展模块，建议开启。</span><span> networking </span><span>网络支持。按&#8220;</span><span>/etc/network/interfaces</span><span>&#8221;文件预设激活网络，非常重要。</span><span> ntpdate </span><span>时间同步服务，建议关闭。</span><span> pcmcia pcmcia</span><span>设备支持。</span><span> powernowd </span><span>移动</span><span>CPU</span><span>节能支持</span><span> ppp and ppp-dns </span><span>拨号连接</span><span> readahead </span><span>预加载库文件。</span><span> reboot </span><span>别动它。</span><span> resolvconf </span><span>自动配置</span><span>DNS rmnologin </span><span>清除</span><span>nologin rsync rsync</span><span>守护程序</span><span> sendsigs </span><span>在重启和关机期间发送信号</span><span> single </span><span>激活单用户模式</span><span> ssh ssh</span><span>守护程序。建议开启</span><span> stop-bootlogd </span><span>在</span><span>2</span><span>，</span><span>3</span><span>，</span><span>4</span><span>，</span><span>5</span><span>运行级别中停止</span><span>bootlogd</span><span>服务</span><span> sudo </span><span>检查</span><span>sudo</span><span>状态。重要</span><span> sysklogd </span><span>系统日志</span><span> udev &amp; udev-mab </span><span>用户空间</span><span>dev</span><span>文件系统（</span><span>userspace dev filesystem</span><span>）。重要</span><span> umountfs </span><span>卸载文件系统</span><span> urandom </span><span>随机数生成器</span><span> usplash </span><span>开机画面支持</span><span> vbesave </span><span>显卡</span><span>BIOS</span><span>配置工具。保存显卡的状态</span><span> xorg-common </span><span>设置</span><span>X</span><span>服务</span><span>ICE socket</span><span>。</span><span> adjtimex </span><span>调整核心时钟的工具</span><span> dirmngr </span><span>证书列表管理工具</span><span>,</span><span>和</span><span>gnupg</span><span>一起工作。</span><span> hwtools irqs</span><span>优化工具</span><span> libpam-devperm </span><span>系统崩溃之后，用于修理设备文件许可的守护程序。</span><span> lm-sensors </span><span>板载传感器支持</span><span> mdadm-raid </span><span>磁盘陈列管理器</span><span> screen-cleanup </span><span>清除开机屏幕的脚本</span><span> xinetd </span><span>管理其他守护进程的一个</span><span>inetd</span><span>超级守护程序</span><span> </span></p>
<h3><span>重要配置文件</span> </h3>
<p><span>无论任何情况下，在修改配置文件之前，请您先备份它！</span> <span>建议您使用这个命令：&#8220;</span><span>sudo cp xxx xxx_`date +%y%m%d_%H:%M`</span><span>&#8221;。</span> <span>当然这很麻烦，您可以新建一个名为&#8220;</span><span>bak</span><span>&#8221;的文件，内容如下：</span><span> #!/bin/bash sudo cp $1 $1_`date +%y%m%d_%H:%M` </span><span>把它放在您能够记住的目录下，比如&#8220;</span><span>/home</span><span>&#8221;，执行命令&#8220;</span><span>sh /home/bak xxx</span><span>&#8221;，就可以将当前文件夹下的文件&#8220;</span><span>xxx</span><span>&#8221;另存为&#8220;</span><span>xxx_yymmdd_HH:MM</span><span>&#8221;的格式了</span><span> </span></p>
<h3><span>全局配置文件</span></h3>
<p><span>系统初始化</span><span> /etc/inittab </span><span>运行级别、控制台数量</span><span> /etc/timezone </span><span>时区</span><span> /etc/inetd.conf </span><span>超级进程</span> <span>文件系统</span><span> /etc/fstab </span><span>开机时挂载的文件系统</span><span> /etc/mtab </span><span>当前挂载的文件系统</span> <span>用户系统</span><span> /etc/passwd </span><span>用户信息</span><span> /etc/shadow </span><span>用户密码</span><span> /etc/group </span><span>群组信息</span><span> /etc/gshadow </span><span>群组密码</span><span> /etc/sudoers Sudoer</span><span>列表（请使用&#8220;</span><span>visudo</span><span>&#8221;命令修改此文件，而不要直接编辑）</span><span> Shell /etc/shell </span><span>可用</span><span>Shell</span><span>列表</span><span> /etc/inputrc ReadLine</span><span>控件设定</span><span> /etc/profile </span><span>用户首选项</span><span> /etc/bash.bashrc bash</span><span>配置文件</span> <span>系统环境</span><span> /etc/environment </span><span>环境变量</span><span> /etc/updatedb.conf </span><span>文件检索数据库配置信息</span><span> /etc/issue </span><span>发行信息</span><span> /etc/issue.net /etc/screenrc </span><span>屏幕设定</span> <span>网络</span><span> /etc/iftab </span><span>网卡</span><span>MAC</span><span>地址绑定</span><span> /etc/hosts </span><span>主机列表</span><span> /etc/hostname </span><span>主机名</span><span> /etc/resolv.conf </span><span>域名解析服务器地址</span><span> /etc/network/interfaces </span><span>网卡配置文件</span><span>&nbsp;</span></p>
<h3><span>用户配置文件</span></h3>
<p><span>&#8220;</span><span>/etc/</span><span>&#8221;目录下的所有文件，只有</span><span>root</span><span>用户才有修改权限。应用软件的全局配置文件，普通用户也不能够修改，如果您想配置软件，以适应您的需求，您可以修改它的用户配置文件。用户配置文件通常为全局配置文件的同名隐藏文件，放在您的</span><span>$HOME</span><span>目录下，例如：</span><span> /etc/inputrc /home/user/.inputrc /etc/vim/vimrc /home/user/.vim/vimrc </span><span>也有少数例外，通常是系统程序</span><span> /etc/bash.bashrc /home/user/.bashrc</span></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/137246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-12-23 00:29 <a href="http://www.cppblog.com/toMyself/archive/2010/12/23/137246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ssh的安装配置和使用</title><link>http://www.cppblog.com/toMyself/archive/2010/12/22/137238.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Wed, 22 Dec 2010 15:29:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/12/22/137238.html</guid><description><![CDATA[ssh的安装配置和使用<br>参考：<br>1，<a href="http://blog.chinaunix.net/u2/80598/showart_1907150.html">http://blog.chinaunix.net/u2/80598/showart_1907150.html</a><br>2，<a href="http://www.aixchina.net/club/viewthread.php?tid=25583">http://www.aixchina.net/club/viewthread.php?tid=25583</a><br>
<img src ="http://www.cppblog.com/toMyself/aggbug/137238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-12-22 23:29 <a href="http://www.cppblog.com/toMyself/archive/2010/12/22/137238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Samba共享文件</title><link>http://www.cppblog.com/toMyself/archive/2010/12/22/137149.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Tue, 21 Dec 2010 16:33:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/12/22/137149.html</guid><description><![CDATA[Linux与Windows 共享文件Samba <br>Ubuntu samba安装创建共享目录及使用<br>参考：<br>1， <a href="http://os.51cto.com/art/201002/183766.htm">http://os.51cto.com/art/201002/183766.htm</a><br><br><font size="2"><strong></strong> <strong>设置</strong> <strong> Samba</strong> <strong> 密码文件</strong> <strong> &nbsp;</strong> </font>
： http://blog.csdn.net/annicybc/archive/2006/08/28/1133899.aspx
<br><br>[share] &nbsp;<br>path = /home/jason/Share<br>available = yes <br>browseable = yes <br>public = no<br>valid users = jason<br>writable = yes
<br> <img src ="http://www.cppblog.com/toMyself/aggbug/137149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-12-22 00:33 <a href="http://www.cppblog.com/toMyself/archive/2010/12/22/137149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux图形界面</title><link>http://www.cppblog.com/toMyself/archive/2010/11/16/133801.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Tue, 16 Nov 2010 05:59:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/11/16/133801.html</guid><wfw:comment>http://www.cppblog.com/toMyself/comments/133801.html</wfw:comment><comments>http://www.cppblog.com/toMyself/archive/2010/11/16/133801.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/toMyself/comments/commentRss/133801.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/toMyself/services/trackbacks/133801.html</trackback:ping><description><![CDATA[关于linux图形界面的基本概念<br><br>应用程序级别的系统,不是独立的操作系统,同样 XFree只是linux下的一个应用程序而已.不是系统的一部分,但是X的处在可以方便用户使用电脑.WINDOWS95及以后的版本就不一样了,他们的图形界面是操作系统的一部分,图形界面在系统内核中就实现了,没有了图形界面windows就不成为windows了,但linux却不一样,没有图形界面linux还是linux,很多装linux的WEB服务器就根本不装X服务器.这也WINDOWS和linux的重要区别之一.<br><br>　　二,X是协议,不是具体的某个软件:<br><br>　　X是协议,就像HTTP协议,IP协议一样,这个概念很多初学者甚至学习LINUX有一定时间的人都混淆,一个基于X的应用程序需要运行并显示内容时他就联接到X服务器,开始用X协议和服务器交谈.比如一个X应用程序要在屏幕上输出一个圆那么他就用X协议对X服务器说:喂!我需要在屏幕上画一个圆.X应用程序只负责告诉X服务器在屏幕的什么地方用什么颜色画一个多大的圆,而具体的"画"的动作,比如这个圆如何生成,用什么显卡的驱动程序去指挥显卡完成等等工作是由X服务器来完成的.X服务器还负责捕捉键盘和鼠标的动作,假设X服务器捕捉到鼠标的左键被按下了,他就告诉X应用程序:亲爱的应用程序先生,我发现鼠标被按下了,您有什么指示吗?<br><br>　　如果X应用程序被设计成当按下鼠标左健后再在屏幕上画一个正方形的话,X应用程序就对X服务器说:请再画一个正方形,当然他会告诉服务器在什么地方用什么颜色画多大的正方形,但不关心具体怎么画--那是服务器的事情.<br><br>　　那么协议是需要具体的软件来实现的,这就是下面我要讲的:<br><br>　　三,X和XFree86的关系.<br><br>　　有了协议就需要具体的软件来实现这个协议.就好比我们有了交通法规就需要交警去根据法规维护交通秩序一样.XFree86就是这样一个去根据法规实现协议的"交警".他按照X协议的规定来完成X应用程序提交的在屏幕上显示的任务.当然不仅仅是某个特定的交警才可以去维护和实现这个法规,比如还可以由交通协管员来实现交通法规,必要的时候警察也可以介入,当然前提是他们都要懂得交通法规,也就是要懂得协议.所以实现X协议的软件也并不只有 XFree86,XFree86只是实现X协议的一个免费X服务器软件.<br><br>　　商业上常用MOTIF,现在还有XORG,还有很多很小的由爱号者写的小的X服务器软件.甚至可以在WINDOWS上有X服务器运行,这样你可以在linux系统上运行一个X应用程序然后在另一台windows系统上显示.多么神气.你可以用google找到这样的X服务器软件.<br><br>　　只不过在LINUX上最常用的是XFree86.顺便说一句,苹果电脑的图形界面用的也是X协议,而且被认为是做的最好的X协议图形界面,并且他对X协议的实施是做在系统内核里的,所以性能明显好很多,这就是为什么很多大型三维图形设计软件都是在苹果平台上的原因.<br><br>　　为了便于理解拿HTTP协议来比较:<br><br>　　协议是HTTP (hyper text transmission protocol)<br><br>　　实现这个协议的常用服务器有:apache IIS 等<br><br>　　请求这些服务器传输文件的客户有:IE ,MOZILLA ,NETSCAPE等.<br><br>　　四,X和X11R6又是什么关系?<br><br>　　不知道初学者有没有注意到/usr/X11R6这个目录,这是XFree的默认安装目录<br><br>　　X11R6 实际上是 X Protocol version 11 Release 6<br><br>　　(X协议第11版第六次发行)的意思,就是说目前用的X协议是第11版的,然后经过了6次小的修正.不同版本的X协议是不能通信的.就象我们现在IPV4和IPV6不能通信一样,不过不用担心,现在的X服务器软件和X应用程序都遵循X11R6.<br><br>　　另外XFree86 3.3.6 XFree8*.3.6 等这些版本是实现X协议的软件XFree86的版本号.这是初学者经常高混淆的概念.<br><br>　　协议版本和实现协议的软件的版本--这两个概念的区别你分清除了吗?<br><br>　　五,X服务器和WM(window manager 窗口管理器)之间是什么关系.<br><br>　　平时大家起动图形界面是怎么启动的呢?<br><br>　　如果你是一开己就进入图形界面那就太遗憾了.应为你错过了了解X服务器起动过程的好时机.不过没关系.你打开一个XTERM输入:<br><br>　　init 3<br><br>　　就可以安全的回到字符界面.<br><br>　　好了,等做完以下实验你就完全明白X和WM(window manager 窗口管理器)之间是什么关系了.<br><br>　　先输入以下命令:<br><br>　　#startx<br><br>　　起动图形界面,你看到的是一个和平时使用一样的完整的图形界面操作环境.<br><br>　　你可以最大化,最小化,移动,关闭窗口等.<br><br>　　按ctrl+alt+backspace反回字符界面.<br><br>　　输入:<br><br>　　#xinit<br><br>　　再次启动图形界面,你看到了什么,你看到一个XTERM.而且不能移动.但是你可以在这个XTERM中输入命令打开X应用程序,如故我输入:<br><br>　　#mozilla<br><br>　　打开浏览器,你看到的浏览器和平时有什么不同吗?他在屏幕中间,不能移动,不能最小化,不能最大化,没有边框.<br><br>　　为什么同样一个X应用程序会有这样的不通呢?因为我们用startx起动图形界面的时候同时也启动了一个WM(即窗口管理器),如果你用KDE就起动了KDE,如果你用GNOME就起动了GNOME.但是你用xinit起动图形界面的时候却没有起动WM.<br><br>　　现在你明白窗口管理器的作用了吗?他的作用就是最大化,最小化,移动,关闭窗口等.而这些不是X服务器来负责完成的.<br><br>　　如果你用xinit起动图形界面并在xterm中输入twm,看看会有什么?<br><br>　　xterm被加上了一个边框,你可以通过这个边框移动,最大化,最小化这个xterm,twm就是XFree86中自带的窗口管理器,是一个比较简陋的最简单的窗口管理器,但是他具有窗口管理器的全部特征.<br><br>　　如果你不输入twm而输入gnome-session就可以起动GNOME<br><br>　　或者输入startkde起动KDE.<br><br>　　通过以上的实验你就可以清楚的明白他们之间的关系.<br><br>　　六,关于KDE和GNOME<br><br>　　KDE和GNOME是LINUX里最常用的图形界面操作环境,他们不仅仅是一个窗口管理器那么简单,<br><br>　　KDE是KING DESKTOP ENVIRMENT (桌面环境之王)的缩写.他不仅是一个窗口管理器,还有很多配套的应用软件和方便使用的桌面环境,比如任务栏,开始菜单,桌面图标等等.<br><br>　　GNOME是GNU Network Object Model Envirment 的缩写.和KDE一样,也是一个功能强大的综合环境.<br><br>　　另外在其它UNIX系统中,常常使用CDE作为这样一个环境.<br><br>　　其它的小型窗口管理器有:<br><br>　　window maker,after step,blackbox,fvwm,fvwm2,等等都是常用的优秀窗口管理器.REDHAT9中有 window maker 但是默认不安装,大家可以装来试试.只要xinit再wmaker&amp;就可以用windowmaker了.<br><br>　　七,linux图形界面层次关系总结<br><br>　　linux本身--&gt; X服务器--&gt; 窗口管理器(综合桌面环境)<br><br>　　--&gt;X应用程序.<br><br>　　以上就是linux图形界面的大概情况.<br><br>注：<br>&nbsp;&nbsp; &nbsp;xterm是一个X Window System上的标准虚拟终端。用户可以在同一个显示器上开启许多xterm，每一个都为其中运行的进程提供独立的输入输出（一般来说此进程是Unix shell）。<br>&nbsp;&nbsp; &nbsp;xterm 很早就在 X Window System 中出现。它最先是Jim Gettys的学生Mark Vandevoorde在1984年夏天为VS100写的独立虚拟终端，当时X的开发刚刚开始。很快人们就发现它作为X的一部分比作为独立的程序更为有用，于是它开始针对X而开发。Gettys曾讲述过有关的故事 [1]，&#8220;xterm内部如此恐怖的部分原因是它最初被计划开发成一个能驱动多个VS100显示器的单独进程。&#8221;（"part of why xterm's internals are so horrifying is that it was originally intended that a single process be able to drive multiple VS100 displays."）<br>作为X参考实现的一个部分后多年，1996年左右，开发的主干转移至了XFree86（从X11R6.3版本派生出来），现在由Thomas Dickey维护。<br>有许多xterm变体可用。大多数的X虚拟终端都是从xterm的变体起步的。<br><br>&nbsp;&nbsp; &nbsp;rxvt is a terminal emulator for the X Window System (and, in the form of a Cygwin port, for Windows), originally written by Rob Nation and later extensively modified by Mark Olesen, who took over maintenance for several years. It is intended to be a slimmed-down replacement for xterm, omitting some of its little-used features, like Tektronix 4014 emulation and toolkit-style configurability. The latter refers to the Xt resource mechanism, e.g., for binding keys. rxvt is an extended version of the older xvt terminal emulator by John Bovey of the University of Kent. The name originally stood for "Robert's xvt", but was later re-dubbed "our xvt" (pronounced like the letters r-x-v-t).<br><br>Aside from features such as those controlled by resource files, rxvt's terminal emulation differs from xterm in two important ways:<br><br>&nbsp;&nbsp;&nbsp; * it emulates a VT102, rather than a VT220. That means that it handles 8-bit data differently, does not implement the C1 controls that xterm does. xterm does implement a switch "-k8"[1] to suppress that functionality; rxvt does not provide an option to emulate a VT220.<br>&nbsp;&nbsp;&nbsp; * the strings sent for function keys are different. xterm sends strings that are encoded using the same rules as the ANSI/ISO escape sequences. Rxvt's do not, though they provide comparable flexibility in this area.<br><br>Newer versions of rxvt have primitive support for pseudo-transparency.<br><br>The rxvt distribution also includes an analog clock program called rclock. Very old distributions included a copy of vttest, but dropped that in 1996 with version 2.18.<br><br>&nbsp;&nbsp; &nbsp;xterm 是图形界面下virtual terminal的一个实现<br>&nbsp;&nbsp; &nbsp;virtual terminal ,是一个协议,一个接口,用于在各种连接环境中提供如同本机控制台一样的界面<br>&nbsp;&nbsp; &nbsp;文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入，向操作系统解释你的输入，并且处理各种各样的操作系统的输出结果。<br>&nbsp;&nbsp; &nbsp;shell提供了你与操作系统之间通讯的方式。<br>&nbsp;&nbsp; &nbsp;简单来讲 本地文本登陆后,你就在本地连接到了shell ,通过agetty等本地虚拟控制台可以提供多个终端, 你也可以通过远程的网络连接,拨号连接,甚至串口连接 通过一些服务连接到一个远程服务器的shell ,然后这个shell在本地的表现方式就叫做虚拟控制台, xterm是x窗口环境中对本地虚拟控制台的一个实现。<br><br><br>&nbsp;&nbsp; Xfree86服务器的实现包括两个部分，一部分是和显卡直接打交道的低层，一部分是和X应用程序打交道的上层。上层负责接收应用程序的请求和鼠标键盘的动作。而和显卡直接打交道的底层负责指挥显卡生成图形，其实就是显卡驱动。上层接收到应用程序的请求后，将请求内容做适当处理，然后交给显卡驱动来指挥显卡完成画图的动作。另外，上层的捕捉键盘和鼠标动作的部分会向应用程序提供鼠标和键盘的状态信息，应用程序接收到这些信息后决定是否再有相应的动作。<br>&nbsp;&nbsp;&nbsp; 平时说的VESA，VGA ，fbdev等其实就是针对不同模式显卡的驱动程序。VESA(Video Electronics Standards Association)，VGA (Video Graphics Array)，fbdev (FrameBuffer Device)等都是不同的显卡标准，不过这些标准都已经很老了。现在的显卡都兼容这几种模式。<br>framebuffer模式的显卡本身不具有任何运算数据的能力，他好比是一个暂时存放水的水池。CPU将运算后的结果放到这个水池，水池再将结果流到显示器。中间不会对数据做处理，所有显示任务都有CPU完成，CPU负担很重。<br>在linux内核中有有framebuffer机制，摹仿framebuffer显卡的这种功能。他的好处是把显卡的硬件结构抽象掉，把所有的显卡都当做一个"水池"来用。应用程序也可以直接读取这个水池的内容。framebuffer的设备名是 /dev/fb。可以用命令:#dd if=/dev/zero of=/dev/fb清空屏幕。如果你的X用的是framebuffer的驱动，屏幕将全变黑。通过移动鼠标，切换窗口等动作可以让原先的内容重新显示。<br><br>如果你不用framebuffer驱动，可以在字符模式下做这个试验。屏幕将全部被清空。<br>以下的命令:<br>#dd if=/dev/fb of=fbfile<br>可以将fb中的内容保存下来，以后可以重新写回屏幕:<br>#dd if=fbfile of=/dev/fb<br>作用类似于屏幕截图，但是截下的图不能用普通图片浏览器看。<br><br>现在知道linux中framebuffer设备的神奇了吧。<br>linux字符界面在高分辨率下，启动时会有一个小企鹅logo，这个logo就是用framebuffer功能写上屏幕的。<br><br>VESA和VGA比FB要好很多，但是他的显示能力也很有限。CPU仍旧要处理大部分的显示任务。<br><br>现在的显卡就不一样了，CPU几乎不参数显示任务，而专注于运算工作。我们平时在linux下装显卡驱动，其实就是替换掉XFree86中底层的那一部分。 使他有更强的显示能力。比如你的显卡是nvidia的，XFree默认的驱动是"nv"，他是一个nvidia显卡的通用驱动，但是他不能发挥 nvidia显卡的性能。这个"nv"驱动模块可以在:<br>/usr/X11R6/lib/modules/drivers<br>目录下找到，文件名是:nv_drv。o<br><br>这个目录下还有很多显卡驱动模块。<br>apm_drv.o dummy_drv.o nsc_drv.o sis_drv.o<br>ark_drv.o fbdev_drv.o nv_drv.o tdfx_drv.o<br>ati_drv.o glint_drv.o r128_drv.o tga_drv.o<br>atimisc_drv.o i128_drv.o radeon_drv.o trident_drv.o<br>chips_drv.o i740_drv.o rendition_drv.o tseng_drv.o<br>cirrus_alpine.o i810_drv.o s3_drv.o vesa_drv.o<br>cirrus_drv.o linux s3virge_drv.o vga_drv.o<br>cirrus_laguna.o mga_drv.o savage_drv.o<br>cyrix_drv.o neomagic_drv.o siliconmotion_drv.o<br>fbdev vga evsa 等都在其中。<br><br>只要在XF86Conf文件中的Section module段中指定了什么驱动，X就用哪个驱动。<br>代码:<br>Section "Module"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load&nbsp; "dbe"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load&nbsp; "extmod"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load&nbsp; "fbdevhw" #这里用的是fbdev<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load&nbsp; "glx"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load&nbsp; "record"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load&nbsp; "freetype"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load&nbsp; "type1"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load&nbsp; "dri"<br>EndSection<br>这是XFree86 4。0以上版本的方法。即X主程序和驱动模块是分开的。<br><br>主程序是/usr/X11R6/bin/XFree86 (即上层部分)<br>然后主程序启动的时候根据配置文件决定用哪一个驱动。<br><br>但是，在XFree86以前的版本(3。3。6)中， X主程序和驱动模块是合在一起的，因此，以前的Xfree86 3。3。6 有很多针对不同显卡的版本。<br><br>另外其他的X服务器如KDrive 也是驱动也主程序整合的，因此同样是KDrive X服务器会有 VESA ，SVGA ，和 fbdev的版本之分。因为这些都是轻量级的X服务器，为了简化结构他做成这样。<br><br>Xfree86 4 做成驱动和主程序分离的好处是用户可以自己添加升级驱动。<br><br><br>四大Linux图形界面赏析：KDE、Gnome、Xfce、LXDE<br><br>GNOME和KDE是目前的主流环境，而Xfce、LXDE、Openbox和Fluxbox等也已经得到了很高的应用。下面，编者就以上图形桌面环境进一步的解析。<br><br>　　KDE<br><br>　　KDE(Kool Desktop Environment)项目始建于1996年10月，相对于GNOME还要早一些。KDE项目是由图形排版工具Lyx的开发者、一位名为 Matthias Ettrich的德国人发起的，目的是为满足普通用户也能够通过简单易用的桌面来管理Unix工作站上的各种应用软件以及完成各种任务。<br>在应用开发方面，KDE项目已经开发了一流的复合文档应用程序框架，实现了最先进的框架技术并且因此把它自己直接置身于和诸如微软的MFC/COM /ActiveX技术等流行开发框架相竞争的位置。KDE的KParts复合文档技术使得开发人员可以快速创建一流的应用程序以实现最尖端的技术。<br><br>　　在应用程序上，KDE也拥有了可以与微软office媲美的办公应用套件KOffice，其分别由电子表格、幻灯片制作程序、组织者、新闻客户端等应用组成。还集成常见的Web浏览器、电子邮件客户端、办公套件、图形图像处理软件，以及桌面主题功能、配置功能、KDE帮助中心等各种管理工具。同时，还支持60余种语言的翻译。<br><br>　　其实，从系统的安装过程，你就能体验KDE给你带来的便捷，各种语言、时区、安装磁盘、用户设置以及网络设置等工作，都无需去考虑输入什么命令，直接用鼠标点选即可。<br>目前，KDE最新版本是4.5.0，进一步提高了稳定性和性能。可以体验到，KDE的操作习惯越来越与Win9x有很多相似之处，支持鼠标拖放、类似快捷方式，即使你是一个刚接触Linux的新手，也能很快上手。<br><br>　　GNOME<br><br>　　GNOME计划发起于1997年8月，所以，你可以在GNOME的LOGO上见到1997的字样。发起人是Miguel de Icaza和Federico Mena，GNOME计划当初的目标就是完全基于自由软件，构造那种功能完善、操作简单以及界面友好的桌面环境，希望走国际化道路，尽可能多地为各种国家的人所使用。目前，GNOME已经基本上可以成为KDE的替代品。<br>GNOME不仅仅提供了一个吸引人的桌面环境，而且还提供一个开发平台，一个能使开发的应用程序与桌面其它部分集成的可扩展框架。<br><br>　　GNOME的结构包括：一个面板、桌面以及一系列标准的桌面工具和很多功能强大的应用软件。这些应用软件包括：文件管理器、电子表格处理软件、字理软件、电子表格软件、邮件阅读器、MP3播放器、简单的编辑器以及可以与PhotoShop媲美的图像处理软件等常用软件。<br><br>　　同时，GNOME还集成了软件更新和管理工具，基于Web的软件发布和自动升级工具，可平滑、安全地运行最新的开放资源和下载最新的补丁。<br><br>　　如果，你体验过GNOME就会知道，GNOME的这些应用软件是如何让Linux系统更具可操作性，鼠标拖拽以及左右键功能、编辑文档、绘制图片、收发邮件、音频和视频的播放、即时通讯工具聊天......这些使用体验与你在Windows下几乎没有差别。<br><br>　　虽然，GNOME最初是GNU/Linux的桌面，但是现在GNOME已经运行在大多数类Unix系统(如*BSD变体、AIX、IRIX、 HP-UX)和几乎所有的Linux系统之上。目前，gnome.org上显示GNOME最新版本是2.3，而在2011年将发布的GNOME3的体验据介绍将可以匹敌Windows 7，我们将拭目以待。<br><br>　　XFCE<br><br>　　Xfce(XForms Common Environment)创建于2007年7月，类似于商业图形环境CDE，是一个运行在各类Unix下的轻量级桌面环境。原作者Olivier Fourdan最先设计XFce是基于XForms三维图形库。Xfce设计目的是用来提高系统的效率，在节省系统资源的同时，能够快速加载和执行应用程序。<br>XFce最主要的特色是容易配置，整个过程都可以使用鼠标来完成，而不需要修改配置文件的代码。最新版本的XFce还支持鼠标拖放、系统任务管理、多字节在内的多国语言以及其它特征。<br>同时，XFce桌面环境的结构包括：一个叫XFwm的窗口管理器、主面板、文件管理器、背景管理器、声音管理器以及GNOME兼容模块等。另外，还有很多第三方的应用程序：文字编辑器、文件管理器、日历程序、CD 和 DVD 烧录程序、媒体播放器、浏览器等。<br><br>　　从体验过程来看，虽然，没有GNOME和KDE的应用程度那么高，但是Xfce简单高效的特点，仍然为其赢得了非常多的用户青睐。目前，Xfce最新版本是4.6.2。<br>　　LXDE<br><br>　　LXDE(Lightweight X11 Desktop Environment)创建于2006年，主要为Unix以及如Linux、BSD等POSIX相容平台上提供一个轻量、快速的桌面环境。开发者主要是为Open PCMan的著名台湾开放源代码程式设计者洪任谕(PCMan)、钱逢祥(Fred Chien)，以及其他活跃开发者刘颖骏(Paul Liu)、李健秋(Andrew Lee)及黄敬群(jserv)等。<br>　　相对于GNOME和KDE这些桌面环境，LXDE属于小巧玲珑类型的。LXDE更加注重于实用性和轻巧性，并且尽力降低其所耗系统资源。不同于其它桌面环境，其元件相依性极少。取而代之的是各元件可以独立运作，大多数的元件都不须倚赖其它套件而可以独自执行。<br><br>　　LXDE使用Openbox为其默认窗口管理器，并且希望能够提供一个建立在互相独立套件上的轻量级快速的桌面。另外，LXDE也集成了一些应用程序和工具：图片浏览器，外观、字型、布景主题管理工具、音乐播放器、屏幕设定工具、面板管理工具、编辑工具、系统资源监控以及工作管理员和轻巧的档案及桌面管理程式等。<br><br>　　从体验过程来看，LXDE确实对系统硬件要求比较低，甚至1999年出产的计算机都可以正常执行。所以，如果你有一台即将淘汰的计算机安装Linux系统，那么LXDE必将是你不错的选择。<br><br>　　这里选择只选择众多图形桌面环境的四种做体验，其中也是因为很多人将GNOME与KDE，以及XFCE与LXDE分别作比较。<br><br>　　综合整个体验过程，从效果上看，Windows在Linux系统面前应该说没有太多优势可言。KDE和GNOME强大的功能以及绚丽多彩的界面一点不逊色于Windows，甚至还要好于它;同时在特效展示方面，例如半透明和三维界面，Windows能够做到的，依赖强大的KDE和GNOME同样可以做到。而且，最近Ubuntu下一个版本也将支持多点触摸。<br><br>　　当然，如果你的计算机硬件配置不高，又或者是在移动设备中，轻量级的桌面环境就将发挥重要作用。<br><br>　　所以，我们可以看到，通过形形色色的图形桌面环境的介入，Linux系统正进入一个高速发展的阶段，Linux桌面应用的普及渐渐打开了一个新天地。<br><br><br>linux下图形界面开发<br>&nbsp;&nbsp; &nbsp;QT是个不错的选择，KDE桌面操作系统就是用QT开发的。其支持WINDOWS和LINUX两种操作系统。最高版本好像是4以上了。其界面开发工具是QT DESIGNER，还是比较好用，有点像VC。你可以装起先试下，在其网站上可以直接下载free的版本。<br>&nbsp;&nbsp; &nbsp;官方网址：www.trolltech.com/ <br>&nbsp;&nbsp; &nbsp;Qt是一个跨平台的C++图形用户界面库,.由挪威TrollTech公司出品，目前包括Qt/X11，基于Frambuffer的Qt Embedded,快速开发工具Qt Designer几国际化工具Qt Linguist等．Qt支持Unix及Linux系统,还支持 Windows NT/Windows 2k及Qindows 95/98平台.Qt的良好封装机制使其模块化程度非常高,可重用性较好.<br>&nbsp;&nbsp; &nbsp;Qt/Embeded是面向嵌入式系统的Qt版本，是Qt的嵌入式Linux窗口，是完整的自包含C++ GUI和基于Linux的嵌入式品台开发工具。Qt/Embeded　API可用于多种开发项目。许多基于Qt的X　Window程序可以非常方便地移植到嵌入式版本。<br><br><br>配置<br>开机为文本界面，由文本界面切换到图形界面：<br>&nbsp;&nbsp;&nbsp; 方法1：运行命令<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #startx ， 需要先配置图形界面信息，（暂时不会~） ；<br>&nbsp;&nbsp;&nbsp; 方法2：修改/etc/inittab文件中的<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id:3:initdefault ， 将3改为5 ，重新启动系统；<br><br><br><br><br><br>
<br><img src ="http://www.cppblog.com/toMyself/aggbug/133801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-11-16 13:59 <a href="http://www.cppblog.com/toMyself/archive/2010/11/16/133801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux启动过程</title><link>http://www.cppblog.com/toMyself/archive/2010/10/23/131008.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Sat, 23 Oct 2010 13:42:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/10/23/131008.html</guid><wfw:comment>http://www.cppblog.com/toMyself/comments/131008.html</wfw:comment><comments>http://www.cppblog.com/toMyself/archive/2010/10/23/131008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/toMyself/comments/commentRss/131008.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/toMyself/services/trackbacks/131008.html</trackback:ping><description><![CDATA[<p>&nbsp; </p>
<h2><span>剖析</span><span>Linux</span><span>系统启动过程</span></h2>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>原文地址：</span> <span><a href="http://www.5dmail.net/html/2004-11-29/20041129102711.htm">http://www.5dmail.net/html/2004-11-29/20041129102711.htm</a> </span></p>
<p align=left><span>内容提要<span><br></span>　　本文以<span>RedHat9.0</span>和<span>i386</span>平台为例，剖析了从用户打开电源直到屏幕出现命令行提示符的整个<span>Linux</span>启动过程。并且介绍了启动中涉及到的各种文件。 </span></p>
<p align=left><span>　　阅读<span>Linux</span>源代码，无疑是深入学习<span>Linux</span>的最好方法。在本文对<span>Linux</span>启动过程的介绍中，我们也尝试从源代码的视角来更深入的剖析<span>Linux</span>的启动过程，所以其中也简单涉及到部分相关的<span>Linux</span>源代码，<span>Linux</span>启动这部分的源码主要使用的是<span>C</span>语言，也涉及到了少量的汇编。而启动过程中也执行了大量的<span>shell(</span>主要是<span>bash shell)</span>所写脚本。为了方便读者阅读，笔者将整个<span>Linux</span>启动过程分成以下几个部分逐一介绍，大家可以参考下图：</span></p>
<p align=left><span>　　当用户打开<span>PC</span>的电源，<span>BIOS</span>开机自检，按<span>BIOS</span>中设置的启动设备<span>(</span>通常是硬盘<span>)</span>启动，接着启动设备上安装的引导程序<span>lilo</span>或<span>grub</span>开始引导<span>Linux</span>，<span>Linux</span>首先进行内核的引导，接下来执行<span>init</span>程序，<span>init</span>程序调用了<span>rc.sysinit</span>和<span>rc</span>等程序，<span>rc.sysinit</span>和<span>rc</span>当完成系统初始化和运行服务的任务后，返回<span>init</span>；<span>init</span>启动了<span>mingetty</span>后，打开了终端供用户登录系统，用户登录成功后进入了<span>Shell</span>，这样就完成了从开机到登录的整个启动过程。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img height=450 alt="" src="http://www.cppblog.com/images/cppblog_com/tomyself/Linux_Boot_Step.jpg" width=343 border=0></p>
<p><span>下面就将逐一介绍其中几个关键的部分： </span></p>
<p><span><br></span><span>　　第一部分：内核的引导<span>(</span>核内引导<span>)</span></span></p>
<p><span>　　<span>Red Hat9.0</span>可以使用<span>lilo</span>或<span>grub</span>等引导程序开始引导<span>Linux</span>系统，当引导程序成功完成引导任务后，<span>Linux</span>从它们手中接管了<span>CPU</span>的控制权，然后<span>CPU</span>就开始执行<span>Linux</span>的核心映象代码，开始了<span>Linux</span>启动过程。这里使用了几个汇编程序来引导<span>Linux</span>，这一步泛及到<span>Linux</span>源代码树中的<span>&#8220;arch/i386/boot&#8221;</span>下的这几个文件：<span>bootsect.S</span>、<span>setup.S</span>、<span>video.S</span>等。</span></p>
<p><span>　　其中<span>bootsect.S</span>是生成引导扇区的汇编源码，它完成加载动作后直接跳转到<span>setup.S</span>的程序入口。<span>setup.S</span>的主要功能就是将系统参数（包括内存、磁盘等，由<span>BIOS</span>返回）拷贝到特别内存中，以便以后这些参数被保护模式下的代码来读取。此外，<span>setup.S</span>还将<span>video.S</span>中的代码包含进来，检测和设置显示器和显示模式。最后，<span>setup.S</span>将系统转换到保护模式，并跳转到<span> 0x100000</span>。</span></p>
<p><span>　　那么<span>0x100000</span>这个内存地址中存放的是什么代码？而这些代码又是从何而来的呢？</span></p>
<p><span>　　<span>0x100000</span>这个内存地址存放的是解压后的内核，因为<span>Red Hat</span>提供的内核包含了众多驱动和功能而显得比较大，所以在内核编译中使用了<span>&#8220;makebzImage&#8221;</span>方式，从而生成压缩过的内核，在<span>RedHat</span>中内核常常被命名为<span>vmlinuz</span>，在<span>Linux</span>的最初引导过程中，是通过<span>"arch/i386/boot/compressed/"</span>中的<span>head.S</span>利用<span>misc.c</span>中定义的<span>decompress_kernel()</span>函数，将内核<span>vmlinuz</span>解压到<span>0x100000</span>的。</span></p>
<p><span>　　当<span>CPU</span>跳到<span>0x100000</span>时，将执行<span>"arch/i386/kernel/head.S"</span>中的<span>startup_32</span>，它也是<span>vmlinux</span>的入口，然后就跳转到<span>start_kernel()</span>中去了。<span>start_kernel()</span>是<span>"init/main.c"</span>中的定义的函数，<span>start_kernel()</span>中调用了一系列初始化函数，以完成<span>kernel</span>本身的设置。<span>start_kernel()</span>函数中，做了大量的工作来建立基本的<span>Linux</span>核心环境。如果顺利执行完<span>start_kernel()</span>，则基本的<span>Linux</span>核心环境已经建立起来了。</span></p>
<p><span>　　在<span>start_kernel()</span>的最后，通过调用<span>init()</span>函数，系统创建第一个核心线程，启动了<span>init</span>过程。而核心线程<span>init()</span>主要是来进行一些外设初始化的工作的，包括调用<span>do_basic_setup()</span>完成外设及其驱动程序的加载和初始化。并完成文件系统初始化和<span>root</span>文件系统的安装。</span></p>
<p><span>　　当<span>do_basic_setup()</span>函数返回<span>init()</span>，<span>init()</span>又打开了<span>/dev/console</span>设备，重定向三个标准的输入输出文件<span>stdin</span>、<span>stdout</span>和<span>stderr</span>到控制台，最后，搜索文件系统中的<span>init</span>程序（或者由<span>init=</span>命令行参数指定的程序），并使用<span> execve()</span>系统调用加载执行<span>init</span>程序。到此<span>init()</span>函数结束，内核的引导部分也到此结束了，</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span>第二部分：运行<span>init </span></span></p>
<p><span><br></span><span>　　<span>init</span>的进程号是<span>1</span>，从这一点就能看出，<span>init</span>进程是系统所有进程的起点，<span>Linux</span>在完成核内引导以后，就开始运行<span>init</span>程序，。<span>init</span>程序需要读取配置文件<span>/etc/inittab</span>。<span>inittab</span>是一个不可执行的文本文件，它有若干行指令所组成。在<span>Redhat</span>系统中，<span>inittab</span>的内容如下所示<span>(</span>以<span>&#8220;###"</span>开始的中注释为笔者增加的<span>)</span>：</span></p>
<p><span>　　<span>#<br></span>　　<span># inittab&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This file describes how the INIT process should set up<br></span>　　<span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the system in a certain run-level.<br></span>　　<span>#<br></span>　　<span># Author:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Miquel van Smoorenburg,</span></span></p>
<p><span>　　<span>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Modified for RHS Linux by Marc Ewing and Donnie Barnes<br></span>　　<span>#</span></span></p>
<p><span>　　<span># Default runlevel. The runlevels used by RHS are:<br></span>　　<span>#&nbsp;&nbsp; 0 - halt (Do NOT set initdefault to this)<br></span>　　<span>#&nbsp;&nbsp; 1 - Single user mode<br></span>　　<span>#&nbsp;&nbsp; 2 - Multiuser, without NFS (The same as 3, if you do not havenetworking)<br></span>　　<span>#&nbsp;&nbsp; 3 - Full multiuser mode<br></span>　　<span>#&nbsp;&nbsp; 4 - unused<br></span>　　<span>#&nbsp;&nbsp; 5 - X11<br></span>　　<span>#&nbsp;&nbsp; 6 - reboot (Do NOT set initdefault to this)<br></span>　　<span>#<br></span>　　<span>###</span>表示当前缺省运行级别为<span>5(initdefault)</span>；<span><br></span>　　<span>id:5:initdefault:</span></span></p>
<p><span>　　<span>###</span>启动时自动执行<span>/etc/rc.d/rc.sysinit</span>脚本<span>(sysinit)<br></span>　　<span># System initialization.<br></span>　　<span>si::sysinit:/etc/rc.d/rc.sysinit</span></span></p>
<p><span>　　<span>l0:0:wait:/etc/rc.d/rc 0<br></span>　　<span>l1:1:wait:/etc/rc.d/rc 1<br></span>　　<span>l2:2:wait:/etc/rc.d/rc 2<br></span>　　<span>l3:3:wait:/etc/rc.d/rc 3<br></span>　　<span>l4:4:wait:/etc/rc.d/rc 4<br></span>　　<span>###</span>当运行级别为<span>5</span>时，以<span>5</span>为参数运行<span>/etc/rc.d/rc</span>脚本，<span>init</span>将等待其返回<span>(wait)<br></span>　　<span>l5:5:wait:/etc/rc.d/rc 5<br></span>　　<span>l6:6:wait:/etc/rc.d/rc 6</span></span></p>
<p><span>　　<span>###</span>在启动过程中允许按<span>CTRL-ALT-DELETE</span>重启系统<span><br></span>　　<span># Trap CTRL-ALT-DELETE<br></span>　　<span>ca::ctrlaltdel:/sbin/shutdown -t3 -r now</span></span></p>
<p><span>　　<span># When our UPS tells us power has failed, assume we have a few minutes<br></span>　　<span># of power left.&nbsp; Schedule a shutdown for 2 minutes from now.<br></span>　　<span># This does, of course, assume you have powerd installed and your<br></span>　　<span># UPS connected and working correctly.<br></span>　　<span>pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"</span></span></p>
<p><span>　　<span># If power was restored before the shutdown kicked in, cancel it.<br></span>　　<span>pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"</span></span></p>
<p><span>　　<span>###</span>在<span>2</span>、<span>3</span>、<span>4</span>、<span>5</span>级别上以<span>ttyX</span>为参数执行<span>/sbin/mingetty</span>程序，打开<span>ttyX</span>终端用于用户登录，<span><br></span>　　<span>###</span>如果进程退出则再次运行<span>mingetty</span>程序<span>(respawn)<br></span>　　<span># Run gettys in standard runlevels<br></span>　　<span>1:2345:respawn:/sbin/mingetty tty1<br></span>　　<span>2:2345:respawn:/sbin/mingetty tty2<br></span>　　<span>3:2345:respawn:/sbin/mingetty tty3<br></span>　　<span>4:2345:respawn:/sbin/mingetty tty4<br></span>　　<span>5:2345:respawn:/sbin/mingetty tty5<br></span>　　<span>6:2345:respawn:/sbin/mingetty tty6</span></span></p>
<p><span>　　<span>###</span>在<span>5</span>级别上运行<span>xdm</span>程序，提供<span>xdm</span>图形方式登录界面，并在退出时重新执行<span>(respawn)<br></span>　　<span># Run xdm in runlevel 5<br></span>　　<span>x:5:respawn:/etc/X11/prefdm -nodaemon</span></span></p>
<p><span>以上面的<span>inittab</span>文件为例，来说明一下<span>inittab</span>的格式。其中以<span>#</span>开始的行是注释行，除了注释行之外，每一行都有以下格式：<span> <br></span>　　<span>id:runlevel:action:process</span></span></p>
<p><span>　　对上面各项的详细解释如下：</span></p>
<p><span>　　<span>1. id</span></span></p>
<p><span>　　<span>id</span>是指入口标识符，它是一个字符串，对于<span>getty</span>或<span>mingetty</span>等其他<span>login</span>程序项，要求<span>id</span>与<span>tty</span>的编号相同，否则<span>getty</span>程序将不能正常工作。</span></p>
<p><span>　　<span>2. runlevel</span></span></p>
<p><span>　　<span>runlevel</span>是<span>init</span>所处于的运行级别的标识，一般使用<span>0</span>－<span>6</span>以及<span>S</span>或<span>s</span>。<span>0</span>、<span>1</span>、<span>6</span>运行级别被系统保留：其中<span>0</span>作为<span>shutdown</span>动作，<span>1</span>作为重启至单用户模式，<span>6</span>为重启；<span>S</span>和<span>s</span>意义相同，表示单用户模式，且无需<span>inittab</span>文件，因此也不在<span>inittab</span>中出现，实际上，进入单用户模式时，<span>init</span>直接在控制台（<span>/dev/console</span>）上运行<span>/sbin/sulogin</span>。在一般的系统实现中，都使用了<span>2</span>、<span>3</span>、<span>4</span>、<span>5</span>几个级别，在<span>Redhat</span>系统中，<span>2</span>表示无<span>NFS</span>支持的多用户模式，<span>3</span>表示完全多用户模式（也是最常用的级别），<span>4</span>保留给用户自定义，<span>5</span>表示<span>XDM</span>图形登录方式。<span>7</span>－<span>9</span>级别也是可以使用的，传统的<span>Unix</span>系统没有定义这几个级别。<span>runlevel</span>可以是并列的多个值，以匹配多个运行级别，对大多数<span>action</span>来说，仅当<span>runlevel</span>与当前运行级别匹配成功才会执行。</span></p>
<p><span>　　<span>3. action</span></span></p>
<p><span>　　<span>action</span>是描述其后的<span>process</span>的运行方式的。<span>action</span>可取的值包括：<span>initdefault</span>、<span>sysinit</span>、<span>boot</span>、<span>bootwait</span>等：</span></p>
<p><span>　　<span>initdefault</span>是一个特殊的<span>action</span>值，用于标识缺省的启动级别；当<span>init</span>由核心激活以后，它将读取<span>inittab</span>中的<span>initdefault</span>项，取得其中的<span>runlevel</span>，并作为当前的运行级别。如果没有<span>inittab</span>文件，或者其中没有<span>initdefault</span>项，<span>init</span>将在控制台上请求输入<span>runlevel</span>。</span></p>
<p><span>　　<span>sysinit</span>、<span>boot</span>、<span>bootwait</span>等<span>action</span>将在系统启动时无条件运行，而忽略其中的<span>runlevel</span>。</span></p>
<p><span>　　其余的<span>action</span>（不含<span>initdefault</span>）都与某个<span>runlevel</span>相关。各个<span>action</span>的定义在<span>inittab</span>的<span>man</span>手册中有详细的描述。</span></p>
<p><span>　　<span>4. process</span></span></p>
<p><span>　　<span>process</span>为具体的执行程序。程序后面可以带参数。</span></p>
<p><span>　　第三部分：系统初始化</span></p>
<p><span>　　在<span>init</span>的配置文件中有这么一行：</span></p>
<p><span>　　<span>si::sysinit:/etc/rc.d/rc.sysinit</span></span></p>
<p><span>　　它调用执行了<span>/etc/rc.d/rc.sysinit</span>，而<span>rc.sysinit</span>是一个<span>bash shell</span>的脚本，它主要是完成一些系统初始化的工作，<span>rc.sysinit</span>是每一个运行级别都要首先运行的重要脚本。它主要完成的工作有：激活交换分区，检查磁盘，加载硬件模块以及其它一些需要优先执行任务。</span></p>
<p><span>　　<span>rc.sysinit</span>约有<span>850</span>多行，但是每个单一的功能还是比较简单，而且带有注释，建议有兴趣的用户可以自行阅读自己机器上的该文件，以了解系统初始化所详细情况。由于此文件较长，所以不在本文中列出来，也不做具体的介绍。</span></p>
<p><span>　　当<span>rc.sysinit</span>程序执行完毕后，将返回<span>init</span>继续下一步。</span></p>
<p><span><br></span><span>第四部分：启动对应运行级别的守护进程 </span></p>
<p><span><br></span><span>　　在<span>rc.sysinit</span>执行后，将返回<span>init</span>继续其它的动作，通常接下来会执行到<span>/etc/rc.d/rc</span>程序。以运行级别<span>3</span>为例，<span>init</span>将执行配置文件<span>inittab</span>中的以下这行：</span></p>
<p><span>　　<span>l5:5:wait:/etc/rc.d/rc 5</span></span></p>
<p><span>　　这一行表示以<span>5</span>为参数运行<span>/etc/rc.d/rc</span>，<span>/etc/rc.d/rc</span>是一个<span>Shell</span>脚本，它接受<span>5</span>作为参数，去执行<span>/etc/rc.d/rc5.d/</span>目录下的所有的<span>rc</span>启动脚本，<span>/etc/rc.d/rc5.d/</span>目录中的这些启动脚本实际上都是一些链接文件，而不是真正的<span>rc</span>启动脚本，真正的<span>rc</span>启动脚本实际上都是放在<span>/etc/rc.d/init.d/</span>目录下。而这些<span>rc</span>启动脚本有着类似的用法，它们一般能接受<span>start</span>、<span>stop</span>、<span>restart</span>、<span>status</span>等参数。</span></p>
<p><span>　　<span>/etc/rc.d/rc5.d/</span>中的<span>rc</span>启动脚本通常是<span>K</span>或<span>S</span>开头的链接文件，对于以以<span>S</span>开头的启动脚本，将以<span>start</span>参数来运行。而如果发现存在相应的脚本也存在<span>K</span>打头的链接，而且已经处于运行态了<span>(</span>以<span>/var/lock/subsys/</span>下的文件作为标志<span>)</span>，则将首先以<span>stop</span>为参数停止这些已经启动了的守护进程，然后再重新运行。这样做是为了保证是当<span>init</span>改变运行级别时，所有相关的守护进程都将重启。</span></p>
<p><span>　　至于在每个运行级中将运行哪些守护进程，用户可以通过<span>chkconfig</span>或<span>setup</span>中的<span>"System Services"</span>来自行设定。常见的守护进程有：</span></p>
<p><span>　　<span>amd</span>：自动安装<span>NFS</span>守护进程<span><br></span>　　<span>apmd:</span>高级电源管理守护进程<span><br></span>　　<span>arpwatch</span>：记录日志并构建一个在<span>LAN</span>接口上看到的以太网地址和<span>IP</span>地址对数据库<span><br></span>　　<span>autofs</span>：自动安装管理进程<span>automount</span>，与<span>NFS</span>相关，依赖于<span>NIS<br></span>　　<span>crond</span>：<span>Linux</span>下的计划任务的守护进程<span><br></span>　　<span>named</span>：<span>DNS</span>服务器<span><br></span>　　<span>netfs</span>：安装<span>NFS</span>、<span>Samba</span>和<span>NetWare</span>网络文件系统<span><br></span>　　<span>network</span>：激活已配置网络接口的脚本程序<span><br></span>　　<span>nfs</span>：打开<span>NFS</span>服务<span><br></span>　　<span>portmap</span>：<span>RPC portmap</span>管理器，它管理基于<span>RPC</span>服务的连接<span><br></span>　　<span>sendmail</span>：邮件服务器<span>sendmail<br></span>　　<span>smb</span>：<span>Samba</span>文件共享<span>/</span>打印服务<span><br></span>　　<span>syslog</span>：一个让系统引导时起动<span>syslog</span>和<span>klogd</span>系统日志守候进程的脚本<span><br></span>　　<span>xfs</span>：<span>X Window</span>字型服务器，为本地和远程<span>X</span>服务器提供字型集<span><br></span>　　<span>Xinetd</span>：支持多种网络服务的核心守护进程，可以管理<span>wuftp</span>、<span>sshd</span>、<span>telnet</span>等服务</span></p>
<p><span>　　这些守护进程也启动完成了，<span>rc</span>程序也就执行完了，然后又将返回<span>init</span>继续下一步。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span>第五部分：建立终端 </span></p>
<p><span><br></span><span>　　<span>rc</span>执行完毕后，返回<span>init</span>。这时基本系统环境已经设置好了，各种守护进程也已经启动了。<span>init</span>接下来会打开<span>6</span>个终端，以便用户登录系统。通过按<span>Alt+Fn(n</span>对应<span>1-6)</span>可以在这<span>6</span>个终端中切换。在<span>inittab</span>中的以下<span>6</span>行就是定义了<span>6</span>个终端：</span></p>
<p><span>　　<span>1:2345:respawn:/sbin/mingetty tty1<br></span>　　<span>2:2345:respawn:/sbin/mingetty tty2<br></span>　　<span>3:2345:respawn:/sbin/mingetty tty3<br></span>　　<span>4:2345:respawn:/sbin/mingetty tty4<br></span>　　<span>5:2345:respawn:/sbin/mingetty tty5<br></span>　　<span>6:2345:respawn:/sbin/mingetty tty6</span></span></p>
<p><span>　　从上面可以看出在<span>2</span>、<span>3</span>、<span>4</span>、<span>5</span>的运行级别中都将以<span>respawn</span>方式运行<span>mingetty</span>程序，<span>mingetty</span>程序能打开终端、设置模式。同时它会显示一个文本登录界面，这个界面就是我们经常看到的登录界面，在这个登录界面中会提示用户输入用户名，而用户输入的用户将作为参数传给<span>login</span>程序来验证用户的身份。</span></p>
<p><span>　　第六部分：登录系统，启动完成</span></p>
<p><span>　　对于运行级别为<span>5</span>的图形方式用户来说，他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入<span>KDE</span>、<span>Gnome</span>等窗口管理器。而本文主要讲的还是文本方式登录的情况：</span></p>
<p><span>　　当我们看到<span>mingetty</span>的登录界面时，我们就可以输入用户名和密码来登录系统了。</span></p>
<p><span>　　<span>Linux</span>的账号验证程序是<span>login</span>，<span>login</span>会接收<span>mingetty</span>传来的用户名作为用户名参数。然后<span>login</span>会对用户名进行分析：如果用户名不是<span>root</span>，且存在<span>/etc/nologin</span>文件，<span>login</span>将输出<span>nologin</span>文件的内容，然后退出。这通常用来系统维护时防止非<span>root</span>用户登录。只有<span>/etc/securetty</span>中登记了的终端才允许<span>root</span>用户登录，如果不存在这个文件，则<span>root</span>可以在任何终端上登录。<span>/etc/usertty</span>文件用于对用户作出附加访问限制，如果不存在这个文件，则没有其他限制。</span></p>
<p><span>　　在分析完用户名后，<span>login</span>将搜索<span>/etc/passwd</span>以及<span>/etc/shadow</span>来验证密码以及设置账户的其它信息，比如：主目录是什么、使用何种<span>shell</span>。如果没有指定主目录，将默认为根目录；如果没有指定<span>shell</span>，将默认为<span>/bin/bash</span>。</span></p>
<p><span>　　<span>login</span>程序成功后，会向对应的终端在输出最近一次登录的信息<span>(</span>在<span>/var/log/lastlog</span>中有记录<span>)</span>，并检查用户是否有新邮件<span>(</span>在<span>/usr/spool/mail/</span>的对应用户名目录下<span>)</span>。然后开始设置各种环境变量：对于<span>bash</span>来说，系统首先寻找<span>/etc/profile</span>脚本文件，并执行它；然后如果用户的主目录中存在<span>.bash_profile</span>文件，就执行它，在这些文件中又可能调用了其它配置文件，所有的配置文件执行后后，各种环境变量也设好了，这时会出现大家熟悉的命令行提示符，到此整个启动过程就结束了。</span></p>
<p><span>　　希望通过上面对<span>Linux</span>启动过程的剖析能帮助那些想深入学习<span>Linux</span>用户建立一个相关<span>Linux</span>启动过程的清晰概念，进而可以进一步研究<span>Linux</span>接下来是如何工作的。</span></p>
<p>&nbsp;</p>
<h2><span><a title="Permanent Link to Linux启动过程详解-《别怕Linux编程》之八" href="http://roclinux.cn/?p=1301">Linux<span><span>启动过程<span>详解</span></span></span></a></span></h2>
<p><span>原文地址：</span><span><a href="http://roclinux.cn/?p=1301">http://roclinux.cn/?p=1301</a> </span></p>
<p><span><span>&#183;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span>本原创文章属于<span><a href="http://roclinux.cn/../" target=_blank><span><span>《</span></span>Linux<span><span>大棚》</span></span></a></span>博客，博客地址为<span><a href="http://roclinux.cn/../" target=_blank>http://roclinux.cn</a></span>。文章作者为<span>rocrocket</span>。</span></strong><span><br></span><strong><span>为了防止某些网站的恶性转载，特在每篇文章前加入此信息，还望读者体谅。</span></strong></p>
<p><strong><span>===</span></strong></p>
<p><strong><span>[</span></strong><strong><span>正文开始<span>]</span></span></strong></p>
<p><strong><span>启动<span>第一步</span>－－加载<span>BIOS</span></span></strong></p>
<p>当你打开计算机电源，计算机会首先加载<span>BIOS</span>信息，<span>BIOS</span>信息是如此的重要，以至于计算机必须在最开始就找到它。这是因为<span>BIOS</span>中包含了<span>CPU</span>的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、<span>PnP</span>特性等等。在此之后，计算机心里就有谱了，知道应该去读取哪个硬件设备了。</p>
<p><strong><span>启动<span>第二步</span>－－读取<span>MBR</span></span></strong></p>
<p>众所周知，硬盘上第<span>0</span>磁道第一个扇区被称为<span>MBR</span>，也就是<span>Master Boot Record</span>，即主引导记录，它的大小是<span>512</span>字节，别看地方不大，可里面却存放了预启动信息、分区表信息。</p>
<p>系统找到<span>BIOS</span>所指定的硬盘的<span>MBR</span>后，就会将其复制到<span>0&#215;7c00</span>地址所在的物理内存中。其实被复制到物理内存的内容就是<span>Boot Loader</span>，而具体到你的电脑，那就是<span>lilo</span>或者<span>grub</span>了。</p>
<p><strong><span>启动<span>第三步</span>－－<span>Boot Loader</span></span></strong></p>
<p><span>Boot Loader </span>就是在操作系统内核运行之前运行的一段小程序。通过这段小程序，我们可以初始化硬件设备、建立内存空间的映射图，从而将系统的软硬件环境带到一个合适的状态，以便为最终调用操作系统内核做好一切准备。</p>
<p><span>Boot Loader</span>有若干种，其中<span>Grub</span>、<span>Lilo</span>和<span>spfdisk</span>是常见的<span>Loader</span>。</p>
<p>我们以<span>Grub</span>为例来讲解吧，毕竟用<span>lilo</span>和<span>spfdisk</span>的人并不多。</p>
<p>系统读取内存中的<span>grub</span>配置信息（一般为<span>menu.lst</span>或<span>grub.lst</span>），并依照此配置信息来启动不同的操作系统。</p>
<p><strong><span>启动<span>第四步</span>－－加载内核</span></strong></p>
<p>根据<span>grub</span>设定的内核映像所在路径，系统读取内存映像，并进行解压缩操作。此时，屏幕一般会输出<span>&#8220;Uncompressing Linux&#8221;</span>的提示。当解压缩内核完成后，屏幕输出<span>&#8220;OK, booting the kernel&#8221;</span>。</p>
<p>系统将解压后的内核放置在内存之中，并调用<span>start_kernel()</span>函数来启动一系列的初始化函数并初始化各种设备，完成<span>Linux</span>核心环境的建立。至此，<span>Linux</span>内核已经建立起来了，基于<span>Linux</span>的程序应该可以正常运行了。</p>
<p><strong><span>启动<span>第五步</span>－－用户层<span>init</span>依据<span>inittab</span>文件来设定运行等级</span></strong></p>
<p>内核被加载后，第一个运行的程序便是<span>/sbin/init</span>，该文件会读取<span>/etc/inittab</span>文件，并依据此文件来进行初始化工作。</p>
<p>其实<span>/etc/inittab</span>文件最主要的作用就是设定<span>Linux</span>的运行等级，其设定形式是<span>&#8220;</span>：<span>id:5:initdefault:&#8221;</span>，这就表明<span>Linux</span>需要运行在等级<span>5</span>上。<span>Linux</span>的运行等级设定如下：</p>
<p><span>0</span>：关机</p>
<p><span>1</span>：单用户模式</p>
<p><span>2</span>：无网络支持的多用户模式</p>
<p><span>3</span>：有网络支持的多用户模式</p>
<p><span>4</span>：保留，未使用</p>
<p><span>5</span>：有网络支持有<span>X-Window</span>支持的多用户模式</p>
<p><span>6</span>：重新引导系统，即重启</p>
<p>关于<span>/etc/inittab</span>文件的学问，其实还有很多，在后序文章中设计到的，卖个关子，敬请期待，呵呵</p>
<p><strong><span>启动<span>第六步</span>－－<span>init</span>进程执行<span>rc.sysinit</span></span></strong></p>
<p>在设定了运行等级后，<span>Linux</span>系统执行的第一个用户层文件就是<span>/etc/rc.d/rc.sysinit</span>脚本程序，它做的工作非常多，包括设定<span>PATH</span>、设定网络配置（<span>/etc/sysconfig/network</span>）、启动<span>swap</span>分区、设定<span>/proc</span>等等。如果你有兴趣，可以到<span>/etc/rc.d</span>中查看一下<span>rc.sysinit</span>文件，里面的脚本够你看几天的<span>:P</span></p>
<p><strong><span>启动<span>第七步</span>－－启动内核模块</span></strong></p>
<p>具体是依据<span>/etc/modules.conf</span>文件或<span>/etc/modules.d</span>目录下的文件来装载内核模块。</p>
<p><strong><span>启动<span>第八步</span>－－执行不同运行级别的脚本程序</span></strong></p>
<p>根据运行级别的不同，系统会运行<span>rc0.d</span>到<span>rc6.d</span>中的相应的脚本程序，来完成相应的初始化工作和启动相应的服务。</p>
<p><strong><span>启动<span>第九步</span>－－执行<span>/etc/rc.d/rc.local</span></span></strong></p>
<p>你如果打开了此文件，里面有一句话，读过之后，你就会对此命令的作用一目了然：</p>
<p><span># This script will be executed *after* all the other init scripts.<br># You can put your own initialization stuff in here if you don&#8217;t<br># want to do the full Sys V style init stuff.</span></p>
<p><span>rc.local</span>就是在一切初始化工作后，<span>Linux</span>留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。</p>
<p><strong><span>启动<span>第十步</span>－－执行<span>/bin/login</span>程序，进入登录状态</span></strong></p>
<p>此时，系统已经进入到了等待用户输入<span>username</span>和<span>password</span>的时候了，你已经可以用自己的帐号登入系统了。<span>:)</span></p>
<p><span>===</span></p>
<p>漫长的启动过程结束了，一切都清静了<span>&#8230;</span></p>
<p>其实在这背后，还有着更加复杂的底层函数调用，等待着你去研究<span>&#8230;</span>本文就算抛砖引玉了<span>:)</span></p>
<p><em><span>本文参考了如下文章，精炼荟萃而成：</span></em></p>
<p><em><span><a href="http://bbs.chinaunix.net/thread-835918-1-1.html" target=_blank>http://bbs.chinaunix.net/thread-835918-1-1.html</a></span></em></p>
<p><em><span><a href="http://hi.baidu.com/fembed/blog/item/b9f0881f51145866f624e4be.html" target=_blank>http://hi.baidu.com/fembed/blog/item/b9f0881f51145866f624e4be.html</a></span></em></p>
<p><em><span><a href="http://baike.baidu.com/view/9485.htm" target=_blank>http://baike.baidu.com/view/9485.htm</a></span></em></p>
<p><em><span>Linux</span></em><em><span>启动过程分析－霍丙全－山东滨州职业学院计算机工程系</span></em></p>
<p><em><span>Linux</span></em><em><span>启动过程分析与优化－浙江大学硕士学位论文</span></em></p>
<p><em><span>感谢上述文章作者<span>:)</span></span></em></p>
<p>&nbsp;</p>
<p><span>参考：</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><a href="http://chenguang.blog.51cto.com/350944/258774">http://chenguang.blog.51cto.com/350944/258774</a>&nbsp;<br><br><br><br>&nbsp; </p>
<p>&nbsp;</p>
<h2><span>Linux grub</span><span>系统启动配置文件</span></h2>
<p><span>原文出自【比特网】，转载请保留原文链接：</span><span><a href="http://soft.chinabyte.com/281/11103281.shtml">http://soft.chinabyte.com/281/11103281.shtml</a></span></p>
<p><span>[</span><span>导读</span><span>]Linux grub</span><span>启动时会在</span><span>/boot/grub/</span><span>中寻找一个名字为</span><span>menu.lst</span><span>的配置文件，如果找不到此文件则不进入菜单模式而直接进入命令行模式。</span><span> </span></p>
<p><span>　　经过长时间学习</span><span>Linux grub</span><span>，，你可能会遇到</span><span>Linux grub</span><span>问题，，这里将介绍</span><span>Linux grub</span><span>问题的解决方法</span><span>Linux</span><span>本身是这个操作系统的核心部分，也就是操作系统的内核。内核是完成那些最基本操作的程序，它负责其他程序</span><span>(</span><span>如文本编辑器程序</span><span>)</span><span>的启动与终止、内存申请处理硬盘访问、网络连接管理等方面的工作。</span></p>
<p><span>　　忘记</span><span>root</span><span>密码，如果是</span><span>Linux grub</span></p>
<p><span>　　</span><span>1.</span><span>出现</span><span>Linux grub</span><span>画面时，用上下键选启动</span><span>Linux</span><span>的哪一项，按</span><span>e</span><span>键</span></p>
<p><span>　　</span><span>2.</span><span>上下键选择</span><span> kernel /boot/</span><span>&#8230;&#8230;&#8230;</span> <span>然后按</span><span>e</span><span>键</span></p>
<p><span>　　</span><span>3.</span><span>修改现在见到的命令行，加入</span><span>single </span><span>结果如下：</span></p>
<p><span>　　</span><span>kernel /boot/vmlinuz-2.4.20-8 single ro root=LABEL=</span></p>
<p><span>　　</span><span>4.</span><span>回车返回，按</span><span>b</span><span>键启动，</span><span>single</span><span>模式启动后直接进入</span><span>linux</span><span>命令行</span></p>
<p><span>　　直接执行</span><span>: passwd root</span></p>
<p><span>　　修改密码，你的密码就搞定</span></p>
<p><span>　　</span><span>Linux grub</span><span>启动时会在</span><span>/boot/grub/</span><span>中寻找一个名字为</span><span>menu.lst</span><span>的配置文件，如果找不到此文件则不进入菜单模式而直接进入命令行模式。</span><span>menu.lst </span><span>是一个文本文件，你可以用任何一个文本编辑器来打开它。每一行代表一个配置命令，如果一行的第一个字符为井号</span><span>"#"</span><span>则这一行为注释，你可以简单地用增加或减少注释行来改变配置。<br></span></p>
<p>我的menu.list：<span></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;grub.conf&nbsp;generated&nbsp;by&nbsp;anaconda<br>#<br>#&nbsp;Note&nbsp;that&nbsp;you&nbsp;do&nbsp;not&nbsp;have&nbsp;to&nbsp;rerun&nbsp;grub&nbsp;after&nbsp;making&nbsp;changes&nbsp;to&nbsp;this&nbsp;file<br>#&nbsp;NOTICE:&nbsp;&nbsp;You&nbsp;have&nbsp;a&nbsp;/boot&nbsp;partition.&nbsp;&nbsp;This&nbsp;means&nbsp;that<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;kernel&nbsp;and&nbsp;initrd&nbsp;paths&nbsp;are&nbsp;relative&nbsp;to&nbsp;/boot/,&nbsp;eg.<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;(hd0,0)<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel&nbsp;/vmlinuz-version&nbsp;ro&nbsp;root=/dev/VolGroup00/LogVol00<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd&nbsp;/initrd-version.img<br>#boot=/dev/sda</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">default</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000"><br>timeout</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">5</span><span style="COLOR: #000000"><br>splashimage</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(hd0</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">grub</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">splash</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">xpm</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">gz<br>hiddenmenu<br>title&nbsp;CentOS&nbsp;(</span><span style="COLOR: #800000">2.6</span><span style="COLOR: #000000">.</span><span style="COLOR: #800000">18</span><span style="COLOR: #000000">-</span><span style="COLOR: #800000">194</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">el5)<br>&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;(hd0</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;kernel&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">vmlinuz</span><span style="COLOR: #000000">-</span><span style="COLOR: #800000">2.6</span><span style="COLOR: #000000">.</span><span style="COLOR: #800000">18</span><span style="COLOR: #000000">-</span><span style="COLOR: #800000">194</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">el5&nbsp;ro&nbsp;root</span><span style="COLOR: #000000">=/</span><span style="COLOR: #000000">dev</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">VolGroup00</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">LogVol00&nbsp;rhgb&nbsp;quiet<br>&nbsp;&nbsp;&nbsp;&nbsp;initrd&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">initrd</span><span style="COLOR: #000000">-</span><span style="COLOR: #800000">2.6</span><span style="COLOR: #000000">.</span><span style="COLOR: #800000">18</span><span style="COLOR: #000000">-</span><span style="COLOR: #800000">194</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">el5</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">img</span></div>
<p>　　编辑</span><span>menu.lst</span><span>，一般会有以下各行</span></p>
<p><span>　　</span><span>timeout second</span></p>
<p><span>　　设定在</span><span>second</span><span>秒之后引导默认的操作系统。</span> <span>蓝点</span><span>Linux grub</span><span>默认是</span><span>timeout 5</span><span>，就是</span><span>5</span><span>秒没有其他指令就引导系统，如果设成</span><span>-1</span><span>，则</span><span>Linux grub</span><span>会一直等待直到用户选择一个选项为止。</span></p>
<p><span>　　</span><span>default num</span></p>
<p><span>　　默认启动第</span><span>num+1</span><span>行选项，也就说</span><span>default=0</span><span>则默认启动菜单第一行的操作系统，</span><span>default=1</span><span>则启动第</span><span>2</span><span>行的系统，如此类推。</span></p>
<p><span>　　</span><span>splash pathname/filename</span></p>
<p><span>　　指出开机画面的文件所存放的路径和文件名，如</span><span>splash /boot/logo/800x600x8.img </span><span>是指用在</span><span>/boot/logo</span><span>路径下的</span><span>800x600.img</span><span>文件作为开机画面</span></p>
<p><span>　　</span><span>title OSname title</span></p>
<p><span>　　后面的字符就是你在菜单项上所看见的选项，你可以写上</span><span>Linux grub</span><span>操作系统的名字和描述，如用</span><span>title BluePoint Linux, Single Mode </span><span>代表这一选项是引导蓝点</span><span>Linux</span><span>的单用户模式。</span> <span>下面结合两个系统引导描述来解释几个引导选项的意义</span></p>
<p><span>　　</span><span>title BluePoint Linux, Default Mode</span></p>
<p><span>　　</span><span>root (hd0,1)</span></p>
<p><span>　　</span><span>kernel /boot/vmlinuz vga=auto root=/dev/hda2</span></p>
<p><span>　　</span><span>hd0</span><span>是指第一个硬盘</span><span>(</span><span>主硬盘</span><span>) (hd0,1)</span><span>是指第一个硬盘的第二个分区。</span><span> kernel /boot/vmlinuz </span><span>是指出</span><span>Linux</span><span>核心的路径在</span><span>/boot/vmlinuz</span><span>中。</span><span>vga=auto </span><span>是设定显示模式，</span><span>root=/dev/hda2</span><span>是指把第一个硬盘的第二个分区作为根挂载点</span><span>("/")</span><span>。</span></p>
<p><span>　　</span><span>title Microsoft Windows</span></p>
<p><span>　　</span><span>root (hd1,0)</span></p>
<p><span>　　</span><span>chainloader (hd1,0)+1</span></p>
<p><span>　　</span><span>root (hd1,0)</span><span>这是指第二个硬盘</span><span>(</span><span>从硬盘</span><span>)</span><span>上第一个分区</span></p>
<p><span>　　</span><span>chainloader (hd1,0)+1 </span><span>装入一个扇区的数据然后把引导权交给它。</span></p>
<p><span>　　以上是</span><span>Linux grub</span><span>启动系统介绍。</span></p>
<p>&nbsp;<br>参考：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、<a href="http://www.linuxsir.org/main/?q=node/129">http://www.linuxsir.org/main/?q=node/129</a>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、<a href="http://itbbs.pconline.com.cn/network/11355071.html">http://itbbs.pconline.com.cn/network/11355071.html</a>&nbsp;<br></span></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/131008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-10-23 21:42 <a href="http://www.cppblog.com/toMyself/archive/2010/10/23/131008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux内核编译</title><link>http://www.cppblog.com/toMyself/archive/2010/10/23/130987.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Sat, 23 Oct 2010 10:03:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/10/23/130987.html</guid><wfw:comment>http://www.cppblog.com/toMyself/comments/130987.html</wfw:comment><comments>http://www.cppblog.com/toMyself/archive/2010/10/23/130987.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/toMyself/comments/commentRss/130987.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/toMyself/services/trackbacks/130987.html</trackback:ping><description><![CDATA[<p>Linux-2.6.22内核编译简单过程笔记:<br>&nbsp;&nbsp;原文地址：<a href="http://www.linuxidc.com/Linux/2008-01/10678.htm">http://www.linuxidc.com/Linux/2008-01/10678.htm</a>&nbsp;</p>
<p>1). 下载内核 http://www.kernel.org/pub/Linux/kernel/</p>
<p>2). tar xvzf Linux-2.6.22.tar.gz&nbsp; -C /usr/src</p>
<p>cd /usr/src</p>
<p>ln -s Linux-2.6.16.22&nbsp; Linux<!--iwms_ad_begin--> <!--iwms_ad_end--></p>
<p>cd Linux</p>
<p>make mrproper # Make sure you have no stale .o files</p>
<p>make menuconfig #生成一个.config文件</p>
<p>Code maturity level options —&gt;</p>
<p>[*] Prompt for development and/or incomplete code/drivers&nbsp; #打开此项会让内核配置多出很多选项，但由于需要使用一些正在开发中的功能，因此必需打开这一选项</p>
<p>General setup —&gt;</p>
<p>(websrv)Local version - append to kernel release&nbsp;&nbsp; # 添加编译用途字符串，可以在uname -a时看到</p>
<p>[*] Support for paging of anonymous memory (swap)&nbsp; # 这是使用交换分区或者交换文件来做为虚拟内存的</p>
<p>[*] BSD Process Accounting #充许用户进程访问内核将账户信息写入文件中的</p>
<p>[*] Optimize for size #使gcc使用-Os的参数而不是-O2的参数来优化编译，以获得更小尺寸的内核，建议选上。</p>
<p>[*] Symmetric multi-processing support #超线程CPU也要选上这个选项 ，在单CPU的机器上，不选这个选项会更快一些。</p>
<p>[*] Preemptible Kernel #能使应用程序即使内核在高负载时也很可靠，建议最好选上</p>
<p>(1) Maximum number of CPUs (2-255) #支持的最大CPU数</p>
<p>[*] Machine Check Exception #让CPU检测到系统故障时通知内核(比如CPU过热)</p>
<p>Loadable module support —&gt;</p>
<p>[*]Enable loadable module support</p>
<p>[*]Automatic kernel module loading&nbsp;&nbsp; #内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块</p>
<p>Processor type and features —&gt;</p>
<p>(X)Subarchitecture Type (PC-compatible) —&gt;#是使Linux可以支持多种PC标准，可以让你选择一些其它架构。我们一般选择PC-compatible就可以了。</p>
<p>Processor family (Pentium-Pro) —&gt; CPU选项 这里针对自己的CPU型号，选取相应的选项。</p>
<p>(X) Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon #根据自己CPU选择</p>
<p>[ ] Generic x86 support#对X86系列CPU最大的兼容性，如果你的CPU能够在上面的列表中找到，就里就不用选了。</p>
<p>[ ] Symmetric multi-processing support #支持多处理器选项。如果是单CPU,得关闭。</p>
<p>&lt;*&gt; Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4#检查机器上可能存在的问题，如果有一个非致命错误出现将会自动的修复并且记录，这可以帮助你查出程序出现问题的原因.</p>
<p>High Memory Support (4GB) —&gt;</p>
<p>(x) off 我家PC是1G内存,也不可能升到4G ^_^</p>
<p>Power management options (ACPI, APM) —&gt;</p>
<p>ACPI (Advanced Configuration and Power Interface) Support —&gt;</p>
<p>&lt;*&gt; Button 捕获Power、Sleep、Lid（我也不知道这是什么按钮）等按钮是否按下，并做相应的动作</p>
<p>&lt;*&gt; Video 集成在板上的显卡的ACPI支持，对有些板卡可能不起作用</p>
<p>[*] CPU Frequency scaling #这一选项允许改变CPU的主频，使CPU在低负荷或使用电池时降低主频，达到省电的目的。</p>
<p>[*] Thermal Zone #大部份的台<span style="COLOR: #000000">式机和</span><a title=笔记本 style="COLOR: #000000" href="http://www.linuxidc.com/nbook/index.htm">笔记本</a><span style="COLOR: #000000">都</span>支持，不选还可能把处理器烧掉</p>
<p>Bus Options (PCI,PCMCIA, EISA, MCA, ISA) —&gt;</p>
<p>[ ] ISA support&nbsp; #没ISA了吧</p>
<p>PCCARD (PCMCIA/CardBus) support —&gt;#非<a title=笔记本 href="http://www.linuxidc.com/nbook/index.htm"><font style="COLOR: #000000" color=#0000ff>笔记本</font></a>可以不选这一</p>
<p>make</p>
<p>make modules_install</p>
<p>make install</p>
<p>#cp arch/i386/boot/bzImage /boot/Linux2622</p>
<p>vi /boot/grub/grub.conf #修改相应配置</p>
<p>reboot</p>
<p>看来新内核编译确实比以前方便多了，以前的make bzImage make modules等步骤都在make一步都搞定，以前还要cp 内核和System.map，修改Grub.conf的步骤，统统make install搞定!</p>
<p>注:</p>
<p>(1)cat /proc/version&nbsp; #查看版本,并可看到编译次数</p>
<p>(2)为新核心命名</p>
<p>打开/usr/src/Linux/Makefile。注意，在开始部分有一个变量EXTRAVERSION可以自行定义。修改这个变量，比如改成&#8220;EXTRAVERSION=-LVS&#8221;后，编译出的核心版本号就会显示成2.4.20-LVS。这样给出有含义的名称将有助于管理多个Linux核心。<br><br><br><strong>菜鸟浅谈Linux内核编译过程...</strong> <br><br>&nbsp;&nbsp;&nbsp; 原文地址：<a href="http://linux.chinaunix.net/bbs/viewthread.php?tid=208791">http://linux.chinaunix.net/bbs/viewthread.php?tid=208791</a>&nbsp;<br>菜鸟<span class=t_tag onclick=tagshow(event) href="tag.php?name=%B1%E0%D2%EB">编译</span>Linux<span class=t_tag onclick=tagshow(event) href="tag.php?name=%C4%DA%BA%CB">内核</span>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp;&nbsp;双眼皮的猪&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;菜鸟俺，最近研究了一下Linux内核的编译，有些许心得，望同大家分享一下，故有此文&#8230;我们这里要谈的不涉及到<span class=t_tag onclick=tagshow(event) href="tag.php?name=%D4%B4%C2%EB">源码</span>，只是一些内核编译的步骤及相关知识&#8230;因为本人是菜鸟。所以，也就希望和菜鸟们分享一下&#8230;<br>首先，您要确定您有一台装有Linux的<span class=t_tag onclick=tagshow(event) href="tag.php?name=%CF%B5%CD%B3">系统</span>,编译内核可以在本机上直接对本机内核进行编译，也可以从网上<span class=t_tag onclick=tagshow(event) href="tag.php?name=%CF%C2%D4%D8">下载</span>内核在其基础上进行编译.我们这里详细讲一下升级内核的方法，<br>您可以从www.<span class=t_tag onclick=tagshow(event) href="tag.php?name=kernel">kernel</span>.org下载到最新的Kernel版本，我们这里以RedHat9为例(其他版本其实也都一样，只是在<span class=t_tag onclick=tagshow(event) href="tag.php?name=make">make</span> menuconfig中有点不同)，详细讲一下内核编译的步骤 ：<br>首先，确认您是以<font color=red>root 用户</font>登陆.把内核源码cp到/usr/src<span class=t_tag onclick=tagshow(event) href="tag.php?name=%C4%BF%C2%BC">目录</span>底下(请确认您是以root的身份在进行操作，否则会返回Permission Denied的提示):<br>mkdir /usr/src/<span class=t_tag onclick=tagshow(event) href="tag.php?name=linux">linux</span>-2.4.22<br>cp 2.4.22.tar.bz2 /usr/src/linux-2.4.22 （我用的是2.4.22的kernel）<br>解压缩之，熟悉linux系统的朋友应该会知道：<br>bunzip2 ***.tar.bz2 | tar xvf <br>进入到/usr/src/linux-2.4.22目录,，请确定您是在此目录下操作，而且保证您所敲入的<span class=t_tag onclick=tagshow(event) href="tag.php?name=%C3%FC%C1%EE">命令</span>是正确的，不然会返回No rule to make target ***,stop类似的错误提示，这可是菜鸟们所要注意的哦。不然开头搞不好。后面就不用谈了哦&#8230;<br><font color=red>1#cd /usr/src/linux-2.4.22<br>2#make mrproper</font><br>其实这个步骤是可以不用要的,这个目的是清除原先此目录下残留的.config和.o（object<span class=t_tag onclick=tagshow(event) href="tag.php?name=%CE%C4%BC%FE">文件</span>），如果我们是刚下载的源码，那么这一步您就可以省了：），但是如果您已经编译过多次内核的话，这一步可是一定要的哦，不然以后出现很多小问题，可别怨我没告诉你&#8230;.config文件我们会在后面提到&#8230;<br><font color=red>3#make menuconfig或make config或make xconfig</font><br>这就开始编译内核了，打起十二分精神，编译不好，系统是无法启动的啦.小心应付，其实这个步骤还有其他两种方式，make config以及make xconfig，make config是一个一个的回答问题，命令行方式，您如果回答错了一个，您就不能改正了哦（所以不推荐这种编译方式），make menuconfig和make xconfig提供了更友好的操作方式，不过make menuconfig需要ncurse包，而make xconfig也需要某个东东，好象是tk，忘记了，一般都<span class=t_tag onclick=tagshow(event) href="tag.php?name=%B0%B2%D7%B0">安装</span>了，俺就不提了，如果没有您可没法运行的哦.什么你不知道什么是ncurse和tk是什么？那我就不说了，去www.google.com去搜索一下吧...<br>这里边很多东东都要注意选啊，这个要求您对硬件，<span class=t_tag onclick=tagshow(event) href="tag.php?name=%C8%ED%BC%FE">软件</span>，<span class=t_tag onclick=tagshow(event) href="tag.php?name=%CD%F8%C2%E7">网络</span>有一定的认识，实在不知道就按默认的来吧.免得以后启动不了骂天骂地都没用哦，我可是好多次启动不了，最后才摸出<span class=t_tag onclick=tagshow(event) href="tag.php?name=%C7%CF%C3%C5">窍门</span>的&#8230;<br>这个不是这个帖子的主题(其实我很想写的，但是没人合作，一个人写又太累，再加上我最近也忙考试，所以&#8230;)所以我们就略过哦&#8230;<br>在make menuconfig中，有的让您选择 </p>
<li>,有的让您选择[M],有的让你选择[],*表示选中直接加载进kernel,而M则表示会在后面的make <span class=t_tag onclick=tagshow(event) href="tag.php?name=module">module</span>s中编译成modules,让您随时可以通过insmod和modprobe调入内核&#8230;个人认为Linux的这个<span class=t_tag onclick=tagshow(event) href="tag.php?name=%B9%A6%C4%DC">功能</span>确实非常非常的棒&#8230;而这可是其他操作系统所没有的哦. ..而make *config的目的就是生成.config文件.至于想知道.config文件是干啥子的，看一下就知道了&#8230;J<br>这个步骤完成之后，系统会提醒您，next step you should run &#8220;make dep&#8221;<br><font color=red>4#make dep&nbsp;&nbsp;</font>(一到两分钟)<br>在确定要编译哪些东东之后(make *config)，这个要确定依赖性，这个东东，手工也可以完成的，只是&#8230;.怕您要把什么东东都放下，然后花上十天半个月的来搞，还把您忙的焦头烂额，还会出错，不过我们用这条指令就可以完成了，也就不用麻烦您那么忙着搞了，呵呵，这个确定依赖性以后，然后就要清除一些东东了&#8230; <br><font color=red>5#make clean&nbsp;&nbsp;</font>（少于一分钟）<br>清除一些不必要的文件，那些乱七八糟的东东是可能会导致您在编译过程中出现错误的哦，一定要做哦&#8230;<br><font color=red>6#make bzImage</font>（15分钟左右）-<br>哦，这个可是最最最重要的啦.这个就是生成您的新核心了，不要告诉我您不知道核心是什么啊，也就是kernel啦，所有的系统硬件软件交互都靠它了哦..<br><br>其实可以是make zImage的，但是你要确保您所编译的这个新内核在640K之下，您就可以使用make zImage,如果比640K大，那就要用make bzImage，您要说没编译出来咋知道多大呢？我的看法是建议用bzImage,因为我编译出来的内核一般都是800~900K左右. &#8230;我是菜鸟，本帖子也是为我一样的菜鸟所写，所以. ..咱们就默认make bzImage&#8230;<br>还要注意哦，这段时间你是没法做事的，你会看见屏幕上一行一行的字往下跑，不用担心哦，你可以选择把这些标准输出上的东东都重定向到/dev/null去哦，这样您就看不到这些东东了，当然，你也可以把它放在背景执行啊，在运行要开始的时候在后面加上一个&amp;符号，这个表示是后台运行&#8230;如果您怕这些会对您编译内核有什么影响（其实没什么影响哦），那您干脆就这样，按Alt+F2,直接打开另一个<span class=t_tag onclick=tagshow(event) href="tag.php?name=%D0%E9%C4%E2">虚拟</span>终端，在那里边做事，等到编译完的时候。机器会咚的一声通知您的哦，您要真不想等的话，就去玩会吧，听听歌什么的，过会再回来，这里可是考验您耐心的时候哦，如果这您都没耐心，那后面还有个耗时的步骤哦，还是忍忍吧，为了不让系统浪费资源，你还是忍忍哦，成功后您一定会很高兴的&#8230;<br>假如您的内核现在已经编译好了，当然越小越好哦J,这时候系统会有个提示编译后的bzImage放到哪里去了，提示最后几行，已经告诉了您的新编译出的核心位置啊，一般都在这里哦（我这里是RedHat9）,/usr/src/linux-2.4.22/arch/i386/boot/,这时候您要做的就是把它放到/boot目录底下去哦，不然系统可没法启动的 &#8230;<br>#cp /usr/src/linux-2.4.22/arch/i386/boot/bzImage /boot/vmlinuz-2.4.22<br>(这里其实已经把bzImage更名为vmlinuz-2.4.22,呆会在/boot/grub/grub.conf里就指定这个新内核)<br><br><font color=red>7#make modules</font>（耗费时间取决于您所选择编译为modules的数量）<br>哇哇，又一个耗费时间的步骤来了，您还是找点什么做做吧，估计也要好久哦，大概20分钟吧，这个步骤就是把您在make menuconfig里边所选择为M的东东,全部编译成<span class=t_tag onclick=tagshow(event) href="tag.php?name=%C4%A3%BF%E9">模块</span>并放在/usr/src/linux-2.4.22/下&#8230;如果你选择的M比较多的话，还是&#8230;去玩会吧，家务没做啊？功课没做啊什么的？不过如果您比较喜欢把所有东东都编进内核的话，那就不需要多长时间，少选一些为M，这样很快就可以完成，我的只用了一分钟就完成了，不过如果您有很多不知道而选择默认的话，那恐怕就要好花时间了. ..<br><font color=red>8#make modules_install</font><br>hoho，这里可是安装module的步骤了，您所选择的模块编译完成后都放在/usr/src/linux-2.4.22某子目录下，哪个子目录您看一下就知道了，make modules之后会有提示的..我也忘记了，呵呵：），这多不好，而insmod以及相关指令都是从/lib/modules/linux-2.4.22下取module的啊，这个指令就是把编译好的mod放到/lib/modules下去的哦，如果开始没有Linux-2.4.22目录，（也就是说您是第一次编译2.4.22的内核），那么这条指令就会<span class=t_tag onclick=tagshow(event) href="tag.php?name=%D7%D4%B6%AF">自动</span>创建该目录，如果已经有了。那就会把编译后的内核放进该目录 &#8230;您以后要把mod调进kernel的时候（insmod,modprobe）都从这里寻找.o的哦&#8230;<br><font color=red>注意</font>哦，如果你用的是SCSI<span class=t_tag onclick=tagshow(event) href="tag.php?name=%D3%B2%C5%CC">硬盘</span>并且采用的是ext3<span class=t_tag onclick=tagshow(event) href="tag.php?name=%B7%D6%C7%F8">分区</span>格式的话，请注意，您一定要制作initrd.img(因为SCSI卡的<span class=t_tag onclick=tagshow(event) href="tag.php?name=%C7%FD%B6%AF">驱动</span>包括在这个里边)，如果你使用的是IDE硬盘，您可以跳过这一步，当然，您要是有耐心的话，这里学习一下也没什么坏处哦<br>mkinitrd可以制作initrd.img,一般是这么使用的，如果想具体了解的话，可以man mkinitrd,如果只想搞个initrd.img出来的话，那就mkinitrd /boot/initrd-custom.img 2.4.22就在/boot目录下创建了一个initrd-custom.img文件，也就是初始化镜像&#8230;(initialed ramdisk)&#8230;里边主要有一些驱动，因为放在内核中就显得过大，所以编译进initrd.img，在启动中释放&#8230;而这个2.4.22就表示/lib/modules下面的2.4.22目录了&#8230;<br>到这里，<font color=olive>以下就有两种做法哦&#8230;</font><br><font color=olive>一&nbsp;&nbsp;手动更新System.map文件</font><br>它是当前正在运行的kernel的fuctions的说明，如果您编译内核后不更新System.map,如果碰到问题.,Trouble shooting就很困难了哦，您可有可能遇见很多烦人的信息哦，所以我们还是手动更新一次哦，也蛮简单的&#8230;<br>#cp /usr/src/linux-2.4.22/System.map /boot/System.map <br>系统会提示您： <br>Overwrite the &#8216;boot/System.map&#8217;<br>敲入Y，回车<br><font color=olive>二 make install</font><br>说到make install我们这里又有点话要说哦，make install就相当于一个自动化的过程啦，因为其他东东它都会帮您做好的，如果您确实比较懒，或者已经对前边的步骤已经很没耐心了，您就直接执行此步骤吧&#8230;当然您可以很快做好新系统了，而且可以重新从新内核启动哦，但是您可能对这中间发生的事情就不明白了哦，小时侯上课的时候老师谈什么要授之以渔，而不要授之以鱼，没办法。您要是觉得麻烦，俺就省了，俺手还觉得累，呵呵：）<br>还是谈谈这个过程吧，这期间，系统会把您的当前release版本号后面加上一个custom然后写到grub.conf里边去，重新启动后您就可以看到2.4.22custom的选单了 &#8230;<br>至于这个文件名是怎么决定出来的呢？您可以看一看/usr/src/linux-2.4.22哦，里边有个Makefile,您试一下<br>#head &#8211;n 5 Makefile<br>相信你已经看出来了吧&#8230;这也就是命名的原因啦,于是您也可以自己修改您的Linux哦&#8230;自己custom一下release名称岂不爽哉&#8230;<br>从以上步骤来看，基本上已经没有什么问题了，当然，请确认您在make menuconfig里边没有做过任何错误的事情哦，不然重新启动后，依然引导不了的，譬如fs里边一定要选中VFS,EXT3编译为M，因为现在系统一般都采用了ext3格式，您要是漏掉这个东东，加载不了分区，可别怨我没告诉你哦，当然second extended fs更是一定要选啦：）<br>我在编译的历史中曾经有VFS:Unable to <span class=t_tag onclick=tagshow(event) href="tag.php?name=mount">mount</span> root fs on 00:00的经历，一直卡在那里，好久都没<span class=t_tag onclick=tagshow(event) href="tag.php?name=%BD%E2%BE%F6">解决</span>啊，不过后来终于发现应该是fs的问题，或者是您的root分区没指定好啊..<br>看了这么多。相信您也很累了，帖子也快到头了，因为马上就要完了&#8230;(如果上边您选择了make install,这里您就不用看了哦)最最最最后一点，我们要修改Grub.conf（如果您采用的是grub来引导的话，抱歉我不懂lilo,因为我也是菜鸟&#8230;），使系统在重新启动后可以从新的内核启动&#8230;<br>#vi /boot/menu.lst<br>menu.lst跟grub.conf内容是一样的哦，是个link，不过这里边可是彩色的文字，我很喜欢，就编辑它了..<br>在原来的基础上添加一行：<br>title&nbsp;&nbsp;new Linux(2.4.22)&nbsp; &nbsp; //这里您可以自己命名，也就是出现在grub启动菜单里的东东哦<br>kernel /vmlinuz-2.4.22 ro root=LABEL=/<br>上边这行是指定kernel 的路径，记得我们前边生成一个vmlinuz-2.4.22的新内核吗？对了哦，就是它了&#8230;这里指定为它后，在您选择以这个选项启动后，就会起用这里的新内核了.<br>后面跟着的ro 表示是readonly,就是只读的意思咯，root=LABEL=/是指定路径<br>initrd /initrd.img<br>这里要指定为您所制作的initrd.img哦，如果这个制作错误的话，可启动不了的哦&#8230;当然，这说的是您使用的是SCSI硬盘，如果是IDE硬盘的话。您可以在这里写上no initrd取代，这样系统就不会使用intird啦，当然这个最好还是带着吧，前边我们也讲了它的作用了，主要还是一些驱动&#8230;.以及系统初始化的<span class=t_tag onclick=tagshow(event) href="tag.php?name=%B3%CC%D0%F2">程序</span>&#8230;<br>好了，就到这里了&#8230;假如您有什么疑问，在下面跟贴讨论啊：）<br></li>
<p><br>参考：<br>&nbsp;&nbsp;&nbsp;1、 源码根目录下的README。</p>
<img src ="http://www.cppblog.com/toMyself/aggbug/130987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-10-23 18:03 <a href="http://www.cppblog.com/toMyself/archive/2010/10/23/130987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GNU开发工具链</title><link>http://www.cppblog.com/toMyself/archive/2010/09/26/127746.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Sun, 26 Sep 2010 06:00:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/09/26/127746.html</guid><description><![CDATA[&nbsp;
<p><strong><span>GNU</span></strong><strong><span>开发工具链</span></strong></p>
<p><strong><span>GNU binutils</span></strong></p>
<ul>
    <li><span>binutils</span><span>是一组二进制工具程序集，是辅助</span><span>GCC</span><span>的主要软件，它主要包括</span></li>
</ul>
<ol>
    <li><strong><span>addr2line</span></strong><span> </span><span>把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名，它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。</span><strong> </strong></li>
    <li><strong><span>ar</span></strong><span> </span><span>建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件，其结构保证了可以恢复原始文件内容。</span></li>
    <li><strong><span>as</span></strong><span> </span><span>是</span><span>GNU</span><span>汇编器，主要用来编译</span><span>GNU C</span><span>编译器</span><span>gcc</span><span>输出的汇编文件，他将汇编代码转换成二进制代码，并存放到一个</span><span>object</span><span>文件中，该目标文件将由连接器</span><span>ld</span><span>连接</span></li>
    <li><strong><span>C++filt</span></strong><span>解码</span><span>C++</span><span>符号名，连接器使用它来过滤</span> <span>C++ </span><span>和</span> <span>Java </span><span>符号，防止重载函数冲突。</span> </li>
    <li><strong><span>gprof</span></strong><span> </span><span>显示程序调用段的各种数据。</span><strong> </strong></li>
    <li><strong><span>ld</span></strong><span> </span><span>是连接器，它把一些目标和归档文件结合在一起，重定位数据，并链接符号引用，最终形成一个可执行文件。通常，建立一个新编译程序的最后一步就是调用</span><span>ld</span><span>。</span><strong> </strong></li>
    <li><strong>ldd</strong> 该命令用于判断某个可执行的 binary 档案含有什么动态函式库。</li>
    <li><strong><span>nm</span></strong><span> </span><span>列出目标文件中的符号。</span><strong> </strong></li>
    <li><strong><span>objcopy</span></strong><span>把一种目标文件中的内容复制到另一种类型的目标文件中</span><span>.<strong> </strong></span></li>
    <li><strong><span>objdump</span></strong><span> </span><span>显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只有编写编译工具的人才感兴趣。</span><strong> </strong></li>
    <li><strong><span>ranlib</span></strong><span> </span><span>产生归档文件索引，并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。</span><strong> </strong></li>
    <li><strong><span>readelf</span></strong><span> </span><span>显示</span><span>ebf</span><span>格式可执行文件的信息。</span></li>
    <li><strong><span>size</span></strong><span> </span><span>列出目标文件每一段的大小以及总体的大小。默认情况下，对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。</span><strong> </strong></li>
    <li><strong><span>strings</span></strong><span> </span><span>打印某个文件的可打印字符串，这些字符串最少</span><span>4</span><span>个字符长，也可以使用选项</span><span>-n</span><span>设置字符串的最小长度。默认情况下，它只打印目标文件初始化和可加载段中的可打印字符；对于其它类型的文件它打印整个文件的可打印字符，这个程序对于了解非文本文件的内容很有帮助。</span><strong> </strong></li>
    <li><strong><span>strip</span></strong><span> </span><span>丢弃目标文件中的全部或者特定符号。</span></li>
    <li><strong><span>libiberty</span></strong><span> </span><span>包含许多</span><span>GNU</span><span>程序都会用到的函数，这些程序有：</span> <span>getopt, obstack, strerror, strtol </span><span>和</span> <span>strtoul.<strong> </strong></span></li>
    <li><strong><span>libbfd</span></strong><span> </span><span>二进制文件描述库</span><span>.<strong> </strong></span></li>
    <li><strong><span>libopcodes</span></strong><span> </span><span>用来处理</span><span>opcodes</span><span>的库</span><span>, </span><span>在生成一些应用程序的时候也会用到它</span><span>, </span><span>比如</span><span>objdump.Opcodes</span><span>是文本格式可读的处理器操作指令</span><span>.</span></li>
</ol>
<p>&nbsp;<a href="http://www.cppblog.com/Files/toMyself/GNU_development_tool_chain.zip">/Files/toMyself/GNU_development_tool_chain.zip</a></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/127746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-09-26 14:00 <a href="http://www.cppblog.com/toMyself/archive/2010/09/26/127746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux Device Driver</title><link>http://www.cppblog.com/toMyself/archive/2010/09/22/127348.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Wed, 22 Sep 2010 09:21:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/09/22/127348.html</guid><description><![CDATA[<p>Linux 设备驱动 Edition 3<br><a href="http://lsec.cc.ac.cn/~tengfei/doc/ldd3/index.html">http://lsec.cc.ac.cn/~tengfei/doc/ldd3/index.html</a></p>
<p>Windows 文件系统驱动(磁盘驱动，分区过滤驱动或文件过滤驱动)</p>
<p>网络驱动（网络协议的实现）<br><br>start out in Linux kernel development<br>For Kernel Hackers</p>
<p>阅读linux内核源代码<br>以应用层的数据发送和接收为入口，深入内核跟踪分析。<br>Linux 跟踪调试到内核<br>内核 调试技术<br>揭开Linux系统内核调试器神秘面纱<br>使用 SystemTap 调试内核 <br>使用 ftrace 调试 Linux 内核<br>Kernel hacking<br><br><br></p>
<p>df -aT<br>tmpfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1556936&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp; 1556936&nbsp;&nbsp; 0% /dev/shm</p>
<p>tmpfs<br><a href="http://e2enetworks.com/2008/10/25/linux-in-memory-filesystems-tmpfs-vs-ramdisk/">http://e2enetworks.com/2008/10/25/linux-in-memory-filesystems-tmpfs-vs-ramdisk/</a><br><a href="http://blog.donews.com/hackerstar/archive/2006/08/11/996142.aspx">http://blog.donews.com/hackerstar/archive/2006/08/11/996142.aspx</a><br><a href="http://blog.chinaunix.net/u3/102979/showart_2162934.html">http://blog.chinaunix.net/u3/102979/showart_2162934.html</a><br></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/127348.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-09-22 17:21 <a href="http://www.cppblog.com/toMyself/archive/2010/09/22/127348.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux工具的配置</title><link>http://www.cppblog.com/toMyself/archive/2010/09/18/127011.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Sat, 18 Sep 2010 09:44:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/09/18/127011.html</guid><description><![CDATA[<span style="font-size: 14pt">vim的配置：<br />/etc/vimrc</span><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 12pt; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;v</span><span style="color: #000000">:</span><span style="color: #000000">lang&nbsp;</span><span style="color: #000000">=~</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">utf8$</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;v</span><span style="color: #000000">:</span><span style="color: #000000">lang&nbsp;</span><span style="color: #000000">=~</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">UTF-8$</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;set&nbsp;fileencodings</span><span style="color: #000000">=</span><span style="color: #000000">utf</span><span style="color: #000000">-</span><span style="color: #800000">8</span><span style="color: #000000">,</span><span style="color: #000000">latin1<br />endif<br /><br />set&nbsp;nocompatible&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;Use&nbsp;Vim&nbsp;defaults&nbsp;(much&nbsp;better!)<br />set&nbsp;bs=indent,eol,start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;allow&nbsp;backspacing&nbsp;over&nbsp;everything&nbsp;in&nbsp;insert&nbsp;mode<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">set&nbsp;ai&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;always&nbsp;set&nbsp;autoindenting&nbsp;on<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">set&nbsp;backup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;keep&nbsp;a&nbsp;backup&nbsp;file<br />set&nbsp;viminfo</span><span style="color: #000000">=</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000; font-weight: bold">20,\"50&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;read/write&nbsp;a&nbsp;.viminfo&nbsp;file,&nbsp;don</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000">t&nbsp;store&nbsp;more<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;than&nbsp;50&nbsp;lines&nbsp;of&nbsp;registers<br />set&nbsp;history=50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;keep&nbsp;</span><span style="color: #800000">50</span><span style="color: #000000">&nbsp;lines&nbsp;of&nbsp;command&nbsp;line&nbsp;history<br />set&nbsp;ruler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;show&nbsp;the&nbsp;cursor&nbsp;position&nbsp;all&nbsp;the&nbsp;time<br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;Only&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;this&nbsp;part&nbsp;when&nbsp;compiled&nbsp;with&nbsp;support&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;autocommands<br /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;has(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">autocmd</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">)<br />&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;In&nbsp;text&nbsp;files,&nbsp;always&nbsp;limit&nbsp;the&nbsp;width&nbsp;of&nbsp;text&nbsp;to&nbsp;78&nbsp;characters<br />&nbsp;&nbsp;autocmd&nbsp;BufRead&nbsp;*.txt&nbsp;set&nbsp;tw=78<br />&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;When&nbsp;editing&nbsp;a&nbsp;file</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;always&nbsp;jump&nbsp;to&nbsp;the&nbsp;</span><span style="color: #0000ff">last</span><span style="color: #000000">&nbsp;cursor&nbsp;position<br />&nbsp;&nbsp;autocmd&nbsp;BufReadPost&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000"><br />&nbsp;&nbsp;</span><span style="color: #000000">\</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;line(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">'\</span><span style="color: #000000; font-weight: bold">""</span><span style="color: #000000; font-weight: bold">)&nbsp;&gt;&nbsp;0&nbsp;&amp;&amp;&nbsp;line&nbsp;(</span><span style="color: #000000; font-weight: bold">"'</span><span style="color: #000000; font-weight: bold">\"")&nbsp;&lt;=&nbsp;line("$")&nbsp;|<br />&nbsp;&nbsp;\&nbsp;&nbsp;&nbsp;exe&nbsp;"normal!&nbsp;g</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000">\</span><span style="color: #000000; font-weight: bold">""</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000"><br />&nbsp;&nbsp;</span><span style="color: #000000">\</span><span style="color: #000000">&nbsp;endif<br />endif<br /><br /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;has(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">cscope</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;filereadable(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">/usr/bin/cscope</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;set&nbsp;csprg</span><span style="color: #000000">=/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">cscope<br />&nbsp;&nbsp;&nbsp;set&nbsp;csto</span><span style="color: #000000">=</span><span style="color: #800000">0</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;set&nbsp;cst<br />&nbsp;&nbsp;&nbsp;set&nbsp;nocsverb<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;add&nbsp;any&nbsp;database&nbsp;in&nbsp;current&nbsp;directory<br />&nbsp;&nbsp;&nbsp;if&nbsp;filereadable(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">cscope</span><span style="color: #000000">.</span><span style="color: #000000">out</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs&nbsp;add&nbsp;cscope.out<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;add&nbsp;database&nbsp;pointed&nbsp;to&nbsp;by&nbsp;environment<br />&nbsp;&nbsp;&nbsp;elseif&nbsp;</span><span style="color: #800080">$CSCOPE_DB</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">""</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs&nbsp;add&nbsp;</span><span style="color: #800080">$CSCOPE_DB</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;endif<br />&nbsp;&nbsp;&nbsp;set&nbsp;csverb<br />endif<br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;Switch&nbsp;syntax&nbsp;highlighting&nbsp;on,&nbsp;when&nbsp;the&nbsp;terminal&nbsp;has&nbsp;colors<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;Also&nbsp;switch&nbsp;on&nbsp;highlighting&nbsp;the&nbsp;</span><span style="color: #0000ff">last</span><span style="color: #000000">&nbsp;used&nbsp;search&nbsp;pattern</span><span style="color: #000000">.</span><span style="color: #000000"><br /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">t_Co&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;has(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">gui_running</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">)<br />&nbsp;&nbsp;syntax&nbsp;on<br />&nbsp;&nbsp;set&nbsp;hlsearch<br />endif</span></div><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">&#8220;双引号开始的行为注释行，下同&nbsp;<br /><br />&#8220;去掉讨厌的有关vi一致性模式，避免以前版本的一些bug和局限&nbsp;<br /><br />set&nbsp;nocompatible&nbsp;<br /><br />&#8220;显示行号&nbsp;<br /><br />set&nbsp;nummber&nbsp;<br /><br />&#8220;检测文件的类型&nbsp;<br /><br />filetype&nbsp;on&nbsp;<br /><br />&#8220;记录历史的行数&nbsp;<br /><br />set&nbsp;history</span><span style="color: #000000">=</span><span style="color: #800000">1000</span><span style="color: #000000">&nbsp;<br /><br />&#8220;背景使用黑色&nbsp;<br /><br />set&nbsp;background</span><span style="color: #000000">=</span><span style="color: #000000">dark&nbsp;<br /><br />&#8220;语法高亮度显示&nbsp;<br /><br />syntax&nbsp;on&nbsp;<br /><br /><br /><br />&#8220;下面两行在进行编写代码时，在格式对起上很有用；&nbsp;<br /><br />&#8220;第一行，vim使用自动对起，也就是把当前行的对起格式应用到下一行；&nbsp;<br /><br />&#8220;第二行，依据上面的对起格式，智能的选择对起方式，对于类似C语言编&nbsp;<br /><br />&#8220;写上很有用&nbsp;<br /><br />set&nbsp;autoindent&nbsp;<br />set&nbsp;smartindent&nbsp;<br /><br />&#8220;第一行设置tab键为4个空格，第二行设置当行之间交错时使用4个空格&nbsp;<br /><br />set&nbsp;tabstop</span><span style="color: #000000">=</span><span style="color: #800000">4</span><span style="color: #000000">&nbsp;<br />set&nbsp;shiftwidth</span><span style="color: #000000">=</span><span style="color: #800000">4</span><span style="color: #000000">&nbsp;<br /><br />&#8220;设置匹配模式，类似当输入一个左括号时会匹配相应的那个右括号&nbsp;<br /><br />set&nbsp;showmatch&nbsp;<br /><br />&#8220;去除vim的GUI版本中的toolbar&nbsp;<br /><br />set&nbsp;guioptions</span><span style="color: #000000">-=</span><span style="color: #000000">T&nbsp;<br /><br />&#8220;当vim进行编辑时，如果命令错误，会发出一个响声，该设置去掉响声&nbsp;<br /><br />set&nbsp;vb&nbsp;t_vb</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;<br /><br />&#8220;在编辑过程中，在右下角显示光标位置的状态行&nbsp;<br /><br />set&nbsp;ruler&nbsp;<br /><br />&#8220;默认情况下，寻找匹配是高亮度显示的，该设置关闭高亮显示&nbsp;<br /><br />set&nbsp;nohls&nbsp;<br /><br />&#8220;查询时非常方便，如要查找book单词，当输入到</span><span style="color: #000000">/</span><span style="color: #000000">b时，会自动找到第一&nbsp;<br /><br />&#8220;个b开头的单词，当输入到</span><span style="color: #000000">/</span><span style="color: #000000">bo时，会自动找到第一个bo开头的单词，依&nbsp;<br /><br />&#8220;次类推，进行查找时，使用此设置会快速找到答案，当你找要匹配的单词&nbsp;<br /><br />&#8220;时，别忘记回车&nbsp;<br /><br />set&nbsp;incsearch&nbsp;<br /><br />&#8220;修改一个文件后，自动进行备份，备份的文件名为原文件名加&#8220;</span><span style="color: #000000">~</span><span style="color: #000000">&#8220;后缀&nbsp;<br /><br /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;has(&#8220;vms&#8221;)&nbsp;<br /><br />set&nbsp;nobackup&nbsp;<br /><br /></span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;<br /><br />set&nbsp;backup&nbsp;<br /><br />endif&nbsp;<br /></span></div><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;An&nbsp;example&nbsp;for&nbsp;a&nbsp;vimrc&nbsp;file.<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;Maintainer:&nbsp;&nbsp;&nbsp;&nbsp;Bram&nbsp;Moolenaar&nbsp;&lt;Bram@vim.org&gt;<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">Last</span><span style="color: #000000">&nbsp;change</span><span style="color: #000000">:</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000">2002</span><span style="color: #000000">&nbsp;Sep&nbsp;</span><span style="color: #800000">19</span><span style="color: #000000"><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold"><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;To&nbsp;</span><span style="color: #0000ff">use</span><span style="color: #000000">&nbsp;it</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;copy&nbsp;it&nbsp;to<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;Unix&nbsp;and&nbsp;OS/2:&nbsp;&nbsp;~/.vimrc<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;Amiga</span><span style="color: #000000">:</span><span style="color: #000000">&nbsp;&nbsp;s</span><span style="color: #000000">:.</span><span style="color: #000000">vimrc<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;&nbsp;for&nbsp;MS-DOS&nbsp;and&nbsp;Win32:&nbsp;&nbsp;$VIM\_vimrc<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;OpenVMS</span><span style="color: #000000">:</span><span style="color: #000000">&nbsp;&nbsp;sys</span><span style="color: #800080">$login</span><span style="color: #000000">:.</span><span style="color: #000000">vimrc<br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;When&nbsp;started&nbsp;as&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">evim</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">,&nbsp;evim.vim&nbsp;will&nbsp;already&nbsp;have&nbsp;done&nbsp;these&nbsp;settings.<br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">set&nbsp;path</span><span style="color: #000000">+=</span><span style="color: #000000">c</span><span style="color: #000000">:/</span><span style="color: #000000">prog</span><span style="color: #000000">/</span><span style="color: #000000">include<br /><br />set&nbsp;nocp<br />filetype&nbsp;plugin&nbsp;on<br /><br /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;v</span><span style="color: #000000">:</span><span style="color: #000000">progname&nbsp;</span><span style="color: #000000">=~?</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">evim</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br />&nbsp;&nbsp;finish<br />endif<br />set&nbsp;guifont</span><span style="color: #000000">=</span><span style="color: #000000">Bitstream</span><span style="color: #000000">\</span><span style="color: #000000">&nbsp;Vera</span><span style="color: #000000">\</span><span style="color: #000000">&nbsp;Sans</span><span style="color: #000000">\</span><span style="color: #000000">&nbsp;Mono</span><span style="color: #000000">\</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">11</span><span style="color: #000000"><br />so&nbsp;</span><span style="color: #800080">$VIMRUNTIME</span><span style="color: #000000">/</span><span style="color: #000000">delmenu</span><span style="color: #000000">.</span><span style="color: #000000">vim<br />so&nbsp;</span><span style="color: #800080">$VIMRUNTIME</span><span style="color: #000000">/</span><span style="color: #000000">menu</span><span style="color: #000000">.</span><span style="color: #000000">vim<br /><br /><br />set&nbsp;tags</span><span style="color: #000000">=./</span><span style="color: #000000">tags<br /><br />set&nbsp;tabstop</span><span style="color: #000000">=</span><span style="color: #800000">4</span><span style="color: #000000"><br />set&nbsp;shiftwidth</span><span style="color: #000000">=</span><span style="color: #800000">4</span><span style="color: #000000"><br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;Use&nbsp;Vim&nbsp;settings,&nbsp;rather&nbsp;then&nbsp;Vi&nbsp;settings&nbsp;(much&nbsp;better!).<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;This&nbsp;must&nbsp;be&nbsp;first</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;because&nbsp;it&nbsp;changes&nbsp;other&nbsp;options&nbsp;as&nbsp;a&nbsp;side&nbsp;effect</span><span style="color: #000000">.</span><span style="color: #000000"><br />set&nbsp;nocompatible<br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;allow&nbsp;backspacing&nbsp;over&nbsp;everything&nbsp;in&nbsp;insert&nbsp;mode<br />set&nbsp;backspace=indent,eol,start<br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;has(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">vms</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">)<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;&nbsp;set&nbsp;nobackup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;not&nbsp;keep&nbsp;a&nbsp;backup&nbsp;file</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">use</span><span style="color: #000000">&nbsp;versions&nbsp;instead<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">else<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;&nbsp;set&nbsp;backup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;keep&nbsp;a&nbsp;backup&nbsp;file<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">endif<br />set&nbsp;history</span><span style="color: #000000">=</span><span style="color: #800000">50</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;keep&nbsp;50&nbsp;lines&nbsp;of&nbsp;command&nbsp;line&nbsp;history<br />set&nbsp;ruler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;show&nbsp;the&nbsp;cursor&nbsp;position&nbsp;all&nbsp;the&nbsp;</span><span style="color: #0000ff">time</span><span style="color: #000000"><br />set&nbsp;showcmd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;display&nbsp;incomplete&nbsp;commands<br />set&nbsp;incsearch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;incremental&nbsp;searching<br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;For&nbsp;Win32&nbsp;GUI:&nbsp;remove&nbsp;'t'&nbsp;flag&nbsp;from&nbsp;'guioptions':&nbsp;no&nbsp;tearoff&nbsp;menu&nbsp;entries<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;let&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">guioptions&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;substitute(</span><span style="color: #000000">&amp;</span><span style="color: #000000">guioptions</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">t</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">""</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">g</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">)<br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;Don't&nbsp;use&nbsp;Ex&nbsp;mode,&nbsp;use&nbsp;Q&nbsp;for&nbsp;formatting<br />map&nbsp;Q&nbsp;gq<br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;This&nbsp;is&nbsp;an&nbsp;alternative&nbsp;that&nbsp;also&nbsp;works&nbsp;in&nbsp;block&nbsp;mode</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;but&nbsp;the&nbsp;deleted<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;text&nbsp;is&nbsp;lost&nbsp;and&nbsp;it&nbsp;only&nbsp;works&nbsp;for&nbsp;putting&nbsp;the&nbsp;current&nbsp;register.<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">vnoremap&nbsp;p&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">_dp<br /><br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;Switch&nbsp;syntax&nbsp;highlighting&nbsp;on</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;when&nbsp;the&nbsp;terminal&nbsp;has&nbsp;colors<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;Also&nbsp;switch&nbsp;on&nbsp;highlighting&nbsp;the&nbsp;last&nbsp;used&nbsp;search&nbsp;pattern.<br />if&nbsp;&amp;t_Co&nbsp;&gt;&nbsp;2&nbsp;||&nbsp;has(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">gui_running</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">)<br />&nbsp;&nbsp;syntax&nbsp;on<br />&nbsp;&nbsp;set&nbsp;hlsearch<br />endif<br />colorscheme&nbsp;desert<br />set&nbsp;enc=utf-8<br />set&nbsp;fenc=utf-8<br />set&nbsp;fencs=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936<br /><br /></span><span style="color: #000000; font-weight: bold">""</span><span style="color: #000000; font-weight: bold">Encoding&nbsp;settings<br />if&nbsp;has(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">multi_byte</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;Set&nbsp;fileencoding&nbsp;priority<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;getfsize(expand(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">%</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">))&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">0</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;fileencodings</span><span style="color: #000000">=</span><span style="color: #000000">ucs</span><span style="color: #000000">-</span><span style="color: #000000">bom</span><span style="color: #000000">,</span><span style="color: #000000">utf</span><span style="color: #000000">-</span><span style="color: #800000">8</span><span style="color: #000000">,</span><span style="color: #000000">cp936</span><span style="color: #000000">,</span><span style="color: #000000">big5</span><span style="color: #000000">,</span><span style="color: #000000">euc</span><span style="color: #000000">-</span><span style="color: #000000">jp</span><span style="color: #000000">,</span><span style="color: #000000">euc</span><span style="color: #000000">-</span><span style="color: #000000">kr</span><span style="color: #000000">,</span><span style="color: #000000">latin1<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;fileencodings</span><span style="color: #000000">=</span><span style="color: #000000">cp936</span><span style="color: #000000">,</span><span style="color: #000000">big5</span><span style="color: #000000">,</span><span style="color: #000000">euc</span><span style="color: #000000">-</span><span style="color: #000000">jp</span><span style="color: #000000">,</span><span style="color: #000000">euc</span><span style="color: #000000">-</span><span style="color: #000000">kr</span><span style="color: #000000">,</span><span style="color: #000000">latin1<br />&nbsp;&nbsp;&nbsp;&nbsp;endif<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;CJK&nbsp;environment&nbsp;detection&nbsp;and&nbsp;corresponding&nbsp;setting<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;v:lang&nbsp;=~&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">^</span><span style="color: #000000">zh_CN</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">Use</span><span style="color: #000000">&nbsp;cp936&nbsp;to&nbsp;support&nbsp;GBK</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;euc</span><span style="color: #000000">-</span><span style="color: #000000">cn&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;gb2312<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;encoding</span><span style="color: #000000">=</span><span style="color: #000000">cp936<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;termencoding</span><span style="color: #000000">=</span><span style="color: #000000">cp936<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;fileencoding</span><span style="color: #000000">=</span><span style="color: #000000">cp936<br />&nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;v</span><span style="color: #000000">:</span><span style="color: #000000">lang&nbsp;</span><span style="color: #000000">=~</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">^zh_TW</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;cp950,&nbsp;big5&nbsp;or&nbsp;euc-tw<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;Are&nbsp;they&nbsp;equal&nbsp;to&nbsp;</span><span style="color: #0000ff">each</span><span style="color: #000000">&nbsp;other</span><span style="color: #000000">?</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;encoding</span><span style="color: #000000">=</span><span style="color: #000000">big5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;termencoding</span><span style="color: #000000">=</span><span style="color: #000000">big5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;fileencoding</span><span style="color: #000000">=</span><span style="color: #000000">big5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;v</span><span style="color: #000000">:</span><span style="color: #000000">lang&nbsp;</span><span style="color: #000000">=~</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">^ko</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;Copied&nbsp;from&nbsp;someone's&nbsp;dotfile,&nbsp;untested<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;encoding=euc-kr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;termencoding=euc-kr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;fileencoding=euc-kr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;v:lang&nbsp;=~&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">^</span><span style="color: #000000">ja_JP</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;Copied&nbsp;from&nbsp;someone</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000; font-weight: bold">s&nbsp;dotfile,&nbsp;unteste<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;encoding=euc-jp<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;termencoding=euc-jp<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;fileencoding=euc-jp<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;Detect&nbsp;UTF-8&nbsp;locale,&nbsp;and&nbsp;replace&nbsp;CJK&nbsp;setting&nbsp;if&nbsp;needed<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;v:lang&nbsp;=~&nbsp;"utf8$"&nbsp;||&nbsp;v:lang&nbsp;=~&nbsp;"UTF-8$"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;encoding=utf-8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;termencoding=utf-8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;fileencoding=utf-8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif<br />else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"echoerr&nbsp;"Sorry,&nbsp;this&nbsp;version&nbsp;of&nbsp;(g)vim&nbsp;was&nbsp;not&nbsp;compiled&nbsp;with&nbsp;multi_byte"<br />endif<br /><br />set&nbsp;path+=../include/<br />set&nbsp;path+=/Project/**/include/<br />"set&nbsp;syn=cpp<br /><br />"&nbsp;Only&nbsp;do&nbsp;this&nbsp;part&nbsp;when&nbsp;compiled&nbsp;with&nbsp;support&nbsp;for&nbsp;autocommands.<br />if&nbsp;has("autocmd")<br /><br />&nbsp;&nbsp;"&nbsp;Enable&nbsp;file&nbsp;type&nbsp;detection.<br />&nbsp;&nbsp;"&nbsp;Use&nbsp;the&nbsp;default&nbsp;filetype&nbsp;settings,&nbsp;so&nbsp;that&nbsp;mail&nbsp;gets&nbsp;</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000">tw</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000; font-weight: bold">&nbsp;set&nbsp;to&nbsp;72,<br />&nbsp;&nbsp;"&nbsp;</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000">cindent</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000; font-weight: bold">&nbsp;is&nbsp;on&nbsp;in&nbsp;C&nbsp;files,&nbsp;etc.<br />&nbsp;&nbsp;"&nbsp;Also&nbsp;load&nbsp;indent&nbsp;files,&nbsp;to&nbsp;automatically&nbsp;do&nbsp;language-dependent&nbsp;indenting.<br />&nbsp;&nbsp;filetype&nbsp;plugin&nbsp;indent&nbsp;on<br /><br />&nbsp;&nbsp;"&nbsp;Put&nbsp;these&nbsp;in&nbsp;an&nbsp;autocmd&nbsp;group,&nbsp;so&nbsp;that&nbsp;we&nbsp;can&nbsp;delete&nbsp;them&nbsp;easily.<br />&nbsp;&nbsp;augroup&nbsp;vimrcEx<br />&nbsp;&nbsp;au!<br /><br />&nbsp;&nbsp;"&nbsp;For&nbsp;all&nbsp;text&nbsp;files&nbsp;set&nbsp;</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000">textwidth</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000; font-weight: bold">&nbsp;to&nbsp;78&nbsp;characters.<br />&nbsp;&nbsp;autocmd&nbsp;FileType&nbsp;text&nbsp;setlocal&nbsp;textwidth=78<br /><br />&nbsp;&nbsp;"&nbsp;When&nbsp;editing&nbsp;a&nbsp;file,&nbsp;always&nbsp;jump&nbsp;to&nbsp;the&nbsp;last&nbsp;known&nbsp;cursor&nbsp;position.<br />&nbsp;&nbsp;"&nbsp;Don</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000">t&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;it&nbsp;when&nbsp;the&nbsp;position&nbsp;is&nbsp;invalid&nbsp;or&nbsp;when&nbsp;inside&nbsp;an&nbsp;event&nbsp;handler<br />&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;(happens&nbsp;when&nbsp;dropping&nbsp;a&nbsp;file&nbsp;on&nbsp;gvim).<br />&nbsp;&nbsp;autocmd&nbsp;BufReadPost&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;if&nbsp;line(</span><span style="color: #000000; font-weight: bold">"'</span><span style="color: #000000; font-weight: bold">\"")&nbsp;&gt;&nbsp;0&nbsp;&amp;&amp;&nbsp;line("</span><span style="color: #000000; font-weight: bold">'</span><span style="color: #000000">\</span><span style="color: #000000; font-weight: bold">""</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;line(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">$</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">\</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;exe&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">normal&nbsp;g`\</span><span style="color: #000000; font-weight: bold">""</span><span style="color: #000000; font-weight: bold">&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;endif<br /><br />&nbsp;&nbsp;augroup&nbsp;END<br /><br />else<br /><br />&nbsp;&nbsp;set&nbsp;autoindent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;always&nbsp;set&nbsp;autoindenting&nbsp;on<br /><br />endif&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;has(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">autocmd</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">)<br />set&nbsp;number<br /><br /><br />map&nbsp;&lt;C-F12&gt;&nbsp;:!ctags&nbsp;-R&nbsp;-I&nbsp;--c++-kinds=+p&nbsp;--fields=+iaS&nbsp;--extra=+q&nbsp;.&lt;CR&gt;<br /><br />if&nbsp;has(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">cscope</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">)<br />set&nbsp;csprg=/usr/bin/cscope<br />set&nbsp;csto=0<br />set&nbsp;cst<br />set&nbsp;nocsverb<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">&nbsp;add&nbsp;any&nbsp;database&nbsp;in&nbsp;current&nbsp;directory<br /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;filereadable(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">cscope.out</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">)<br />cs&nbsp;add&nbsp;cscope</span><span style="color: #000000">.</span><span style="color: #000000">out<br /></span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&nbsp;else&nbsp;add&nbsp;database&nbsp;pointed&nbsp;to&nbsp;by&nbsp;environment<br />elseif&nbsp;$CSCOPE_DB&nbsp;!=&nbsp;</span><span style="color: #000000; font-weight: bold">""</span><span style="color: #000000; font-weight: bold"><br />cs&nbsp;add&nbsp;$CSCOPE_DB<br />endif<br />set&nbsp;csverb<br />set&nbsp;cscopetag<br />set&nbsp;cscopequickfix=s-,g-,c-,d-,t-,e-,f-,i-<br />endif<br /></span></div><br />vim的智能补全：<br />这里我们采用omni补全办法。<br />下载<span class="txth1">OmniCppComplete插件：<a href="http://www.vim.org/scripts/script.php?script_id=1520">http://www.vim.org/scripts/script.php?script_id=1520</a><br /></span><br />Omni利用了工具ctags：<br />ctags -R -I --c++-kinds=+p --fields=+iaS --extra=+q .<br /><br />vim相关配置文件：<br />/usr/ect/vim/<br />/usr/share/vim/<br />~/.vim<br /><br />vim实现C++代码的智能补全功能：<br />c++的头文件：/usr/include/c++/4.4<br /><br /><br /><br /><br /><img src ="http://www.cppblog.com/toMyself/aggbug/127011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-09-18 17:44 <a href="http://www.cppblog.com/toMyself/archive/2010/09/18/127011.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux的版本问题</title><link>http://www.cppblog.com/toMyself/archive/2010/08/30/125313.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Mon, 30 Aug 2010 13:09:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/30/125313.html</guid><description><![CDATA[<p># cat /proc/version <br>Linux version 2.6.18-8.el5 (<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#98;&#114;&#101;&#119;&#98;&#117;&#105;&#108;&#100;&#101;&#114;&#64;&#108;&#115;&#50;&#48;&#45;&#98;&#99;&#50;&#45;&#49;&#52;&#46;&#98;&#117;&#105;&#108;&#100;&#46;&#114;&#101;&#100;&#104;&#97;&#116;&#46;&#99;&#111;&#109;">brewbuilder@ls20-bc2-14.build.redhat.com</a>) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Fri Jan 26 14:15:21 EST 7<br># uname -a<br>Linux q1test01 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux<br># uname -r<br>2.6.18-8.el5<br># cat /etc/redhat-release <br>Red Hat Enterprise Linux Server release 5 (Tikanga)</p>
<p>RHEL有一个有趣的变种，CentOS，它直接建立于RHEL的源代码之上，而且是免费提供的（但缺少官方支持）。因此一些拥有强大Linux技术团队的公司都选择了CentOS以节约成本，并按照内部需要做了大量修改。总之，如果你在RHEL上具有丰富经验，CentOS会是一个很好的选择。</p>
<p>&nbsp;</p>
<p>Tikanga是Red Hat Enterprise Linux 5版本的名字。<br>是一个地名。 </p>
<p><br>红帽Linux企业版，即著名的RHEL</p>
<p>lsb-基本介绍<br>LSB是一套核心标准,它保证了LINUX发行版同LINUX应用程序之间的良好结合。<br>lsb-具体解释<br>具体地说,它是:1、一个二进制接口规范，是指应用程序在系统间迁移时不用重新编译，保证应用程序在所有经过认证的LINUX发行版上都具有兼容性。2、一个测试规范，测试LINUX发行版和LINUX应用程序是否符合LSB标准。3、搭建遵从LSB规范的应用程序的开发环境。4、为在纯LSB环境下运行和测试应用程序而提供的运行环境样本。LSB包括两个核新部分，分为普通规范和特定处理器规范。 </p>
<p>目前 Linux 的发行版非常繁多，为了促进 Linux 不同发行版间的兼容性，LSB（Linux Standards Base）开发了一系列标准，使各种软件可以很好地在兼容 LSB 标准的系统上运行，从而可以帮助软件供应商更好地在 Linux 系统上开发产品，或将已有的产品移植到 Linux 系统上。<br><br></p>
<p><span>Linux</span><span>的版本号又分为两部分：内核（<span>kernel</span>）与发行套件 （<span>distribution</span>）版本。<span>Linux</span>初学者对常会把内核版本与发行套件弄混了，实际上内核版本指的是在<span>Linus</span>领导下的开发小组开发出的系统内核的版本号，目前最新的的版本的序号大约是<span> 2.0.35</span>与<span>2.1.88</span>。（一般说来以序号的第二位为偶数的版本表明这是一个可以使用的稳定版本，如<span>2.0.35</span>，而序号的第二位为奇数的版本一般有一些新的东西加入，是不一定很稳定的测试版本，如<span>2.1.88</span>。）而一些组织或厂家将<span>Linux</span>系统 内核与应用软件和文档包装起来，并提供一些安装界面和系统设定与管理工具，这样就构成了一个发行套件，例如最常见的<span>Slackware</span>，<span>RedHat</span>，<span>Debian</span>等等。实际上发行套件就是<span>Linux</span>的一个大软件包而已。相对于 内核版本， 发行套件的版本号随发布者的不同而不同，与系统内核的版本号是相对独立的，例如<span>Slackware3.5</span>，<span>RedHat5.1</span>，<span>Debian1.3.1</span>等等。<br><br></p>
<p><span>广义上对测试有三个传统的称呼：</span><span>alpha</span><span>、</span><span>beta</span><span>、</span><span>gamma</span><span>，用来标识测试的阶段和范围。</span><span>alpha </span><span>是指内测，即现在说的</span><span>CB</span><span>，指开发团队内部测试的版本或者有限用户体验测试版本。</span><span>beta </span><span>是指公测，即针对所有用户公开的测试版本。然后做过一些修改，成为正式发布的候选版本时叫做</span><span>gamma</span><span>，现在叫做</span><span>RC</span><span>（</span><span>Release Candidate</span><span>，软件正式发布的候选版本）。</span></p>
</span>
<p>&nbsp;&nbsp;</p>
<p><span>Redhat</span><span>有两大</span><span> Linux</span><span>产品系列，其一是免费的</span><span>Fedora Core</span><span>系列主要用于桌面版本，提供了较多新特性的支持。另外一个产品系列是收费的</span><span>Enterprise</span><span>系列，这个系列分成：</span><span>AS/ES/WS</span><span>等分支。</span><span><br>Advanced Server</span><span>，缩写即</span><span>AS</span><span>。</span><span>AS</span><span>在标准</span><span>Linux</span><span>内核的基础上，做了性能上的增强，并提高了可靠性，集成了众多常见<span><span onclick=tagshow(event) href="tag.php?name=%B7%FE%CE%F1%C6%F7">服务器</span></span>的<span><span onclick=tagshow(event) href="tag.php?name=%C7%FD%B6%AF">驱动</span><span onclick=tagshow(event) href="tag.php?name=%B3%CC%D0%F2">程序</span></span>。可轻松识别</span><span> <span><span><span onclick=tagshow(event) href="tag.php?name=IBM">IBM</span></span></span><span>/DELL/HP</span></span><span>等常见机架式<span><span onclick=tagshow(event) href="tag.php?name=%B7%FE%CE%F1">服务</span></span>器的磁盘阵列卡等<span><span onclick=tagshow(event) href="tag.php?name=%C9%E8%B1%B8">设备</span></span>。</span><span>AS</span><span>主要版本</span><span>2.x/3.x/4.x</span><span>，也就是我们所说的</span><span>AS3/AS4</span><span>每一个版本还有若干个升级，例如最早推出的</span><span>AS4</span><span>后，遇到了一些更新此时就会发布</span><span>AS4 Update1</span><span>，以后还会陆续有</span><span>AS4 Update2/Update3</span><span>等出现简称</span><span>AS4u3</span><span>等。这和<span><span onclick=tagshow(event) href="tag.php?name=%CE%A2%C8%ED">微软</span></span>的发布形式也是非常类似的，微软的</span><span>NT4</span><span>从</span><span>SP1</span><span>出到</span><span>SP6</span><span>，</span><span><span><span onclick=tagshow(event) href="tag.php?name=Windows">Windows</span></span></span><span>2000</span><span>从</span><span>SP1</span><span>出到</span><span>S6</span><span>。</span><span>AS</span><span>这些</span><span>Update</span><span>版本所包含的主要程序包版本都有一定差别，最好不要混用</span><span>.</span><span>否则容易出现问题。</span><span>Prima</span><span>和</span><span>Plesk</span><span>的安装包，对于各种发行版都有了针对性的设计在<span><span onclick=tagshow(event) href="tag.php?name=%CF%C2%D4%D8">下载</span></span>页面上，通常都会标识出来，支持哪些版本和哪些</span><span>update</span><span>的<span><span onclick=tagshow(event) href="tag.php?name=%CF%B5%CD%B3">系统</span></span>。</span><span><br>ES</span><span>，是</span><span>AS</span><span>的精简版本。他与常见的</span><span>AS</span><span>系列的区别是，</span><span>AS</span><span>支持到</span><span>4</span><span>路以上</span><span>CPU</span><span>，而</span><span>ES</span><span>只能支持两路</span><span>CPU</span><span>。</span><span>AS</span><span>和</span><span>ES</span><span>在大多数程序包上并无区别，只在内核等少数<span><span onclick=tagshow(event) href="tag.php?name=%C8%ED%BC%FE">软件</span></span>包上有差异。</span><span> AS</span><span>和</span><span>ES</span><span>的售价差别比较大，通常</span><span>ES</span><span>用在随服务器一同购买的</span><span>OEM</span><span>版本中例如购买</span><span>DELL</span><span>服务器，搭配的</span><span>Linux</span><span>会是</span><span>ES</span><span>系列。如果要搭配</span><span>AS</span><span>系列，</span><span> </span><span>则需要多花数千元。</span><span><br><br>WS</span><span>，是</span><span>ES</span><span>的进一步简化版，主要针对<span><span onclick=tagshow(event) href="tag.php?name=%C6%F3%D2%B5">企业</span></span>内部的桌面办公市场，国内较少采用。</span><span><br><br>Redhat</span><span>的</span><span> Fedora Core Linux（FC）</span><span>和</span><span>Enterprise Linux</span><span>，都需要遵循</span><span>GNU</span><span>协议即需要发布自己的源代码。所以，对于免费的</span><span>Fedora Core Linux</span><span>，从</span><span>Redhat</span><span>网站上可以直接下载</span><span>ISO</span><span>刻盘，还能下载到</span><span>SRPM</span><span>的</span><span>ISO</span><span>，即程序包源码光盘。对于收费的</span><span>Enterprise Linux</span><span>系列，是一款商业产品，所以网站上不能下载到</span><span>ISO</span><span><span><span onclick=tagshow(event) href="tag.php?name=%CE%C4%BC%FE">文件</span></span></span><span>，需要购买正式授权方可。由于</span><span>Enterprise Linux</span><span>也需要遵循</span><span>GNU</span><span>协议，故必须发布源代码。所以在</span><span>Redhat</span><span>的网站上，可以获得</span><span>AS/ES/WS</span><span>系列的</span><span>SRPM</span><span>源码</span><span>ISO</span><span>文件。</span><span><br></span><span>这些文件可以被自由下载，</span><span> </span><span>修改代码，重新<span><span onclick=tagshow(event) href="tag.php?name=%B1%E0%D2%EB">编译</span></span>。一个名为</span><span>Community Enterprise Operating System</span><span>的项目诞生了。他的缩写既是</span><span>CentOS</span><span>。</span><span>CentOS</span><span>社区将</span><span>Redhat</span><span>的网站上的所有源代码下载下来，进行重新编译。重新编译后，由于</span><span> AS/ES/WS</span><span>是商业产品，必须将所有</span><span>Redhat</span><span>的</span><span>Logo</span><span>和标识改成自己的</span><span>CentOS</span><span>标识。比如将</span><span>AS4</span><span>原版的</span><span>SRPM</span><span>源码编译后，就成为了</span><span> CentOS 4.0</span><span>。</span><span>AS4Update1</span><span>的源码编译后，就成为了</span><span>CentOS4.1</span><span>。</span><span>AS4Update2</span><span>的源码编译后，就成为了</span><span>CentOS4.2</span><span>。同理，</span><span> CentOS</span><span>的</span><span>3.x/4.x</span><span>都对应着相应的版本。</span><span><br></span><span>所以我们说，</span><span>CentOS</span><span>就是</span><span> Redhat</span><span>的</span><span>AS/ES/WS</span><span>的免费版本。使用</span><span>CentOS</span><span>，可以获得和</span><span>AS/ES</span><span>相同的性能和感受。</span><span>CentOS</span><span>除了提供标准的编号</span><span>1~4</span><span>或者</span><span>1~5 </span><span>的若干张</span><span>ISO</span><span>外，还提供了最小化</span><span>1CD</span><span>的</span><span>Server</span><span>光盘。用</span><span>Server</span><span>光盘安装好的系统，就是一个最小化的</span><span>Linux</span><span>内核加上常用的</span><span> httpd/my<span><span onclick=tagshow(event) href="tag.php?name=sql">sql</span></span></span><span>等包不包含</span><span>Xwindows</span><span>桌面等对于服务器无用的软件。</span><span>Prima</span><span>、</span><span>Plesk</span><span>、</span><span>Virtuozzo</span><span>和都可以安装在</span><span>CentOS </span><span>上。<br><br>&nbsp; </p>
<p align=left><span>Red Hat Enterprise Linux </span><span>各发行版及内核版本号</span></p>
<p align=left><span>2009-06-30 11:12</span></p>
<p>
<table border=0 cellPadding=0 width="100%">
    <tbody>
        <tr>
            <td>
            <p align=left><span>RHEL/CentOS </span><span>各发行版及内核版本号<span>:</span></span></p>
            <p align=left>&nbsp;</p>
            <table border=0 cellSpacing=0 cellPadding=0 width=316>
                <tbody>
                    <tr>
                        <td width=117>
                        <p align=left><span>发行版</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>内核版本</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>Redhat 9.0</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.4.20-8</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 3 Update 8</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.4.21-47</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 4 Update 0</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.9-5</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 4 Update 1</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.9-11</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 4 Update 2</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.9-22</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 4 Update 3</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.9-34</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 4 Update 4</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.9-42</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 4 Update 5</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.9-55</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 4 Update 6</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.9-67</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 4 Update 7</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.9-78</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 4 Update 8</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.9-89</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 5 Update 0</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.18-8</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 5 Update 1</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.18-53</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 5 Update 2</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.18-92</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td width=117>
                        <p align=left><span>RHEL 5 Update 3</span></p>
                        </td>
                        <td width=174>
                        <p align=left><span>2.6.18-128</span></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br><br>&nbsp; </p>
<p><strong><span>RHEL </span></strong><strong><span>各内核版本意思</span></strong><strong></strong></p>
<div>
<h3><span>Red Hat Enterprise Linux 5</span></h3>
<pre><span>&lt;kernel version&gt; ::= 2.6.18-&lt;errata&gt;.el5&lt;type&gt;<br>
&lt;errata&gt; ::= &lt;integer&gt;.{&lt;integer&gt;.&lt;integer&gt;}<br>
&lt;type&gt; ::= {PAE|xen}</span></pre>
<p><span>Types:</span></p>
</div>
<div>
<ul type=disc>
    <li><span>none: SMP kernel </span>
    <li><span>PAE: Over 4GB of RAM (up to 64GB for the x86) - Physical Address Extension or 3-level paging on x86 processors that support PAE </span>
    <li><span>xen: Kernel that can run virtualized guests</span> </li>
</ul>
</div>
<p><span>smp &nbsp; </span><span>应该是</span><span>symmetric &nbsp; multiple &nbsp; processors</span><span>对称多处理器，支持多</span><span>cpu</span><span>的。</span></p>
<p></span><br><a href="http://www.redhat.com/">http://www.redhat.com/</a><br><a href="http://www.cn.redhat.com/linux">http://www.cn.redhat.com/linux</a><br><a href="http://www.cn.redhat.com/rhel/compare/">http://www.cn.redhat.com/rhel/compare/</a><br><a href="https://access.redhat.com/knowledge/docs/manuals/enterprise/">https://access.redhat.com/knowledge/docs/manuals/enterprise/</a><br><a href="http://www.redhat.com/rhel/server/">http://www.redhat.com/rhel/server/</a>&nbsp;<br><a href="http://www.kernel.org/">http://www.kernel.org/</a><br><br>另附：gcc版本<br><a href="http://gcc.gnu.org/">http://gcc.gnu.org/</a>&nbsp;<br>&nbsp;<br></p>
<h2><span>如何选择最适合的</span><span>Linux</span><span>版本</span></h2>
<p><strong><span>&#8220;我是新手，只是想开始使用<span>Linux</span>&#8221;</span></strong></p>
<p><span>对于从<span>Windows</span>转过来的新手而言，这个问题的答案显而易见：<span>Ubuntu Linux</span>几乎是不二选择，非常容易上手。使用者可以将用户在<span>Windows</span>中的设置自动移植过来，比如他们的文档、个人设置包括<span>Internet</span>书签。用户甚至可以尝试各种无需改变硬件资源的安装方法：比如直接从光盘启动、与<span>Windows</span>同时启动、或直接在<span>Windows</span>分区中安装<span>Ubuntu</span>。<span>Ubuntu</span>的设计，以及它强大的社群支持，使其成为<span>Linux</span>快速入门的最佳选择。</span></p>
<p><span>尽管名气最大、用户也最多，但<span>Ubuntu</span>绝不是唯一可选的新手版。其他比如<span>Linux Mint</span>（<span>Ubuntu</span>的衍生版本）、<span>PCLinuxOS</span>、<span>SimplyMEPIS</span>和<span>Mandriva</span>等等也都遵照&#8220;拿来即用&#8221;（<span>"it should just work"</span>）的理念，采用各种不同的方法增强可用性、数据包管理能力和从<span>Windows</span>进行移植的能力。 </span></p>
<p><span>另一个应该提到的是<span>Novell</span>的<span>openSUSE 11.1</span>版，这也被公认为一个良好的<span>Linux</span>入门版本。免费的<span>openSUSE</span>来源于<span>Novell</span>的商业化版本<span>SUSE Linux</span>，具有大量先进功能，如类似<span>Windows Vista</span>中那种舒适的可检索主目录，而且支持放入即自运行的测试体验盘（<span>Live Disc</span>）。 </span></p>
<p><strong><span>&#8220;我已经用过<span>Linux</span>，想要更深入些&#8221;</span></strong></p>
<p><span>如果你已经熟悉<span>Linux</span>，或者你对自己的学习能力很有信心，我们可以接下来了解一些略为复杂的版本。</span></p>
<p><span>对于服务器和底层架构来说，红帽（<span>Red Hat</span>）<span>Linux</span>是当仁不让的选择，由其社区支持开发的版本<span>Fedora</span>拥有同样强大的功能。它并不像<span>Ubuntu</span>那样经常更新但安装起来同样非常容易，也拥有同样吸引人的桌面特色。<span>Linux</span>之父<span>Linus Torvalds</span>最近提到，他本人就是一个非常热心的<span>Fedora</span>用户。<span>Fedora 10</span>是最新的版本，更强大的<span>Fedora 11</span>的测试版也已经发布。</span></p>
<p><span>接下来是<span>Debian</span>，这很可能是所谓的<span>ur-distro</span>，作为其他如此之多的发行版（包括<span>Ubuntu</span>）都是以它为基础的。很多人不喜欢它漫长的开发周期；但值得称道的是它的稳定性，你可以用很久。<span>Debian</span>的最新版本是<span>4.0</span>，<span>5.0</span>版本正在研发中，什么时候能够公布呢？估计开发周期依然会过长。</span></p>
<p><strong><span>&#8220;我只想给我的老机器装点最简单的&#8221;</span></strong></p>
<p><span>很多时候你只是需要一些基本的需求，<span>Linux</span>当然可以满足你。你可以找到可以在<span>USB</span>盘、光盘甚至完全在内存中运行的<span>Linux</span>版本。这里还应当指出，在内存或可移动存储器中运行<span>Linux</span>是一种很好的安全防护措施——如果你生性多疑或者或者只是谨慎，你完全可以使用一个拇指大的<span>U</span>盘让你的计算机再无其他机密可谈。</span></p>
<p><span>Puppy Linux</span><span>是很多人的最爱，它虽然小，重量轻，但功能方面却非常完善。现在，在其<span>4.1.2</span>版本中，它仅仅使用了<span>100MB</span>就封装了几乎所有需要的功能，并且提供了额外的独立软件。对于一些逐渐老去的笔记本电脑来说，<span>Puppy Linux</span>提供了近乎完美的方式，因为它只需要很少的空间或系统资源，能够很好地运行。 </span></p>
<p><span>与<span>Puppy Linux</span>类似的版本还有<span>TinyMe</span>、功能削减版的<span>PCLinuxOS</span>、精简版的<span>Ubuntu</span>、<span>Xubuntu</span>，和仍在大力推广中的<span>Moblin</span>。在它们当中，<span>Xubuntu</span>可能是最成熟的，经过了广泛的测试，但<span>Moblin</span>具有闪电般的速度，拥有巨大的市场潜力。 </span></p>
<p><strong><span>&#8220;我要在服务器上运行<span>Linux</span>&#8221;</span></strong></p>
<p><span>从一开始，<span>Linux</span>和服务器就是密不可分的。<span>Linux</span>在服务器的世界证明了自己，并将继续证明自己，各种版本的<span>Linux</span>在服务器的舞台上大展身手。</span></p>
<p><span>红帽<span>Linux</span>企业版，即著名的<span>RHEL</span>，仍然是服务器端最普遍的和受到最广泛支持的选择，但要注意它不是免费的，只提供红帽的签约客户（<span>Fedora</span>社区提供<span>30</span>天试用版）。</span></p>
<p><span>然而<span>RHEL</span>有一个有趣的变种，<span>CentOS</span>，它直接建立于<span>RHEL</span>的源代码之上，而且是免费提供的（但缺少官方支持）。因此一些拥有强大<span>Linux</span>技术团队的公司都选择了<span>CentOS</span>以节约成本，并按照内部需要做了大量修改。总之，如果你在<span>RHEL</span>上具有丰富经验，<span>CentOS</span>会是一个很好的选择。</span></p>
<p><span>另一种服务器版<span>Linux</span>近来获得了大量的积极关注，这是一种来源于<span>Ubuntu</span>的服务器版本，它的命名相当直白，<span>Ubuntu Server Edition</span>。与<span>RHEL</span>不同，<span>Ubuntu Server Edition</span>是免费的，但不提供支持合同。 </span></p>
<p><strong><span>&#8220;我遇到麻烦了&#8221;</span></strong></p>
<p><span>遇到什么麻烦了？系统无法开机，还是病毒感染了硬盘？没问题！在这种情况下，带有救援和恢复功能的<span>Linux</span>版本可以使我们在无需启动机器的情况下，直接读取硬盘，复制重要数据，也许还能进行修理。</span></p>
<p><span>大多数从<span>Live CD</span>启动的<span>Linux</span>版本都可以用作救援光盘，例如上面提过的小巧而轻便的版本。我个人最喜欢的是<span>Puppy Linux</span>，它的启动速度飞快，用一个单独而清楚的菜单提供了多种工具。从技术角度而言，专门的<span>SystemRescueCD</span>会做得更好一些，它提供了各种先进的工具，可以修复系统及数据。</span></p>
<p><span>值得一提的还有<span>Clonezilla</span>，相当于<span>Linux</span>版的<span>Norton Ghost</span>。它可以对你的分区或整个系统进行镜像操作。可以用它对系统进行备份，也同样可以克隆到多台机器中去。</span></p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-08-30 21:09 <a href="http://www.cppblog.com/toMyself/archive/2010/08/30/125313.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shell programing</title><link>http://www.cppblog.com/toMyself/archive/2010/08/12/123161.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Thu, 12 Aug 2010 03:35:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/12/123161.html</guid><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><span style="color: #008000;">#</span><span style="color: #008000;">!/bin/bash</span><span style="color: #008000;"><br></span><span style="color: #000000;">i</span><span style="color: #000000;">=</span><span style="color: #800000;">1</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;define&nbsp;a&nbsp;variable.&nbsp;Note:&nbsp;No&nbsp;spaces.</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br></span><span style="color: #0000ff;">while</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true<br></span><span style="color: #0000ff;">do</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;[&nbsp;</span><span style="color: #800080;">$i</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">eq&nbsp;</span><span style="color: #800000;">1</span><span style="color: #000000;">&nbsp;]&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;"["&nbsp;and&nbsp;"]"&nbsp;is&nbsp;for&nbsp;testing.&nbsp;&nbsp;$i&nbsp;is&nbsp;the&nbsp;reference&nbsp;value.&nbsp;Note:&nbsp;Spaces.</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">i&nbsp;is&nbsp;equal&nbsp;to&nbsp;1.</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #800000;">0</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">i&nbsp;is&nbsp;not&nbsp;equal&nbsp;to&nbsp;1.</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #800000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">sleep</span><span style="color: #000000;">&nbsp;1s<br>done</span></div><img src ="http://www.cppblog.com/toMyself/aggbug/123161.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-08-12 11:35 <a href="http://www.cppblog.com/toMyself/archive/2010/08/12/123161.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux命令小记</title><link>http://www.cppblog.com/toMyself/archive/2010/05/06/114670.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Thu, 06 May 2010 08:46:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/05/06/114670.html</guid><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><span style="color: #000000;">lsof&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">i</span><span style="color: #000000;">:&lt;</span><span style="color: #000000;">port</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>ps&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">Lf&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">pid</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;可以查看进程的线程数</span></div>
<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #000000;">查看自己的外网ip（公网ip）<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">方法一：&nbsp;wget&nbsp;http://whatismyip.org<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cat&nbsp;index.html&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">方法二：&nbsp;curl&nbsp;http://whatismyip.org</span></div>
<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><span style="color: #000000;">netstat&nbsp;-anp|grep&nbsp;7898&nbsp;|sort&nbsp;-rnk2&nbsp;|head&nbsp;-n&nbsp;5&nbsp;<br>Netstat&nbsp;&#8211;ano|findstr&nbsp;&#8220;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">端口号</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&#8221;,<br>tasklist|findstr&nbsp;&#8220;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">PID</span><span style="color: #ff0000;">号</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&#8221;</span></div>
<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><span style="color: #000000;">同时修改日期时间,注意要加双引号,日期与时间之间有一空格,输入:date&nbsp;-s&nbsp;"2010-07-20&nbsp;16:30:00"<br>修改完后,记得输入:clock&nbsp;-w&nbsp;<br>把系统时间写入CMOS&nbsp;</span></div>
<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><span style="color: #000000;">减少shell窗口开启的个数：</span><span style="color: #000000;"><br>&amp; 将指令丢到后台中去执行<br>[ctrl]+z 將前台任务丟到后台中暂停<br>jobs 查看后台的工作状态<br>fg %jobnumber 将后台的任务拿到前台来处理<br>bg %jobnumber 将任务放到后台中去处理<br>kill 管理后台的任务.</span></div>
<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #000000;">硬链接(Hard&nbsp;</span><span style="color: #0000ff;">Link</span><span style="color: #000000;">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">硬链接说白了是一个指针，指向文件索引节点，系统并不为它重新分配inode。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">可以用：ln命令来建立硬链接。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">引用<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">ln&nbsp;[options]&nbsp;existingfile&nbsp;newfile<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">ln&nbsp;[options]&nbsp;existingfile</span><span style="color: #000000;">-</span><span style="color: #000000;">list&nbsp;directory<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">用法：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">第一种为&#8221;existingfile&#8221;创建硬链接，文件名为&#8221;newfile&#8221;。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">第二种在&#8221;directory&#8221;目录中，为&#8221;&nbsp;existingfile</span><span style="color: #000000;">-</span><span style="color: #000000;">list&#8221;中包含的所有文件创建一个同名的硬链接。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">常用可选[options]：</span><span style="color: #000000;">-</span><span style="color: #000000;">f&nbsp;无论&#8221;newfile&#8221;存在与否，都创建链接。</span><span style="color: #000000;">-</span><span style="color: #000000;">n&nbsp;如果&#8221;newfile&#8221;已存在，就不创建链接。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">软链接(Soft&nbsp;</span><span style="color: #0000ff;">Link</span><span style="color: #000000;">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">软链接又叫符号链接，这个文件包含了另一个文件的路径名。可以是任意文件或目录，可以链接不同文件系统的文件。和win下的快捷方式差不多。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">可以用：ln&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">s&nbsp;命令来建立软链接。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">引用<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">ln&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">s&nbsp;existingfile&nbsp;newfile<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">ln&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">s&nbsp;existingfile</span><span style="color: #000000;">-</span><span style="color: #000000;">list&nbsp;directory<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-family: 新宋体; font-size: 13px;"><span style="color: #000000;">ls&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">l&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;out</span><span style="color: #000000;">.</span><span style="color: #000000;">file&nbsp;</span><span style="color: #800000;">2</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #800000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;"><br>解释</span><span style="color: #000000;">:</span><span style="color: #000000;"><br>ls&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">l&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;out</span><span style="color: #000000;">.</span><span style="color: #000000;">file&nbsp;</span><span style="color: #000000;">//</span><span style="color: #000000;">将ls的输出重定向到文件out</span><span style="color: #000000;">.</span><span style="color: #000000;">file<br></span><span style="color: #800000;">2</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #800000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">//</span><span style="color: #000000;">在shell中</span><span style="color: #000000;">,</span><span style="color: #000000;">文件描述符通常是</span><span style="color: #000000;">:</span><span style="color: #000000;">STDIN</span><span style="color: #000000;">,</span><span style="color: #000000;">STDOUT</span><span style="color: #000000;">,</span><span style="color: #000000;">STDERR</span><span style="color: #000000;">,</span><span style="color: #000000;">即</span><span style="color: #000000;">:</span><span style="color: #800000;">0</span><span style="color: #000000;">,</span><span style="color: #800000;">1</span><span style="color: #000000;">,</span><span style="color: #800000;">2</span><span style="color: #000000;">,</span><span style="color: #000000;">由此可以看出</span><span style="color: #000000;">,</span><span style="color: #000000;">它将ls&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">l&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;out</span><span style="color: #000000;">.</span><span style="color: #000000;">file在输出过程中产生的错误信息也放在了STDOUT</span><span style="color: #000000;">,</span><span style="color: #000000;">即</span><span style="color: #000000;">:</span><span style="color: #000000;">1中</span><span style="color: #000000;">.</span><span style="color: #000000;"><br>最后的</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">,</span><span style="color: #000000;">不用说</span><span style="color: #000000;">,</span><span style="color: #000000;">是放在后台运行</span><span style="color: #000000;">.</span></div>
<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><span style="color: #000000;">nohup&nbsp;ssh&nbsp;root@</span><span style="color: #800000;">192.168</span><span style="color: #000000;">.</span><span style="color: #800000;">0.175</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">cmd</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">dev</span><span style="color: #000000;">/</span><span style="color: #000000;">null&nbsp;</span><span style="color: #800000;">2</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #800000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span></div>
<br><img src ="http://www.cppblog.com/toMyself/aggbug/114670.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2010-05-06 16:46 <a href="http://www.cppblog.com/toMyself/archive/2010/05/06/114670.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux manager</title><link>http://www.cppblog.com/toMyself/archive/2009/03/06/75739.html</link><dc:creator>kongkongzi</dc:creator><author>kongkongzi</author><pubDate>Fri, 06 Mar 2009 06:04:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2009/03/06/75739.html</guid><description><![CDATA[1，<br>/etc/passwd文件格式如下：〔用户名〕：〔密码〕：〔UID〕：〔GID〕：〔身份描述〕：〔主目录〕：〔登陆Shell〕<br>sudo的配置文件/etc/sudoers(专用编辑工具visudo): <br>beinan ALL=(root) NOPASSWD: /bin/chown,/bin/chmod <br>beinan ALL=/usr/sbin/*,/sbin/*<img src ="http://www.cppblog.com/toMyself/aggbug/75739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">kongkongzi</a> 2009-03-06 14:04 <a href="http://www.cppblog.com/toMyself/archive/2009/03/06/75739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>