手册:X86/安装/准备磁盘

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:X86/Installation/Disks and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎русский • ‎தமிழ் • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
X86 Handbook
安装
关于安装
选择安装媒介
配置网络
准备磁盘
安装stage3
安装基本系统
配置Linux内核
配置系统
安装系统工具
配置系统引导程序Bootloader
收尾安装工作
使用Gentoo
Portage介绍
USE标记
Portage功能特性
初始化脚本(Initscript)系统
环境变量
使用Portage
文件和目录
变量
混合使用不同的软件分支
额外的工具
定制Portage树
高级特性
网络配置
入门
高级配置
模块化网络
无线
添加功能
动态管理


块设备简介

块设备

让我们来好好看看Gentoo Linux以及普通Linux中有关磁盘方面的知识,包括块设备、分区和Linux文件系统。一旦磁盘的来龙去脉都了解了,我们将设置分区和文件系统以进行安装。

首先,让我们来看看块设备。最著名的块设备可能是代表Linux系统第一块磁盘的/dev/sda。SCSI和SATA磁盘全标为/dev/sd*;甚至IDE磁盘在libata内核框架下也标为/dev/sd*。当使用老设备框架时,第一个IDE磁盘是/dev/hda

The following table will help readers determine where to find a certain type of block device on the system:

Type of device Default device handle Editorial notes and considerations
SATA, SAS, SCSI, or USB flash /dev/sda Found on hardware from roughly 2007 until the present, this device handle is perhaps the most commonly used in Linux. These types of devices can be connected via the SATA bus, SCSI, USB bus as block storage. As example, the first partition on the first SATA device is called /dev/sda1.
NVM Express (NVMe) /dev/nvme0n1 The latest in solid state technology, NVMe drives are connected to the PCI Express bus and have the fastest transfer block speeds on the market. Systems from around 2014 and newer may have support for NVMe hardware. The first partition on the first NVMe device is called /dev/nvme0n1p1.
MMC, eMMC, and SD /dev/mmcblk0 embedded MMC devices, SD cards, and other types of memory cards can be useful for data storage. That said, many systems may not permit booting from these types of devices. It is suggested to not use these devices for active Linux installations; rather consider using them to transfer files, which is their design goal. Alternatively they could be useful for short-term backups.

上面的块设备代表磁盘的抽象接口。用户程序可以使用这些块设备来与你的磁盘进行交互,而无需担心驱动器到底是 SATA,SCSI 还是其他什么东西。该程序可以把磁盘当作一系列连续的,可随机访问的 4096 字节块(4K)的存储。



分区表

虽然理论上可以用一整块磁盘来安装一个Linux系统(比如当创建一个 btrfs RAID时),但是实践中几乎从不这样做。实际上,一块磁盘可以被分成小一些的、更容易管理的块设备。在 x86 系统里,这被称为分区。有两个标准的分区技术可以被使用:MBR(有时也称为 DOS 磁盘标签)和GPT;这些与两种引导过程类型相关:传统 BIOS 引导和 UEFI。

GUID 分区表 (GPT)

GUID 分区表 (GPT)设置(也称为 GPT 磁盘标签)对分区使用 64 位标识符。它用来存储分区信息的空间也远比 MBR 分区表(DOS 磁盘标签)的512字节要大,GPT磁盘它也不对分区的数量作限制。分区的大小限制可以达到 8 ZiB(zebibytes)。 译者注:

  • 1ZiB = 1,024 EiB
  • 1EiB = 1024 PiB
  • 1PiB = 1024 TiB
  • 1TiB = 1024 GiB
  • 1GiB = 1024 MiB
  • 1MiB = 1024 KiB
  • 1KiB = 1024 B

当操作系统和系统固件之间的软件接口是UEFI (相对于BIOS)时,GPT几乎是必选的,因为这里 DOS 磁盘标签会引起很多兼容性问题。

GPT还利用校验和和冗余。 它携带CRC32校验和以检测报头和分区表中的错误,并在磁盘的末尾有一个备份GPT。 此备份表可用于恢复磁盘开头附近主GPT的损坏。

