同一个设备文件代表的不同设备如何自动挂载到不同的挂载点?

同一个设备文件代表的不同设备如何自动挂载到不同的挂载点?

在Ubuntu 中,即使不同的块设备(例如外部硬盘和闪存驱动器)依次由同一个设备文件(例如/dev/sdb1)表示,它们也会自动挂载到不同的挂载点(例如/media/b/mydrive/media/b/myflashdrive)。这是如何实现的? Ubuntu 如何知道每个设备的“名称”并使用该“名称”来命名其安装点? (/etc/fstab不包括这些插件设备。)

我怎样才能模拟呢?手动安装块设备时,我运行

sudo mkdir /media/b/mountingpoint1
sudo mount -t ntfs /dev/sdb1 /media/b/mountingpoint1
sudo umount /media/b/mountingpoint1
sudo rmdir /media/b/mountingpoint1

如果我分离设备然后附加不同的块设备,新设备将再次由相同的设备文件表示/dev/sdb1,并且上面的命令会将其安装到相同的安装点/media/b/mountingpoint1。我需要一种方法来为不同的设备以不同的方式命名安装点。

答案1

由相同的设备文件表示(例如/dev/sdb1)

诀窍是他们是不是由相同的设备文件表示:除了包含由内核管理的字母和数字的主设备文件之外,您还拥有符号链接,其中/dev/disk/by-*包含文件系统的卷名、硬盘驱动器的供应商和型号等,或设备路径。

您应该在 inside 中使用这些符号链接/etc/fstab,而不是/dev/sdb1等。

答案2

(例如/media/b/mydrive/media/b/myflashdrive)。这是如何实现的? Ubuntu 如何知道每个设备的“名称”并使用该“名称”来命名其安装点? (/etc/fstab不包括这些插件设备。)

可移动设备的安装是由 UDisks 完成的,它还为它们创建安装点,该安装点始终(在 Ubuntu 上)格式为/media/<user>/<unique_id>。最后一部分是文件系统标签,如果文件系统没有标签,则最后部分是 UUID。可移动磁盘和驱动器通常已预先格式化,并且分区由供应商标记(例如,我的金士顿闪存驱动器的 VFAT 分区标记为KINGSTON)。

您可以使用 获取设备的标签(和 UUID)lsblk -f

如果您想手动安装设备(不是通过 GUI)并达到相同的效果,您可以使用udisksctl mount -b /dev/sdb1.

如果您(将来)用于fstab自动挂载,则应始终使用 UUID ( UUID=) 而不是/dev/sdb1.

相关内容