小米盒子挂载ext4移动硬盘

继给我的小米盒子1s(底部型号MDZ-06-AA)root并安装optware后,准备拿它当我的局域网ftp服务器和下载机了,用OTG线接上ntfs移动硬盘后可以很好识别并工作了,但我现在主力系统用的是archlinux,另一个移动硬盘格式成了ext4分区了,接上后不能自动挂载,自带的高清播放器不能识别,而android是基于linux的,并且小米盒子的system、data分区都是ext4分区,不识别本家的文件系统没道理,经过多方查找资料,总算是解决了挂载ext4移动硬盘的问题,分享给需要的朋友:

1.通过ssh连接Mibox

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -p 22 root@192.168.1.X
或者通过adb操作盒子(root)
adb connect 192.168.1.X
adb shell
su

2.查看系统识别到的块设备(一般为sda1/2/3…)

ls -l /dev/block

3.挂载ext4格式的移动硬盘或U盘

/system/bin/mount -t ext4 /dev/block/sda1 /storage/external_storage/sda1
/system/bin/mount -t ext4 /dev/block/sda2 /storage/external_storage/sda2

按以上命令挂载分区后,通过optware的ftp服务已经可以访问挂载点的文件夹下移动硬盘内的文件了,但是无法写入,经过测试发现是selinux的限制导致,因此在挂载的时候需要加入selinux安全上下文context的选项(注意需要**/system/xbin**下的mount来挂载__更新补充内容):

/system/xbin/mount -t ext4 -w /dev/block/sda1 /storage/external_storage/sda1 -o 'context="u:object_r:sdcard_external:s0",noexec'
/system/xbin/mount -t ext4 -w /dev/block/sda2 /storage/external_storage/sda2 -o 'context="u:object_r:sdcard_external:s0",noexec'

这样挂载后,通过ftp服务就可以正常读写移动硬盘的文件了,但小米盒子自带的高清播放器内的设备页内仍无法识别到移动硬盘,首先考虑是挂载后/storage/external_storage/sda1目录权限可能不对,通过以下命令更改:

#改为外置存储用户组sdcard_rw
chgrp 1015 -R /storage/external_storage/
#给所有用户赋予读写权限
chmod 777 -R /storage/external_storage/

更改之后高清播放器内还是无法识别到移动硬盘,再次考虑是不是selinux的限制(当时尝试进行此操作时没有对mount选项加入selinux的context)

#暂时关闭selinux
/system/bin/setenforce 0
#更改挂载的目录的selinux安全上下文
/system/bin/chcon u:object_r:sdcard_external:s0 /storage/external_storage/
#重启selinux
/system/bin/setenforce 1

操作之后高清播放器内依然不识别移动硬盘,无法读取音视频文件,没办法,在对android了解不深的情况下折腾真难,继续搜索,终于让我找到了解决办法,[GUIDE] How to mount ext4 formatted MicroSD card on Android 4.2.2 Phone/Tablet.(怎样在android4.2.2的手机/平板挂载ext4格式的SD卡),而小米盒子1.5.16系统是基于android4.4.2,此办法可行性很高。原文教程写了不少,讲了一些在本机上操作adb的方法,这些可以略过,关键在于一个叫vold的守护进程,它负责监控外部存储、探测其文件系统、按照vold.fstab文件内容挂载分区,并将挂载结果传递给卷管理器(Volume Manager),再由卷管理器通知给MTP应用、其他app,然后显示图标、处理其他用户可见的一些资料。因此关键在于挂载后还需要运行vold来完成后续的系统识别移动硬盘的操作,执行

/system/bin/vold

经过此操作后,小米盒子自带的高清播放器内设备页内立马出现了挂载的两个分区,在系统原生设置→存储中也可以看到挂载的ext4格式的USB存储器了

4.卸载挂载的分区

umount /storage/external_storage/sda1
umount /storage/external_storage/sda2

5.弹出块设备

eject /dev/block/sda1
eject /dev/block/sda2

6.自动挂载脚本

如果挂载的设备相对固定可以考虑写个脚本/system/etc/mtusb.sh加入开机启动

chmod 755 /system/etc/mtusb.sh
echo "/system/etc/mtusb.sh&" >> /system/etc/install-recovery.sh

脚本内容参考:

#!/system/bin/sh
/system/bin/mount -t ext4 /dev/block/sda1 /storage/external_storage/sda1 -o 'context="u:object_r:sdcard_external:s0",noexec' && sleep 5 && /system/bin/vold
/system/bin/mount -t ext4 /dev/block/sda2 /storage/external_storage/sda2 -o 'context="u:object_r:sdcard_external:s0",noexec' && sleep 5 && /system/bin/vold
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值