Important
关于 GPT 有一些注意事项:
  • 在基于 BIOS 的计算机上使用 GPT 是可行的,但不能与 Microsoft Windows 操作系统进行双重引导。原因是如果 Microsoft Windows 检测到 GPT 分区标签,它将以 UEFI 模式启动。
  • 一些配置为以 BIOS/CSM/legacy 模式启动的有问题的(旧)主板固件在从 GPT 标记的磁盘启动时也可能存在问题。

主引导记录 (MBR) 或 DOS 引导扇区

主引导记录引导扇区(也称为 DOS 引导扇区或 DOS 磁盘标签)于 1983 年首次在 PC DOS 2.x 中引入。 MBR 使用 32 位标识符作为分区的起始扇区和长度,并支持三种分区类型:主分区、扩展分区和逻辑分区。主分区的信息存储在主引导记录本身——磁盘最开始的一个非常小的(通常是 512 字节)位置。由于空间很小,因此仅支持四个主分区(例如,/dev/sda1/dev/sda4)。

为了支持更多的分区,可以将 MBR 中的主分区之一标记为扩展分区。然后,该分区可以包含其它逻辑分区(分区内的分区)。

重要
虽然大多数主板制造商仍然支持,但 MBR 引导扇区及其相关的分区限制被认为是传统的分区方式。除非使用 2010 之前的硬件,否则最好使用 GUID 分区表 对磁盘进行分区。必须继续进行设置类型的读者应了解以下信息:
  • 大多数 2010 年后的主板都有接受用 MBR 引导扇区作为传统(受支持但不理想的)引导模式。
  • 由于使用 32 位标识符,MBR 中的分区表无法处理大于 2 TiB 的存储空间。
  • 除非创建扩展分区,否则 MBR 最多支持四个分区。
  • 此设置不提供备份引导扇区,因此如果某些内容覆盖分区表,所有分区信息将丢失。

也就是说,在 AWS 等虚拟化云环境中仍经常使用 MBR 和 BIOS 启动。

手册作者建议读者安装Gentoo时尽可能使用 GPT

高级存储

x86 安装 CD 提供了对逻辑卷管理器 (LVM) 的支持。 LVM 通过增加分区设置提供的灵活性。它允许将分区和磁盘组合到卷组中,并在快速的固态硬盘上为慢速的机械硬盘定义 RAID 组或缓存。下面的安装说明将侧重于"常规"分区,如果强烈需要 LVM,请访问 LVM 文章了解更多详情。新手请注意:LVM虽然完全支持 ,但不在本指南的范围内。

默认分区方案

在本手册的其余部分,我们将讨论和解释两种情况:1) GPT 分区表和 UEFI 引导,以及 2) MBR 分区表和传统 BIOS 引导。虽然可以混合搭配,但这超出了本手册的范围。如上所述,现代设备应该使用 GPT 分区表和 UEFI 引导;作为此规则的一个例外,MBR 和 BIOS 引导依然经常用于虚拟化(云)环境。

以下分区方案将用作一个简单的示例布局:

分区 文件系统 大小 描述
/dev/sda2 fat32 (UEFI) or ext2 (BIOS) 256M Boot/EFI 系统分区
/dev/sda2 (swap) RAM size * 2 交换(swap)分区
/dev/sda3 ext4 磁盘的其余部分 根分区

如果这些信息已经足够,高级读者可以直接跳转到实际分区操作。

fdiskparted 都是分区实用程序。 fdisk 是众所周知的,稳定的,推荐用于 MBR 分区布局分区工具。 parted 是最早支持 GPT 分区的 Linux 块设备管理的分区工具之一,并提供了替代方案。此处使用 fdisk 是因为它具有更好的基于文本的用户界面。

在进行创建分区的指导之前,关于分区方案和常见陷阱我们会先介绍更多的细节。

设计一个分区方案

多少个分区以及多大?

