如何防止 USB 闪存驱动器从睡眠状态唤醒后获取新的 Linux 设备名称?

如何防止 USB 闪存驱动器从睡眠状态唤醒后获取新的 Linux 设备名称?

我正在从笔记本电脑上的 USB 闪存驱动器启动 Linux。一切都运行正常,直到我将笔记本电脑置于睡眠状态。当它唤醒时,USB 闪存驱动器突然获得了不同的设备名称,并且一切都开始失败,因为已经安装的文件系统现在位于不再存在的设备上。我如何让 Linux 在唤醒时保持设备相同的设备名称?

答案1

我无法告诉你如何阻止它更改设备名称——但你的问题可能还是有解决办法的。在进行以下更改之前,为了安全起见,请备份你的/etc/fstab文件,并确保在发生故障时有其他可启动设备可用(这里只要输错一个字母就很容易发生故障)。

首先,检查你的/etc/fstab。你的条目可能如下所示:

/dev/sde1 /   ext4    errors=remount-ro 0       1

唤醒后,您的驱动器变为sdf,就像示例一样,因此此条目现在失败。由于这些设备名称在检测时按顺序给出,您可能更喜欢不受此影响的一致名称。因此您的第二步是:

ls -l /dev/disk/by-uuid

现在检查其中哪个条目指向/dev/sde1(或者当然,sde1用驱动器当前映射到的条目替换)。它可能看起来像这样:

lrwxrwxrwx 1 root root 10 Jun 30 20:53 b207-e035ddd09600 -> ../../sde1

现在你可以告诉设备的独特的id。返回/etc/fstab并替换/dev/sde1/dev/disk/by-uuid/b207-e035ddd09600(再次将我的示例值替换为您的真实值)。该行现在应如下所示:

/dev/disk/by-uuid/b207-e035ddd09600  /   ext4    errors=remount-ro 0       1

现在你的 USB 驱动器的“设备名称”不再重要,因为它由其唯一身份不会发生改变。

更新:

使用 USB 上的 LiveCD 映像,情况可能有所不同,因为它/etc/fstab可能仅包含虚拟文件系统(例如 tmpfs)——但缺少磁盘分区的条目。在这种情况下,请检查/etc/mtab(其中包含所有当前安装的分区),检查与您的闪存驱动器匹配的条目,复制该条目并将其添加到/etc/fstab。然后按上述方法调整它(当然/etc/fstab是!)。

(名称提示:fstab= 文件系统表,包含要挂载的文件系统的定义以及挂载它们时应使用的选项;mtab:已挂载表,即当前挂载了哪些文件系统以及使用了哪些选项。请记住,您还可以手动挂载文件系统,将所有必需的选项传递给命令mount:因此,/etc/mtab可能包含在中未找到的条目/etc/fstab。反之亦然,因为设备可以noauto在中设置标志/etc/fstab,所以系统不会自动挂载它。)

答案2

根据您运行的 Linux,您可能会发现只需命名 USB 闪存驱动器即可实现您的目标。例如,如果您为驱动器指定文件系统标签,MYDISK则它将安装在 上/media/MYDISK

如果这不起作用,那么你可以使用udev规则来实现你想要的,尽管这是更复杂

相关内容