下来你的首要问题是“我的机器有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,Windows,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了。所以文档的新旧是个很需要注意的事。第二点是你无法逃避使
用英文,你必须强迫自己去理解英文文档。的确有中文的文档,但是那些的普
遍问题是缺乏维护,太旧了。
下来请你把这个网址写在手背上: www.google.com。以后对Linux有了问题,
就去上面搜索。google是我知道最好的搜索引擎,尤其是在Linux知识方面。
几乎是我想知道什么就能搜出什么,从网卡驱动到并行计算机的配置。我希望
你以后在问问题之前在这上面搜过。搜索的主要技巧是选择正确关键字,参考
前面讲过的,搜索530-TX的驱动最好输入Linux 530 driver字样。有关搜索技
巧如果我有时间可以单独写一些东西。
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,Windows,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了。所以文档的新旧是个很需要注意的事。第二点是你无法逃避使
用英文,你必须强迫自己去理解英文文档。的确有中文的文档,但是那些的普
遍问题是缺乏维护,太旧了。
下来请你把这个网址写在手背上: www.google.com。以后对Linux有了问题,
就去上面搜索。google是我知道最好的搜索引擎,尤其是在Linux知识方面。
几乎是我想知道什么就能搜出什么,从网卡驱动到并行计算机的配置。我希望
你以后在问问题之前在这上面搜过。搜索的主要技巧是选择正确关键字,参考
前面讲过的,搜索530-TX的驱动最好输入Linux 530 driver字样。有关搜索技
巧如果我有时间可以单独写一些东西。