我观察到,为了让其他程序(即分区)访问 Windows 分区中的文件(我有 Windows7 和 Ubuntu 16.04 双启动),我需要先手动打开该分区。
有没有办法停止这样做并让我的程序直接从其他分区找到文件?
答案1
取自:安装Windows分区
前言
如果您需要在启动时自动挂载一个或多个 Windows 分区,则需要为要挂载的每个分区在文件 /etc/fstab 中添加一行。通过 /etc/fstab 挂载分区而不是依赖文件管理器的原因包括:
方便。
在一个会话期间使用多个用户帐户。通过文件管理器从一个用户帐户安装的分区对于其他帐户来说是不可访问的。
在 Banshee 或 Rhythmbox(用于音乐)或 Shotwell(用于照片)等应用程序中设置库的位置。如果这些库包含通过文件管理器安装的分区上的文件,则如果未先安装该分区,则在后续会话中将出现错误。
需要更高级或更特殊的挂载选项的地方。下面给出了三种适合不同需求的工作配置,但任何更高级的配置都超出了本 wiki 页面的范围。NTFS-3G 手册提供了适用于 NTFS 文件系统的挂载选项列表。自动配置
尽管 Ubuntu 软件中心提供了许多 GUI 应用程序,但遗憾的是,在撰写本文时,没有一个可以推荐。它们已经过时且无人维护,并且都可能导致问题。两个例子是 ntfs-config 和 PySDM。(从 12.10 开始,PySDM 不再存在于存储库中。)如果您在任何地方找到对这两个应用程序的推荐,则很可能是旧的,不应遵循。目前建议手动配置 /etc/fstab。
手动配置
首先,您需要找到要挂载的分区的设备位置。打开终端并运行:
sudo blkid
为了便于说明,下面显示了具有 Vista/Ubuntu 双启动和共享 NTFS 数据分区的计算机设置的示例输出:
/dev/sda1: LABEL="Recovery" UUID="B23613F43613B875" TYPE="ntfs"
/dev/sda2: LABEL="Windows" UUID="38CE9483CE943AD8" TYPE="ntfs"
/dev/sda3: LABEL="Data" UUID="519CB82E5888AD0F" TYPE="ntfs"
/dev/sda5: UUID="00d7d951-2a35-40fd-8e5d-411bb824ff3b" TYPE="swap"
/dev/sda6: LABEL="Ubuntu" UUID="6044b1d0-208e-4ab3-850d-03a92e1516fc" TYPE="ext4"
前三个分区都是 NTFS,是我们这里要关注的分区。没有 FAT32 分区。在这种情况下,所有三个 NTFS 分区都有分区标签,这使得识别每个分区的用途更加容易。如果您的 blkid 输出不包含分区标签,则意味着分区没有标签,您必须通过其他方式确定要挂载哪个分区。在三个 NTFS 分区中,我们将仅使用第三个分区(数据分区)来配置 /etc/fstab。分区 /dev/sda1 是 OEM 制造商的恢复分区,应保持未挂载状态,或如下所述。分区 /dev/sda2 是 Windows C:\ 分区,出于上述原因,最好不要将其包含在 /etc/fstab 中,或以只读方式挂载 - 请参阅下文。
现在,您需要通过 /etc/fstab 为每个要挂载的 NTFS 分区创建一个挂载点。在我们的示例中,我们将仅为 /dev/sda3 添加一个条目。从终端:
sudo mkdir /media/Data
在本例中,我们创建了一个与分区标签同名的挂载点(Data)。您可以使用(几乎)任何您想要的字符串。
在直接编辑 /etc/fstab 之前,最好先进行备份。从终端:
sudo cp /etc/fstab /etc/fstab.orig
现在使用 root 权限在文本编辑器中打开 /etc/fstab。在 Ubuntu 中:
gksudo gedit /etc/fstab
在 Kubuntu 中:
kdesudo kate /etc/fstab
在 Xubuntu 或 Lubuntu 中:
gksudo leafpad /etc/fstab
对于通用读写挂载,请将此行添加到 /etc/fstab 的末尾:
UUID=519CB82E5888AD0F /media/Data ntfs-3g defaults,windows_names,locale=en_US.utf8 0 0
将 UUID 替换为您的分区相关的 UUID,如 blkid 输出中所示。“519CB82E5888AD0F”不适合您。
另外,用“/media/Data”替换您的挂载点。如果您要使用的挂载点名称中有空格,例如“New Volume”而不是位于“/media”中的“Data”,请使用“/media/New\040Volume”。空格字符是使用 fstab 中的“\040”创建的。
如果您不在美国,您还需要将“locale=en_US.utf8”选项更改为适合您的位置和语言的选项。您可以使用以下终端命令确定您的语言环境:
locale
或者获取系统上所有可用语言环境的列表:
locale -a
现在保存您编辑的 /etc/fstab 并关闭文本编辑器。您配置的分区将在下次重新启动时挂载,但现在要挂载它们:
sudo mount -a
两种特殊情况
建议针对两种特殊情况提供示例 /etc/fstab 行。
选项 1-用于安装只读访问权限。例如,如果您需要访问 Windows C:\ 分区,这将适合挂载它。使用您的 UUID 和挂载点修改以下行:
UUID=519CB82E5888AD0F /media/Data ntfs defaults,umask=222 0 0
选项 2 - 确保 Ubuntu 不挂载分区并且禁用文件管理器的图形挂载。例如,您可能希望确保恢复和系统分区永远不会被无意中挂载,也不会出现在文件管理器中。在这种情况下,您需要在 /mnt 而不是 /media 中创建挂载点。使用您的 UUID 和挂载点修改以下行:
UUID=519CB82E5888AD0F /mnt/Data ntfs noauto,umask=222 0 0
笔记:使用这些安装选项,分区不会出现在 Nautilus(Ubuntu 文件管理器)左侧窗格中的设备列表中,但它仍会出现在 Dolphin(Kubuntu 文件管理器)中。单击 Dolphin 中的分区会导致显示错误消息。此解决方案在 Dolphin 中不如在 Nautilus 中那么优雅,但达到了预期的效果 - 无法安装分区。
如果需要恢复到原始配置:
sudo mv /etc/fstab.orig /etc/fstab
sudo umount /media/<mountpoint>
在第二行替换您的挂载点。
FAT32 分区
FAT32 分区大多只出现在较旧的系统中。如果您要创建一个分区用于在 Windows 和 Ubuntu 之间共享数据,最好选择 NTFS。如果您有一个需要使用 /etc/fstab 挂载的 FAT32 分区,则可以使用以下命令将其挂载为读写:
UUID=<UUID> /media/<mountpoint> vfat defaults,user,exec,uid=1000,gid=100,umask=000 0 0
用 blkid 显示的分区 UUID 替换,并调整挂载点。这些挂载选项将使分区中的所有文件都可执行。如果您有其他需求,则需要修改选项,但这超出了本 wiki 页面的范围。