/ boot分区总是必需的吗?


30

/boot每次安装Linux发行版时都应该创建分区吗?

拥有/boot分区与使/分区可启动之间有区别吗?


我认为将/ boot分区保持独立是更安全的,以避免误覆盖bootloader。如果我没有记错的话,引导加载程序应该位于磁盘的第一个柱面中,以确保引导过程正常运行,因为BIOS总是从磁盘加载第一个字节,前提是存在可以处理进一步控制的代码,并且能够加载操作系统。
mnmnc

1
当然,这不是必须的,但正如上面的评论中所述,这是一种好习惯。
Hamed Momeni 2012年

Answers:


29

要回答直接的问题:/boot肯定不需要在每种情况下都需要一个单独的分区。

然而,即使你没有别的东西分裂,所以一般建议有单独的分区//boot和交换。我也强烈建议您也放置/home一个单独的分区,即使您不进一步拆分文件系统层次结构也是如此。

将/ boot放置在与常规根文件系统不同的分区上的原因是,您可以降低磁盘上文件系统的复杂性,从而降低引导加载程序引导内核和初始RAM磁盘的需求。如果您运行的是非平凡的设置,这将变得特别有趣-也许您正在运行RAID,或者运行不寻常的文件系统,例如根分区上的ZFS或加密的根分区。然后,可以使用例如纯ext2fs格式化/ boot的分区。由于分区只需要很小(几百兆字节就足够了;我当前系统上的/ boot是100 MB,我对此没有任何限制),因此需要非日志文件系统(例如ext2)的缺点并不是那么好,因为无论如何检查都这么快,文件系统的相对简单性以及大部分情况下都是静态的,这可能会降低无法检测到的损坏的可能性。引导加载程序不需要本机了解异类文件系统或磁盘设置是另一个可能的优点。

将/ home放在单独的分区上的原因是,即使有恶意流氓并开始填充它(或者您自己填充),也绝不会冒险给非用户进程造成问题(很少耗尽/)主页)或引导过程本身。另外,如果您可以简单地告诉安装程序将/ home保留原样并重新格式化/以使用其自己的文件进行填充,则重新安装OS或切换发行版将变得更加容易。如果在软件方面确实出了错,这是最后的恢复工作,这可能会带来很大的不同。

在Linux上不建议运行交换文件,我什至不确定大多数常见发行版的库存内核是否支持(或允许)基于文件的交换。造成这种情况的原因有多种,其中一个很大的原因是性能(很大程度上是由于碎片的风险)。与RAM相比,交换速度已经快得令人难以置信了(它是权宜之计,而不是解决方法),因此没有理由将数据碎片化的风险降低到更慢。在多引导环境中,交换分区可以安全地在Linux发行版之间共享;也许不是一般情况下的考虑因素,但肯定是某些情况下的考虑因素。交换分区也可以放置在具有不同特性的单独物理磁盘上。也许现在是固态硬盘,或者是在单独的控制器通道上运行的10krpm驱动器(如今,当每个SATA磁盘都在单独的通道上时,这不再是一个考虑因素,但在PATA时代可能会有所作为)。

这些天,我个人将/,/ boot和swap分开,在当前系统上的/是100 GB(我几乎无法使用所有这些; curent的使用量是8.9 GB,这给了我所需的一切,软件,然后一些)。主磁盘的其余部分由单个文件系统组成,根据个人习惯,我将其安装在/ da(disk a)上。第二个磁盘是/ db,然后是/ dc,依此类推。(我怀疑FHS是否确实批准了该方案,但是实际上它对我来说效果很好。)然后我将/ home绑定安装到/ da中,这意味着我可以移动物理目录,而不必担心更新每个路径引用还是因为我意识到我的/ home磁盘空间不足而重新分区。


3
此外,仅当根分区已加密(并且引导显然已清除)时,才需要单独的/ boot
usr-local-EΨΗΕΛΩΝ2012年

@djechelon我认为,“一个不平凡的设置”下跌倒,但我会在编辑特定的例子。
一个CVN

我正在研究ZFS,每个指南似乎都表明在root上使用ZFS时,在/ boot上需要ext *之类的东西。
CMCDragonkai 2014年

1
@CMCDragonkai这并不能改变我的回答,“不,在每种情况下都不必为/ boot设置单独的分区
CVn

3

我认为这不是强制性的。过去,由于BIOS的某些限制,这是必要的。在8或64 Go之后,不可能有一个可启动的分区(我不记得了)。然后,如果要进行双重引导,则可以放置第一个小分区(/ boot)和可引导的Windows分区,然后放置其他Linux分区。很长一段时间,根本没有/ boot目录。内核直接位于/上。


1
内核有时直接存储在根目录中(某些发行版可能仍然这样做),但是您仍然可能需要其他东西,例如initrd,System.map,bootloader配置等,它们更喜欢它们自己的层次结构。
CVn 2012年

2

区别在于文件系统优化。通常每个分区都有自己的文件,描述符等表。您可以将Linux安装在单个'/'分区上,而无需'/ boot','/ swap',/ usr'等,但是单个分区的内部表很快就会变得庞大并且某些操作会变得有点慢。因此,可以使用不同的分区为不同类型的任务提供单独的,优化的容器。


完整的inode表集很少在文件系统检查之外使用。大多数情况下,仅引用特定目录的表。这些分区的大小基于分区大小没有(或几乎没有)差异。
CVn 2012年

大小基于分区usage,而不是大小。inode的是一个列表,因此,更多的inodes =用于文件查找,添加等的时间稍微多一点。空分区和具有百万个文件的分区之间的区别不是很大,但是对于启动或交换之类的操作而言,任何区别都很重要。
grigoryvp

我看不出您的评论与我的意见相矛盾。交换分区没有索引节点的概念,因为它不处理文件。/swap和之间有很大的区别swap
CVn 2012年

0

不,我认为/ boot分区不是必需的,原因如下:

  • 您可能希望/ boot文件夹不要太小并将其包含在/中
  • 不必创建分区,因为/ boot的文件和文件夹不经常更新和访问。它不像/ tmp或/ swap文件夹。程序不写入/ boot。
  • / boot仅在启动和initramfs映像更新时的内核更新期间使用。
  • 您可以在一个RAID 5阵列中包含/ boot到/ root,它将与GRUB2一起使用。为每个驱动器将GRUB2添加到MBR。如果第一个驱动器已损坏,则可以从第二个,第三个驱动器...驱动器引导。
  • 更少的坐骑=更少的uuid =更大的可视性=更加简单
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.