- 安装 termux
下载地址如下,下载arm64的那个,然后直接安装
https://github.com/termux/termux-app/releases
- 打开termux,查询手机ID(手机不方便输入,我这里是oppo手机,使用了oppo的跨屏互联)
任意网卡的IP都行,除了 lo,lo是回环地址,指向的本地。 - 安装ssh工具
#安装ssh
pkg install openssh
#启动ssh,需要注意这里的ssh默认端口是8022,不是22
sshd
#加入开机自动启动sshd(如果需要就开启,不需要就不开启),去掉开机启动去对应文件删除sshd,这里的开机启动时开启termux就启动,并不是手机开机就启动,如果需要开机就启动,把termux设置成开机启动。
echo "sshd" >> ~/.bashrc
#如果需要alpine的虚拟机也是开机启动
#vi .bashrc 输入以下内容
sshd
cd /data/data/com.termux/files/home/alpine
./run.sh
- 查看当前用户名和设置密码
#查看用户名,我这边结果是u0_a377,你应该是不同的
whoami
#给当前用户设置密码,也就是给u0_a377这个用户设置密码
passwd
- 使用任意ssh工具远程连接
这里的IP是前面查询到的IP,变了wifi所以IP变了。 - 安装 wget 和 vim
安装可后面备用
pkg install wget
pkg install vim
- 安装qemu
apt install qemu-utils qemu-common qemu-system-x86_64-headless
- 下载Alpine linux系统(这里需要下载 arm架构的linux ,x86的 centos 或者 Ubuntu 不确定能不能用,qemu好像都支持)
mkdir alpine && cd $_
wget http://dl-cdn.alpinelinux.org/alpine/v3.12/releases/x86_64/alpine-virt-3.12.3-x86_64.iso
- 创建虚拟硬盘
qemu-img create -f qcow2 alpine.img 5G
- 在QEMU里面启动安装alpine的引导程序
qemu-system-x86_64 -machine q35 -m 1024 -smp cpus=2 -cpu qemu64 \
-drive if=pflash,format=raw,read-only,file=$PREFIX/share/qemu/edk2-x86_64-code.fd \
-netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1 \
-cdrom alpine-virt-3.12.3-x86_64.iso \
-nographic alpine.img
然后使用root用户登录,这个用户是QEMU常见的虚拟机的默认用户是root和前面 termux的 用户无关。
- 网卡设置
setup-interfaces
#然后又更具配置配置网卡
ifup eth0
- 让开机时能输出信息
sed -i -E 's/(local kernel_opts)=.*/\1="console=ttyS0"/' /sbin/setup-disk
- 创建安装文件
vi answerfile
KEYMAPOPTS="us us"
HOSTNAMEOPTS="-n alpine"
INTERFACESOPTS="auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
hostname alpine
"
TIMEZONEOPTS="-z UTC"
PROXYOPTS="none"
APKREPOSOPTS="http://dl-cdn.alpinelinux.org/alpine/v3.12/main http://dl-cdn.alpinelinux.org/alpine/v3.12/community"
SSHDOPTS="-c openssh"
NTPOPTS="-c busybox"
DISKOPTS="-v -m sys -s 0 /dev/sda"
- 安装alpine
setup-alpine -f answerfile
- 安装完成之后关机
poweroff
- 创建启动脚本
touch run.sh
chmod 775
vim run.sh,然后输入以下内容(这时候手机的8081被映射到虚拟机的80端口)
#这是创建qemu的指令,详情参数查询qemu的文档
qemu-system-x86_64 -machine q35 -m 2048 -smp cpus=2 -cpu qemu64 \
-drive if=pflash,format=raw,read-only=on,file=$PREFIX/share/qemu/edk2-x86_64-code.fd \
-netdev user,id=n1,hostfwd=tcp::2222-:22,hostfwd=tcp::8081-:80 -device virtio-net,netdev=n1 \
-nographic alpine.img
- 启动qemu虚拟机里面的alpine系统
./run.sh
- 然后安装docker 和启动
alpine的包管理工具是apk,termux的包管理工具是 pkg,这类似centos的包管理工具是yum,ubuntu的是apt
#这个docker改了daemon.json的镜像地址以后依旧是连接的docker.io不知道为啥(后查找,别的地方的docker 也不能用了,好像国内的docker都不能用了)
apk update && apk add docker
service docker start
rc-update add docker
- qemu指定的端口是手机的8081映射到虚拟机的80端口,我们在虚拟机里面安装个nginx在外面是可以直接访问的
#安装nginx
apk add nginx
- 修改nginx的配置文件
默认配置文返回的都是404,修改以后可以在外面正常访问
修改以后启动
service nginx start
- 浏览器访问:http://192.168.156.42:8081/
- 有IPV6可以通过DDNS 映射出去作为移动服务器了,可以跑个redis ,mysql 之类的之类的小东西。
- 不知道安卓上的qemu虚拟机性能损失多少,如果需要性能可以考虑root以后直接在手机上安装ubuntu之类的linux,以达到性能最低损失