用Linux Deploy在Android手机上安装Linux

Linux 同时被 2 个专栏收录
19 篇文章 0 订阅
35 篇文章 1 订阅

每小时进行5分钟的活动,能降低患上许多致命疾病的风险。——《程序员健康指南》

简介

使用Linux Deploy唯一的好处就是可以充分利用废弃的手机,而且手机具有省电,便捷的特点。安装了Linux之后,完全可以满足基本的学习Linux的需要,而且还不怕把系统搞死,大不了重装咯。ʅ(´◔౪◔)ʃ

  • 其他方案
方案说明
Linux on AndroidThe Complete (GNU) Linux Installer for Android devices。可惜我手机不支持,不能试。
Linux on Android资源下载地址包含了Ubuntu、Kali等等的系统镜像和脚本。
UserLAnd在Google Play Store中可以搜索到该应用。可以看看这边文章的介绍:How to Run Linux on Android Devices
Chrome在OS X, Linux and Windows的Chrome上运行APK应用
ARChon使用ARChon运行时环境在Ubuntu上运行Android应用
AidLearning-FrameWork带图形界面的Linux运行在android手机上,内置caffe/tf/mxnet/pytorch

准备工作

  1. 下载Linux Deploy
  2. 下载BusyBox
    1. 注意:必须使用同一个作者开发的东西:Linux DeployBusyBox来安装,不然会缺指令。
    2. 可以看看如何在Android 7 上安装:MIUI9 开发版 busybox安装,需要root,可以看下一小节的内容。
  3. 安卓手机一台,配置不用很高,我是在酷派8702d(移动送的垃圾手机)上跑出了Linux
    • 配置:架构:armv7
    • RAM:512
    • CPU:4核1.2Hz
    • 系统:Linux Kali sana
    • 桌面环境:XFCE
    • 说明:我自己增加了swap脚本,所以运行无压力。

下面是我是用的swap.sh,给脚本执行权限,在安卓机上执行就可以了,执行过一次后,将

mkdir -p /cache/swap
dd if=/dev/zero of=/cache/swap/swapfile bs=1024 count=460800

注释掉。在每一行前面加#注释掉即可。这里bs是块大小,count是总大小,bs*swap大小=count。

#mkdir -p /cache/swap
#dd if=/dev/zero of=/cache/swap/swapfile bs=1024 count=460800

完整脚本swap.sh

#!/system/bin/sh
mkdir -p /cache/swap
dd if=/dev/zero of=/cache/swap/swapfile bs=1024 count=460800
busybox mkswap /cache/swap/swapfile
busybox swapon /cache/swap/swapfile

附:如何用re管理器运行*.sh?
  1、打开re管理器,将 *.sh移动到/data/local/中(随你,反正我都是放这里的,方便找)
  2、长按 *.sh文件,在弹出的dialog中找到权限设定,赋予其执行权限(执行那一列全打钩就好了)。
  3、之后直接单击*.sh文件,执行,就好了。可能要等很久,这视你创建的swap文件大小而定,等到出现以下信息即可。

Setting up swapspace version 1,size = XXX bytes UUID = XXX

小米手机

最近突发奇想,想要拿旧手机来重新安装下试试,发现小米Android 7.0的系统的获取ROOT权限是真的麻烦,本小节记录了作者在这个过程的尝试。

【原创】小米手机获取完整ROOT权限教程

  • 第一步:root。
    • 「卡刷」在小米官网的rom下载页面寻找对应机型的rom,下载开发版本的rom,挪到手机上的download_rom的目录。之后再系统的设置-我的设备-MIUI版本点击图标(比如MIUI 10的大log)10次,就可以解锁安装开发版本的权限。在当前界面(MIUI版本)的右上角选择「手动选择安装包」,选择我们刚才下载的开发版本的rom,安装即可。
    • 「线刷」请见:通用线刷教程
  • 第二步:解锁MIUI。
  • 第三步:手机上点击手机管家-应用管理-权限-ROOT权限管理,等待安装完ROOT Rom即可使用Root权限。

