如何使分区在启动时挂载?

如何在Ubuntu上使硬盘和分区在启动时挂载?
我总是将媒体和数据文件保存在不同的分区上 - 一个2TB的硬盘和一个400多GB的分区。我一直在尝试将主目录的默认文件夹位置更改为我的其他驱动器。
当我将/home/user_name/.config/user-dirs.dirs文件更改为我想要的目录时,它可以工作,但只能持续到系统重新启动。我只是假设驱动器没有挂载是问题所在,但无论如何都会有帮助。如果有人知道每次目录都恢复为默认值的另一个原因,那也很好。

6编辑/etc/fstab文件,这里有一些有用的链接,可以回答你的问题:在启动时挂载驱动器在启动时挂载ntfs驱动器 - Peachy
获取磁盘的UUID,并按照此教程(https://bit.ly/2Ur9XZY)中所示,将其添加到/etc/fstab文件中。 - navule
7个回答

GUI方法(推荐给新手)- Disks程序将自动为您编辑/etc/fstab,并且不会破坏任何东西。在启动器上键入disks或在终端中键入gnome-disks来启动Disks应用程序。

选择驱动器,然后分区,然后使用更多操作(齿轮图标)按钮访问“编辑挂载选项”菜单。关闭用户默认设置,因为如果真的设置为自动挂载,您就不会在这里了。其余的应该很明显。

Disks application Disks application - cogs icon menu, about to click Edit Mount Options... Disks application - Mount Options dialog


56别忘了取消勾选“自动挂载选项”。我之前很困惑,因为尽管在灰色的用户界面中勾选了“开机挂载”复选框,但自动挂载却没有生效。 - Étienne
25比手动编辑fstab要容易得多。这是最好的答案。 - wordsforthewise
4在16.04中,将磁盘挂载到/mnt而不是/dev。 - dstonek
21使用图形界面工具时不要使用sudo。当需要权限时,gnome-disks会自动询问。 - nipunasudha
请注意,这不是一个可以安装或卸载的软件包,而是一个内置命令。这让我有些困惑。 - xjcl
2剩下的应该很明显。我喜欢它。 - Adil Saju
1终端的回答中包含了在编辑之前创建fstab备份的建议。这样做不仅为我节省了一些麻烦,而且可能值得在这个回答中加以说明(我改变了系统驱动器的挂载选项,忽略了额外的警告 :) )。 - smcs
如果我不使用sudo,它不会要求我权限,只会显示“未被授权...”。 - mcmillab
在我的操作系统(elementary)上,它没有被安装,但我可以使用apt install gnome-disks-utility来安装它。 - Pieter De Clercq
这是做这件事的方法。我搞砸了我的启动...在处理fstab时。我鼓励其他人点赞这个方法,而对于fstab方法则要投反对票,这样像我这样的人就不会跟随危险的fstab方法了。还要记得创建一个用户友好的挂载点。这个方法很有效。 - Bhikkhu Subhuti
刚刚在使用图形用户界面后发生了一个很严重的崩溃。在你尝试任何高级操作之前,最好备份一下你的/etc/fstab文件。 - Yuval Harpaz
这种方法有一个缺点...你将没有任何用于该分区的垃圾目录。 - Parag Katoch
简单用户在磁盘上拥有写权限的选项是什么?我尝试了rw但没有用...(FAT32分区,但我在“磁盘”文件系统对话框中使用“自动”). Ubuntu 20.04.1 - brane stormer
1默认选项不挂载其他磁盘的原因是什么? - user3347814
1@Étienne。我正在使用Ubuntu 22.04,但是没有看到"自动挂载选项"在哪里。你能否详细说明一下? - Adriaan
@Adriaan 我在6年前发表了我的评论,早在22.04出现之前。22.04的图形用户界面可能看起来不同。 - Étienne
2据我所了解,这在22.04中被称为“用户会话默认设置”。 - Étienne
1@Étienne 你说的取消自动挂载选项是什么意思?我没有这样的复选框,但它仍然不会在系统启动时挂载驱动器。我真正需要的是在登录时要求输入加密密钥,而不是将它们硬编码到fstab明文中... - inf3rno

终端方法仅适用于有经验的用户。这可能会破坏您的启动。
如果您对此没有问题,请打开终端。

  1. [重要] sudo cp /etc/fstab /etc/fstab.old - 在发生意外情况时创建fstab文件的备份。如果发生了什么事情,您将需要一个可引导(live)的USB。如果您没有一个,可以使用GUI方法代替。

  2. sudo blkid - 记下您想要自动挂载的分区的UUID。

  3. sudo nano /etc/fstab - 将以下行复制到文件末尾,保存并重新启动以检查是否成功。

  4. mkdir /my/path/tomount # 引用:“在挂载分区之前,您必须先创建挂载点。”参见https://help.ubuntu.com/community/Fstab

