为什么不挂载就无法访问/dev/sd**?

为什么不挂载就无法访问/dev/sd**?

我一直在阅读其他问题和答案,但没有一个问题和答案告诉我为什么安装是绝对必要的。他们说驱动器需要一个挂载目录来与物理驱动器关联,但为什么不能直接将文件从 /home/[user] 复制到 /dev/sdb (USB 驱动器)?复制到驱动器安装目录的所有数据是否都会立即复制到驱动器本身?

答案1

/dev/sd* 无需挂载即可访问。确实,我之前直接向/dev/sdb写入文件也成功过,但写入的是原始U盘。我编写的文件是 Ubuntu 安装盘的磁盘映像,当时我用来制作可启动 USB 记忆棒以在新计算机上安装 Ubuntu。您可以像写入文件一样写入 /dev/sda,但它是写入原始磁盘。如果您尝试写入第二个文件,它将写入第一个文件的顶部,并且除非它是类似磁盘映像的文件,否则大多数其他计算机/软件将不知道如何处理它。

安装的作用是尝试在原始磁盘和文件系统布局之间添加文件系统驱动程序。挂载过程的一部分是选择正确的文件系统、FAT32、Ext4、NTFS 等,并初始化该驱动程序以了解要挂载的磁盘的内容。现在,它将磁盘解释为一个结构化文件系统,其中包含文件夹、文件以及有关这些文件夹/文件的元数据。

答案2

假设您拥有原始设备的写入权限,您当然可以直接将文件从 /home/user/whatever 复制到 /dev/sdb 。但是,由于您现在绕过了该设备上的文件系统,因此 /dev/sdb 上只会有一个字节流。以前的 FAT 或 NTFS 或 ext4 文件系统现在已经消失了,因为您没有通过文件系统驱动程序。如果您在复制之前安装了设备,则驱动程序将处理文件系统详细信息。另外,您没有进行双重复制,因为该目录不独立于设备而存在。

答案3

安装并不是绝对必要的,例如mtools套件可以直接访问FAT文件系统,无需内核支持。

但是您确实需要一种或另一种形式的文件系统驱动程序来访问磁盘上的文件系统,无论是安装文件系统时使用的内核驱动程序,还是用户空间实用程序。如果驱动器上没有文件系统(或者不关心文件系统的内部结构),那么直接读取或写入数据很简单。如果您将磁盘映像写入驱动器,这就是您要做的事情。

相关内容