手册: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.
X86 手册
安装
关于安装
选择安装媒介
配置网络
准备磁盘
安装 stage3
安装基础系统
配置内核
配置系统
安装系统工具
配置引导程序
安装收尾
使用 Gentoo
Portage 介绍
USE 标记
Portage 功能特性
Initscript 系统
环境变量
使用 Portage
文件和目录
变量
混合使用不同的软件分支
额外的工具
自定义软件包仓库
高级特性
配置网络
开始
高级配置
模块化网络
无线网络
添加功能
动态管理


块设备简介

块设备

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

首先,让我们来看看块设备。SCSI和SATA磁盘以/dev/sda,/dev/sdb,/dev/sdc等形式被标注。在更先进的设备中,基于PCI Express的NVMe固态磁盘一般以/dev/nvme0n1,/dev/nvme0n2等形式被标注。

下表将帮助读者确定在系统中哪里可以找到块设备的类型:

设备类型 默认设备句柄 社论笔记和注意事项
IDE,SATA,SAS,SCSI 或 USB 闪存 /dev/sda 从大约 2007 年到现在,这可能是 Linux 中最常用的设备句柄。这类设备可以连接在 SATA 总线SCSIUSB 总线上作为块储存。例如,在第一个 SATA 设备的第一个分区称为 /dev/sda1
NVM Express (NVMe) /dev/nvme0n1 NVMe设备是最新的固态技术,它连接在 PCI Express 总线,并且拥有市面上最快的传输速度。2014 年前后的系统可能会支持 NVMe 硬件。在第一个 NVMe 设备的第一个分区称为 /dev/nvme0n1p1
MMC,eMMC 和 SD /dev/mmcblk0 嵌入式 MMC 设备,SD 卡和其它类型的记忆卡 可以作为数据存储使用。也就是说,许多系统可能不允许从这些类型的设备启动。建议使用这些设备用来安装 Linux,而是考虑用它们来传输文件,这也是它们主要的设计意图。另外,这种储存类型很适合用来做短期的文件备份和快照。

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



分区表

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

GUID 分区表 (GPT)

GUID分区表(GPT)设置(也被称为GPT disklabel)对分区使用64位标识符。它存储分区信息的位置比 MBR 分区表 (DOS disklabel) 的 512 字节大得多,这意味着 GPT 磁盘的分区数量几乎没有限制。此外,最大分区大小要大得多(接近 8 ZiB —— 是的,ZiB)。

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

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

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

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

主引导记录引导扇区(也称为 DOS 引导扇区,DOS 磁盘标签,现在区别与 GPT/UEFI 安装,称为 传统 BIOS 引导)于 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. GUID 分区表 (GPT)和 UEFI 引导。
  2. MBR 分区表和传统 BIOS 引导。

虽然可以将引导类型与某些主板固件混合和匹配,但这超出了手册的意图。如前所述,强烈建议在现代硬件上安装时使用GPT磁盘标签和UEFI引导。

以下分区方案是一种简单的布局示例。

重要
The first row of the following table contains exclusive information for either a GPT disklabel or a MBR DOS/legacy BIOS disklabel. When in doubt, proceed with GPT, since x86 machines manufactured after the year 2010 generally support UEFI firmware and GPT boot sector.
分区 文件系统 大小 描述
/dev/sda1 fat32 EFI 系统分区所需的文件系统,总与 GPT 磁盘标签相关联。 1 GiB EFI 系统分区详情。 适用于支持 UEFI 的系统固件。通常为 2010 年前后至今生产的系统。
ext4 MBR 分区表启动分区推荐的文件系统,仅限于 DOS/传统 BIOS 磁盘标签的旧固件一起使用。 MBR DOS/传统 BIOS 引导分区详情。 适用于传统 BIOS 机器固件。通常为 2010 年<u>以前</u>的系统,并且逐步停止维护。
/dev/sda2 linux-swap RAM 大小 * 2 交换分区详情。
/dev/sda3 xfs 磁盘剩余空间 根分区详情。

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