获取完整权限

这一小节的内容可以在这篇小米手机 在 mac 下怎么 root?文章中看到。

关于救机

备份下我旧机器的ROM:Redmi Note4X - AndroidOne红米Note4系列历史稳定版刷机包汇总红米Note4X刷机包汇总(2019/05/20整理)
小米3:小米3/4、ZUK Z2 Plus Android 10定制ROM上线,老机型刷起来……可惜手机报废了,没办法试试了。
小米5:【小米5】MIUI 9 MIUI 10 官方ROM历史刷机包汇总小米5刷机包

fastboot指令说明
fastboot device手机处于FASTBOOT模式,输入指令后展示为4732dac10104 fastboot,则设备正常。
fastboot update update.zip更新系统。
fastboot flash boot boot.img输入boot镜像。
fastboot flash system system.img输入系统镜像。
fastboot flash recovery recovery.img输入recovery镜像。
➜  mido_images_9.5.16_20190516.0000.00_7.0_cn tree
.
├── flash_all.bat // 重刷所有分区的数据,Windows使用
├── flash_all.sh  // 重刷所有分区的数据,Unix系列的系统使用,包括OS X和Linux
├── flash_all_except_storage.bat
├── flash_all_except_storage.sh
├── flash_all_lock.bat
├── flash_all_lock.sh
├── flash_all_lock_crc.bat
├── flash_all_lock_crc.sh
├── flash_factory.bat
├── flash_factory.sh
├── flash_gen_crc_list.py
├── flash_gen_md5_list.py
├── flash_gen_resparsecount
├── images
│   ├── NON-HLOS.bin
│   ├── adspso.bin
│   ├── boot.img
│   ├── cache.img
│   ├── cmnlib.mbn
│   ├── cmnlib64.mbn
│   ├── crclist.txt
│   ├── ***.img(省略,太长了)
│   └── userdata.img
├── md5sum.xml
└── misc.txt
  • 使用./flash_all.sh就可以救机了~O(∩_∩)O
➜  mido_images_9.5.16_20190516.0000.00_7.0_cn ./flash_all.sh
product: mido
(bootloader) 	Device unlocked: true
......(我觉得你们不会看的)......
Finished. Total time: 15.147s
Rebooting                                          OKAY [  0.006s]
Finished. Total time: 0.006s

安装

下面的设置说明和部署设置都是Linux Deploy的。

安装成功的极简配置

安装类型成功原因
镜像文件
目录找不到/bin/sh
分区最靠谱的方案,没有之一
RAM没试过
自定义没试过

镜像文件

  • 左上角按钮
    • PATH 变量:/sbin,需要使用BusyBox安装指令到/sbin路径,然后在Linux Deploy中配置为一致的路径。Android 7.0实验通过。
    • 更新操作环境
  • 右下角按钮
    • 发行版:Ubuntu
    • 架构:armhf
    • 发行版 GUN/Linux 版本:xenial
    • 源地址:http://mirrors.ustc.edu.cn/ubuntu-ports
    • 安装类型:镜像文件
    • 安装路径:${EXTERNAL_STORAGE}/linux.img
    • 用户密码:自己改
    • 启用SSH服务器:✔️
    • 允许使用音频输出:✔️
    • 允许使用图形环境:✔️
    • 图形子系统:VNC,VNC的密码和用户密码一致,端口号为5900
    • 桌面环境:LXDE

参考自:Android 搭建Linux系统

分区

  • 制作分区
    • 使用工具(可以使用TWRP或者是Windows上的软件)将SD卡分为FAT32、EXT4(安装Linux)、SWAP。
  • 使用adb或者是其他一些命令行工具找到分区号
    • 根据分区的的顺序,可以依次找出对应的分区。
mido:/dev/block # ls | grep mmcblk1 # 找出我们制作好的分区
mmcblk1
mmcblk1p1 # FAT32
mmcblk1p2 # EXT4
mmcblk1p3 # SWAP
  • 其他配置参照镜像文件,安装类型改为分区,安装路径改为mmcblk1p2,之后点击右上角按钮安装即可。