分区数量高度依赖于环境。比如,如果有很多个用户,则建议有一个独立的 /home/,以增强安全性及便于备份。如果安装 Gentoo 来做邮件服务器,则 /var/ 应该独立,因为所有的邮件都储存于 /var/。选择一个正确的文件系统将会获得最大化的性能。游戏服务器应该有一个独立的 /opt/,因为大多数游戏服务器都安装在那里。原因也和 /home/ 目录一样:安全和备份。在大多数场景下,应该保持 /usr/ 大一些:不仅是因为它包含多数的应用程序,还因为它通常还托管着 Gentoo ebuild 存储库(默认情况下位于 /var/db/repos/gentoo ),占用大约 650 MiB 的空间。这个磁盘空间的估计值默认不包括 /var/cache/ 下的 binpkgs/distfiles/ 目录。

In most situations on Gentoo, /usr and /var should be kept relatively large in size. /usr hosts the majority of applications available on the system and the Linux kernel sources (under /usr/src). By default, /var hosts the Gentoo ebuild repository (located at /var/db/repos/gentoo) which, depending on the file system, generally consumes around 650 MiB of disk space. This space estimate excludes the /var/cache/distfiles and /var/cache/binpkgs directories, which will gradually fill with source files and (optionally) binary packages respectively as they are added to the system.

分区的数量和大小取决于权衡利弊后根据实际情况选择最佳选项。单独的分区或卷具有以下优点:

  • 为每个分区或者卷选择性能最好的文件系统。
  • 当一个失控的工具持续向一个分区或卷写文件时,也不至于让整个系统由于无可用空间而无法运行。
  • 如果有必要,可以简化文件系统检查,多个检查可以并行的完成(尽管使用多个磁盘比使用多个分区更多地实现了这一优势)。
  • 可以通过在挂载一些分区或卷时使用只读、nosuid(忽略setuid属性)、noexec(忽略可执行属性)等来增加安全性。


但是,多个分区也有一些缺点:

  • 如果配置不正确,系统可能在一个分区上有很多可用空间,而在另一个分区上可用空间很少。
  • /usr/ 的单独分区可能需要管理员使用 initramfs 引导,以便在其他引导脚本启动之前挂载该分区。由于 initramfs 的生成和维护超出了本手册的范围,我们建议新手不要为 /usr/ 使用单独的分区
  • SCSI 和 SATA 也有 15 个分区的限制,除非磁盘使用 GPT 标签。
附注
如果你打算使用 Systemd,/usr/ 必须在启动时可用,作为根文件系统的一部分或通过 initramfs 挂载。

那么swap空间呢?

对于swap空间,没有一个完美值。swap空间的目的是当内存(RAM)有压力时为内核提供磁盘存储。一个swap空间允许内核将看过来稍后不会被访问的内存页面移动到磁盘(swap或者page-out)、施放内存。当然,如果那块内存突然要使用到,需要花一些时间(相比较内存,硬盘是非常慢的)将这些页面需要放回到内存中(page-in)。

如果系统不运行很需要内存的应用程序或系统有足够多的可能内存,则不需要太多的swap空间。不过,swap空间还用来在休眠时储存整个内存。如果一个系统需要休眠,则必须需要大一点的swap空间,通常至少为系统安装的内存数量。

作为一般规则,建议交换空间大小为内部存储器 (RAM) 的两倍。对于具有多个硬盘的系统,明智的做法是在每个磁盘上创建一个交换分区,以便它们可以用于并行读/写操作。当必须访问交换空间中的数据时,磁盘交换的速度越快,系统运行的速度就越快。在机械和固态磁盘之间进行选择时,最好将交换放在 SSD 上以提高性能。此外,交换文件可以用作交换分区的替代方案;这对于磁盘空间非常有限的系统来说非常有趣。


什么是 EFI 系统分区 (ESP)?

在使用由 UEFI 引导(而不是 BIOS)的操作系统上安装 Gentoo 时,创建 EFI 系统分区 (ESP) 很重要。下面的说明包含正确处理此操作所需的关键点。 在 BIOS/Legacy 模式下启动时不需要 EFI 系统分区。