fdiskparted 都是包含在官方 Gentoo live 镜像环境中的分区实用程序。 fdisk 大家都熟知,稳定,在 MBR 和 GPT 磁盘都可以使用。 parted 是最早支持 GPT 分区的 Linux 块设备管理的分区工具之一。如果读者愿意的话,parted 可以作为 fdisk 的替代品,但是因为在大多数 Linux 环境中常见 fdisk,所以本手册只介绍 fdisk

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


设计一个分区方案

多少个分区以及多大?

磁盘分区布局的设计高度依赖于系统需求和应用到设备的文件系统。如果有很多用户,建议将 /home 放在单独的分区上,这将提高安全性并使备份和其他类型的维护更容易。 以增强安全性及便于备份。如果安装 Gentoo 来做邮件服务器,那么 /var 应该单独分一个区,因为所有的邮件都储存于 /var/。游戏服务器可能应该有一个独立的 /opt/,因为大多数游戏服务器软件都安装在那里。原因也和 /home/ 目录一样:安全,备份和维护。

在 Gentoo 的大多数情况下,/usr/var 应该保持相对较大的空间。/usr 存放了系统中的大部分应用程序和 Linux 内核源代码(在/usr/src下)。默认情况下,/var 存放着 Gentoo ebuild 仓库(位于 /var/db/repos/gentoo ),根据文件系统的不同,它大约耗费 650MiB 的磁盘空间。这个空间估计"不包括" /var/cache/distfiles/var/cache/binpkgs 目录,当它们被添加到系统中时,将逐渐填写源代码文件和二进制包(可选)。

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

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


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

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

那么交换空间呢?

Recommendations for swap space size
RAM size Suspend support? Hibernation support?
2 GB or less 2 * RAM 3 * RAM
2 to 8 GB RAM amount 2 * RAM
8 to 64 GB 8 GB minimum, 16 maximum 1.5 * RAM
64 GB or greater 8 GB minimum Hibernation not recommended! Hibernation is not recommended for systems with very large amounts of memory. While possible, the entire contents of memory must be written to disk in order to successfully hibernate. Writing tens of gigabytes (or worse!) out to disk can can take a considerable amount of time, especially when rotational disks are used. It is best to suspend in this scenario.

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

如果系统不运行很需要内存的应用程序或有足够多的可用 RAM,则不需要太多的交换空间。但是请注意,在休眠的情况下,交换空间用于存储"内存的全部内容"(可能在台式机和笔记本电脑系统上,而不是在服务器系统上)。如果系统需要支持休眠,那么有必要使用大于或等于内存数量的交换空间。

作为一般规则,建议交换空间大小为内部存储器 (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/sda1
警告
如果 ESP 没有使用 FAT 变体进行格式化,那么系统的 UEFI 固件将找不到引导加载程序(或 Linux 内核)并且很可能无法引导系统!

什么是BIOS引导分区?

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

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

以下部分介绍如何为单个 GPT 磁盘设备创建符合 UEFI 规范和可发现分区规范 (DPS) 的示例分区布局。DPS 是作为 Linux 用户空间 API (UAPI) 组规范的一部分提供的规范,是推荐的,但完全是可选的。这些规范是使用 fdisk 实用程序实现的,该实用程序是 sys-apps/util-linux 软件包的一部分。

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

设备路径 (sysfs) 挂载点 文件系统 DPS UUID (PARTUUID) 描述
/dev/sda1 /efi vfat c12a7328-f81f-11d2-ba4b-00a0c93ec93b EFI 系统分区(EFI system partition ESP) 详情。
/dev/sda2 N/A. 交换分区并不像设备文件那样挂载到文件系统。 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f 交换分区分区详情。
/dev/sda3 / xfs 44479540-f297-41b2-9af7-d131d5f0458a 根分区详情。

查看当前分区布局

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

root #fdisk /dev/sda

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

Command (m for help):p
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 3E56EE74-0571-462B-A992-9872E3855D75

<div lang="en" dir="ltr" class="mw-content-ltr">
Device        Start        End    Sectors   Size Type
/dev/sda1      2048    2099199    2097152     1G EFI System
/dev/sda2   2099200   10487807    8388608     4G Linux swap
/dev/sda3  10487808 1953523711 1943035904 926.5G Linux root (x86-64)

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

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

按下 g 键将立即删除所有现有的磁盘分区并创建一个新的 GPT 磁盘标签:

Command (m for help):g
Created a new GPT disklabel (GUID: 3E56EE74-0571-462B-A992-9872E3855D75).

或者,要保留现有的 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: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 3E56EE74-0571-462B-A992-9872E3855D75

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

创建 EFI 系统分区 (ESP)

附注
虽然可以使用较小的 ESP,但是不推荐这么做,尤其是考虑到可能与其他操作系统共享 ESP。

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

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

Do you want to remove the signature? [Y]es/[N]o: Y
The signature will be removed by a write command.

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

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

(可选)要使 ESP 符合可发现系统分区 (DSP) 规范,请切换到专家模式并执行以下额外步骤来设置分区的 UUID:

Command (m for help):x
Expert command (m for help):u
Selected partition 1

<div lang="en" dir="ltr" class="mw-content-ltr">
New UUID (in 8-4-4-4-12 format): c12a7328-f81f-11d2-ba4b-00a0c93ec93b
Partition UUID changed from 10293DC1-DF6C-4443-8ACF-C756B81B4767 to C12A7328-F81F-11D2-BA4B-00A0C93EC93B.

Press the r key to return to the main menu:

Expert command (m for help):r
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
Command (m for help):

创建交换分区

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


Command (m for help):n
Partition number (2-128, default 2): 
First sector (2099200-1953525134, default 2099200): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2099200-1953525134, default 1953523711): +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 or alias (type L to list all): 19
 
