Linux Deploy 自定义配置 Ubuntu20.04.6LTS(focal)

AI摘要:

准备条件:一部安卓手机,需要root

安装方式:自定义安装Linux镜像

参考链接

1.安装Busybox

  • 下载安装busybox:https://github.com/meefik/busybox,版本1.34.1
  • 需要root权限,Install 路径默认 system/xbin
  • Tips:该软件最好安装,安装后会自带很多Linux命令集,比如ping命令,不安装的话使用ping命令会提示not find command

2.Linux Deploy

  • 下载安装Linux Deploy :https://github.com/meefik/linuxdeploy,版本2.6.0

  • 左上角设置环境如下,然后更新操作环境:

    ENV目录 /data/user/0/ru.meefik.linuxdeploy/files

    PATH变量 /system/xbin

3.容器安装配置

  1. 发行版: rootfs.tar

  2. 源路径 : 选取本地文件(全路径+文件名)${EXTERNAL_SRORAGE}/rootfs.tar.xz

    下载地址:https://mirrors.bfsu.edu.cn/lxc-images/images/ubuntu/focal/arm64/cloud/20240610_08%3A13/rootfs.tar.xz

    可在右上角状态中查看系统架构,小米平板2选择amd64,Le2选择arm64

  3. 安装类型: 镜像

  4. 安装路径:${EXTERNAL_SRORAGE}/Linux/ubuntu.img

  5. 镜像大小: 对应容器大小(10240M也能成功)

    不要选择自动而是512M以上的值, 并且如果你是通过busybox安装的linux指令环境那么镜像文件大小也不能超过2G

  6. 文件类型: 选择 ext4 即可

  7. 用户名及密码自行设置即可(不要设置 root 用户即可)

  8. 本地化: zh_CN.UTF-8

  9. 挂载点: 即将手机目录挂在载安装的 linux 下某个目录, 看自己需求

    例:/storage/emulated/0:/mnt/sdcard/

  10. SSH: 由于 rootfs 文件里面一般没有 openssh-server, 因此安装时这里不勾选。等到完成后再通过内部通道安装 openssh-server 打开 ssh 服务

  11. GUI: 安装阶段请勿勾选, 会失败, rootfs.tar 没有相关资源

4.安装

  • 点击右上角安装

    若报错making file system(ext4)…fail,则是因为在安装路径已有镜像文件,删除后重新安装

5.进入虚拟机环境

无SSH,通过其他方法进入虚拟机环境(三种可选)

  • 点击Linux Deploy左上角设置,打开Telnet选项,记住端口号,关闭仅本地主机可连

    1
    telnet {ip地址} 5023
  • 开启USB调试,使用adb进入

    1
    adb shell
  • 安装软件JuiceSSH

    安装链接:小米应用商店

    新建连接,类型选择本地设备,点右上角对勾即可

输入su回车,取得root超级权限

1
su

输入以下命令回车,进入安装的虚拟机内

1
/data/user/0/ru.meefik.linuxdeploy/files/bin/linuxdeploy shell -u root

此时可能报错:chroot: can’t execute ‘/bin/su’: No such file or directory

不知道为什么会报这个错,重启手机,不行就重装

成功进入会出现[root@localhost#] 即表示登录进容器内。

6.其他问题解决

  1. 修复DNS解析错误

    删除/etc/resolv.conf, 重新创建一个/etc/resolv.conf文件, 建议把权限设置为755。

    1
    2
    rm /etc/resolv.conf
    touch /etc/resolv.conf && chmod 755 /etc/resolv.conf

    然后在软件页面先stop再使用前面进入容器, 再用vi命令查看/etc/resolv.conf文件内容是否与你的网关相匹配

    1
    2
    vi /etc/resolv.conf
    cat /etc/resolv.conf

    最后, 使用ping baidu.com命令检查网络连接, 但是可能此时并不能进行软件下载和更新, 因为现在软件源时国外的源。

    1
    ping baidu.com
  2. 修复apt安装错误

    使用vi修改/etc/passwd中_apt的65535(65534)为3003。操作: 命令: vi /etc/passwd, 再输入/_apt再按enter, 再按i键, 修改65535(65534)为3003, 再按ESC键最后再按:wq回车保存即可

    1
    vi /etc/passwd
  3. 更新软件源为国内源:

    即修改/etc/source.list文件为国内网易, 阿里, 中科大等的镜像网站。可以试试百度修改debian(版本) 国内源, 然后apt-get update后面就是安装软件了

    1
    2
    vi /etc/source.list
    apt-get update

    推荐北师大软件源:

    1
    2
    3
    4
    deb https://mirrors.bfsu.edu.cn/ubuntu/ focal main restricted universe multiverse
    deb https://mirrors.bfsu.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
    deb https://mirrors.bfsu.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
    deb https://mirrors.bfsu.edu.cn/ubuntu/ focal-security main restricted universe multiverse
  4. 安装SSH服务端

    上面的工作完成后现在安装SSH服务端开启SSH服务即可, 输入apt install openssh-server, 然后在linux deploy软件容器配置里勾选SSH即可

    1
    apt install openssh-server
  5. 用户无法使用ping

    root用户登录使用命令usermod -G 3003 root, 重启容器解决。新创建的用户只是将root改为新创建的用户名即可。

    1
    usermod -G 3003 root
  6. root登录其他用户tab键失效

    root账户登录终端输入ln -sf /bin/bash /bin/sh, 软链接bash和sh, 或者搜索 切换默认sh为bash

    1
    ln -sf /bin/bash /bin/sh

7.ssh连接

  • 右下角启用SSH,默认22端口

  • 右上角点击配置,重新配置文件

  • 点击启动,看到ssh应该启动了

可能出现 Permissions 0644 for ‘/Users/…/.ssh/..’ are too open…(重装容器解决)

8.备份 rootfs

右上角导出,选择导出位置,等待完成即可

9.解决chroot下无法使用systemctl

安装

1
2
3
4
wget https://github.com/smaknsk/servicectl/archive/1.0.tar.gz
sudo tar -xf 1.0.tar.gz -C /usr/local/lib/
sudo ln -s /usr/local/lib/servicectl-1.0/servicectl /usr/bin/servicectl
sudo ln -s /usr/local/lib/servicectl-1.0/serviced /usr/bin/serviced

使用servicectl

1
sudo servicectl action service

‎此命令仅执行文件 /usr/lib/systemd/system/${service}.service中的${action}, 如果通过的操作启用或禁用,则servicectl将在 ${service}.service上创建或删除symlink以供使用服务。‎

参数:

  • action - 可以是 {start, stop, restart, reload, enable, disable}
  • service -在/usr/lib/systemd/system/文件夹中的文件

使用serviced

1
sudo serviced action

‎此命令执行 ${action} 为所有启用服务。‎

参数:

  • action -默认是start,也可以是: {start, stop, restart, reload, disable}

例如

1
2
3
4
5
6
# inside chroot
sudo servicectl enable mariadb

# outside chroot:
# init startup and run all enabled daemons
sudo chroot /path/to/chroot serviced

Linux Deploy 自定义配置 Ubuntu20.04.6LTS(focal)
https://blog.cngo.rr.nu/posts/557a.html
作者
cngo
发布于
2024年6月17日
许可协议