ESP 必须是 FAT 变体(有时在 Linux 系统上显示为 vfat)。官方 UEFI 规范 表示 UEFI 固件将识别 FAT12、16 或 32 文件系统,但建议使用 FAT32。分区后,相应地格式化 ESP:

root #mkfs.fat -F 32 /dev/sda2
警告
如果 ESP 没有使用 FAT 变体进行格式化,那么系统的 UEFI 固件将找不到引导加载程序(或 Linux 内核)并且很可能无法引导系统!


什么是BIOS引导分区?

只有在 BIOS/Legacy 模式下将 GPT 分区布局与 GRUB2 结合时,才需要 BIOS 引导分区。 在 EFI/UEFI 模式下引导时不需要它,使用 MBR 表时也不需要它。它是一个非常小的分区(1 到 2 MB),像 GRUB2 这样的可以在其中放置超出容量的引导加载程序。本指南中不会使用它。


使用 GPT for UEFI 对磁盘进行分区

以下部分解释了如何使用 fdisk 为 GPT/UEFI 引导安装创建示例分区布局。范例分区布局我们在前面已经提到过了。

分区 描述
/dev/sda2 EFI 系统(和引导)分区
/dev/sda2 交换(swap)分区
/dev/sda3 根分区

请您根据自己的实际需要来调整您的分区布局。

查看当前分区布局

fdisk是一个流行的和强大的分区工具。用fdisk向磁盘开火吧!(在我们的例子里,我们使用/dev/sda):

root #fdisk /dev/sda

使用 p 键来显示磁盘当前的分区配置。

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 21AAD8CF-DB67-0F43-9374-416C7A4E31EA
 
Device        Start      End  Sectors  Size Type
/dev/sda1      2048   526335   524288  256M EFI System
/dev/sda2    526336  2623487  2097152    1G Linux swap
/dev/sda3   2623488 19400703 16777216    8G Linux filesystem
/dev/sda4  19400704 60549086 41148383 19.6G Linux filesystem

这块特定的磁盘被配置为容纳 2 个 Linux 文件系统(每个都有一个相应的分区列为“Linux”)以及一个交换分区(列为“Linux swap”)。

创建一个新的磁盘标签/删除所有分区

输入 g 在磁盘上创建一个新的 GPT 磁盘标签;这将删除所有现有分区。

Command (m for help):g
Created a new GPT disklabel (GUID: 87EA4497-2722-DF43-A954-368E46AE5C5F).

对于现有的 GPT 磁盘标签(参见上面 p 的输出),或者考虑从磁盘中一一删除现有分区。输入 d 来删除一个分区。例如,要删除现有的 /dev/sda1

Command (m for help):d
Partition number (1-4): 1

这个分区已经计划被删除了,当您用p键打印分区清单时它将不会被显示了,但此时它还未被实际删除,直到改变被真正保存。这将允许用户在操作错误后中止——此时,输入q并按Enter可以立即防止分区被删除。

重复敲击 p来打印分区清单,然后敲击 d键和分区号码来删除它。最终,分区表将变得空空如也。

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 87EA4497-2722-DF43-A954-368E46AE5C5F

现在在内存中的分区表已经空了,我们是时候来创建分区了。

创建 EFI 系统分区 (ESP)

首先创建一个小的 EFI 系统分区,该分区也将挂载为 /boot。输入 n 创建一个新分区,然后输入 1 选择第一个分区。当提示输入第一个扇区时,确保它从 2048(引导加载程序可能需要)开始并输入 Enter。当提示输入最后一个扇区时,输入 +256M 创建一个大小为 256 MB 的分区:

Command (m for help):n
Partition number (1-128, default 1): 1
First sector (2048-60549086, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60549086, default 60549086): +256M
 
Created a new partition 1 of type 'Linux filesystem' and of size 256 MiB.

将分区标记为 EFI 系统分区:

Command (m for help):t
Selected partition 1
Partition type (type L to list all types): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.

创建swap分区