设置说明

各项设置说明设置选项说明
设置1锁定屏幕这个根据个人喜好可以选择开启,推荐关闭,因为你要对linux进行操作的话用的是VNC Viewer或者ssh,和Linux Deploy没半毛钱关系,关了吧。
设置2锁定Wi-Fi这个推荐开启,防止vnc或者ssh突然掉线,关闭wifi也是可以在本地操作linux的。
设置3语言选择简体中文后,退出软件再次进入即可完成语言切换。
设置4字体大小自带终端的字体显示大小,根据个人喜好调整,默认12。
设置5滚动大小自带终端最大保留数据行数,默认100行。
设置6主题分为暗色和亮色,根据个人喜好调整。
设置7显示图标推荐开启,防止后台被系统杀掉。
设置8开机启动推荐关闭。
设置9环境目录Linux Deploy的系统环境目录,不推荐修改。
设置10内置终端默认开启即可。
设置11建立符号链接关了就行了。
设置12更新环境在设置完成后需要运行一次,如果有修改设置9的话,需要在修改后再次运行一次。
设置13移除环境在修改设置9前执行一次这个选项。
设置14调试模式显示各种调试信息。
设置15跟踪模式我个人理解为设置14的加强版,显示数据量更多,包括各种后台的操作命令都显示出来了。
设置16日志是否选择记录终端操作日志,推荐关闭,根据个人喜欢选择。
设置17日志文件给设置16选择一个保存目录。

部署设置

设置项说明
发行版包括很多了,我选的是Kali。
发行版版本发行版代号。
架构根据处理器不同,需要选择不同的架构,一般自动认识别出当前CPU架构并选择。
镜像地址默认是发行版的官方默认源,都是国外的,可以自己设定国内的源。比如 Debian,可以设定Debian中国官方源http://ftp.cn.debian.org/debian/。可见 - 源地址推荐
安装类型默认选择文件即可。(文件相对比较慢,分区比较快;成功率最高的是目录和分区。)
安装路径这个设置会比较麻烦,很多机器默认是/storage/emulated/0/等等这种类型,这种的特别容易出现读取错误的情况,推荐修改为/sdcard/xxx的格式,xxx可以是自定义的存储目录,当然你直接把img镜像安存储器根目录也没什么不可以。
镜像大小这个得依照你存储器的文件系统和剩余空间大小来定了,如果是FAT32的文件系统那最大设置不能超过4095MB,但是exFAT或者Ext4的就没这个限制,只要你空间够,设置多大都可以。
用户名linux用户名,不用多说。
User passwordlinux用户密码,默认是android,之后系统的登陆密码就是这个。
DNS服务器这个一般不用填了。
本地化就是linux的locale设置,中文的话就是zh_CN.UTF-8。
桌面环境默认是LXDE,我选的Xfce,如果有自信的话可以试试其他的,反正我就XTerm、LXDE、Xfce能正常运行,其他全是x-server崩溃,不知道什么原因。
选择组件桌面环境根据个人喜好选择,如果不选桌面环境VNC服务器就无法运行,上面选的桌面环境也不会安装。SSH推荐选上,Android上操作linux还是命令行用起来容易些。
Chroot目录这个设置不用管。
SSH推荐开启,使用JuiceSSH或者ConnectBot SSH进行管理很方便。
SSH设置调整SSH服务端口号,默认22,不推荐修改。
图形界面要是安装了桌面环境和VNC服务器就开启吧。
图形子系统默认VNC,其他两个我不会设置就不做介绍了。
图形化界面设定颜色深度改为24,DPI不动,长宽自行根据机器情况进行调整。
自定义脚本我没用过…
自定义挂载推荐开启,可以访问机器的存储。
挂载点挂载目录的绝对路径,直接设置根目录/也没什么不好,在linux中可以cd /mnt 进行访问和管理。

