手中有几个安卓4.0.4的手机,打算搞一个文件存储或者小网站什么的。
于是我搜索到了这篇文章《Android4也能跑Linux了,Linux Deploy了解一下》
文章证实了低版本安卓部署Linux的可行性。
文章推荐了几个软件
- root:KingRoot 4.9.7(ZTE U795实测没有相应root方案无法root)
- ssh工具: JuiceSSH SSH Client 2.1.4 官网历史版本下载
- busybox(没有搜罗到相应版本所以寻找了另外的安装方法)
- Linux Deploy 2.5.0 GitHub下载
root软件可以多试几个适合自己手机的方案,我的ZTE U795很早之前就root了(金山授权管理),所以没有深究这个部分
BuzyBox安装
这是一个比较麻烦的部分,本片文章采用了这篇文章的解决方法
首先明确,安装BuzyBox 的目的是为了弥补安卓缺失很多好用的linux命令的问题。
- 先把手机root
- 你需要adb工具,请自行解决
进入shell 使用下面命令查看芯片架构
cat /proc/cpuinfo | grep Processor
- 在官网页面下载适合自己的版本
我这里选择armv7l
使用控制终端将busybox放入sd卡、或者自己放入sd卡
adb push busybox路径 /mnt/sdcard
为了在/system写入文件,输入以下命令
adb shell su mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
该命令是Linux shell中用于重新以读写模式挂载使用YAFFS2文件系统类型的设备的命令。这种情形常见于像旧版Android设备或其他使用闪存存储的嵌入式系统中。
以下是命令的分解:
mount
:这是在Unix/Linux类系统中用于挂载文件系统的命令。-o remount,rw
:-o
选项指定了挂载选项,而remount,rw
表示应将文件系统重新挂载(意味着它之前可能已经被挂载),并且其访问模式应更改为“读写”(rw
)。如果/system
分区最初是以只读(ro
)方式挂载的,此操作将会更改设置,允许进行读取和写入操作。-t yaffs2
:这个选项指定了要挂载的文件系统类型,在本例中为yaffs2
。YAFFS2代表Yet Another Flash File System版本2,它是专门为NAND闪存芯片设计的文件系统。/dev/block/mtdblock3
:这是代表待挂载块设备的设备节点。在嵌入式系统中,分区通常被称为mtdblockX
,其中'X'是一个数字,表示它是第几个分区。/system
:这是挂载点,即Linux文件系统层次结构中的目录,在挂载后,指定块设备的内容将在这个目录下变得可访问。
因此,执行此命令时,会将格式化为YAFFS2文件系统的/dev/block/mtdblock3
分区以读写权限重新挂载到/system
目录上。这一操作通常在对Android设备进行低级别系统维护或自定义任务期间执行,比如修改系统文件。
复制buzybox到/system/xbin,如果没有请自己新建文件夹
mkdir
这里我发现我的手机不支持cp命令...所以我使用了替代方案cat source_file > dest_file
分配可执行权限,这时候可以使用
bazybox ls
来使用ls命令chmod 755 busybox
为了使用命令前面不用加busybox,在/system/xbin 下输入
busybox --install
- 如果安装时出现这样的错误,
busybox: /bin/zcat: No such file or directory
busybox: /sbin/zcip: Invalid cross-device link
说明没有输入安装路径,正确的示例 busybox --install /system/xbin - 如果出现这样的错误,
cp: /system/xbin/busybox: Read-only file system
说明没有正确输入上面第三步的mount命令。
android系统本身就有ls命令,busybox里也有ls,输入ls时调用的是android的ls,那么想用busybox的
ls就要每次都在前面加个busybox吗?不用,使用alias命令可以搞定。alias ls='busybox ls'
也可以通过修改 /init.rc 来解决
- 如果安装时出现这样的错误,
之后按照《Android4也能跑Linux了,Linux Deploy了解一下》之后的流程进行部署就完成了。
P.S:
后续Deploy里出现了ssh failed
的问题。
由于这是一个重置过的手机,所以并不是网上所说22端口被占用的问题。
其实是存储空间不足
,不能完整下载系统所致。将路径改到sd卡之后可以正常下载。
之后发生了kernel too old
问题导致编译失败,这个是由于内核过旧导致的,选择一个合适的发行版本就行了。
ZTE U795 是12年发布的手机,选择Ubuntu的Trusty版本正常安装编译执行。
小于此版本的无法正常下载,大于此版本的kernel too old