Ubuntu 手机文件系统是否可以通过 USB 连接在 Linux 中安装?
是否有理由相信该功能会保留下来?对我来说,与完全的桌面/手机融合相比,我更乐意使用手机作为存储所有重要数据的地方(如 USB 记忆棒),然后在需要时在手机上使用或与笔记本电脑共享。
答案1
Ubuntu Touch 允许你通过MTP 协议,但不支持USB大容量存储模式。在这方面,它与较新的 Android 设备类似,并且不太可能发生变化。开箱即用,您应该能够使用任何支持 GVFS 的应用程序访问手机上的文件。
许多智能设备不再使用大容量存储模式作为文件传输的方式,这是有充分理由的:大容量存储模式涉及公开块设备,而 MTP 则公开文件系统。
除非文件系统经过专门设计,否则一次只能有一个操作系统访问底层块设备。FAT 不是为这种用例设计的,这就是为什么支持大容量存储模式的旧款 Android 手机会在通过 USB 提供 SD 卡之前卸载 SD 卡。
相比之下,使用 MTP 时,手机是唯一可以访问底层块设备的设备,而连接的计算机则通过 USB 发出文件系统级请求(例如列出目录、下载或上传文件等)。这意味着您可以在连接时继续使用该设备。
答案2
在装有 Ubuntu Touch 15.04 (r4) 的 BQ E5 Ubuntu 版上,我可以卸载外部 SD 卡,并使用脚本将 USB 端口切换为大容量存储模式massStorage.sh
,然后使用脚本将 USB 端口切换回 MTP mtp.sh
。
脚本内容massStorage.sh
:
#!/bin/sh
echo 0 > /sys/class/android_usb/android0/enable
cp /sys/class/android_usb/android0/functions /tmp/massStorageFunctions
echo mass_storage > /sys/class/android_usb/android0/functions
umount /dev/mmcblk1p1
echo /dev/mmcblk1 > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun/file
cp /sys/devices/virtual/android_usb/android0/f_mtp/device/idVendor /tmp/massStorageVendor
cp /sys/devices/virtual/android_usb/android0/f_mtp/device/idProduct /tmp/massStorageProduct
echo 03f0 > /sys/devices/virtual/android_usb/android0/f_mass_storage/device/idVendor
echo 5607 > /sys/devices/virtual/android_usb/android0/f_mass_storage/device/idProduct
echo 1 > /sys/class/android_usb/android0/enable
脚本内容mtp.sh
:
#!/bin/sh
if [ -f /tmp/massStorageFunctions ]; then
echo 0 > /sys/class/android_usb/android0/enable
cp /tmp/massStorageFunctions /sys/devices/virtual/android_usb/android0/functions
cp /tmp/massStorageVendor /sys/devices/virtual/android_usb/android0/f_mass_storage/device/idVendor
cp /tmp/massStorageProduct /sys/devices/virtual/android_usb/android0/f_mass_storage/device/idProduct
sudo -u phablet udisksctl mount -b /dev/mmcblk1p1
echo 1 > /sys/class/android_usb/android0/enable
fi;
请注意,供应商和产品 ID 是从另一个 USB 大容量存储设备中窃取的。
我已将这些脚本保存在目录中~phablet/bin
。此外,我还定义了以下别名,用于从命令行启动脚本com.ubuntu.terminal
:
alias u='sudo sh ~phablet/bin/massStorage.sh'
alias m='sudo sh ~phablet/bin/mtp.sh'
您可以在.bashrc
主目录内的 -file中设置这些别名phablet
。
请注意,您必须输入您的密码才能使用这些脚本分离/连接 SD 卡。
评论: 其他人提出的替代解决方案 mtp 的一个大问题是它无法在 cygwin 中使用。可以在 windows 中使用 mtp,但 mtp 设备未提供为 cygwin 所需的驱动器号。我的用例与 Tor Thommesen 基本相同,并找到了此解决方案以将手机的辅助 sd 卡公开为大容量存储设备。
答案3
除非文件系统经过专门设计,否则一次只能有一个操作系统访问底层块设备。FAT 不是为这种用例设计的,这就是为什么支持大容量存储模式的旧款 Android 手机会在通过 USB 提供 SD 卡之前卸载 SD 卡。
我不明白这是什么意思。是的,它一次只能由一台设备使用,这就是为什么它在从电脑访问之前先在手机上卸载。有什么问题?除非你想在复制文件时从外部 MicroSD 观看电影。
此外...您无需使用 MTP 很长时间就能意识到它的效果并不好。后台进程不会按预期同步。您无法看到图像的缩略图。传输速度很慢。另一个 POC 以良好的“用户体验”为幌子强加给用户。Apple 也使用同样的论点将每个人都完全锁定在自己的“生态系统”中,以至于您甚至无法自行插入 MicroSD 或更换电池。