安装过程

  1. 首先,安装BusyBox,打开之后BusyBox后,安装BusyBox提供的工具集。
  2. 安装了Linux Deploy后,打开,如下图,
    1
    假如你需要中文,点击左上角的按钮,找到Setting -> language -> 简体中文。
  3. 之后,点击左下角下载图标,
    2
  • 下面演示的是安装类型是文件的教程。
    3
    这里的安装路径自行定义成绝对路径,不知道路径的可以下载re管理器进行查看。需要注意的是在SD卡中限制最大大小为4096M,比较小,假如你需要更多的内存,可以使用分区安装。
  • 推荐:分区安装。首先,你需要有外置SD卡,使用分区软件将SD卡分成两个区,一个是FAT32格式的(内存卡默认格式),一个是EXT4(最好是EXT4格式的,当然你要EXT2或者EXT3也是可以的),EXT4分区用来安装Linux。
    • 在Deploy Linux中设置安装类型为分区
    • 安装路径为/dev/block/mmcblkXpY
      • X表示是那一块内存,系统的默认为0,内存卡默认为1
      • Y表示当前内存的分区位置,可以用re管理器/dev/block中查看你的分区的位置。
      • 文件系统选择EXT4(最好是EXT4格式的,当然你要EXT2或者EXT3也是可以的)
    • (内置的我不知道怎么弄,但是有一个软件Apps2SD,自带分区功能)
  1. 点击安装即可。4

    • 说明:
    • 安装(重装)的时候需要按最下面的停止按钮一次。
    • 要是改了右下角的下载图标的配置,就要点击左上角的配置,让设置生效。
  2. 安装过程根据网速不同时间长短不定,当安装完成后会出现

    deploy>>......<<deploy
    

    两者之间没有错误信息,并且是有内容的。

  3. 点击启动,就可以在Android手机使用Linux了。

Linux的使用

Linux Deploy是不提供终端的,所以我们需要自己下载终端模拟器,常见的有以下这些:

手机端

  • ConnectBot SSH登陆客户端
    • 默认端口是22,也可以在设置里面设置为其他的。要使用SSH功能需要在右下角的下载图标->SSH Enable那里打勾。
    • 默认登陆指令:
      • ssh 用户名@ip地址:端口(Linux中)
      • IP地址在标题栏[X.X.X.X]
    • 在ConnectBot中单单需要填用户名@ip地址:端口
  • 终端模拟器
    • 默认登陆指令:
      • telnet ip 端口

window

Window端需要下载一个PUTTY。

密码登陆

假如你的linux不设置密钥登陆,使用密码登陆的话。

在这里插入图片描述

直接填入ip地址,确认即可登陆。IP在Linux Deploy页面的状态栏,被挡住了请关闭竖屏锁定,横屏即可看到了。

密钥登陆

1.填入地址:
在这里插入图片描述

2.填入主机名(你的Linux 用户名):
PUTTY
PUTTY
3.下面一步我们需要另外一个软件PUTTYgen生成*.ppk文件,在下面这张图右边Brower哪里导入使用的。
PUTTY
4.打开PUTTYgen。
PUTTYgen
5.导入你的密钥,并生成*.ppk文件。生成好了后,返回步骤3,Brower进去,确认即可。
PUTTYgen

Linux

linux是最简单的,直接在终端执行ssh 用户名@ip地址:端口语句即可。

源地址推荐

  • 中科大 - http://mirrors.ustc.edu.cn/Linux`s Name/
  • 阿里云 - http://mirrors.aliyun.com/Linux`s Name/
    • 比如: http://mirrors.aliyun.com/kali/

选择桌面

可以使用update-alternatives --config x-session-manager切换桌面。

VNC

安装完桌面,我们可以使用VNC来可视化。

对于VNC和SSH服务器的设置,如果是在手机上操作的话,地址可以直接填localhost,端口号SSH默认是22(前面修改了的自己调整),VNC端口号为执行vncserver后提示的端口号,一般为1


注意: Kali有些版本是自带vncserver的,可以使用执行vncserver查看是否安装了。

1.在Linux Kali上安装vnc4server(debian系列通用)