接下来,要创建交换分区,请输入 n 创建一个新分区,然后输入 2 创建第二个分区 /dev/sda2。当提示输入第一个扇区时,输入 Enter。当提示输入最后一个扇区时,输入 +4G(或交换空间所需的任何其他大小)以创建大小为 4GB 的分区。

Command (m for help):n
Partition number (2-128, default 2): 
First sector (526336-60549086, default 526336): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-60549086, default 60549086): +4G
 
Created a new partition 2 of type 'Linux filesystem' and of size 4 GiB.

完成后,输入t设置分区类型,2选择刚刚创建的分区,然后输入 19 设置分区类型为 "Linux Swap"。

Command (m for help):t
Partition number (1,2, default 2): 2
Partition type (type L to list all types): 19
 
Changed type of partition 'Linux filesystem' to 'Linux swap'.

创建根分区

最后,要创建根分区,请输入 n 以创建新分区。然后输入 3 创建第三个分区,/dev/sda3。当提示输入第一个扇区时,按 Enter。当提示输入最后一个扇区时,按 Enter 以创建一个分区,该分区占用磁盘上的其余剩余空间。完成这些步骤后,输入 p 应该会显示一个类似于以下内容的分区表:

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 87EA4497-2722-DF43-A954-368E46AE5C5F
 
Device       Start      End  Sectors  Size Type
/dev/sda1     2048   526335   524288  256M EFI System
/dev/sda2   526336  8914943  8388608    4G Linux swap
/dev/sda3  8914944 60549086 51634143 24.6G Linux filesystem

保存分区布局

要保存分区布局并退出 fdisk,请敲击 w

Command (m for help):w

当分区创建完成后,就该在其上部署文件系统了。

使用 MBR 对磁盘进行分区以用于 BIOS/legacy 启动

下面解释了如何为 MBR/BIOS 传统引导安装创建示例分区布局。前面提到的示例分区布局现在是:

分区 描述
/dev/sda2 启动分区
/dev/sda2 交换分区
/dev/sda3 根分区

根据个人喜好更改分区布局。

查看当前分区布局

针对磁盘启动 fdisk(在我们的示例中,我们使用 /dev/sda):

root #fdisk /dev/sda

输入p显示磁盘的当前分区配置:

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 21AAD8CF-DB67-0F43-9374-416C7A4E31EA
 
Device        Start      End  Sectors  Size Type
/dev/sda1      2048   526335   524288  256M EFI System
/dev/sda2    526336  2623487  2097152    1G Linux swap
/dev/sda3   2623488 19400703 16777216    8G Linux filesystem
/dev/sda4  19400704 60549086 41148383 19.6G Linux filesystem

直到现在,这个特定的磁盘被配置为使用 GPT 表容纳两个 Linux 文件系统(每个都有一个相应的分区列为 "Linux")以及一个交换分区(列为 "Linux swap")。

创建一个新的磁盘标签/删除所有分区

输入 o 在磁盘上创建一个新的 MBR 磁盘标签(这里也称为 DOS 磁盘标签);这将删除所有现有分区。

Command (m for help):o
Created a new DOS disklabel with disk identifier 0xe04e67c4.
The device contains 'gpt' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.

对于现有的 DOS 磁盘标签(参见上面 p 的输出),或者考虑从磁盘中一一删除现有分区。输入 d 删除分区。例如,要删除现有的 /dev/sda1


Command (m for help):d
Partition number (1-4): 1

该分区现已计划删除。打印分区列表时将不再显示 (p,但在保存更改之前它不会被删除。如果发生错误,用户可以中止操作 —— 在这种情况下, 立即输入 q 并按 Enter 不会删除分区。

重复输入 p 打印出一个分区列表,然后输入 d 和分区号来删除它。最终,分区表将为空:

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe04e67c4

现在我们已准备好创建分区。

创建引导分区

首先,创建一个将挂载到 /boot 的小分区。输入 n 创建一个新分区,然后输入 p 作为主分区,输入 1 选择第一个主分区。当提示输入第一个扇区时,确保它从 2048(引导加载程序可能需要)开始并按 Enter。当提示输入最后一个扇区时,输入 +256M 创建一个大小为 256 MB 的分区:

Command (m for help):n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-60549119, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60549119, default 60549119): +256M
 
