害!!安装电脑系统 分区就那么点事

前话

最近想在一台09年的x32的xp笔记本上安装个linux系统,不过这台笔记本虽然bios中是有usb选项的,但在boot menu里面没能识别到u盘,就尝试不使用u盘安装系统,到底也没有成功。参考了网上许多人的回答,大多直接用u盘的。所以最后还是捣鼓起启动盘,发现是老电脑上的usb接口的问题,费了点时间装上了系统。
装系统并不需要知道多少,不过总归没弄懂分区,系统这些知识,所以就花了些时间来学习,整理了一下。


1 .为什么要安装操作系统
2.打开电源后电脑的运行过程
3.Bios/UEFI把工作转到哪
4.知道在哪,又要怎么读取
5.bios和uefi
6.windows系统与linux系统分区
7.个性化设置

注:本文中将磁盘与硬盘混为一谈,凡出现磁盘即为硬盘


1 .为什么要安装操作系统

计算机并不是一开始就装好操作系统的,毕竟有很多类型计算机,类似于嵌入式有它自己的那一套系统。我们使用的个人计算机是一种微型计算机,面向我们绝大多数用户,用以完成,编辑,上网之类的工作。但不同人有不同喜好,需求,对应的不同系统在偏向的方向上也会有所不同,也就是说对于底层硬件软件上的管理形式上不太一样。(不同需求,就有不同系统,主流的是有windos,linux,mac os)

安装电脑操作系统从个人理解简单来看就是让用户不用直面机器语言,甚至于可以通过图像化界面来操作只有01的机器(当然实际上比这复杂得多,图形化的界面可以省去很多时间)

如果要让我们自己用0101告诉电脑要使用什么硬件啥的,总是很头疼的,但这些码农已经帮我们写好了,我们根本不用理会底层。一般使用的计算机也朝着智能化,简便化的方向发展。win10系统的安装已经是下一步大法轻松搞定了。

系统其实和普通软件差不多都是打包好的程序。先说明一下,系统并不仅仅是一个文件,不是直接把整个系统拷贝过来就能用的,就当它要和cpu一起工作,得先彼此了解认识一下。所以要有个安装的过程。再者系统也不能说是一个软件,因为它是和电脑直接硬件进行沟通,并且规定了相应的规则,给相应的软件提供一个运行环境。

2.打开电源后电脑的运行过程

普通计算机是你告诉它什么,它就做什么,而且是一步步做下去的,所以开机给它供电的那一刻开始,计算机就开始找指令(跳过运行的具体内容):

1.给计算机的起始命令
第一个发出指令(在系统这一层面可以这么说吧)的是bios/uefi,基本输入输出系统,比我们的操作系统简单很多,是一个预处理环境。它的主要任务是初始化一些硬件设备,启动一些驱动,把千奇百态的硬件都抽象封装起来。

这里主要是因为不同的主板配置都不一样,我们要把同一个win10系统装在不同的主板上,这中间就需要有一个翻译bios/uefi,从而操作系统就可以忽略过多硬件层面的问题。(就像我们简简单单得看世界名著,其实并不需要所有语言都懂,我们完全可以借助翻译,只需要一种语言就能看各国的书)

2.预处理环境初始化读取硬盘(磁盘)
我们的操作系统就是写在磁盘里的,不过偌大的磁盘从哪里开始读取,怎么读这是一个问题。在没有指令的情况下,电脑是不会干活的,所以在装系统的时候在:写入了系统引导文件(引导记录)。引导文件算是一块指路牌,明确得告诉CPU关于系统的正确打开方式。引导文件主要就是会把操作系统从哪里读起,咋样咋样跟cpu说。

3.预启动操作环境(Bios/uefi)忙完它的事情以后,就把工作任务交给操作系统,操作系统在接收到bios/uefi的召唤以后才开始工作。之后就可以通过简明易懂的图形界面操作控制绝大多数的复杂电路。

