Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10723770
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:30:00

   以下內容是基礎中的基礎﹐對linux或unix入門級新手很是管用。
 
       硬盘是由很多个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这个关键字,然后把搜索到的文章都看一遍,基本上就有答案了。

其实BBS只是一个很小的地方,真正最新最全的知识在网络上。几乎所有的Linux有关程序,常见问题都会有人整理出来放在网上。需要注意的是,一,Linux不是microsoft,有专门公司维护文档。Linux的文档到处都有,质量不一,而且随着Linux的不停升级会有各种版本。比如IPMASQ因为它随Linux内核升级版本更新很快,所以它的帮助(faq)也频繁升级。看了老的faq会让你更
糊涂。所以找文档不要看到一个就盲从,要确认它的确有用,也许你找到的是个旧版本呢?要知道一些讲Linux的文章是5,6年前写的,当时CDROM还是个稀罕货,你想从那里获得如何用CDROM安装Linux的问题,却发现上面都是讲怎么用软盘安装,这个就不好了。另外还有有些讲内核编译的文档都是说make config,而且里面的选项也很旧,实际上现在内核编译都用菜单方式的make menuconfig了。所以文档的新旧是个很需要注意的事。第二点是你无法逃避使用英文,你必须强迫自己去理解英文文档。的确有中文的文档,但是那些的普遍问题是缺乏维护,太旧了。
 
誠然﹐授之以魚﹐不如授之以漁。
阅读(1087) | 评论(0) | 转发(0) |
0

上一篇:鸟哥菜房的精作

下一篇:LINUX学习一

给主人留下些什么吧!~~