sudo apt-get install vnc4server

2.启动vnc4server,输入vnc4server此时系统会提示你输入密码,在通过客户端链接时将会用到这个密码。

You will require a password to access your desktops.

Password:<-这里要求输入密码
Verify:<-核对密码
xauth:  file /root/.Xauthority does not exist

New 'localhost:1 (root)' desktop is localhost:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost:1.log

设置完之后,我们需要修改xstartup的配置

vim /root/.vnc/xstartup

之后,修改文件,下面是XFCE桌面环境的。

#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &

#这里我安装的是XFCE的,如果不是这个,请注意修改下面这一句。
startxfce4 &

要是需要修改vnc界面参数,可以修改/etc/vnc.conf文档进行设置。

VNC常见错误

Kali中VNC遇到的错误

假如遇到了这种问题:(这个错误前提是你安装了vncserver,但是你不小心删了vncpasswd这个文件,就会出现这个错误了)

root@localhost:~/.vnc# vncserver 

You will require a password to access your desktops.

vncserver: Couldn't find "tigervncpasswd" on your PATH.
	Please install the tigenvnc-common package, i.e., sudo apt-get install tigenvnc-common.

只需要下载一个东西就行了。在终端输入

apt-get install vnc-server

终端显示:

root@localhost:~/.vnc# apt-get install vnc-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package vnc-server is a virtual package provided by:
  tigervnc-xorg-extension 1.7.0+dfsg-2
  tigervnc-standalone-server 1.7.0+dfsg-2
  tigervnc-scraping-server 1.7.0+dfsg-2
You should explicitly select one to install.

E: Package 'vnc-server' has no installation candidate

之后,直接选第一个安装即可,因为我们缺少的就是vncpasswd这个组件。

apt-get install tigervnc-xorg-extension

Linux使用

Kali Linux

Kali安装常见软件

Kali 汉化

如果没有安装locale工具,则首先要安装它,修改/etc/locale.gen内文件,以enzh前面#删除掉。然后执行

dpkg-reconfigure locales

选择语言包。需要添加上zh_CN开头的几个选项,当然你也可以只添加一个,然后,选择其中的一个作为默认。设置完成后,执行locale命令检查一下当前的locale设置是否为中文了。

终端执行下面命令:

echo "LANGUAGE=zh_CN:zh:en_US:en" >> /etc/environment
echo "LC_CTYPE=zh_CN.UTF-8" >> /etc/environment
echo "LANG=zh_CN.UTF-8" >> /etc/environment

如果我们重启桌面后,发现整个系统的界面显示的还是英文。使用locale命令检查系统的locale设置,发现已经配置为中文。
  假如你遇到了某些应用的标题等显示为中文,但是工具菜单等显示和文件管理器等都显示成了英文。这种情况很有可能是因为/etc/enviroment文件里有关语言的环境变量的设置不对。打开/etc/enviroment文件,通常会发现下面两个字段:

LANGUAGE="en_US:en"
LANG="zh_CN"

在LANGUAGE字段添加中文的设置,比如:

LANGUAGE="zh_CN:zh:en_US:en"

中文环境当然需要中文字体的支持,手工添加中文的xft字库。详见下方安装文泉驿字

安装后,重启桌面即可享用中文版Linux Kali了

Debian

安装Lnmp

ヽ(°◇° )ノ注意:一定要改完再执行install.sh或者upgrade.sh

在安装lnmp的时候,需要修改脚本文件,主要是在Lnmp主目录下的include下的php.shupgrade_php.sh都需要更改。主要原因是因为Android(树莓派同理,也是要改脚本的。o(︶︿︶)o 唉)不支持ZendOptimezerZendLoad。反正在vim或者vi编辑器中搜索zend,有的全部删除。删除内容如下图:从cd 行开始删除到EOF行(包括EOF行)。删除好了执行install.sh或者upgrade.sh即可。
LNMP脚本更改

最终效果

XFCE

Linux最终效果

LXDE

最终效果

附录

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值