3.Bios/UEFI把工作转到哪

很显然bios/uei只是"翻译"一下主板的一些硬件内容什么的,和用户交流,更多地还是得靠操作系统,究竟如何转交工作,是一个问题。

打开电源的时候以后的预处理工作我们并不需要过多了解,不过我们得知道是什么力量使得bios/uefi找到操作系统在哪。我们操作系统在磁盘里。但计算机并不那么认为。

确实系统并不一定在磁盘里,比如一台没有装过系统的计算机必然在磁盘里找不出结果。基于此,在bios/uefi界面有启动项。再这就随便举几种可能:

1.计算机有不止一个硬盘,得知道从哪个硬盘里读系统;

2.或许是第一次装机得从光盘里面读(装有iso镜像的移动设备,例如U盘相当于光盘);

3.再者系统不是本地的,得从网上读取。

诸如此类,计算机也不用一个个去试,得用户告诉它(一般默认是直接找第一块磁盘,找不到就报错,开不了机)启动项,计算机才知道下一步是到哪。

4.知道在哪,又要怎么读取

怎么让biso/uefi知道磁盘咋读?毕竟系统不止一种,写法也不一样(当然也是符合某一种规范的)。再者系统在磁盘的位置并不是固定,是可以自由选择从第几个分区到第几个分区,这样bios/uefi又怎么知道应该从哪开始读?

再这儿,我们姑且把磁盘看成是横条,从一段到另一端。那么既然要读取这块磁盘,我们总是从一个端点开始读取(磁盘实际储存并不是一长条的),为此在磁盘的最开始划出一块 引导分区 就很有必要了,这块引导分区大概几百MB的大小或者更小。总之这块分区一定要有的。

这一块引导分区mbr/gpt,写的就是整一块磁盘的储存情况。当bios/uefi看到这个引导的命令就知道在磁盘这一条路上怎么走了。第一个系统的门牌号是* * *,第二个系统的门牌号是xxx,照着这个分区号就能找到系统位置,启动系统,转交任务。

5.mbr和gpt

具体怎么看一大串01001的分区表,是计算机的事情。不过还是要稍微得说一下,方便理解mbr,gpt。mbr/gpt前面说差不多就是引导分区的不同形式,可以说是给bios/uefi看的门牌号。就先把mbr/gpt理解成书的目录好了,我们看书只要瞄一眼目录就能找到我们要看的东西,bios/uefi只要瞄一眼mbr/gpt也能找到系统在哪。

把整一个磁盘看成一条路,两边都是房子,而且还是均匀分布的房子,这些房子都长得差不多。怕认不出来,所以磁盘就开始分扇区,相当于发门牌号,从第一栋房子开始一直到最后一栋房子都有一个门牌号。但这还不够,这么多房子还要给他划区,第一街区,第二街区,相当于第一分区C盘,第二分区D盘(实际上盘符的名字不是固定的,不要较真),操作系统是个大佬,所以就把第一分区划给他管理吧,从今往后在第一分区上有事就找系统。bios/uefi知道了这件事,赶忙把自己的工作做完,就去找系统,仔细得读一遍mbr/gpt,知道操作系统在第一分区,就跑到第一分区去找系统,转交任务。*

注意!!!bios一直实际上一直都在工作,这里说把任务转交,只不过是在用户看来只要操作系统就够了,但从硬件层面抽象到操作系统,中间又要有它来‘’‘翻译”

那至于mbr/gpt两个名字不太一样,是不是有很大不同?其实书的目录写怎么样,大概得我们都能看得懂。只不过有时候目录不那么详细,我们翻得比较累。mbr和gpt就是两种目录,mbr目录比较短(512个字节),只能管2T的样子,也不是那么细致,只能划分第一分区到第四分区(第四分区是可以划扩展分区的,不多说)。gpt目录就比较长(比mbr大不知道多少),管18EB(也不知道大了多少),比较细致,能有128个分区。

