一、机械硬盘的认识
磁碟的组成主要有磁碟盘、机械手臂、磁碟读取头与主轴马达所组成,而资料的写入其实是在磁碟盘上面。磁碟盘上面又可细分出磁区(Sector)与磁轨(Track)两种单位,其中磁区的物理量设计有两种大小,分别是 512bytes 与 4Kbytes。假设磁碟只有一个磁碟盘,那么磁碟盘有点像底下这样:
那么是否每个磁区都一样重要呢?其实整颗磁碟的第一个磁区特别的重要,因为他记录了整颗磁碟的重要资讯!早期磁碟第一个磁区里面含有的重要资讯我们称为 MBR (Master Boot Record) 格式,但是由于近年来磁碟的容量不断扩大,造成读写上的一些困扰, 甚至有些大于 2TB 以上的磁碟分割已经让某些作业系统无法存取。因此后来又多了一个新的磁碟分割格式,称为 GPT (GUID partition table)!这两种分割格式与限制不太相同啦!
那么分割表又是啥?其实妳刚刚拿到的整颗硬碟就像一根原木,你必须要在这根原木上面切割出你想要的区段, 这个区段才能够再制作成为你想要的家具!如果没有进行切割,那么原木就不能被有效的使用。同样的道理,你必须要针对你的硬碟进行分割,这样硬碟才可以被你使用的!
-
MBR 的意思是“主引导记录”,是存在于磁盘驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统系统信息,并用一小段代码来启动系统。如果你安装了 Windows,其启动信息就放在这一段代码中——如果 MBR 的信息损坏或误删就不能正常启动 Windows,这时候你就需要找一个引导修复软件工具来修复它就可以了。Linux 系统中 MBR 通常会是 GRUB 加载器。当一台电脑启动时,它会先启动主板自带的 BIOS 系统,bios 加载 MBR,MBR 再启动 Windows,这就是 mbr 的启动过程。
-
GPT 的意思是 GUID Partition Table,即“全局唯一标识磁盘分区表”。他是另外一种更加先进新颖的磁盘组织方式,一种使用 UEFI 启动的磁盘组织方式。最开始是为了更好的兼容性,后来因为其更大的支持内存(mbr 分区最多支持 2T 的磁盘),更多的兼容而被广泛使用,特别是苹果的 MAC 系统全部使用 gpt 分区。gtp 不在有分区的概念,所有 CDEF 盘都在一段信息中存储。可以简单的理解为更先进但是使用不够广泛的技术。因为兼容问题,gpt 其实在引导的最开始部分也有一段 mbr 引导,也叫做“保护引导”,为了防止设备不支持 uefi
-
内存支持:mbr 最多支持 2T,而 gpt 理论上是无限制的。
-
分区:mbr 最多支持四个主分区,gpt 没有限制。如果你想跑多系统,mbr 最多 4 个而 gpt 没有限制。
-
系统:win7 只能用 mbr 分区(也可以但是很麻烦,不建议),从 Win8 开始微软建议你使用 gpt。
-
其它:gpt 是由 uefi 启动的,而 uefi 是后来才提出的概念,兼容性和稳定性不如 bios+mbr。
二、MSDOS (MBR) 分割表格式与限制
早期的 Linux 系统为了相容于 Windows 的磁碟,因此使用的是支援 Windows 的 MBR(Master Boot Record, 主要开机纪录区) 的方式来处理开机管理程式与分割表!而开机管理程式纪录区与分割表则通通放在磁碟的第一个磁区, 这个磁区通常是 512bytes 的大小(旧的磁碟磁区都是 512bytes 喔!),所以说,第一个磁区 512bytes 会有这两个资料:
- 主要开机记录区(Master Boot Record, MBR):可以安装开机管理程式的地方,有 446 bytes
- 分割表(partition table):记录整颗硬碟分割的状态,有 64 bytes
由于分割表所在区块仅有 64 bytes 容量,因此最多仅能有四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码。若将硬碟以长条形来看,然后将磁柱以直条图来看,那么那 64 bytes 的记录区段有点像底下的图示:
图 2.2.2、磁碟分割表的作用示意图
假设上面的硬碟装置档名为/dev/sda 时,那么这四个分割槽在 Linux 系统中的装置档名如下所示, 重点在于档名后面会再接一个数字,这个数字与该分割槽所在的位置有关喔!
- P1:/dev/sda1
- P2:/dev/sda2
- P3:/dev/sda3
- P4:/dev/sda4
上图中我们假设硬碟只有 400 个磁柱,共分割成为四个分割槽,第四个分割槽所在为第 301 到 400 号磁柱的范围。当你的作业系统为 Windows 时,那么第一到第四个分割槽的代号应该就是 C, D, E, F。当你有资料要写入 F 槽时, 你的资料会被写入这颗磁碟的 301~400 号磁柱之间的意思。
由于分割表就只有 64 bytes 而已,最多只能容纳四笔分割的记录, 这四个分割的记录被称为主要(Primary)或延伸(Extended)分割槽。根据上面的图示与说明,我们可以得到几个重点资讯:
- 其实所谓的『分割』只是针对那个 64 bytes 的分割表进行设定而已!
- 硬碟预设的分割表仅能写入四组分割资讯
- 这四组分割资讯我们称为主要(Primary)或延伸(Extended)分割槽
- 分割槽的最小单位『通常』为磁柱(cylinder)
- 当系统要写入磁碟时,一定会参考磁碟分割表,才能针对某个分割槽进行资料的处理
咦!你会不会突然想到,为啥要分割啊?基本上你可以这样思考分割的角度:
-
资料的安全性:
因为每个分割槽的资料是分开的!所以,当你需要将某个分割槽的资料重整时,例如你要将电脑中 Windows 的 C 槽重新安装一次系统时,可以将其他重要资料移动到其他分割槽,例如将邮件、桌面资料移动到 D 槽去,那么 C 槽重灌系统并不会影响到 D 槽!所以善用分割槽,可以让妳的资料更安全。 -
系统的效能考量:
由于分割槽将资料集中在某个磁柱的区段,例如上图当中第一个分割槽位于磁柱号码 1100 号,如此一来当有资料要读取自该分割槽时,磁碟只会搜寻前面 1100 的磁柱范围,由于资料集中了,将有助于资料读取的速度与效能!所以说,分割是很重要的!
既然分割表只有记录四组资料的空间,那么是否代表我一颗硬碟最多只能分割出四个分割槽?
当然不是啦!有经验的朋友都知道,你可以将一颗硬碟分割成十个以上的分割槽的!那又是如何达到的呢?在 Windows/Linux 系统中,我们是透过刚刚谈到的延伸分割(Extended)的方式来处理的啦!延伸分割的想法是:既然第一个磁区所在的分割表只能记录四笔资料,那我可否利用额外的磁区来记录更多的分割资讯?实际上图示有点像底下这样:
图 2.2.3、磁碟分割表的作用示意图
实际上延伸分割并不是只占一个区块,而是会分布在每个分割槽的最前面几个磁区来记载分割资讯的!只是为了方便读者记忆,鸟哥在上图就将他简化了!有兴趣的读者可以到底下的连结瞧一瞧实际延伸分割的纪录方式:
http://en.wikipedia.org/wiki/Extended_boot_record
在上图当中,我们知道硬碟的四个分割记录区仅使用到两个,P1 为主要分割,而 P2 则为延伸分割。请注意, 延伸分割的目的是使用额外的磁区来记录分割资讯,延伸分割本身并不能被拿来格式化。然后我们可以透过延伸分割所指向的那个区块继续作分割的记录。
如上图右下方那个区块有继续分割出五个分割槽,这五个由延伸分割继续切出来的分割槽,就被称为逻辑分割槽(logical partition)。同时注意一下,由于逻辑分割槽是由延伸分割继续分割出来的,所以他可以使用的磁柱范围就是延伸分割所设定的范围喔!也就是图中的 101~400 啦!
同样的,上述的分割槽在 Linux 系统中的装置档名分别如下:
- P1:/dev/sda1
- P2:/dev/sda2
- L1:/dev/sda5
- L2:/dev/sda6
- L3:/dev/sda7
- L4:/dev/sda8
- L5:/dev/sda9
仔细看看,怎么装置档名没有/dev/sda3 与/dev/sda4 呢?因为前面四个号码都是保留给 Primary 或 Extended 用的嘛!所以逻辑分割槽的装置名称号码就由 5 号开始了!这在 MBR 方式的分割表中是个很重要的特性,不能忘记喔!
MBR 主要分割、延伸分割与逻辑分割的特性我们作个简单的定义啰:
- 主要分割与延伸分割最多可以有四笔(硬碟的限制)
- 延伸分割最多只能有一个(作业系统的限制)
- 逻辑分割是由延伸分割持续切割出来的分割槽;
- 能够被格式化后,作为资料存取的分割槽为主要分割与逻辑分割。延伸分割无法格式化;
- 逻辑分割的数量依作业系统而不同,在 Linux 系统中 SATA 硬碟已经可以突破 63 个以上的分割限制;
三、GUID partition table, GPT 磁碟分割表
因为过去一个磁区大小就是 512bytes 而已,不过目前已经有 4K 的磁区设计出现!为了相容于所有的磁碟,因此在磁区的定义上面, 大多会使用所谓的逻辑区块位址(Logical Block Address, LBA)来处理。GPT 将磁碟所有区块以此 LBA(预设为 512bytes 喔!) 来规划,而第一个 LBA 称为 LBA0 (从 0 开始编号)。
与 MBR 仅使用第一个 512bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分割资讯!同时与过去 MBR 仅有一的区块,被干掉就死光光的情况不同, GPT 除了前面 34 个 LBA 之外,整个磁碟的最后 33 个 LBA 也拿来作为另一个备份!这样或许会比较安全些吧!详细的结构有点像底下的模样( 注 1 ):
图 2.2.7、GPT 分割表的结构示意图
上述图示的解释说明如下:
-
LBA0 (MBR 相容区块)
与 MBR 模式相似的,这个相容区块也分为两个部份,一个就是跟之前 446 bytes 相似的区块,储存了第一阶段的开机管理程式!而在原本的分割表的纪录区内,这个相容模式仅放入一个特殊标志的分割,用来表示此磁碟为 GPT 格式之意。而不懂 GPT 分割表的磁碟管理程式,就不会认识这颗磁碟,除非用户有特别要求要处理这颗磁碟,否则该管理软体不能修改此分割资讯,进一步保护了此磁碟喔!
-
LBA1 (GPT 表头纪录)
这个部份纪录了分割表本身的位置与大小,同时纪录了备份用的 GPT 分割(就是前面谈到的在最后 34 个 LBA 区块) 放置的位置, 同时放置了分割表的检验机制码(CRC32 ),作业系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以透过这个纪录区来取得备份的 GPT(磁碟最后的那个备份区块) 来恢复 GPT 的正常运作!
-
LBA2-33 (实际纪录分割资讯处)
从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分割纪录,所以在预设的情况下,总共可以有 4*32 = 128 笔分割纪录喔!因为每个 LBA 有 512bytes,因此每笔纪录用到 128 bytes 的空间,除了每笔纪录所需要的识别码与相关的纪录之外,GPT 在每笔纪录中分别提供了 64bits 来记载开始/结束的磁区号码,因此,GPT 分割表对于单一分割槽来说,他的最大容量限制就会在『 2 64 * 512bytes = 2 63 * 1Kbytes = 2 33 *TB = 8 ZB 』,要注意 1ZB = 2 30 TB 啦!你说有没有够大了?
现在 GPT 分割预设可以提供多达 128 笔纪录,而在 Linux 本身的核心装置纪录中,针对单一磁碟来说,虽然过去最多只能到达 15 个分割槽,不过由于 Linux kernel 透过 udev 等方式的处理,现在 Linux 也已经没有这个限制在了!此外,GPT 分割已经没有所谓的主、延伸、逻辑分割的概念,既然每笔纪录都可以独立存在, 当然每个都可以视为是主分割!每一个分割都可以拿来格式化使用喔!
虽然新版的 Linux 大多认识了 GPT 分割表,没办法,我们 server 常常需要比较高容量的磁碟嘛!不过,在磁碟管理工具上面, fdisk 这个老牌的软体并不认识 GPT 喔!要使用 GPT 的话,得要操作类似 gdisk 或者是 parted 指令才行!这部份我们会在第二篇再来谈一谈。另外,开机管理程式方面, grub 第一版并不认识 GPT 喔!得要 grub2 以后才会认识的!开机管理程式这部份则第五篇再来谈喔!
并不是所有的作业系统都可以读取到 GPT 的磁碟分割格式喔!同时,也不是所有的硬体都可以支援 GPT 格式喔!是否能够读写 GPT 格式又与开机的检测程式有关!那开机的检测程式又分成啥鬼东西呢?就是 BIOS 与 UEFI 啦!那这两个又是啥东西?就让我们来聊一聊!
四、BIOS 搭配 MBR/GPT 的开机流程
在计算机概论里面我们有谈到那个可爱的 BIOS 与 CMOS 两个东西, CMOS 是记录各项硬体参数且嵌入在主机板上面的储存器,BIOS 则是一个写入到主机板上的一个韧体(再次说明,韧体就是写入到硬体上的一个软体程式)。这个 BIOS 就是在开机的时候,电脑系统会主动执行的第一个程式了!
接下来 BIOS 会去分析电脑里面有哪些储存设备,我们以硬碟为例,BIOS 会依据使用者的设定去取得能够开机的硬碟,并且到该硬碟里面去读取第一个磁区的 MBR 位置。MBR 这个仅有 446 bytes 的硬碟容量里面会放置最基本的开机管理程式,此时 BIOS 就功成圆满,而接下来就是 MBR 内的开机管理程式的工作了。
这个开机管理程式的目的是在载入(load)核心档案,由于开机管理程式是作业系统在安装的时候所提供的,所以他会认识硬碟内的档案系统格式,因此就能够读取核心档案,然后接下来就是核心档案的工作,开机管理程式与 BIOS 也功成圆满,将之后的工作就交给大家所知道的作业系统啦!
简单的说,整个开机流程到作业系统之前的动作应该是这样的:
- BIOS:开机主动执行的韧体,会认识第一个可开机的装置;
- MBR:第一个可开机装置的第一个磁区内的主要开机记录区块,内含开机管理程式;
- 开机管理程式(boot loader):一支可读取核心档案来执行的软体;
- 核心档案:开始作业系统的功能...
第二点要注意,如果你的分割表为 GPT 格式的话,那么 BIOS 也能够从 LBA0 的 MBR 相容区块读取第一阶段的开机管理程式码, 如果你的开机管理程式能够认识 GPT 的话,那么使用 BIOS 同样可以读取到正确的作业系统核心喔!换句话说, 如果开机管理程式不懂 GPT ,例如 Windows XP 的环境,那自然就无法读取核心档案,开机就失败了!
Tips由于 LBA0 仅提供第一阶段的开机管理程式码,因此如果你使用类似 grub 的开机管理程式的话,那么就得要额外分割出一个『 BIOS boot 』的分割槽, 这个分割槽才能够放置其他开机过程所需的程式码!在 CentOS 当中,这个分割槽通常占用 2MB 左右而已。
由上面的说明我们会知道,BIOS 与 MBR 都是硬体本身会支援的功能,至于 Boot loader 则是作业系统安装在 MBR 上面的一套软体了。由于 MBR 仅有 446 bytes 而已,因此这个开机管理程式是非常小而美的。这个 boot loader 的主要任务有底下这些项目:
- 提供选单:使用者可以选择不同的开机项目,这也是多重开机的重要功能!
- 载入核心档案:直接指向可开机的程式区段来开始作业系统;
- 转交其他 loader:将开机管理功能转交给其他 loader 负责。
上面前两点还容易理解,但是第三点很有趣喔!那表示你的电脑系统里面可能具有两个以上的开机管理程式呢!有可能吗?我们的硬碟不是只有一个 MBR 而已?是没错啦!但是开机管理程式除了可以安装在 MBR 之外,还可以安装在每个分割槽的开机磁区(boot sector)喔!瞎密?分割槽还有各别的开机磁区喔?没错啊!这个特色才能造就『多重开机』的功能啊!
我们举一个例子来说,假设你的个人电脑只有一个硬碟,里面切成四个分割槽,其中第一、二分割槽分别安装了 Windows 及 Linux, 你要如何在开机的时候选择用 Windows 还是 Linux 开机呢?假设 MBR 内安装的是可同时认识 Windows/Linux 作业系统的开机管理程式, 那么整个流程可以图示如下:
图 2.2.8、开机管理程式的工作执行示意图
在上图中我们可以发现,MBR 的开机管理程式提供两个选单,选单一(M1)可以直接载入 Windows 的核心档案来开机; 选单二(M2)则是将开机管理工作交给第二个分割槽的开机磁区(boot sector)。当使用者在开机的时候选择选单二时, 那么整个开机管理工作就会交给第二分割槽的开机管理程式了。当第二个开机管理程式启动后,该开机管理程式内(上图中)仅有一个开机选单,因此就能够使用 Linux 的核心档案来开机啰。这就是多重开机的工作情况啦!我们将上图作个总结:
- 每个分割槽都拥有自己的开机磁区(boot sector)
- 图中的系统槽为第一及第二分割槽,
- 实际可开机的核心档案是放置到各分割槽内的!
- loader 只会认识自己的系统槽内的可开机核心档案,以及其他 loader 而已;
- loader 可直接指向或者是间接将管理权转交给另一个管理程式。
那现在请你想一想,为什么人家常常说:『如果要安装多重开机,最好先安装 Windows 再安装 Linux』呢?这是因为:
-
Linux 在安装的时候,你可以选择将开机管理程式安装在 MBR 或各别分割槽的开机磁区, 而且 Linux 的 loader 可以手动设定选单(就是上图的 M1, M2...),所以你可以在 Linux 的 boot loader 里面加入 Windows 开机的选项;
-
Windows 在安装的时候,他的安装程式会主动的覆盖掉 MBR 以及自己所在分割槽的开机磁区,你没有选择的机会, 而且他没有让我们自己选择选单的功能。
因此,如果先安装 Linux 再安装 Windows 的话,那 MBR 的开机管理程式就只会有 Windows 的项目,而不会有 Linux 的项目(因为原本在 MBR 内的 Linux 的开机管理程式就会被覆盖掉) 。那需要重新安装 Linux 一次吗?当然不需要,你只要用尽各种方法来处理 MBR 的内容即可。例如利用 Linux 的救援模式来挽救 MBR 啊!
Tips开机管理程式与 Boot sector 的观念是非常重要的,我们会在第十九章分别介绍,您在这里只要先对于(1)开机需要开机管理程式,而(2)开机管理程式可以安装在 MBR 及 Boot Sector 两处这两个观念有基本的认识即可,一开始就背太多东西会很混乱啦!
五、UEFI BIOS 搭配 GPT 开机的流程
我们现在知道 GPT 可以提供到 64bit 的定址,然后也能够使用较大的区块来处理开机管理程式。但是 BIOS 其实不懂 GPT 耶!还得要透过 GPT 提供相容模式才能够读写这个磁碟装置 ~ 而且 BIOS 仅为 16 位元的程式,在与现阶段新的作业系统接轨方面有点弱掉了!为了解决这个问题,因此就有了 UEFI (Unified Extensible Firmware Interface) 这个统一可延伸韧体界面的产生。
UEFI 主要是想要取代 BIOS 这个韧体界面,因此我们也称 UEFI 为 UEFI BIOS 就是了。UEFI 使用 C 程式语言,比起使用组合语言的传统 BIOS 要更容易开发!也因为使用 C 语言来撰写,因此如果开发者够厉害,甚至可以在 UEFI 开机阶段就让该系统了解 TCP/IP 而直接上网!根本不需要进入作业系统耶!这让小型系统的开发充满各式各样的可能性!
基本上,传统 BIOS 与 UEFI 的差异可以用 T 客帮杂志汇整的表格来说明( 注 2 ):
| 比较项目 | 传统 BIOS | UEFI |
| 使用程式语言 | 组合语言 | C 语言 |
| 硬体资源控制 | 使用中断(IRQ)管理
不可变的记忆体存取
不可变得输入/输出存取 | 使用驱动程式与协定 |
| 处理器运作环境 | 16 位元 | CPU 保护模式 |
| 扩充方式 | 透过 IRQ 连结 | 直接载入驱动程式 |
| 第三方厂商支援 | 较差 | 较佳且可支援多平台 |
| 图形化能力 | 较差 | 较佳 |
| 内建简化作业系统前环境 | 不支援 | 支援 |
从上头我们可以发现,与传统的 BIOS 不同,UEFI 简直就像是一个低阶的作业系统 ~ 甚至于连主机板上面的硬体资源的管理, 也跟作业系统相当类似,只需要载入驱动程式即可控制操作。同时由于程式控制得宜,一般来说,使用 UEFI 介面的主机,在开机的速度上要比 BIOS 来的快上许多!因此很多人都觉得 UEFI 似乎可以发展成为一个很有用的作业系统耶 ~不过,关于这个,你无须担心未来除了 Linux 之外,还得要增加学一个 UEFI 的作业系统啦!为啥呢?
UEFI 当初在发展的时候,就制定一些控制在里头,包括硬体资源的管理使用轮询(polling) 的方式来管理,与 BIOS 直接了解 CPU 以中断的方式来管理比较, 这种 polling 的效率是稍微慢一些的,另外,UEFI 并不能提供完整的快取功能,因此执行效率也没有办法提升。不过由于载入所有的 UEFI 驱动程式之后, 系统会开启一个类似作业系统的 shell 环境,使用者可以此环境中执行任意的 UEFI 应用程式,而且效果比 MSDOS 更好哩。
所以啰,因为效果华丽但效能不佳,因此这个 UEFI 大多用来作为启动作业系统之前的硬体检测、开机管理、软体设定等目的,基本上是比较难的。同时,当载入作业系统后,一般来说,UEFI 就会停止工作,并将系统交给作业系统,这与早期的 BIOS 差异不大。比较特别的是,某些特定的环境下, 这些 UEFI 程式是可以部份继续执行的,以协助某些作业系统无法找到特定装置时,该装置还是可以持续运作。
此外,由于过去 cracker 经常藉由 BIOS 开机阶段来破坏系统,并取得系统的控制权,因此 UEFI 加入了一个所谓的安全启动(secure boot)机制,这个机制代表着即将开机的作业系统必须要被 UEFI 所验证,否则就无法顺利开机!微软用了很多这样的机制来管理硬体。不过加入这个机制后,许多的作业系统,包括 Linux ,就很有可能无法顺利开机喔!所以,某些时刻,你可能得要将 UEFI 的 secure boot 功能关闭,才能够顺利的进入 Linux 哩!(这一点让自由软体工作者相当感冒啦!)
另外,与 BIOS 模式相比,虽然 UEFI 可以直接取得 GPT 的分割表,不过最好依旧拥有 BIOS boot 的分割槽支援,同时,为了与 windows 相容,并且提供其他第三方厂商所使用的 UEFI 应用程式储存的空间,你必须要格式化一个 vfat 的档案系统,大约提供 512MB 到 1G 左右的容量,以让其他 UEFI 执行较为方便。
六、档案系统与目录树的关系(挂载)
所谓的『挂载』就是利用一个目录当成进入点,将磁碟分割槽的资料放置在该目录下;也就是说,进入该目录就可以读取该分割槽的意思。这个动作我们称为『挂载』,那个进入点的目录我们称为『挂载点』。由于整个 Linux 系统最重要的是根目录,因此根目录一定需要挂载到某个分割槽的。至于其他的目录则可依使用者自己的需求来给予挂载到不同的分割槽。我们以下图来作为一个说明:
图 2.2.10、目录树与分割槽之间的相关性
上图中假设我的硬碟分为两槽,partition 1 是挂载到根目录,至于 partition 2 则是挂载到/home 这个目录。这也就是说,当我的资料放置在/home 内的各次目录时,资料是放置到 partition 2 的,如果不是放在/home 底下的目录, 那么资料就会被放置到 partition 1 了!
Tipswindows 也是用挂载的观念啊!鸟哥上课经常谈到的范例就是,当妳拿 USB 磁碟放置到你的 windows 时,系统会侦测到一个 F 槽好了, 那妳想要读取 USB 的资料,要去哪里啊?当然就去 F 啰!同样的这颗 USB,当你拿到学校的 windows 时,却显示的是 H 槽好了, 那你要读取 USB 的资料还是去 F 槽吗?当然不是,你会去 H 槽啊!这个『装置与磁碟槽对应的关系,就是 windows 概念下的挂载』啦!这样说,有没有比较好理解?
其实判断某个档案在那个 partition 底下是很简单的,透过反向追踪即可。以上图来说,当我想要知道/home/vbird/test 这个档案在哪个 partition 时,由 test --> vbird --> home --> /,看那个『进入点』先被查到那就是使用的进入点了。所以 test 使用的是/home 这个进入点而不是/喔!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于