示例

常见的设置是:

UUID=<uuid> <pathtomount> <filesystem> defaults 0 0

使用lsblk -o NAME,FSTYPE,UUID命令查找要挂载的分区的UUID和文件系统。例如:
$ lsblk -o NAME,FSTYPE,UUID
NAME   FSTYPE UUID
sda
├─sda2
├─sda5 swap   498d24e5-7755-422f-be45-1b78d50b44e8
└─sda1 ext4   d4873b63-0956-42a7-9dcf-bd64e495a9ff

NTFS
UUID=<uuid> <pathtomount> ntfs uid=<userid>,gid=<groupid>,umask=0022,sync,auto,rw 0 0

示例用于<>变量:

  • <uuid>=3087106951D2FA7E
  • <pathtomount>=/home/data/ # 在重新启动之前创建此目录
  • <userid>=1000
  • <groupid>=1000

使用id -u <username>获取用户ID,使用id -g <username>获取组ID。

(请注意,指定sync选项可能会降低写入性能,因为它禁用了缓存。异步是默认选项。)

Screenshot of my computer's _fstab_ file


15+1'd, 免费的fstab教程:http://www.linuxstall.com/fstab/ - Andrejs Cainikovs
嘿,抱歉好久没联系了。我尝试了提供的解决方案,但都没有起作用。对于Psydm,我打开了启动时挂载的功能,但它并没有生效,而且其中一个硬盘没有这个选项。我还尝试过通过修改fstab文件来解决问题,无论是直接修改文件还是使用gedit功能,都没有任何效果。还有其他什么方法可以解决这个问题吗? - Harley Baker
9在挂载选项上要小心不要过于武断;并非每个人的用户ID和组ID都是默认的1000。 - IlluminAce
1确保你对fstab有更深入的了解。对我来说,示例设置导致了KB/s的写入速度。请参考https://help.ubuntu.com/community/Fstab获取一些有用的提示。 - bbodenmiller
9使用'id -u <用户名>'命令获取用户的UID,使用'id -g <用户名>'命令获取用户组ID。这些应该在回答中明确说明。 - user383919
非常好,但我想知道您命令中的参数,例如 nousernosuid,它们会影响到什么吗? - Finn
6@bbodenmiller 这里应该避免使用同步选项。它会减慢磁盘写入速度,因为你要求每个字节都立即刷新,而不是让计算机为你进行优化。答案应该去掉同步选项。 - Masadow
@ Finn - 在这种情况下,nosuid 是无效的。 这台电脑是我作为管理员的本地机器。我之前对这些标志的了解很有限,所以才使用了它们。 请查看这个帖子中的第一个回答和后续评论,以了解更多信息 - 链接 nouser 同样也是如此。 - Akshit Baunthiyal
抱歉又翻出這個問題,但是為什麼要使用群組和使用者ID呢?你不能只用UUID、掛載點和其他選項嗎?這樣不就可以了嗎? - BobserLuck
3我在man mount中读到,对于具有有限写入周期的媒体(例如某些闪存驱动器),sync可能会导致寿命缩短。 - Enlico
第三点:“将以下行复制到文件末尾”。我不太清楚你在这里所说的“以下行”是什么意思。 - smcs
@smcs 我觉得这个并没有什么特别的意义...只需将UUID行写入你的fstab文件,并填写相应的空白处。使用blkid和lsblk命令获取信息以帮助你。 - Eugene K
在这个过程中,我明白了UUID行的含义。对于像我一样毫无头绪的人来说,这个答案可能会受益于在第三点中指出这一点 :) - smcs
这不推荐给那些从未尝试过的人。请使用图形用户界面方法代替。如果出现错误,您的机器将无法启动。 - Bhikkhu Subhuti
重新配置后无需重置,请使用 sudo mount -av 进行重新加载。 - Ryall
回答这个问题的关键是,在挂载时传递给mount命令的选项(即/etc/fstab行中的第四个参数,紧跟在磁盘ID、挂载点和文件系统类型之后)应包含auto选项。示例中提供的defaults选项是一组选项的快捷方式,其中之一就是auto - robertspierre