(其实两者在设计风格是不同的,但这里方便理解就不去阐述这方面问题)

gpt目录其实在开头包含一个mbr目录,但具体意义不太一样。(这意味着它某种程度上能够兼容mbr,但并不意味着可以混用,自行体会)

总之mbr和gpt是目录的形式,需要怎样子的形式主要还是看磁盘的大小。(虽然mbr/gpt选哪一个一般都可以,但一般习惯是biso+mbr,uefi+gpt,这样不容易出问题)

对于早期的系统,gpt分区是不支持的。(这里就不列举是哪些系统了)。之前说mbr/gpt分区的选择主要看磁盘,但实际上还有主板,系统的限制因素在里面。一般目前的个人计算机使用mrb还是gpt都差不多。倘若你喜欢分区多一点,是得注意:mbr只支持(单个磁盘上)四个主分区,或者三主分区+一扩展分区。实际上我uefi+mbr+一个分区也用的好好得,没有特殊需求不用太在意。

***以上所说的目录,街区都只是打比方,不要当真。***

5.bios和uefi

电脑打开电源到进入系统的过程,有一个大概的思路

启动
找到
打开电源
Bios/UEFI
MBR/gpt
系统

从打开电源到系统启动具体命令细节不在这深究。思路理清以后,我们就回过去看看之前没有细讲的bios和uefi。

BIOS就是"Basic Input Output System",一直干着启动识别一下硬件,抽象包装一下硬件的任务。这咋理解呢,下面就随便扯一点,也是很不准确:
(这里其实应该把硬件理解为固件,bios并不能直接和某个特定的硬件交流,而是读取硬件上特定的代码。这段代码是可以控制硬件的,我们称为固件,于是乎原本是电路之间的交际就变成了代码之间的交流)

1.把硬件看做五花八门的兵种,什么拿枪的,拿刀的,开坦克的,电磁的都有。平日里啥事不干就干站在那,就跟断电的时候屏幕不亮显卡不工作,小风扇也不吹CPU不工作一样,啥事都没有。现在开电源了,总得先检查检查,看看显卡CPU好不好啥的(通过读取固件)。对应得要开打前,总得先聚集一下兵力检查一下有没有少人,是不是有几个大兵在地图的另一边摸鱼之类的。差不多bios就是启动识别硬件的这块事情。

2.等把兵力都聚集准备好,正真要打起来打起来的时候总不能一哄而上吧,我们得编一个队,拿枪的编第一队,开坦克的编第二队,开飞机的编成第三队诸如此类,这样打起来要啥就按一个编号,人就来了,不用一个个框起来,才能把人叫过来。bios想了想,也只有我熟悉这些硬件啊,到时候一转交任务,操作系统可不是知道显卡是啥,内存是啥,索性给这些硬件去个标号,操作系统也就不用整天认人了,报编号就好,这也差不多就是抽象硬件了,本来是一堆硬件电路,抽象成了编码。

就这样bios一直作为底层护肩与操作系统之间的“翻译官”。只有它能完成这项工作。几十年来,纵然操作系统更新换代,但它依旧没有改。

问题来了,为什么bios这么经久不衰,不就是检查检查,编个号的事,换谁不是都一样么?

1.其实吧完成这项工作要求还是比较苛刻的:想想以前的能存储几MB空间都宝贵得要死,现在随便几个GB不在话下,想当年要完成bios的工作,是要求多少字节以内完成的事,长篇大段的装不下,本来010101排列组合也就20种可能性,现在只能0101,6种可能性。好了这只是在开玩笑,主要是想说明存储空间带来的影响;

