前言

本教程基于termux和alpine linux本质上就是一个基于qemu的Linux虚拟机,如果手里有闲置的安卓手机可以将其变为一台Linux服务器,无需root权限。国内镜像源不稳定,不推荐替换,请自行准备科学上网环境。
所需要的相关资料
图片加载缓慢点这里获取图片版教程

方法1:已经集成好了alpine的termux——Alpine Term app(已停止维护更新,版本较旧)

安装并打开app给与权限,等待系统启动,再根据提示输入用户名和密码(都是alpine)下面安装过程中需要输入的地方一律输入y即可

切换到root账户,输入密码alpine

sudo -s

更新软件包索引并升级已安装的软件包

apk update && apk upgrade

安装docker

apk add docker

启动docker

service docker start

将docker添加到开机自启动

rc-update add docker

后台启动

setsid containerd  
setsid dockerd

安装docker管理面板portainer以后就可以直接在portainer上面安装docker项目

docker run -d \
--name=portainer-zh \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
6053537/portainer-ce

如需远程ssh只需要安装openssh即可

apk add openssh

开启ssh密码登录

sed -i ‘s/PasswordAuthentication no/PasswordAuthentication yes/g’ /etc/ssh/sshd_config  

如需开启开机root用户登录

sed -i ‘s/PermitRootLogin no/PermitRootLogin yes/g’ /etc/ssh/sshd_config

重启sshd服务

service sshd restart  

alpine到termux的端口映射

因为是qemu套娃,所以需要映射端口,进入后,手指在软件的左上方向右滑,会出现菜单
如下所示:

例如映射ssh的22端口到手机的8022
选择 [1]QEMU,输入

hostfwd_add tcp::8022-:22

在同一局域网下就可以在电脑上通过ssh连接到到手机的虚拟机,ip为手机的ip,端口是映射到手机的8022
后续的服务安装好之后也需要手动映射端口
格式为

hostfwd_add tcp::手机端口-:虚拟机端口

如将上面的portainer映射到手机上

hostfwd_add tcp::9000-:9000

就可以在手机上通过http://localhost:9000访问portainer

方法2在termux里面安装Alpine Linux(系统更新,版本更高)

更新软件包索引并升级已安装的软件包

pkg update && pkg upgrade -y

安装必要的软件包

pkg install qemu-utils qemu-common qemu-system-x86_64-headless -y
pkg install wget -y
pkg install openssl -y

创建并进入alpine目录

mkdir alpine && cd alpine

下载Alpine Linux ISO文件

wget https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/x86_64/alpine-virt-3.20.0-x86_64.iso

创建10G的qcow2镜像文件(动态占用空间并不会直接占用10g空间)

qemu-img create -f qcow2 alpine.img 10G

创建run.sh脚本

cat << 'EOF' > run.sh

再输入

qemu-system-x86_64 -machine q35 -m 1024 -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 -device virtio-net,netdev=n1 \
  -cdrom alpine-virt-3.20.0-x86_64.iso \
  -drive file=alpine.img,if=virtio \
  -nographic
EOF

赋予run.sh可执行权限

chmod +x run.sh

运行run.sh脚本进入引导系统

./run.sh

耐心等待系统启动完成,然后输入root进入系统
下载快速安装系统的应答文件

wget https://github.com/xiumuzidiao0/Alpine-Linux/blob/main/answerfile -O answerfile

如果下载不了,直接创建文件

cat << 'EOF' > answerfile

再输入

KEYMAPOPTS="us us"
HOSTNAMEOPTS="-n alpine"
INTERFACESOPTS="auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
    hostname alpine
    dns-nameservers 8.8.8.8 8.8.4.4
"
TIMEZONEOPTS="-z Asia/Shanghai"
PROXYOPTS="none"
APKREPOSOPTS="http://dl-cdn.alpinelinux.org/alpine/v3.20/main http://dl-cdn.alpinelinux.org/alpine/v3.20/community"
SSHDOPTS="-c openssh"
NTPOPTS="-c busybox"
DISKOPTS="-v -m sys -s 0 /dev/vda"
EOF

打开开机时输出讯息到控制台

sed -i -E 's/(local kernel_opts)=.*/\1="console=ttyS0"/' /sbin/setup-disk

安装系统至硬盘

setup-alpine -f answerfile

期间会让你设置root用户密码,需要输入两次
并让你设置一个普通用户(可不设置,建议设置)然后会提醒是否擦除虚拟硬盘数据
输入一次y
再等待安装完成后出现alpine:~#
关机

poweroff

等待虚拟机关机完成,退出到termux界面出现alpine:~# ~/alpine $
创建启动脚本

cat << 'EOF' > start.sh

再输入

qemu-system-x86_64 -machine q35 -m 1024 -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 \
  -drive file=alpine.img,if=virtio \
  -boot order=c \
  -nographic
EOF

赋予run.sh可执行权限

chmod +x start.sh

运行run.sh脚本
./start.sh
脚本内容可以自己看着修改

添加端口映射

echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config