Ubuntu 和 Mac OS X 中的根目录

Ubuntu 和 Mac OS X 中的根目录

我最近一直在 MacBook Air 上摆弄 Ubuntu,安装和卸载它,尝试不同的版本等等……为此,我使用 rEFInd 设置了双启动。我注意到的一件事是,在 OS XI 下看到一个名为 EFI 的分区,而在 Ubuntu 下我看到的是同一个分区,但里面有很多文件。在 Ubuntu 下我可以看到 /boot 目录,但在 OS X 下,如果我尝试使用终端访问该目录,它会告诉我它不存在。
这两个根目录有什么区别吗?

我对此还比较陌生,但我真的很想了解这些东西是如何组织的。

当我安装 Ubuntu 时,根目录究竟位于何处?该根目录与 OS X 的根目录相同吗?或者它们是两个单独的根目录?如果是后者,那么 '/' 到底指向什么?它是硬盘的最底层吗?

为什么在 Ubuntu 下我可以写入 /boot 但在 OS X 下该目录不存在?

当您创建并安装分区时,究竟发生了什么?我问这个问题是因为发生了以下情况:
在 OS XI 下可以安装 EFI 分区 - 然后从那里访问由 rEFInd 创建的目录。
在 Ubuntu 下,我也可以安装 EFI 分区,但我必须通过 /boot/something/else/EFI 才能访问同一个目录。
我以为当我安装分区并访问它时,我首先可以访问其中最底层的文件夹,但这里似乎 OS X EFI 分区本身位于另一个目录中,我认为这是不可能的(可能不是,但我已经困惑到这个地步了)。所以,请任何人告诉我根目录是什么、它在磁盘中的位置、分区是什么、为什么它们似乎根据操作系统有不同的文件,以及您认为必要或相关的任何其他内容。谢谢。

答案1

分区只是磁盘上具有定义起点和终点的空间。当我们创建分区时,分区的这些起点和终点存储在分区表中,在传统系统中存储在扇区 #0 中,在 UEFI 系统中存储在扇区 #2 - #32 中。分区表不位于任何分区中,而是位于磁盘起始处的保留空间中,需要它来管理整个磁盘。

为了能够处理分区中的数据,分区需要保存文件系统,通常在我们格式化分区时创建文件系统。当我们创建一个新的文件系统时,它将是一个空白文件系统,这意味着它还没有保存任何文件或文件夹,但现在我们可以创建它们。分区中的文件系统是永久的,只要我们不破坏它,它就会存在,即使我们关闭计算机它也会存在,因为它存储在硬盘上的分区中。

正在运行的操作系统有自己的文件系统,即临时文件系统。此临时文件系统是在启动时创建的,当我们关闭操作系统时,它将不再存在。此临时文件系统的顶级目录/(在 Linux 下)/通常是系统分区的挂载点(更准确地说,我们应该说这/是系统分区中文件系统的挂载点)。因此,当我们/在文件管理器中打开时,我们将看到存储在磁盘上的系统分区中的文件和文件夹。因此,我们可以说它/指向系统分区或系统分区内的文件系统或存储在系统分区内文件系统中的文件和文件夹,这是一个术语问题。

EFI-System-Partition (ESP) 在 Linux 和 Mac OS X 中安装到不同的位置。在 Linux 中,ESP 安装到文件夹/boot/efi,在 Mac OS X 中,ESP 通常安装到文件夹/Volumes/efi。两个文件夹具有相同的内容,因为两个文件夹都指向同一个分区,即 ESP。

由于一次只运行一个操作系统,因此 ESP 不会同时挂载到两个文件夹。事实上,我们一次只能将一个分区挂载到一个挂载点。

请记住/,根据当前运行的操作系统,指向不同的分区。如果我们运行 Mac OS X,则/指向您的 OS X 分区,如果我们运行 Ubuntu,/则指向 Ubuntu 分区。请记住,/在操作系统启动期间创建的临时文件系统中仅临时存在。如果我们关闭并启动不同的操作系统,我们将有一个新的临时文件系统和一个新的/目录,它可能指向当前运行的操作系统定义的不同分区。

答案2

首先,分区是硬盘上分配的空间的一部分。

Mac OS X 和 Ubuntu 上的根 (/) 目录只是硬盘驱动器上某个分区的挂载点。您的 ubuntu / 和 Mac OS / 是两个不同分区的挂载点。有趣的是,其他分区可以挂载在 / 内。在 Ubuntu 上,您的闪存驱动器可能挂载在 /media/{username}/{flashdrivename}/。此外,在 Ubuntu 中,如果您愿意,您可以将主目录放在另一个分区上。在这种情况下,/home 将成为驱动器上某个分区的挂载点。这有助于将您的系统文件和程序与文档和用户配置分开。

在 Ubuntu 中,要查看您有哪些分区以及安装了哪些分区,请打开终端并输入以下命令:

lsblk

