安卓4.0.4部署linux

编程·茶馆 · 2024-02-03 · 34 人浏览
安卓4.0.4部署linux


手中有几个安卓4.0.4的手机,打算搞一个文件存储或者小网站什么的。
于是我搜索到了这篇文章《Android4也能跑Linux了,Linux Deploy了解一下》
文章证实了低版本安卓部署Linux的可行性。

文章推荐了几个软件

  1. root:KingRoot 4.9.7(ZTE U795实测没有相应root方案无法root)
  2. ssh工具: JuiceSSH SSH Client 2.1.4 官网历史版本下载
  3. busybox(没有搜罗到相应版本所以寻找了另外的安装方法)
  4. Linux Deploy 2.5.0 GitHub下载
root软件可以多试几个适合自己手机的方案,我的ZTE U795很早之前就root了(金山授权管理),所以没有深究这个部分

BuzyBox安装

这是一个比较麻烦的部分,本片文章采用了这篇文章的解决方法
首先明确,安装BuzyBox 的目的是为了弥补安卓缺失很多好用的linux命令的问题。

  1. 先把手机root
  2. 你需要adb工具,请自行解决
  3. 进入shell 使用下面命令查看芯片架构

    cat /proc/cpuinfo | grep Processor

  4. 官网页面下载适合自己的版本

我这里选择armv7l

  1. 使用控制终端将busybox放入sd卡、或者自己放入sd卡

    adb push busybox路径 /mnt/sdcard
  2. 为了在/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设备进行低级别系统维护或自定义任务期间执行,比如修改系统文件。
  3. 复制buzybox到/system/xbin,如果没有请自己新建文件夹mkdir
    这里我发现我的手机不支持cp命令...所以我使用了替代方案

    cat source_file > dest_file
  4. 分配可执行权限,这时候可以使用bazybox ls来使用ls命令

    chmod 755 busybox
  5. 为了使用命令前面不用加busybox,在/system/xbin 下输入

    busybox --install
    1. 如果安装时出现这样的错误,
      busybox: /bin/zcat: No such file or directory
      busybox: /sbin/zcip: Invalid cross-device link
      说明没有输入安装路径,正确的示例 busybox --install /system/xbin
    2. 如果出现这样的错误,
      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

安卓 LinuxDeploy
Theme Jasmine by Kent Liao