你从来只用过Windows,从来没接触过UNIX,只知道把一个文件拽来拽去,只知道硬盘就是C: D: E:却从来没有研究过分区表,也许会用VC编个程序,很习惯它的集成环境。
有一天,不管什么原因了,也许是看报纸上那些把内存和硬盘都分不清楚的记者的吹嘘,或者是老板要求你用它作个项目,或者是同学们都有了你没有觉得很土,或者你听说找工作有这个的经验就有更大希望....不管怎样,你想在自己的机器上安装一个Linux。OK,这个文章就是给你写的,因为从现在开始,你会有成堆的问题你会觉得从前在windows那里得来的有关计算机的经验好像完全用不上。你会觉得“Linux怎么这样麻烦”。你会有种从来没有开过汽车但是得把汽车拆开修理一样觉得无处下手。OK,这个文章就是为你写的。
为什么要学Linux。其实你不必学习Linux,如果你就是想使用计算机让它使你的工作,比如打字,排版,统计数据等更有效率,Linux不行。Windows,或者我推荐windows 2000是你最好的选择,它对中文的支持很好,非常稳定,上面有无数应用程序,而且如果你自己承担风险,还可以使用盗版,免费。Linux将会给你造成很多麻烦,安装时会造成系统数据丢失,无法驱动网卡/声卡/显示卡/显示器,无法配置中文,图形界面速度慢,等等。从前在windows上很容易做到的比如修改显示频率或者安装新的网卡驱动在Linux下都变得好像要你自己重新上一次大一计算机原理课那么讨厌。呵呵,那Linux有什么好处呢?你会问。其实Linux没什么好处,从使用角度,它唯一的好处是它是我们自己的,而windows再好,是Microsoft的。“又能怎么样?”你也许又问。区别是,Linux可以让你来研究它,通过使用Linux你可以获得更深一步对计算机的了解 —— 而不只是一个全自动的盒子。计算机是一个很神奇的东西,你也许对那些写出windows的程序员很崇拜(我是的),或者对那些能发明更好的算法更安全的操作系统的hacker(对不起,远程攻击系统的不是hacker)很崇拜,那么你应当知道,坐在一个windows的机器前面整天就会用鼠标拖拽也许能给你一个很好的打字员的薪水,但是永远无法让你进入真正计算机的世界——成为一个自由思想的Hacker,或者说,你只能永远是个windows的用户——也没什么不好,很多领导还不会计算机呢——而不可能有机会自己写一个windows。
一个不太妙的结果是,当世界上充满了windows的奴隶时,我们就得花更大的价钱从Microsoft那里获得这样的技术,某些社会里,我们管这个叫做剥削。讲这么多,无非是说,萝卜不能两头切,至少现在是这样。要想什么别人都给你做好,系统安装一路回车,硬件配置点两下鼠标,对不起,请用windows 2000。如果你准备好了这一切,那么接着看吧。
OK,你的第一个问题是:什么是Linux,它和UNIX有什么区别?问这个问题的原因呢,多半是你还在大一的时候一次去实验室,看到高年纪学生在一个特大屏幕的机器上作题,你羡慕的看着他,问:“这是什么计算机啊,这么高级?”而他不无骄傲的说,“这是UNIX”。后来你懂的多了,知道那是SUN工作站,上面运行着Solaris,就是UNIX。现在你又听说Linux也是UNIX,是怎么回事呢?short answer:去看书,街上很多Linux的书第一章就是讲他们的历史和亲属关系的。
long answer: UNIX是一个20还是30年前由几个研究生在实验室里开始后来一个大公司把它商业化了的一个操作系统。一来二去,它成长并且占领了市场。当时它只是运行在只有大学才买得起一两台的昂贵机器上。后来机器多了,公司多了,懂得人也多了,就分家了,而“UNIX”这个名字由于法律关系,谁也不能说自己的操作系统是“UNIX”而只能说是“UNIX兼容”系统了。所以现在“UNIX”系统是不存在的,存在的只是一个遥远的传说。那么现在那些Solaris,AIX,IRIS都是什么呢?那些都是各公司在他们硬件平提上作的商业UNIX,这些系统都遵循一个叫POSIX的古怪标准,对了,这个标准呢,是后来UNIX太多太乱,大家编程接口甚至命令都不一样了所以没办法座下来商量的一个协议。
那么Linux是什么呢?Linux是基于PC(其它平台也有的支持)的UNIX兼容系统,在跟UNIX的关系上,它不比任何其它UNIX兼容系统远。所以如果你有“Solaris才是正统UNIX,Linux只是兼容”的想法,对不起你错了,起码你得把支持AIX的人打败才行,他们还认为AIX才是正统UNIX呢。所以用Linux你可以学到有关UNIX的知识,这些知识绝大部分在其它商业UNIX上可以用得上。当然,其核心思想绝对是相同的。那么在三年前只有你的读博士的辅导员才有机会在实验室那台宝贝SUN上学的知识,你现在在PC机上就可以实践了,这难道不是很妙的一件事情么?
第二个问题:我想装一个Linux,最新的是哪个版本,我听说过xxxlinux,yyylinux,还有国内某个公司鼎力推出的zzzlinux,到底哪个更好呢?
首先你需要明白,Linux不是windows,它不是一个由一家商业公司维护的软件,只有一个包装。Linux是可以任意包装自由配置的东西。任何一个人,一家公司都可以按照自己的想法,比如加一点功能,加中文支持,作一个Linux出来。这些Linux虽然核心部分都一样,但是他们所带的各种软件,缺省的配置都不一样。区别是用一种Linux 发布 (不同的Linux我们叫做不同的发布)也许硬件很好配置,各种软件也好安装,用另外一种也许速度快,再一种也许支持中文比较好。总之没有白吃的午餐,在windows下想当然的东西在linux下也许需要你熬夜才能得到。
所以从一开始选择distribution就必须非常小心,否则因为自己刚好随某个杂志得到一个Linux发布就以为所有的都一样就开始安装,等硬盘数据毁了,或者网络哭天跄地也配不出来的时候,就晚了。不是开玩笑,我知道windows下安装驱动程序就是鼠标点几下,可是在Linux下,为了驱动一个网卡,折腾一夜是不希奇的。当然,我觉得这是值得的。
所以,面对那么多Linux distribution,你应当选择哪个呢?
比较著名的Linux distribution有:
RedHat:最新版本6.2, 7.0beta。由于RedHat公司已经上市,获得了很多商业的支持,所以它在硬件软件兼容性上很好。实际上它已经是Linux的工业标准。想象一下如果你是一个比如Oracle这样厂商的老板,你需要为Linux开发一个版本,而不同的Linux dist需要单独开发维护,为成本考虑你自然会只认准一个Linux。
Slackware(7.1)。很早就有的Linux,有很多老的忠实用户,但现在越来越不行了。
SuSe Linux,德国人做的,在欧洲很流行,有一些驱动上的优势。
另外还有Debian,CorelLinux等dist,不一一介绍了。
还有你会看到国内媒体上吹捧的各种“中文Linux”,他们的优势主要是有中文处理。但是如前一篇文章提到的,想用中文,用windows 2000最好。实际上我觉得一个老7字班的前辈跟我说的一句话很好:“(对我们来说)在计算机上看到中文本身就是一件很古怪的事情”。如果你是抱着学习计算机的目的而来,那么你不可能避免阅读英文文档。即使是microsoft的文档,有关编程的文档,最新的也全是英文。当然,要上BBS,看中文网页等,用英文的dist一样能做到。
作为我个人(个人观点,你不必相信我),我只用RedHat,因为我需要它作为一个操作系统能让我更快的掌握并且学习我想学习的知识,而不是跟愚蠢的网卡,声卡作斗争。尽管这些斗争对于学习Linux来说也是很有益的,但是对于一个新手来说,如果连系统都安装不上,无法配置,又怎么谈如何学习呢?Again,this is only
my own opnion, and I could be wrong。
在这个系列里,我会围绕RedHat 来讲。
OK,从哪里得到Linux呢?为了讨论方便,省去不表要的枝节问题,我只讨论光盘安装。所以第一步是得到一张RedHat的光盘。得到光盘有两种方式,一种是去买光盘,这个比较简单,外面盗版盘就有,不过需要指出的是,RedHat的光盘不可能是盗版盘,因为RedHat遵循GPL协议,它是不收取版权费用的。所以任何人拷贝安装光盘都是合法的。所以不必为买到一张“RedHat的盗版盘”而沾沾自喜或有了偷盗成功的喜悦。只是需要注意,卖盗版盘的为了骗钱什么都能做,有的把RH 6.0的盘刷个封面愣告诉你这是6.5最新的,可别轻易信。记得当年(6年以前)kill杀毒软件流行的时候版本升级快就有了各种假版本,我个人就亲自作了kill 500.2来骗人玩,谁让他愣说他那个kill 79.8是真的呢?
另一种方法是获得ISO文件,这个是一半新手必问的问题。你多半是有了网络,懒得或者无法买到光盘。你从某个FTP下载了RH62_INSTALL.ISO这样一个600多M的文件。你琢磨着这就是个跟光盘有关的文件,但是你不知道怎么解开它。怎么办呢?ISO呢,就是光盘镜像文件。假设你要把一个光盘的内容*完全*的传给别人,你怎么做呢?当然最简单就是光盘拷贝,如果要通过网络,可以把光盘上的文件都传过去。如果这个光盘只是一些文件倒简单了,可是如果这个光盘有比如可以光盘启动这样的功能,传文件恐怕就不行了吧。更不用说在网络上,传总量为600M的上千个小文件的可怕了。
所以呢,有人就发明了ISO,就是可以把一个光盘忠实的“照张相片”,写到一个ISO文件里。再用同样的软件可以把所有的信息再写回光盘,得到一个一摸一样的盘,包括所有的比如能光盘启动的能力。那你已经有了这个ISO了,怎么获得光盘呢?简单,找任何一个能刻光盘的机器,它上面一定有类似EZCDPRO的刻盘软件。每个这样的软件都应当有把光盘写成ISO文件和把ISO文件写成光盘的功能。你需要在它的菜单里仔细找,或者找人帮你找,如何把CD IMAGE FILE刻成CD的功能,然后开始刻,就得到一张跟RedHat 发行版一个字节都不差的光盘了……
一点小问题:那些down ISO的地方往往有md5.checksum或者RedHat62.md5这样的文件,并不大,几十个字节,你不知道它们是干什么的,是不是也得都download不然无法刻CD。实际上你不必管他们,那些是数据完整性校验的文件,好像挂号信的跟踪单据一样。只要信能到,是否有他们无关紧要。另外还有ftp方式安装,用winimage展开ISO本地文件安装等方式,我不去讨论他们。好,现在你有一个RH 6.2的CD了,因为是ISO刻的,所以它应当能做光盘启动。那么,把它放入光驱,然后调BIOS设定光盘启动,启动机器。我们可以开始安装RH Linux了。
下来你的首要问题是“我的机器有16G,分了一个C盘4G,两个D,E盘各6G”我还想保留C盘的windows,我能把Linux安装到D盘或者E盘上么?呵呵,非常好,你知道Linux是一个操作系统,可能要把windows弄掉,但是遗憾的是你对硬盘,分区的理解是错误的。
下篇文章会讲硬盘分区的问题。
OK,要讲硬盘分区了。在讲这个问题之前,我先来讲讲概念问题,什么是概念问题呢?你还记得第一次,绝对的第一次听到A:盘,B:盘,C盘时候的感觉么?在那之前自己也许知道计算机有个存储数据的地方,因为在电视上或者广告上看到过磁带机(我一直不知道为什么到了很久很久那种一个傻姑娘在一个磁带柜前面操作一个现在看来是垃圾的磁带设备会不停的成为电视台播放电脑题材节目的缺省背景)或者硬盘的图象。但是你并没有一个概念计算机究竟怎么使用这些设备,直到你第一次打出dir a:或者打开explorer看到A: C:字样的目录树。如果你还记得当时的感觉,恭喜你,这种感觉又回来了。
对于一般人,只需要知道计算机能做什么就行了,所以对于他们来说,什么东西越简单越好,越不需要他们去花时间学习理解越好,所以计算机从开始的打孔到了后来的键盘屏幕,现在又往语音输入智能交互方向发展。这很好,让那些把计算机当工具的人能更专注他们的工作(当然,他们会为此向我们计算机的建设者付出应有的报酬)。可以说,MS在这方面作的很好,没有人会否认windows是一个非常“好用”的操作系统。这是指从使用者而言,你不需要太多的去理解机箱里面的知识,或者说尽可能不去理解,就能尽快让计算机为你工作。比如将本来很复杂的硬盘通过它在中间的操作搞成了C: D: E:盘这样的东西,让一个只需要会打字的秘书MM也能知道怎么存储文件(当然也会有笨的不可救药的)。但是这样(MS替你打点一切)的做法的一个问题也是显而易见的:你没有机会,或者说没有被迫的机会去了解更深一层的知识。而且当你脑子里只知道”C: D: E:“的时候,你就只有跟着windows走这一条路了。
OK,言归正传。安装Linux的硬盘分区问题。这个问题说起来是每个Linux新手,甚至到有一定水平的人都不敢说很清楚或者掌握的(包括我自己)。硬盘是个很古怪的东西,它的基本脾气是,一点搞不好,一大块数据就要丢,而且丢的干干净净。我已经不止一次看到某人的毕业论文之类东西在答辩之前三天因为硬盘问题而丢失并且没有备份!而安装Linux是必须跟硬盘很底层的部分打交道的,而不是win下面安装个程序那么安全。所以我的第一个建议是,如果硬盘上有重要数据,最好别贸然安装Linux。比较好的一个办法是找台不重要的机器,硬盘可以重新分区格式化的,多安装几次Linux,多试验一下windows和linux共同存在的各种情况。这样以后心里就有底了。如果实在要安装,一定要备份重要数据,切记。
下来讲Linux对于硬盘的概念。只考虑IDE硬盘。对于一个硬盘的操作分很多层。我们需要知道的,是硬盘是由很多个512字节的扇区组成的。而这些扇区会被组织成一个一个“分区”。这些对于每个操作系统都是一样的,在这之上每个操作系统自己去管理分给自己的分区。对于windows来说,它会把这些分区格式化然后按照CDE盘来管理。而Linux则不同。所以呢,一个硬盘上分多个分区,安装多个操作系统比如windows,Linux,Solaris等是完全可以的。但是由于每个操作系统对分区的操作不同,只能说把操作系统安装到分区中而不存在把操作系统安装到CDE盘中(UMSDOS方式先不提)。每个硬盘的第0个扇区是个特殊扇区,它不属于任何分区。它存放的是两个东西:第一是一个很小的程序,它由计算机在启动的时候运行,这个程序一般是某个操作系统带的启动程序,它运行后会启动某个操作系统或者给用户选择来启动某个操作系统。Windows的0扇区启动程序很简单,它就是把windows启动了,所以在这之前你是不会有多操作系统在一个硬盘上共存的概念的。而Linux所带的启动程序可以让你选择启动哪个操作系统,它叫做lilo。这个东西我们以后会经常碰到它。0扇区还存放有另外一个重要数据:分区信息。前面讲过,硬盘是有分区的,那么到底怎么分的,这个信息是存在0扇区的。硬盘的分区规则是这样的:一个分区的所有扇区必须连续,硬盘可以有最多四个分区,这四个分区可以是四个主分区或者三个主分区加一个扩展分区。在扩展分区里可以再继续分逻辑分区。举一个例子,一个10G的硬盘,安装windows,有C: D: E:三个盘。那么它的分区情况可以是这样的:分区一:主分区4G,格式化为C:盘分区二:扩展分区4G扩展分区不能格式化,它只能被再分区为逻辑分区剩余空间(可以被分区三,四占用)2G
在扩展分区中,建立两个逻辑分区各为2G,格式化为D:E:盘。
那么在Linux看来又是怎么样呢?注意我提到过,对于任何操作系统而言,分区都是一样的,尽管Linux不认同C D E盘,但是这些分区都是相同的。所以Linux下看也是分区一,分区二等东西。但是它对这些分区的标志和解释是不同的。在Linux下,硬盘是一个设备,实际上Linux下什么都是设备。对于IDE硬盘而言,Linux认为存在四个设备,对应于IDE的四个位置接的设备。如果装过机器我们知道主板上有两个槽,IDE0和IDE1,每个槽上能挂两个设备,主盘和从盘,这些盘可以是硬盘可以是光驱。那么Linux是怎么认为这些设备的呢?在Linux下,这些设备用/dev/hdx来标示。IDE0上的主盘就是/dev/hda,从盘就是hdb,依此类推,如果可以有多个IDE槽就可以延续到hde hdf等。总之每条硬盘线上接的设备都被Linux认为是一个/dev/hdx设备。如果你的机器是IDE0槽上的主盘是硬盘,那它就是hda,如果IDE1的槽上主盘是一个光驱,那它就是hdc。在windows下fdisk是对”硬盘1“,”硬盘2“进行操作,而linux下的fdisk就是对/dev/hda,/dev/hdb等进行操作。这样做很灵活,很直观,不是么?
那么Linux下怎么看分区呢?Linux下的分区概念是,硬盘上的每个分区也是一个设备(又来了)。他们的标志是/dev/hdxy,其中hdx根前面一样表示哪个硬盘,y表示第几个分区。以hda为例。hda1就是第一个分区,hda4就是第四个分区位置。逻辑分区从hda5开始。所以刚才那个例子中,Linux看来就是hda有10G。hda1是主分区,格式是windows。hda2是扩展分区,在它上划出了hda5和hda6,格式是windows。hda还有2G剩余空间可以继续建立hda3和hda4。注意因为hda2空间已经被划分完,所以无法再建立逻辑分区。这些硬盘的东西很容易搞混,建议多实践,多总结一下。可以参照一些有关书籍,早期的DOS书在安装部分讲了一些。现在的linux安装部分也都有不少。另外还有网上的一些介绍资料。
明白了Linux对分区的处理。下来就是分区策略了。在用RH6.2的光盘启动,一直回车选择缺省设置会到一个分区界面。这里你需要告诉linux安装程序在硬盘的什么地方安装linux。你需要告诉它一些信息,其中包括,建立一个新的Linux分区,多大,mount到哪里。这里需要介绍一下mount的概念。
我们知道硬盘是可以分成很多分区的,每个分区由各个操作系统格式化然后就可以使用了。但是要使用必须有一种方法。windows,或者DOS的做法是将格式化好的分区挂(或者说mount)成C: D: E:盘。盘符的分配是操作系统决定的(到NT后可以用户指定)。在Linux下某个分区怎么使用必须用户自己指定。在Linux下分区并不按照C: D: E分配,而是挂(mount)到一个目录下。整个UNIX的存储空间结构是一个目录树(而不是每个C: D: E:下各有自己的目录树)。
最上一层是根目录(用/表示,注意不是windows的反斜杠)在根低下有其它目录。首先需要有一个分区mount成/,然后再在根下面建立其它目录然后把分区mount到这些目录上去。所以整体来看一个unix的存储系统是一个目录树,但是它可以包括很多分区,甚至其它存储设备,比如光驱,内存盘,或者网络磁盘等。
在Linux安装的时候除了/还有几个目录是预先建立的,我们需要知道的是/usr,/home还有/root。先不管他们都做什么,一般而言我们需要分一个空间,指定它为Linux Native类型,然后mount point是这几个目录之一。另外还需要注意的是Linux分区有两种类型,native是可以存储文件建立目录的那种,还有一个linux swap,这个是linux的内存交换分区,在安装RH的时候必须指定一个。所以在安装的时候最少需要分一个区,类型linux native,mount到/上,然后一个分区类型linux swap,swap区不mount为任何目录,系统对其进行单独处理。
下来是分区大小问题,安装Linux一般而言1G空间为/就差不多了,初次安装为方便起见,可以建一个2G的分区mount point为/,然后一个swap。swap的大小作的跟内存一样大就是了,最大128M。以后再安装的时候可以根据自己对硬盘的要求建立其它分区来mount比如/home。
对于已经安装了Windows的机器,可以在Linux安装程序里删除一个windows的分区,一般而言是一个逻辑分区(你不会想删除C:盘吧),然后在它的空间里建立Linux的分区。Linux的/可以是主分区可以是逻辑分区。但是需要注意的是8G的问题。我想你也许听说过8G,到底8G是什么呢?具体问题比较复杂,简单说就是不能把Linux的/分区mount到一个硬盘8G以后的分区上。所以如果你的硬盘有16G,前6G已经分给C:盘,后里面是两个5G的D: E:盘,纳闷你就得把D盘分区删除建立Linux分区而不是E盘,因为E盘已经在8G以后了。8G以后安装Linux是没有问题的,只是无法启动。当然这个是有解决办法的,但是在新手的状态我还是建议尽量按照最简单情况作,将来熟了再练习其它。
分了区之后继续安装,你还被要求配置一些其它东西。包括root密码,Lilo,配置网络,X等东西。其中Lilo是比较重要的一部分。你会被要求将lilo安装到MBR,分区启动扇区,或者一张软盘上。你需要选择是是否安装到MBR或者floppy上。一般而言安装到MBR上即可,为了保险起见可以做到软盘上,这样机器用硬盘启动还是windows那套,进入linux可以用软盘启动。注意你需要把BIOS中的Virus Warning关闭,否则无法安装到MBR上。如果你的机器配置比较标准,网卡,声卡,显示卡等都能自动检测出来的话,一路回车,再启动你就可以进入Linux了。如果运气不好(大多数情况是)网卡声卡没有在启动的时候配好也无所谓,跟windows一样将来可以再配置。总之这些不会影响到你安装。OK,机器再启动,跟以往不一样的是没有看到Starting MS Windows 98。而是一个Lilo:的提示符。这说明Lilo已经正常安装了。你现在按回车就可以进入Linux了。如果要进入Windows可以打DOS然后回车。如果你指定了不同的windows分区启动标志符,可以用[TAB]键看一下你有哪些选择。这是一个很经常被问到的问题,这里说一下。出于某种原因你要删除Linux,你知道用DOS盘启动然后fdisk删除Linux分区或者重新安装NT删除Linux分区。但是当你一切都安装完了之后windows无法启动,Lilo:这个符号总在那里,机器死了一样。别重新分区格式化都没用。然后某个半瓶子醋可能告诉你“没救了,低格吧”。记住,除非硬件损坏,硬盘任何时候不需要低格。这种情况是由于其它安装程序并不重写0扇区,即MBR造成的lilo无法删除。解决办法很简单,请牢牢记住:用一张DOS盘启动,运行DOS的fdisk /MBR。这个命令就是重写0扇区的引导程序为MS的标准程序,即可以启动DOS,WindowsNT, Windows 2000的那个,而不会改变硬盘分区任何其它信息。所以它是绝对安全的,绝对安全的,绝对安全的。当你碰到Lilo无法删除的时候,记得fdisk /MBR。
OK,你成功的启动了Linux,进入了一个图形或者字符界面要求登陆。下来你会有成堆的问题要问。下来我会讲怎么去问问题以及怎么寻找帮助。
“大夫,我痛,告诉我怎么办吧”
“别着急,你先说你哪里怎么痛了”
“噢,哪里痛还不一样治啊,我肚子痛,快告诉我怎么办吧,我很着急的”
“别着急,再说说你昨天都干了些什么啊?”
“怎么跟昨天干什么还有关系?我昨天就干了我每天作的事情嘛,我觉得很正常,你怎么还不告诉我怎么办?不想说就别说。”
“别着急,你再想想,昨天作了什么跟平时不同的事情?”
“不同?好多都不同啊,我昨天上班没搭上公车打的的,上午没人给我打电话,比较古怪。”
“不是这些,我是问你有关吃饭啊,运动啊之类的”
“噢,这个啊,昨天晚上我吃了饺子,很好吃的喔”
“噢,吃了多少个饺子啊”
“嗯,80多个吧,噢,对了,晚上肚子就疼,一直到现在。”
“噢,那你是吃撑了。”
以上是我记忆中BOB老师写过的文章。如果你觉得这是个笑话的话,那我几乎每天都会经历这类笑话。一个人会先问“我的Linux怎么xxx了,怎么办”,到最后一步一步的诱导问题直至答案揭晓。你下来会遇到很多问题,你不知道去哪里找答案。你觉得网上都是高手,你觉得高手就是你一站到那里他就知道你有什么问题。他无所不知,会告诉你一个”绝招“一下解决你的问题。所以你什么都不必多说,一句话的标题加一个”无内容“的内容。就等高手给你”绝招“了。
可惜这样的事情从来没有发生过。
如前所述,Linux相对于你也许很熟练掌握的windows系统来说有很多全新的概念。好像微积分对一个只知道简单代数的人来说一样。在这种情况下,你用你固有体系下的思维来试图获得答案显然是困难的。举一个例子,Linux下的图形界面X配置一向是新手必问的问题。你安装了Linux但是屏幕却是300X200,16色的,你想知道怎么办。从windows那里得来的经验,你想应该有个办法找 到”显示属性“这样的菜单然后改变一下分辨率颜色深度,甚至扫描频率就可以了。所以你的提问多半是“我的X只有300X200,我在哪里可以改变它”,然后你期望一个高手告诉你“在xxx地方鼠标右键点一下,就得到显示属性的菜单啦”,然后你就可以象在windows里面一样修改屏幕分辨率了。这里有什么不对呢?不对的地方是,Linux下的X不是windows,它的显示分辨率根本不是在图形界面里面调整,而是在进入X之前,更重要的是,能改变到更高分辨率的前提条件是显示卡的驱动要配置好。而这个又跟Linux的发布,版本等有关系。这么多情况都不知道,高手绝对是没有”绝招“告诉你的。对照前面那个笑话,肚子统的原因很多,如果病人都能知道并且判断出来,医生还有什么用?
那么当你有问题的时候,应当怎么做呢?
第一,最好别问问题。Linux的安装配置本身就是个学习的过程,通过自己摸索解决一个问题也许比别人告诉你要慢很多,但是解决问题的本身有助于你加深对Linux概念的理解。同时为了解决一个问题也许能带出很多其它问题。我记得我当初初学Linux的时候在一台破机器上把Linux和win98安装了很多遍,最终明白了Linux分区DOS分区共存,Lilo的配置的很多问题。当然一些关键地方自己摸索耗费时间太多而且没有意义,多交流也能达到大家共同提高的效果。关于如何去主动摸索寻找问题的答案我后面会讲,这里就假定你需要到BBS上问一个你无法解决的问题。
你碰到了一个问题,Lilo不启动,显示010101或者LI死机,或者不知道为什么你的X屏幕只有300X200,或者不知道怎么配置网卡,或者不知道为什么书上讲的cd /usr/src/linux;make config返回错误信息,或者编译了一个测试程序gcc -o test test.c 然后运行test什么输出都没有。你手足无措。你想上网问”大虾“们来获得答案。
问问题的第一点,是要明白,两个字就能说明问题并且解决一个的事发生在在一个大侠身上也许表现的很潇洒,但是在你提问题的时候只能表现的很无知,就好像那个说”我痛“的病人一样。你必须详细的描述一下几个问题:你有什么,你做了什么,你希望达到什么效果,你发现什么问题,具体的问题现象描述。比如如果你网络不通,你就需要先说你的Linux什么发布,什么版本,你怎么安装的,怎么配置的网络,详细到具体的命令,你的网络情况,局域网广域网等。你也许会说很多废话,但是要明白你是来问问题的,你不会知道究竟问题出在哪里,所以你必须把你能想到的跟问题有关的事情都说出来才可能包含具体出问题的地方。在这里你不是大侠,无关潇洒不潇洒的问题。我们的目的是解决你的问题,并且通过解决问题获得自身的提高,无它。
第二点,是不要自己做任何判断。好像那个认为Linux也应当根windows一样有个地方点右键获得“显示属性”的问题一样。你事先根据自己在其它系统上的经验来自己做了问题的限定并且将回答问题的可能限制在一个很小的范围内。这样做既限制了你自己的思维,也影响到你正确描述问题。事实是你的错误多半是概念错误,开始走的方向就错了,与其这样不如把自己明白的似是而非的东西抛开,仔仔细细的把那几个问题(你有什么,你做了什么....)写清楚,看别人会怎么作判断。
第三点,你是来提问题的,你觉得你应该受到帮助。且慢,这里已经不是教师答疑了,你不再是一个有权力受到教育的大学生了。回答问题的人也不再是你的老师或者助教了。他们对你没有责任。大家无非是在一个地方相互交流共同提高。如果有人回答你,绝对是在助人为乐帮助你。而当你的问题没有人回答的时候,多半是你的描述不够详细,别人不是医生,不必一个一个问题诱导下去。所以当你的问题没有回答的时候,先对照前面一点再修改问题的描述,这也是个思考的过程。实在不行,就自力更生吧,接着看下面的文章。
Linux的一个重要作用,我觉得,就是培养人自己探索的能力。回想我们的学习过程,从小学中学到大学。让人自己去探索的环境实在太少。所有的问题都有一个标准答案,要么在老师那里,要么在参考书上。就连作文这样无法量化的东西也有个倒霉的“中心思想”。所谓“自学”也无非是猜测到底标准答案是什么。如果要做大一点的课程项目(Class Project)也会定义的非常详细,老师恨不得把所有你能自我创造的细节都堵上,这样可以方便他评卷。这样环境下教育出来的人,到了Linux下就会经常感到无所适从 -- 的确,没有老师的标准答案了,你做的对不对只有自己知道。
所以学习Linux,很重要的一点是有自己搜索知识,突破自己思想局限的能力。遇到问题第一步不是想“谁有标准答案”然后去问人,而是先想”我怎么能解决他“,不行就自己去寻找解决办法,再考虑这个解决办法为什么自己想不出来,将来碰到类似问题应该往哪个方向去努力。最后再考虑自己是否能在这个方向上作出改进。经历过很多次这样的事之后,人的创造力会有很大的提高,而这个对于现在靠技术吃饭的人来说,就是10万和2千的区别。
OK,你有一个问题,你不知道怎么解决,你怎么去寻找答案,怎么提高自己呢?在有一个问题的时候,你首先要想,你是个新手,在你之前已经有无数个新手了,你不会是个多特殊的新手。唯一的不同是你的知识面跟别人不同,而不是你的问题有多特殊。比如你有个D-LINK 220网卡无法配置你觉得很困惑。实际情况是有很多人已经困惑过了,他们问过这个问题并且都得到了答案。所以你的第一步应当是明白“这个问题已经有根我一样的人问过并且在某个地方有答案了”。那么,怎么找答案呢?在BBS上,你可以进入Linux版,然后想“已经有答案了,在哪里呢”。首先你可以在从前的文章里找,这个可以用搜索标题的方法。
先想一下如果你要问这个问题要用什么关键字作标题,然后搜索这个关键字。在BBS上搜索是输入?号然后输入关键字再回车。搜索中用什么关键字很讲究,比如你要找有关DLINK 530-TX卡的信息,那么你要想别人会怎么问。肯定标题里有网卡型号,可是别人会怎么写呢?也许是530TX,也许是530 TX,也许是530-TX。所以但是肯定都包括530,所以你可以搜索530这个关键字,然后把搜索到的文章都看一遍,基本上就有答案了。类似的可以搜索的问题还有DE尤220,810(Intel 810主板内置显卡驱动)等。
其实BBS只是一个很小的地方,真正最新最全的知识在网络上。几乎所有的Linux有关程序,常见问题都会有人整理出来放在网上。需要注意的是,一,Linux不是microsoft,有专门公司维护文档。Linux的文档到处都有,质量不一,而且随着Linux的不停升级会有各种版本。比如IPMASQ因为它随Linux内核升级版本更新很快,所以它的帮助(faq)也频繁升级。看了老的faq会让你更糊涂。所以找文档不要看到一个就盲从,要确认它的确有用,也许你找到的是个旧版本呢?要知道一些讲Linux的文章是5,6年前写的,当时CDROM还是个稀罕货,你想从那里获得如何用CDROM安装Linux的问题,却发现上面都是讲怎么用软盘安装,这个就不好了。
另外还有有些讲内核编译的文档都是说make config,而且里面的选项也很旧,实际上现在内核编译都用菜单方式的make menuconfig了。所以文档的新旧是个很需要注意的事。第二点是你无法逃避使用英文,你必须强迫自己去理解英文文档。的确有中文的文档,但是那些的普遍问题是缺乏维护,太旧了。
下来请你把这个网址写在手背上:。以后对Linux有了问题,就去上面搜索。google是我知道最好的搜索引擎,尤其是在Linux知识方面。几乎是我想知道什么就能搜出什么,从网卡驱动到并行计算机的配置。我希望你以后在问问题之前在这上面搜过。搜索的主要技巧是选择正确关键字,参考前面讲过的,搜索530-TX的驱动最好输入Linux 530 driver字样。有关搜索技巧如果我有时间可以单独写一些东西。
另外一个地方是News Group,不过一般的news server是联不上的,而且组也不多。我们可以上去搜索。这里都是非常新的国际新闻组的讨论,当你的问题已经新到最新的文档里也没有的时候,可以上这里搜索。新手的问题一般不需要。
当然不要忘了BBS的精华区,那里往往有些意想不到的收获,仍然需要注意的问题是,一些中文的文档,尤其是长文章,往往很旧。