在过去非常多的文章都写到启动管理程序是安装到 superblock 内的,但是我们由官方的 How to
文件知道,图解(图 1.3.1)的结果是将可安装启动信息的
boot sector (启动扇区) 独立出来,并非放置到 superblock 当中的!
那么也就是说过去的文章写错了?这其实还是可以讨论讨论的!
经过一些搜寻,鸟哥找到几篇文章(非官方文件)的说明,大多是网友分析的结果啦!如下所示:(注10)
这几篇文章有几个重点,归纳一下如下:
superblock 的大小为 1024 bytes;
superblock 前面需要保留 1024 bytes 下来,以让启动管理程序可以安装。
分析上述两点我们知道 boot sector 应该会占有 1024 bytes 的大小吧!但是整个文件系统主要是依据 block 大小来决定的啊!
因此要讨论 boot sector 与 superblock 的关系时,不得不将 block 的大小拿出来讨论讨论喔!
block 为 1024 bytes (1K) 时:
如果 block 大小刚好是 1024 的话,那么 boot sector 与 superblock 各会占用掉一个 block ,
所以整个文件系统图示就会如同图 1.3.1 所显示的那样,boot sector 是独立于 superblock 外面的!
由于鸟哥在基础篇安装的环境中有个 /boot 的独立文件系统在 /dev/hdc1 中,使用 dumpe2fs
观察的结果有点像底下这样(如果你是按照鸟哥的教学安装你的 CentOS 时,可以发现相同的情况喔!):
[root@www ~]# dumpe2fs /dev/hdc1
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name: /boot
....(中间省略)....
First block: 1
Block size: 1024
....(中间省略)....
Group 0: (Blocks 1-8192)
Primary superblock at 1, Group descriptors at 2-2
Reserved GDT blocks at 3-258
Block bitmap at 259 (+258), Inode bitmap at 260 (+259)
Inode table at 261-511 (+260)
511 free blocks, 1991 free inodes, 2 directories
Free blocks: 5619-6129
Free inodes: 18-2008
# 看到最后一个特殊字体的地方吗? Group0 的 superblock 是由 1 号 block 开始喔!
由上表我们可以确实的发现 0 号 block 是保留下来的,那就是留给 boot sector 用的啰!
所以整个分割槽的文件系统分区有点像底下这样的图示:
图 6.1.1、1K block 的 boot sector 示意图
block 大于 1024 bytes (2K, 4K) 时:
如果 block 大于 1024 的话,那么 superblock 将会在 0 号!我们撷取本章一开始介绍
dumpe2fs 时的内容来说明一下好了!
[root@www ~]# dumpe2fs /dev/hdc2
dumpe2fs 1.39 (29-May-2006)
....(中间省略)....
Filesystem volume name: /1
....(中间省略)....
Block size: 4096
....(中间省略)....
Group 0: (Blocks 0-32767)
Primary superblock at 0, Group descriptors at 1-1
Reserved GDT blocks at 2-626
Block bitmap at 627 (+627), Inode bitmap at 628 (+628)
Inode table at 629-1641 (+629)
0 free blocks, 32405 free inodes, 2 directories
Free blocks:
Free inodes: 12-32416
我们可以发现 superblock 就在第一个 block (第 0 号) 上头!但是 superblock 其实就只有 1024bytes 嘛!
为了怕浪费更多空间,因此第一个 block 内就含有 boot sector 与 superblock 两者
!举上头的表格来说,因为每个 block 占有 4K ,因此在第一个 block 内 superblock 仅占有 1024-2047
( 由 0 号起算的话)之间的咚咚,至于 2048bytes 以后的空间就真的是保留啦!而 0-1023 就保留给 boot sector 来使用。
图 6.1.2、4K block 的 boot sector 示意图
因为上述的情况,如果在比较大的 block 尺寸(size)中,我们可能可以说你能够将启动管理程序安装到 superblock
所在的 block 号码中!就是上表的 0 号啰!但事实上还是安装到 boot sector 的保留区域中啦!所以说,
以前的文章说启动管理程序可以安装到 superblock 内也不能算全错~但比较正确的说法,应该是安装到该 filesystem
最前面的 1024 bytes 内的区域,就是 boot sector 这样比较好!