Changed type of partition 'Linux filesystem' to 'Linux swap'.

(可选)要使交换分区符合可发现系统分区 (DSP) 规范,请切换到专家模式并执行以下额外步骤来设置分区的 UUID:

Command (m for help):x
Expert command (m for help):u
Partition number (1,2, default 2): 2
Selected partition 2

New UUID (in 8-4-4-4-12 format): 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f
Partition UUID changed from 7529CDF6-9482-4497-B021-576745648B2A to 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F..

Press the r key to return to the main menu:

Expert command (m for help):r

Command (m for help):

创建根分区

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

Command (m for help):n
Partition number (3-128, default 3): 3
First sector (10487808-1953525134, default 10487808):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-1953525134, default 1953523711):

Created a new partition 3 of type 'Linux filesystem' and of size 926.5 GiB..

{{Note将根分区的类型设置为 “Linux root (x86-64)”并不是必须的,如果将其设置为 “Linux filesystem” 类型,系统将正常运行。只有在使用支持它的 bootloader (即 systemd-boot) 并且不需要 fstab 文件时,才需要这种文件系统类型。}}

创建根分区后,按 t 设置分区类型,按 3 选择刚刚创建的分区,然后输入 23 将分区类型设置为 “Linux Root (x86-64)”。

Command(m for help):t
Partition number (1-3, default 3): 3
Partition type or alias (type L to list all): 23

Changed type of partition 'Linux filesystem' to 'Linux root (x86-64)'

(可选)要使根分区符合可发现系统分区 (DSP) 规范,请切换到专家模式并执行以下额外步骤来设置分区的 UUID:

Command (m for help):x
Expert command (m for help):u
Partition number (1-3, default 3): 3

New UUID (in 8-4-4-4-12 format): 4f68bce3-e8cd-4db1-96e7-fbcaf984b709

Partition UUID changed from 40465382-FA2A-4846-9827-640821CC001F to 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709.

Press the r key to return to the main menu:

Expert command (m for help):r

Command (m for help):

完成这些步骤后,按 p 应该会显示一个分区表,如下所示:

Command (m for help):p
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 3E56EE74-0571-462B-A992-9872E3855D75

Device        Start        End    Sectors   Size Type
/dev/sda1      2048    2099199    2097152     1G Linux filesystem
/dev/sda2   2099200   10487807    8388608     4G Linux swap
/dev/sda3  10487808 1953523711 1943035904 926.5G Linux root (x86-64)

Filesystem/RAID signature on partition 1 will be wiped.

保存分区布局

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

Command (m for help):w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

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

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

下表为简单的 MBR DOS/传统 BIOS 引导安装提供了推荐的分区布局。可以根据个人喜好或系统设计目标添加额外的分区。

