Android上chroot运行Debian笔记
Created 2021-08-30 / Updated 2022-11-30前提:
- 手机已root。
- 在手机SD卡上分出一个ext4分区,用以运行Debian。
先在PC上完成第一阶段:
# mkdir debian
# debootstrap --arch=arm64 --variant=minbase --foreign --no-check-gpg --components=main,contrib,non-free --include=vim,iputils-ping,whiptail bullseye ./debian https://mirrors.ustc.edu.cn/debian
完成后打包,传到手机上:
# tar cvpf debian.tar ./debian
打开手机上的Termux或其它终端模拟器,挂载SD卡上的ext4分区:
# su
# mkdir /data/local/linux
# mount -o noatime,exec,dev,suid /dev/block/xxx /data/local/linux
# tar xvpf debian.tar -C /data/local/linux
# export ROOT=/data/local/linux/debian
# mount -o mode=1777,nosuid,nodev -t tmpfs tmpfs $ROOT/tmp
# mount --bind /dev $ROOT/dev
# mount --bind /dev/pts $ROOT/dev/pts
# mount --bind /proc $ROOT/proc
# mount --bind /sys $ROOT/sys
# chroot $ROOT /usr/bin/env -i HOME=/root TERM='xterm-256color' PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash --login
在手机上完成第二阶段:
# ./debootstrap/debootstrap --second-stage
至此,系统已安装完成,接下来是配置部分:
创建用户组:
# groupadd -g 3003 aid_inet
(所有需要访问网络的用户都可以添加到该组中)
添加_apt
到aid_inet
用户组:
# gpasswd -a _apt aid_inet
将aid_inet
设为_apt
的主用户组:
# usermod -g aid_inet _apt
设置时区:
# dpkg-reconfigure tzdata
(不知为何,前面安装的whiptail
在这里居然不生效?奇怪)
设置DNS服务器:
# vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
设置主机名:
# echo "Debian" > /etc/hostname
# hostname Debian
添加以下内容到/etc/hosts
:
127.0.0.1 localhost
127.0.1.1 Debian(主机名)
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
更新软件源:
# apt-get update
设置语言环境:
# apt-get install locales
# dpkg-reconfigure locales
设置密码:
# passwd
添加用户:
# adduser xxx
清理:
# apt-get clean
其它:
一、访问手机存储卡的内容:
# groupadd -g 9997 aid_everybody
# gpasswd -a xxx aid_everybody
# mount --bind /sdcard /mnt
这样在Debian的/mnt
目录下xxx用户就能看到Android手机存储卡上的内容了。本人系统是Android 8.0版本,经测试,内部存储卡可正常读写,外部存储卡只有root才能写入。
二、在运行chromium或firefox时会有/dev/shm
相关的问题,可这样解决:
# mkdir /dev/shm
# mount -t tmpfs tmpfs /data/local/linux/debian/dev/shm
三、chroot
时切换到特定用户:
# chroot $ROOT /usr/bin/env -i HOME=/root TERM='xterm-256color' PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/dash -c 'su - <用户名>'
参考:
- https://wiki.debian.org/ChrootOnAndroid
- https://www.debian.org/releases/bullseye/arm64/apds03.en.html
- https://github.com/RezaSR/ChrootDebianOnAndroid