它将显示如下内容:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb      8:16   1 117.4G  0 disk 
└─sdb1   8:17   1 117.4G  0 part /media/logan/LOGAN128
sda      8:0    0 111.8G  0 disk 
├─sda4   8:4    0     1K  0 part 
├─sda2   8:2    0   500M  0 part 
├─sda5   8:5    0   3.9G  0 part [SWAP]
├─sda3   8:3    0  29.5G  0 part 
└─sda1   8:1    0  77.9G  0 part /

在我的情况下,sda(存储设备 a)是我的固态硬盘,sdb 是我的闪存驱动器。我在 sda 上的第一个分区被挂载为 /。对于我的闪存驱动器,它的唯一分区被挂载为 /media/logan/LOGAN128 。

“硬盘的最低级别”不是 /,但 / 是计算机上的最低级别,因为所有挂载点都在 / 内。

Ubuntu 上的“/boot/”是存储引导加载程序配置和引导所需的文件的地方。Mac OS X 没有 /boot 目录,因为它不使用 /boot 文件夹进行引导。不确定它使用什么 - 可能是您的“EFI”分区。

答案3

Logan 和 mook765 的回答基本都正确,但我想强调并阐述几点:

  • 大多数分区/文件系统都是特定于操作系统的,或者至少是以操作系统为中心的。最重要的是,每个操作系统都有自己的根 ( /) 文件系统。(Windows 的工作方式略有不同;它有一个分区,而不是根文件系统C:。)
  • OS X 和 Ubuntu 的默认安装在单个分区(根分区/)上;但是,通常有各种类型的辅助分区。大多数 Ubuntu 安装都有一个交换分区(不是以大多数分区可以采用的方式安装),例如;并且 OS X 通常有一个名为的分区Recovery HD,可用于在出现问题时恢复安装。(此分区通常还包含 OS X 引导加载程序,这可能会导致 rEFInd 中的混淆,因为 rEFInd 会将 OS X 识别为从该Recovery HD分区启动,即使主安装在其他地方。)
  • 在 Ubuntu 和 OS X 中,除根 ( ) 文件系统之外的文件系统/都是通过另一个文件系统中的目录(称为“挂载点”)访问的。因此,您可以在 处挂载一个分区/ask,此后ubuntu该分区上的文件将作为 进行访问/ask/ubuntu。如果您卸载该文件系统并将其重新挂载在 处/mnt,则文件将变为/mnt/ubuntu
  • 您可以选择添加其他分区或将部分安装放在其他地方。/home例如,在 Linux 中,单独分区相当常见。Linux 安装有时会放在/boot单独的分区上。此目录(无论是否是单独的分区)包含 Linux 内核和相关支持文件,以及 GRUB 引导加载程序的配置文件(如果您使用它,这是 Ubuntu 的默认设置)。
  • Linux 内核具有文件系统驱动程序,可让其挂载大多数其他操作系统的文件系统,包括 OS X 的文件系统。因此,你可以在 Linux 中访问 OS X 的文件,但它们可能位于其他地方。例如,/foo/barOS X 中的文件可能会出现/media/OS-X/foo/bar在 Ubuntu 中。
  • 有些分区是操作系统之间共享的。您可以自行设置这样的分区,以便共享用户文件。EFI 系统分区 (ESP)就是这样一个共享分区。在 Ubuntu 中,它/boot/efi默认安装在。在 OS X 中,它默认不安装,但 rEFInd 的安装脚本 ( refind-install) 需要安装它,因为 rEFInd 位于 ESP 上。rEFInd 安装脚本/Volumes/ESP默认将它安装在 —— 但其他脚本可能将它安装在其他地方。请注意,在 OS X 中,除非您明确将它安装在其他地方,否则这可能是暂时的。
  • 在 ESP 上,rEFIndEFI/refind默认位于目录中。因此,在 Ubuntu 中,这是/boot/efi/EFI/refind;而在 OS X 中,如果它由refind-install脚本挂载,它将是/Volumes/ESP/EFI/refind
  • 无论使用什么操作系统访问分区上的文件,它们都应该是相同的,但如前所述,挂载点可能不同。此外,任何给定操作系统中的某些工具都可以隐藏某些文件。.例如,以点/句号 ( ) 开头的文件会被大多数 shell 隐藏。还可能存在某些文件或数据结构可能被某些操作系统隐藏,但不会被其他操作系统隐藏。
  • 在这两种操作系统中,您都可以使用该df命令查看安装了哪些文件系统以及安装在哪里。不过,OS X 和 Linux 之间的输出格式略有不同。
  • 您可以将一个文件系统挂载到另一个文件系统中。我不确定这是否有深度限制。对于您的一些问题,请注意,如果您/boot在 Ubuntu 中有一个单独的分区,那么您的 ESP 通常会挂载到efi分区上的目录/boot,而该目录又会挂载到boot根 ( /) 分区上的目录。因此,如果您要从根 () 目录“移动”/到 ESP,您将“穿过”三个文件系统。

相关内容