设备路径 (sysfs) 挂载点 文件系统 DPS UUID (PARTUUID) 描述
/dev/sda1 /boot ext4 N/A MBR DOS / 传统 BIOS 引导分区详情。
/dev/sda2 N/A. 交换分区并不像设备文件那样挂载到文件系统。 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f 交换分区详情。
/dev/sda3 / xfs 44479540-f297-41b2-9af7-d131d5f0458a 根分区详情。

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

查看当前分区布局

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

root #fdisk /dev/sda

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

Command (m for help):p
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xf163b576

Device     Boot    Start        End    Sectors   Size Id Type
/dev/sda1  *        2048    2099199    2097152     1G 83 Linux
/dev/sda2        2099200   10487807    8388608     4G 82 Linux swap / Solaris
/dev/sda3       10487808 1953525167 1943037360 926.5G 83 Linux

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

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

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

Command (m for help):o
Created a new DOS disklabel with disk identifier 0xf163b576.
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: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xf163b576

现在这块硬盘已准备好创建新的分区。

创建引导分区

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

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-1953525167, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1953525167, default 1953525167): +1G

Created a new partition 1 of type 'Linux' and of size 1 GiB.

Mark the partition as bootable by pressing the a key and pressing Enter:

Command (m for help):a
Selected partition 1
The bootable flag on partition 1 is enabled now.

注意:如果磁盘上有多个分区可用,则必须选择要标记为可启动的分区。

创建 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 (2099200-1953525167, default 2099200):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2099200-1953525167, default 1953525167): +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 以创建一个分区,该分区占用磁盘上的剩余空间。

Command (m for help):n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3): 3
First sector (10487808-1953525167, default 10487808):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-1953525167, default 1953525167):

Created a new partition 3 of type 'Linux' and of size 926.5 GiB.

完成这些步骤后,按 p 应该会显示一个类似下文的分区表:

Command (m for help):p
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xf163b576

Device     Boot    Start        End    Sectors   Size Id Type
/dev/sda1  *        2048    2099199    2097152     1G 83 Linux
/dev/sda2        2099200   10487807    8388608     4G 82 Linux swap / Solaris
/dev/sda3       10487808 1953525167 1943037360 926.5G 83 Linux

保存分区布局

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

Command (m for help):w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

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



创建文件系统

警告
在使用 SSD 或者 NVMe 驱动,请检查是否需要升级固件。特别是有些英特尔的 SSD(600p 和 6000p)需要升级固件来减少XFS I/O 使用模式导致的可能的数据损坏。问题位于固件层面而非 XFS 文件系统造成的。smartctl 组件可以检查型号和固件版本。

介绍

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

文件系统

Linux 支持数十种文件系统,尽管其中许多只是为了特定目的而部署。在 x86 架构上只能找到某些稳定的文件系统 - 建议在为重要分区选择更具实验性的文件系统之前查阅文件系统及其支持状态。XFS 是推荐的全平台通用的文件系统。下面是一个不完全的文件系统列表:

btrfs
下一代文件系统,提供许多高级功能,例如快照、通过校验和进行自我修复、透明压缩、子卷和集成 RAID。不能保证 5.4.y 之前的内核在生产中与 btrfs 一起使用是安全的,因为对严重问题的修复仅存在于 LTS 内核分支的最新版本中。文件系统损坏问题在较旧的内核分支上很常见,比如说启用压缩后,较旧的内核(比 5.4.y 小)更可能发生损坏。 RAID 5/6 和配额组在所有版本的 btrfs 上都不安全。
ext4
Ext4 是一个可靠的、通用的全平台文件系统,但是它缺乏诸如引用链接之类的现代化功能。
f2fs
Flash-Friendly File System 最初是由三星为与 NAND 闪存一起使用而创建的。截至 2016 年第二季度,这个文件系统仍然被认为是不成熟的,但在将 Gentoo 安装到 microSD 卡、USB 驱动器或其他基于闪存的存储设备上时,它是一个不错的选择。
XFS
具有元数据日志的文件系统,具有强大的功能集并针对可扩展性进行了优化。 XFS 不断升级来支持现代化功能。 XFS 唯一的缺点是还不能缩减分区,不过这个问题正在解决中。XFS 特别支持反向链接和写入时复制(CoW),因为用户需要完成大量编译工作,所以对 Gentoo 系统很有用。推荐使用 XFS 这个现代化的通用全平台文件系统。XFS 要求分区至少300MB。
VFAT
也称为 FAT32,Linux 支持但不支持标准的 UNIX 权限设置。它主要用于与其他操作系统(Microsoft Windows 或 Apple 的 macOS)的互操作和交换,但也是某些系统引导加载程序固件(如 UEFI)的必需品。UEFI 系统的用户需要使用 VFAT 格式化的 EFI 系统分区才能启动。
NTFS
这个“新技术”文件系统是自 Windows NT 3.1 以来 Microsoft Windows 的旗舰文件系统。与 vfat 类似,它不存储 BSD 或 Linux 正常运行所需的 UNIX 权限设置或扩展属性,大多数情况下,不应将其用作为根文件系统。它应该用于与Microsoft Windows 系统的互操作和数据交换(注意强调)。