在Ubuntu中,按照以下步骤来自动挂载您的分区:
  1. 打开文件管理器,查看左侧列出的设备。

  2. 通过单击要在启动时自动挂载的设备,您将在右窗格中看到该设备(分区)的文件夹。保持此窗口打开。

  3. 转到您的桌面Ubuntu搜索并键入“disks”,您将看到结果中显示了磁盘。

  4. 点击“disks”,磁盘管理器将启动。

  5. 您将在左窗格上列出的硬盘和每个硬盘的右窗格上列出的分区详细信息。

  6. 现在通过单击分区来突出显示它,重要提示(不要为所有分区设置启动时挂载,因为这会减慢系统速度)。

  7. 确保您要自动挂载的分区名称与之前打开的文件管理器顶部左侧的设备名称相同,并在磁盘管理器中选择的分区的“内容”字段中查看磁盘管理器中的驱动器或分区的相同名称。

  8. 现在,在磁盘管理器中确认选择了正确的分区后,只需单击更多操作图标,子菜单列表将打开,选择编辑挂载选项,挂载选项将打开,自动挂载选项=开启,您关闭它,并且默认情况下,您将看到启动时挂载已被选中并显示在用户界面中已被选中,然后点击确定并重新启动系统,在登录后转到文件管理器,您将看到您选择的部分已经被挂载。


在16.04中,将磁盘挂载到/mnt而不是/dev。 - dstonek
@dstonek -- 在上面的第8步中,您可以选择在“编辑挂载选项”中指定挂载点。也就是说,如果您希望将其挂载在/dev下,您可以告诉它这样做。 - gare

当系统启动时,它会检查文件/etc/fstab(代表"文件系统表")中的分区列表,以便自动挂载。

如何使用此文件在这里有描述。

简而言之:

fstab条目的语法是:

[设备] [挂载点] [文件系统类型] [选项] [转储] [通过]

您可以添加自己的条目,但需要知道设备路径(例如,/dev/sdb1)或其UUID(一长串数字)来标识它们。


7虽然一个链接理论上可以解决问题,但在问题中包含必要的部分是一个好的做法。 - Web-E
3@Web-E可能是指“回答”。 - Andrejs Cainikovs

使用fstab
echo '/dev/[VolumeGroup]/[VolumeName] [custom-directory] ext4 defaults 0 2' >> /etc/fstab

例子:

echo '/dev/hdd/hdd /mnt/hdd ext4 defaults 0 2' >> /etc/fstab
echo '/dev/ssd/ssd /mnt/ssd ext4 defaults 0 2' >> /etc/fstab

完美,正中目标 - undefined

所有的答案都使用了一个图形用户界面(GUI)工具,或者是`/etc/fstab`。我对这些方法的问题在于我运行的是无头服务器(没有图形界面),并且最重要的是,我通常挂载次要的USB硬盘,在这种情况下,如果驱动器缺失、损坏等,`fstab`将阻止您的系统启动。这在过去发生过,让本来完好运行的系统陷入困境。
我的解决方案是使用`cron`。特别地,将以下代码添加到您的`crontab -e`中,根据您的系统提供的具体信息进行配置。
@reboot mount /dev/sdX /mnt/my-usb/

使用这个方法,cron将在每次系统启动时尝试挂载您的驱动器。
警告:这依赖于/dev/sdX在重新启动过程中保持不变,但这并不能得到保证。换句话说,在下一次启动时,位于/dev/sda下的驱动器可能会变成/dev/sdb。但是在我的非专业设置中,它一直工作正常。
如果您需要更可靠的方法,您可以创建一个shell或python脚本来根据序列号搜索正确的/dev/sdX,然后挂载它,并使用cron和@reboot触发器来执行该脚本。

这是如何使用UUID进行挂载以确保在启动过程中保持相同的挂载方式的方法:https://unix.stackexchange.com/questions/349118/how-to-mount-by-uuid-without-using-etc-fstab - Barkles

尝试使用“usbmount”软件包
sudo apt-get install usbmount
它会自动挂载USB设备

10-1. 最好也包括如何使用usbmount的说明。仅告诉某人“安装这个软件”是不够的。 - Parto
1这是一个用于非桌面安装的脚本,可以在插入时自动挂载USB设备到/media/usb[0-7]。如果需要在启动时挂载驱动器,这可能不适用,因为它可能会在太晚之后才挂载它们,并且挂载点可能无法预测。但是,如果您只需要在启动完成后将其挂载到某个位置,那么这应该没问题。如果您使用图形桌面,您不需要这个脚本,因为它会有自己的方法来自动挂载USB设备。 - thomasrutter