android linux:ioctl LOOP_SET_FD 失败

Posted

技术标签:

【中文标题】android linux:ioctl LOOP_SET_FD 失败【英文标题】:android linux:ioctl LOOP_SET_FD failed 【发布时间】:2014-02-23 14:28:36 【问题描述】:

我已经获得了手机的root权限。在adb shell中,我输入如下命令:

#create a file about 10M 
dd if=/dev/zero of=/mnt/sdcard/AAA.pdf  bs=1024  count=10000

#format this file
mkfs.ext2 -F /mnt/sdcard/AAA.pdf

#create a folder which is used to be mounted
mkdir /mnt/sdcard/aaa

#mount
mount -t ext2 -o loop /mnt/sdcard/AAA.pdf /mnt/sdcard/aaa 

chmod 777 /mnt/sdcard/aaa 

#umount
umount /mnt/sdcard/aaa 

它运行正常。 但是如果我想再次安装,它失败了。在我输入mount -t ext2 -o loop /mnt/sdcard/AAA.pdf /mnt/sdcard/aaa 后,它会显示ioctl LOOP_SET_FD failed: Device or resource busy。我不知道这怎么会发生。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

如果它已经挂载,你不能再次挂载它,除非你给它'remount'选项。该选项可能在 android 的 mount 命令中可用,也可能不可用,因为它不是标准装载。

【讨论】:

【参考方案2】:

1- Android 工具箱对循环设备的支持不好。尝试使用busybox的。 2- 使用 losttup 检查您是否有剩余的空闲循环设备。

【讨论】:

【参考方案3】:

对于卸载:

umount /mnt/sdcard/aaa

losetup -d /dev/loop0

尽管在我的设备上安装的循环 fs 不能被非 root 用户访问(目录权限 777)。有seclabel标志,我认为这是一个原因。

【讨论】:

以上是关于android linux:ioctl LOOP_SET_FD 失败的主要内容,如果未能解决你的问题,请参考以下文章

Linux ioctl 返回值由谁解释?

字符设备驱动ioctl实现用户层内核层通信

Linux ioctl调用

linux ioctl 方法

C Linux ioctl TCGETS 和 TCSETS errno 25

tinder 怎么发loop