2.再来,我们算算,假如装一个bios要50块钱(不是盗版总是要钱的,但这个数字是我瞎编的别在意),每台电脑都得装这个bios,这就很赚钱了,你卖一台电脑就得给我一笔版权费,岂不是美滋滋的赚钱渠道,有这种好生意,大家肯定都抢着做,但不是人人都能抢到,抢到的几个人说:“只有我们是正版的”。这下好了,能像bios这样的代码,就很难写了,稍微改动一下,说你盗版。改动大了,制造商业不同意,“我们辛辛苦苦按着那个bios做出来的硬件,用你这个乱编码识别不出来,要你的有何用。”写bios这种吃力不讨好的事情没人做。bios也不会有太多改变。

诸如此类有很多这样的因素,导致bios的地位一直不可撼动。

直到有一天uefi站出来说,“bios您老了不行了,还是换我上吧,你干的事情我都会,一定能继承您的衣钵的。”你说uefi是何许人,能对老牌bios说出这番话。

为此我们得从bios自身的一些 弊端 说起。在这我们也不会去讨论bios编码,端口,中断这些具体的问题。就粗粗糙糙得说一些空泛的东西。

之前说了bios这杯羹其实就几个人能分,其他人想要玩,没门。这就导致bios这潭水没有点生气,缺少创新。看看隔壁的操作系统,固件(硬件内部驱动程序)每天在变,日新月异,bios是愈发跟不上潮流。秉承不进则退的原则,bios不变总归落伍。
在这问题很明显,bios本来就是要识别固件、系统的,但这两家伙天天在变,bios不怎么变(也还是是有些变化的),总归有一天有一些固件难以识别。
bios也是有几家在做,不同的主板硬件厂商还有做软件不可能满足每一家bios的要求,只能选择其中一种的bios作为规范来做,不能兼顾其他的了,这样一台电脑上能用的,到另一台就可能不成,用户体验感极差。(就像王者荣耀如果苹果上也安卓上永远不能联机,两个好朋友永远不能在线开黑,体验感不差么)

总而言之,言而总之兼容性这种东西还是蛮重要的。蓝屏,死机这种东西,如果早些年用的时候是时常发生,我个人是深恶痛绝,但现在电脑出现这种状况几率少很多,使用起来舒服很多。

uefi要想把“翻译官”当好,的的确确在这一方面花了很大的功夫(当然另一方面讲当年bios的设计,在现在的uefi看来确实不怎么样,但总归是不同时期的不同产物)。uefi和bios中间是一条难以跨越的鸿沟,但跨过了发现其实uefi才更加有现实意义。

现在我们换一种视角来看,bios在做的工作主要就是在硬件与操作系统之间,那真正要干活的是硬件。操作系统下达一个指令,最终目的还是让硬件去执行。但是:它(操作系统)永远不懂“它”电路,就像硬件不懂软件的码。(操作系统面对的也不是说是电路,而是写在硬件上的固件(内部‘驱动程序’)。操作系统有很多,硬件设备各式各样也多的够呛,不同的代码交锋,又能谁懂谁?)

有一天,操作系统给硬件xx分派了一个任务。硬件xx不知道要咋做,就读取《操作系统》这本书,想从里面找出要咋样干活的指导,,读不懂《操作系统》上面的文字咋办,幸好有bios/mbr写的《一分钟教会如何读懂操作系统的心》的参考书,硬件瞄一眼参考书后就知道自己要找的东西在《操作系统》的哪一面,也知道怎么理解上面的话。但问题是要是硬件蠢一点,没办法懂软件的心咋办?很显然,再怎么看参考书也没用了,没办法执行命令(也就是如果硬件与bios之间出现不兼容的情况,反之操作系统没办法读懂bios)。

相比之下uefi就比较“人性化”,它规定了硬件的固件如果要让uefi读懂要怎么写,操作系统要想能跟上uefi的speed就得按着这种规范来。这样硬件就不需要担忧看不懂《几分钟xxx》的书了。大家都方便懂总是最好的。

以上和uefi的实际工作还是相距甚远,但这样子表述起码说明了一个问题uefi制定了一种规范。同样在这种规范下,最主要的兼容性问题似乎能够解决。解决的基础是都需要按着规范写。