更多有关于文件系统的信息可以在社区维护的 文件系统文章 中找到。

为分区应用文件系统

附注
安装结束后,请确保在重新启动之前,为之后在手册中选择的文件系统 emerge 相应的用户空间组件软件包。在接近安装尾声时您将看到另一个提醒。

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

文件系统 创建命令 是否包含在live环境中? 软件包
btrfs mkfs.btrfs sys-fs/btrfs-progs
ext4 mkfs.ext4 sys-fs/e2fsprogs
f2fs mkfs.f2fs sys-fs/f2fs-tools
xfs mkfs.xfs sys-fs/xfsprogs
vfat mkfs.vfat sys-fs/dosfstools
NTFS mkfs.ntfs sys-fs/ntfs3g
重要
手册建议将新建分区作为安装过程的一部分,但值得在注意的是任何mkfs命令都会擦除分区上之前含有的任何数据。必要时,在创建文件系统之前应确保所有数据都被正确备份。

比如,在示例分区结构中,使用 xfs 的根分区(/dev/sda3),会使用下面的命令:

root #mkfs.xfs /dev/sda3

EFI 系统分区文件系统

EFI 系统分区(/dev/sda1)必须是 FAT32 格式:

root #mkfs.vfat -F 32 /dev/sda1

传统 BIOS 启动分区文件系统

通过带有 MBR/DOS 磁盘标签的传统 BIOS 启动的系统可使用引导加载程序支持的任何文件系统格式。

例如,XFS 格式:

root #mkfs.xfs /dev/sda1

小型 ext4 分区

在较小的分区(少于8 GiB)上使用 ext4 时,则创建文件系统时应带适当的选项以保留足够的 inode。这可以使用-T small 选项:

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

这样一般将是对于给定的文件系统inode数量的四倍,因为它的“字节每inode”从16kB每个减少到4kB每个。

激活 swap 分区

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

root #mkswap /dev/sda2

要激活swap分区,使用swapon

root #swapon /dev/sda2

由于交换分区是在实时环境中新创建的,所以才需要这一 “激活 ”步骤。系统重启后,只要交换分区在 fstab 或其他挂载机制中定义正确,交换空间就会自动激活。

挂载 root 分区

附注
之前开始但并未完成的安装可以从手册的这个位置开始继续进行。使用此链接作为固定链接:从这里继续未完成的安装

一些 live 环境可能缺少推荐的 Gentoo 根分区挂载点(/mnt/gentoo),或在分区部分创建的其他分区的挂载点:

root #mkdir --parents /mnt/gentoo

仅对于 EFI 安装,ESP 应安装在根分区位置下:

root #mkdir --parents /mnt/gentoo/efi

使用 mkdir 命令继续为之前步骤中创建的其他(自定义)分区创建必要的挂载点。

创建挂载点后,现在可以通过mount命令使得分区可以访问。

挂载根分区:

root #mount /dev/sda3 /mnt/gentoo

根据需要使用 mount 命令继续挂载其他(自定义)分区。

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

在后面的介绍中,将挂载proc文件系统(一个内核的虚拟接口)和其它内核伪文件系统。不过首先必须提取 Gentoo stage 文件