我正在从笔记本电脑上的 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
规则来实现你想要的,尽管这是更复杂。