反过来讲,只要按着规范来,uefi都是认可的。uefi规范只有一个,只要遵循这个规范,设计的硬件不管怎样,在uefi启动的系统上或者什么的都能够使用,不至于出现读取出问题的状况。况且在代码长度上,uefi的规范上也没有作出特别的规定,不论是在uefi的编写上还是在其他硬件的开发上们都给了很大的自由。一改原本bios的神秘。uefi的开源使得它能比bios更胜一筹。

之前扯得和启动并没有什么关系,所以还是更实际得比较一下,bios和uefi两种启动不同:

bios只是运行装载程序。bios其实做的事情远比我们之前想想得还要简单,开机先要初始化(这个是bios和uefi都要做的初始化,也是有不一样的地方,这里便不多说明)硬件啥的。初始化结束就要找操作系统,我们已经告诉bios启动项,所以bios就执行一段代码去找的操作系统在哪,知道就好。实际上做的就是运行一段代码。而且这段代码并不是bios本身的,而是从mbr上的(之前我们想象mbr是一本书的目录,实际上它除了目录以外,在它的开头还有一段代码,也就是bios要执行的)
可以说bios并没有什么识别能力,它只是负责运行一段代码。不管系统咋样或者其他咋样就不是他的工作范畴了。
bios+mbr(常规的搭配),从mbr的角度讲会有读写处理不便,空间小对于装载某些配置会出现问题。从bios角度讲,要启动系统只能运行那一段代码来实现,对于多系统或者想对除磁盘启动以外的启动会比较烦恼。

实际上uefi在中间起到的作用是
1.读取分区表(读取gpt)
2.访问特定系统中的文件
3.执行特定格式代码
我们不去深究具体的处理方式,但uefi不仅仅只运行一段代码那么简单,它将能够识别特别的文件,执行特定的代码。对于实现多重目标等方面会有比较大的意义,但可能我们并不太关心这些。

不论怎样如果要深入了解不同,还是得从它们的根本原理入手,就不做多的解释。简单举几个普遍的不同的例子:

1.uefi有不错的图形界面,用鼠标控制,而bios经典的蓝屏就很老套。这得益于内存的增大。
2.uefi主C,而bios主要以汇编来编写。
3.uefi对新硬件支持好,bios相对差

这里就大概说了一下uefi的开源,长江后浪推前浪,xxxx,uefi必然取代bios的趋势。当然也会uefi也算是一种加强版的bios至少它负责的内容差不多,本质上没有改变,但思路上改变了,然后一切就都不一样了(uefi也存在缺点,现在它替代bios,在将来它的缺点将由什么来弥补,也是值得期待)。然后说了一下两者实际在引导到操作系统的时候有什么不同。最后举了几个能说明不同的例子。

当然这一切都是极为粗鄙的解释,我个人的见解也必然是有错误的,能力有限,还望见谅。

6.windows系统与linux系统分区

解释一下mbr分区:黄色,橙色,红色三个部分:
黄色:主引导程序+出错信息数据区,说明书,告诉你怎么读这个目录;
橙色:分区表,就是一个目录,分区1从哪到哪,分区2从哪到哪……
红色:结束标志字,写完了划个隔页。
很明显可以看到橙色部分DPT(分区表)只能容纳4个主分区。因为空间只有那么大,所以mbr有分区的限制。
mbr

相比之下gpt要长得多,gpt包含一个mbr,mbr只占了极小的一部分(这张图片从哪搬来的就不说了,图上注明了)
gpt

以下两张图片是描述在MBR分区表下,windows和linux的不同分区方式,来源于:http://www.178linux.com/81285

在windows里面很明显就是每一个主分区在分区表里面占一个位置,给人的感觉就是每个分区就是独立的;
在分区最多的情况下mbr是分了三个主分区+一个扩展分区。在扩展分区里面,你还可以再做一个分拓展分区表(结构和DPT分区表差不多),分出多个逻辑分区。(主要就是DPT分区表里面空间不够了,如果想要更多的分区就必须在mbr外面做一个分区表,就成了分区表套分区表的样子)
windows硬盘