Created a new partition 1 of type 'Linux' and of size 256 MiB.

创建 swap 分区

接下来,要创建交换分区,输入 n 创建一个新分区,然后输入 p,然后输入 2 创建第二个主分区,/dev/sda2。当提示输入第一个扇区时,按 Enter。当提示输入最后一个扇区时,输入 +4G(或交换空间所需的任何其他大小)以创建大小为 4GB 的分区。

Command (m for help):n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (526336-60549119, default 526336): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-60549119, default 60549119): +4G
 
Created a new partition 2 of type 'Linux' and of size 4 GiB.

完成后,输入t设置分区类型,输入2选择刚刚创建的分区,然后输入 82 设置分区类型为 "Linux Swap"。

Command (m for help):t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

创建根分区

最后,要创建根分区,请输入 n 以创建新分区。然后输入 p3 以创建第三个主分区 /dev/sda3。当提示输入第一个扇区时,按 Enter。当提示输入最后一个扇区时,按 Enter 以创建一个分区,该分区占用磁盘上的剩余空间。完成这些步骤后,输入 p 应该会显示一个类似于以下内容的分区表:

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe04e67c4
 
Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1          2048   526335   524288  256M 83 Linux
/dev/sda2        526336  8914943  8388608    4G 82 Linux swap / Solaris
/dev/sda3       8914944 60549119 51634176 24.6G 83 Linux

保存分区布局

要保存分区布局并退出 fdisk,输入 w

Command (m for help):w

现在是时候将文件系统应用在分区上了。



创建文件系统

介绍

现在分区已经创建,该在上面设置文件系统了。下一章节中描述了 Linux 所支持的众多文件系统。知道使用哪一个文件系统的读者可以继续阅读为分区应用文件系统。剩下的人应该学习可用的文件系统……

文件系统

有一些可以使用的文件系统。有些在x86架构上稳定——建议在选择为一个重要分区实验性的选择文件系统前继续阅读。

btrfs
是下一代文件系统,提供了许多高级功能,如快照,通过校验和自我修复、 透明压缩、 子卷和集成 RAID。几个发行版已经开始将它作为一个默认的选项,但它还未为生产工作做好准备。文件系统报告崩溃是常见的。其开发人员敦促人们运行最新的内核版本来解决安全问题,以及老的问题。 这种情况已经很多年了,现在使用它还为时过早。如果出现变更,以及发生了变化,解决错误问题,都很少往旧内核注入补丁。请谨慎使用这个文件系统!
ext2
是经考验证明可靠的Linux文件系统,但是没有元数据日志,这意味这在启动系统时的ext2文件系统的日常检查相当耗时。现在相当一部分的新一代的日志文件系统都可以非常迅速检查一致性,因此比那些非日志文件系统更受欢迎。当你启动系统碰巧遇到文件系统状态不一致时,日志文件系统不会在那里耽搁很长时间。
ext3
是ext2文件系统的带日志版本,提供了元数据日志模式以快速恢复数据。此外还提供了其他增强的日志模式,如完整数据日志模式和有序数据日志模式。它使用了HTree索引,在几乎所有的情况下都能保持高性能。简而言之,ext3是非常好及可靠的文件系统。
ext4
最初创建为ext3的一个分支,EXT4带来了新的功能,性能改进和去除中度更改磁盘格式大小限制。它可以跨越体积高达1的EB并用16 TB最大文件大小。取而代之的是经典的ext2/3位块分配的ext4的使用范围,这对提高大文件的性能,并减少碎片。的Ext4还提供了更为复杂的块分配算法(延迟分配和多嵌段分配)给文件系统驱动更多的方式来优化数据的布局在磁盘上。 EXT4是推荐的通用所有平台的文件系统。
f2fs
这个文件系统最初由三星创建用于NAND闪存,是一种闪存文件系统 从直到2016年第二季度起,这个文件系统仍然被认为不成熟。把Gentoo安装到microSD卡,USB驱动器或其他基于闪存的存储设备时使用它是一个不错的选择。
JFS
是IBM的高性能日志文件系统。JFS是一个轻量级的、快速的和稳定的基于B+树的文件系统,在很多情况下都有很好的表现。
ReiserFS
是基于B+树的文件系统,它有着非常全面的性能,特别时在处理很多小文件的时候,虽然会占用多一点CPU。ReiserFS相比其他文件系统显得受维护的不够。
XFS
是一种带元数据日志的文件系统,它有一个健壮的特性集,并且对可伸缩性进行了优化。XFS似乎对各种各样的硬件问题显得不够宽容。
vfat
也称为FAT32,被支持Linux,但不支持任何权限设置。它主要用于互操作性与其他操作系统(主要是微软的Windows),但也是很有必要的一些系统固件(如UEFI)的支持。
NTFS
这个“新技术”的文件系统是Microsoft Windows的旗舰文件系统。 与上面的vfat类似,它不存储BSD或Linux正常工作所需的权限设置或扩展属性,因此它不能用作根文件系统。 它应该'只'用于与Microsoft Windows系统的互操作性(注意只强调)。

