检测并挂载设备

我今天升级了Ubuntu,一切都很顺利,除了Ubuntu无法检测到任何其他存储设备。我的“/”和“/home”分区工作正常,但其他分区就是无法被检测到。如果只是这个问题的话我倒无所谓,但同样的问题也出现在USB闪存驱动器上。 当我插入USB闪存驱动器时,指示灯亮起,但电脑却无法检测到它。需要明确的是,我的鼠标和键盘是通过USB连接,并且工作正常。 有没有办法解决这个问题?我在网上找到的建议都没有任何效果。

2lsblk的输出是什么? - Yet Another User
只是为了确保我理解正确,这是独立的Ubuntu系统,而不是在虚拟机中对吗? 在终端中运行 sudo fdisk -l 并将结果发布出来。 - Jack Mayerz
你试过我的答案了吗?点击这里 - Mitch
1df -h 的输出是什么?USB 设备是否在其中列出? - Jay
在最新的便携式硬盘驱动器中,如果它们离开电脑未连接几个小时(>6小时),它们可以再次挂载。我在Transcend和Seagate 2TB Expansion中观察到了这一点。 - minion91
6个回答

解决方案1:尝试使用磁盘程序(如果您在Ubuntu上使用图形界面)。

(检查是否安装了gnome-disk-utility软件包) (确保已安装udisks2软件包)

按下SUPERA打开应用程序镜头,然后在搜索应用程序字段中键入Disks

SUPER可能是带有Windows图标的键)

在磁盘中,您可以调整自动挂载选项......

例如:

Disks Program

你需要点击那个带有两个齿轮图标的小图标,然后选择“编辑挂载选项”。

Mount Options

解决方案2:使用CLI(无头安装) 步骤1. 检查分配给块设备的块设备和文件系统。
lsblk

lsblk

这里您可以看到块设备sdb,带有分区/sdb1。但它没有被挂载。没有文件被分配给它。 第二步。sdb是什么类型的设备?
sudo lshw 

或者

sudo lshw | less

lshw

所以USB闪存盘 - 块设备/sdb - 具有逻辑名称/dev/sdb。而该闪存盘上的FAT32文件系统具有逻辑名称/dev/sdb1。 第三步。挂载USB闪存盘 我们将把/dev/sdb1挂载到/media/usbstick上。
sudo mkdir /media/usbstick

sudo mount -t vfat /dev/sdb1 /media/usbstick 
阅读mount的manpage以了解其他选项。 第四步。它有效吗?
lsblk

lsblk 2

是的,我们可以看到USB闪存驱动器上的文件系统已挂载到/media/usbstick。 附录:如果没有像/dev/sdb这样的逻辑名称,您应该首先创建它们。请参阅此链接1:关于使用losetup命令设置和控制循环设备的信息。

2我其实非常喜欢这篇帖子,lsblk看起来是一个很棒的程序。可惜它在Ubuntu上并没有预装。 - j0h
2lsblk在util-linux软件包中(至少在12.04.2 LTS版本中)。 - user85164
1看起来尾部的链接导向了一张图片。 - Addem
我只能使用root访问驱动器,如何添加用户? - Punnerud
找到答案了:"chown -R yourUsernameHere:yourUsernameHere /media/usbstick/" - Punnerud

sudo lsusb会告诉你Linux检测到了哪些USB设备。USB存储设备是否挂载或被检测到是两个不同的问题。sudo lsusb -v将提供详细输出,可能比你想要的信息更多,如果操作系统真的无法识别该设备。

另外,你可以在插入USB设备之前和之后比较/dev中的设备列表。有很多方法可以做到这一点;我可能只会使用:

ls -l /dev/* | wc -l
这将为您提供一些被识别的设备。在插入设备之前和之后执行此操作,可以告诉您操作系统是否将设备分配给了/dev/。 另一个选项是查看在插入USB设备时dmesg中发生的情况。 dmesg可能会告诉您设备失败的原因。 如果您无法挂载的USB设备在lsusb列表中,那么您可以尝试挂载该设备。此时,了解文件系统类型将非常有用。 sudo fdisk -l将以ID的形式告诉您文件系统类型。您可能需要查找该ID号码。在线上有很多参考资料可供查询。一旦您知道设备列表,即/dev/hda1和文件系统类型,您可以尝试使用mount命令手动挂载设备。
sudo mount /dev/hda1 /home/user/Desktop/whereEver
你可能需要确保要挂载设备的位置存在。如果操作系统识别文件系统,那么如果文件系统不是本机文件系统类型,mount命令可能会起作用;你可能需要指定挂载标志。 请回复你从dmesg(不是全部内容,只需从插入USB设备时附近)和sudo lsusb获得的输出。 如果尝试确定设备类型,请参考Linux / UNIX: Device files。 我写这篇文章时假设所有未被识别的设备都是块设备类型。解决这类问题有很多方法和可能的解决方案。为了提供解决方案,需要更具体的信息。 还有许多图形界面应用程序可以完成同样的工作。你可以尝试在"磁盘工具"中查找已插入的硬件。

4为什么使用 dmesg 而不是 fdisk?因为使用 fdisk 假设您的硬件正常工作。如果您的硬件出现故障,fdisk 将不会告诉您,但 dmesg 会。 - j0h
非常感谢这个! - mralexandrelise

手动挂载USB驱动器

通常情况下,插入系统的USB存储设备会自动挂载,但如果由于某些原因无法自动挂载,可以按照以下步骤手动挂载。

按下Ctrl+Alt+T来运行终端。 输入sudo mkdir /media/usb来创建一个名为usb的挂载点。 输入sudo fdisk -l来查找已插入的USB驱动器,假设您要挂载的驱动器是/dev/sdb1。 要挂载使用FAT16FAT32系统格式化的USB驱动器,请输入:
sudo mount -t vfat /dev/sdb1 /media/usb -o uid=1000,gid=100,utf8,dmask=027,fmask=137
或者,要挂载使用NTFS系统格式化的USB驱动器,请输入:
sudo mount -t ntfs-3g /dev/sdb1 /media/usb
要卸载它,只需在终端中输入sudo umount /media/usb

source


您可以使用以下命令之一来获取有关已挂载设备的详细信息: 所有不同的命令都用于以不同的方式获取不同的信息,结果可能会有所不同... - dmesg - sudo fdisk 或 sudo fdisk -l - sudo blkid - lsblk - mount - lsusb - usb-devices - df -h

你只提到了一种存储设备类型 - USB闪存驱动器。每当USB设备无法正确挂载时,请检查是否安装了名为"usbmount"的软件包。如果有的话,请将其移除,之后生活应该恢复正常(可能需要重新启动)。

1不错的程序。当我与udisks2一起运行它并插入我的USB闪存时,它抱怨说它已经挂载了 :-) - user85164
1我曾经在我的系统中遇到过这个问题,USB闪存驱动器(如果有的话)被挂载为根目录,因此我无法向它们写入数据。花了相当长的时间才弄清楚这个问题。 - Tanel Mae
x2gothinclient-usbmountusbmount是一样的吗?我的系统是22.04 LTS。 - George Udosen

我也遇到过类似的情况,我的U盘变得看不见了。 我通过使用Ubuntu实用程序Disks来解决这个问题。在磁盘工具中,U盘是可见的。我点击了磁盘内部的齿轮图标(确保选择了正确的设备),然后使用格式化分区选项,并选择了FAT文件系统(兼容所有系统和设备)。