在linux下面我们看到也是可以分出4个主分区,但不一样的是,似乎linux只要一个 / 分区(根分区),一个swap分区,两个主分区就好了。
其实最主要的还是根分区。swap分区只是一个交换区,和windows的虚拟内存差不多。虚拟内存顾名思义就不是真正的内存。这里说得内存计算机运算的时候临时储存数据的地方,和磁盘的写入存储不太一样。我们的系统是写在磁盘里的。那现在swap是在磁盘里的必然不是内存。简单说它的作用就是当内存不够用的时候,可以拿来当做内存用,所以类似于虚拟内存。
最主要的还是根分区,所以就拿根分区的目录和windous的目录作比较

windows里每个分区的目录都是分开来的,C盘下面有一个Program Files目录,D盘也可以有这样一个目录,而且两个运行起来还互不干扰(如果找C盘下面的Program Files,路径是C://Program Files,如果找D下面的,路径就是D://Program Files,你可以很容易去翻开来),总之就是两个相互独立的目录。
但linux下面所有的目录你发现都是在根分区下的,就算是你把一个主分区直接分给boot,就是出现 / 分区(根分区),和boot分区同样是属于主分区,看起来他们俩可以平起平坐,但实际上boot还是在根分区下面。打一个不恰当的比方,我是技术一流的工人,你是管理层面的人,咱俩拿着一样多的工资,但我就是你的下级听你管。现在boot和根分区也是一样,根分区是最大的老大,如果你想找根分区路径上直接打“ \ ”就能找到,但是如果你想找boot分区,就得打“ \ boot”,意思就是根分区下面的boot目录
linux硬盘

总之windows和linux简单的不同点就在目录,分区上面,至于其他什么不同便不在这里赘述。

7.个性化设置

加入光驱,点击同意xx协议,在简单得下一步大法处理完分区。到这而按理来说系统干就完事了,毕竟处理完分区,读取的形式什么都已经确定下来。

可实际上是,还有一大堆的系统配置,选择怎样的协议,着实让人头疼(如果没有什么基础认识)。但最为一款人性化的操作系统,直接默认帮我们选择好基础配置。这也是算是操作系统的优势吧,普通用户不用苦逼得直面底层,计算机大众化的先决条件。

不同用户不同的需求,可能大多数人在基础配置方面并不会过多在意不论什么协议,什么环境,用着舒畅,才是硬道理。为了更好得满足心理需求,个性化的设置成了必不可少的一部分。选择合适的操作界面,操作方式,使个人有不同于他人的差异,更能满足用户需求。

不多说,个性化设置只是让人愉悦的某种的东西。装系统也就是这么回事。

8.结尾

电脑只是使用的工具,程序设计者总是尽可能得满足用户的需求,但是不免用户总是会做一些超出预期的操作,所以在安装系统上,如果只是想让电脑成为一个可靠的工具,遵循主流的配置与操作将会是比较理想的。(总是面对报错,又永远不能理解其实质内涵,我想并不是一个令人愉悦的选择)

主要参考(无序)

1.UEFI 引导与 BIOS 引导在原理上有什么区别?

2.硬盘分区不求人:秒懂MBR和GPT分区表

3.让传统BIOS启动GPT磁盘的操作系统;让UEFI启动MBR磁盘的操作系统。

4. MBR与GPT分区/传统BIOS与UEFI启动原理

5.Windows与linux分区的区别

6.(译)UEFI 启动:实际工作原理

7.文件系统类型(ext4、xfs、fat32、vfat、ntfs、…)

本文,纯手打,无抄袭;参考了网上较多 的文本,在这就不了一一列举,仅将其中部分的链接发放在文末,可供参考
仅仅只是个人的学习总结,如有错处,还望批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值