为分区应用文件系统

在一个分区或卷上创建一个文件系统,这里有用于每一个可能的分区的工具。 单击下表中的文件系统名称,了解每个文件系统的更多信息:

文件系统 创建命令 在最小化 CD 中已包含? 软件包
btrfs mkfs.btrfs Yes sys-fs/btrfs-progs
ext2 mkfs.ext2 Yes sys-fs/e2fsprogs
ext3 mkfs.ext3 Yes sys-fs/e2fsprogs
ext4 mkfs.ext4 Yes sys-fs/e2fsprogs
f2fs mkfs.f2fs Yes sys-fs/f2fs-tools
jfs mkfs.jfs Yes sys-fs/jfsutils
reiserfs mkfs.reiserfs Yes sys-fs/reiserfsprogs
xfs mkfs.xfs Yes sys-fs/xfsprogs
vfat mkfs.vfat Yes sys-fs/dosfstools
NTFS mkfs.ntfs Yes sys-fs/ntfs3g

比如,在示例分区结构中,有 使用ext2的引导分区(/dev/sda2)和使用ext4的根分区(/dev/sda4),下面的命令将会用到:

root #mkfs.ext2 /dev/sda2
root #mkfs.ext4 /dev/sda4

当在一个小的分区(少于8 GiB)上使用 ext2、ext3 或 ext4,则创建文件系统时必须带适当的选项以保留足够的 inode。mke2fsmkfs.ext2)应用程序使用“字节每inode”设置来计算一个文件系统 inode 的数量。在小分区,建议增加计算出的 inode 数量。

root #mkfs.ext2 -T small /dev/<device>
root #mkfs.ext3 -T small /dev/<device>
root #mkfs.ext4 -T small /dev/<device>

这一般将是对于给定的文件系统inode数量的四倍,它的“字节每inode”从16kB每个减少到4kB每个。这个可以在将来通过提供比例进行调整:

现在在新创建的分区(或逻辑卷)上创建文件系统。

激活swap分区

mkswap是用来初始化swap分区的命令:

root #mkswap /dev/sda3

要激活swap分区,使用swapon

root #swapon /dev/sda3

使用上面提到的命令创建和激活swap。

挂载 root 分区

现在分区都已初始化并有文件系统,接下来该挂载那些分区了。使用mount命令,但是不要忘记为每一个创建的分区创建需要的挂载目录。比如示例中我们挂载根分区:

root #mount /dev/sda4 /mnt/gentoo
附注
如果/tmp/需要放在一个独立分区,确保在挂载后变更它的权限:
root #chmod 1777 /mnt/gentoo/tmp
这同样适用于/var/tmp

后面的介绍中将挂载proc文件系统(一个内核的虚拟接口)和其它内核伪文件系统。不过我们首先安装Gentoo安装文件