在Termux中proot-distoro可以安装发行版Linux,还可以备份还原linux。对我这个Termux迷来说,简直是神器。可以备份还原,就可以分享自己配置的环境了。甚至可以当作一个快照功能的做测试用。

安装Linux发行版

Termux提供了一个proot-distro软件包,用于管理Termux内部的Linux发行版。据说几乎没有性能损失。

您可以通过执行以下命令安装该实用程序
安装proot-distro

pkg install proot-distro

目前,它支持以下发行版:
Alpine Linux(别名:alpine)-最小的可用发行版。
Arch Linux(别名:archlinux)
Debian 10 Buster(别名:debian-buster)
Kali Nethunter(别名:nethunter)-当前只有最小的构建。
Ubuntu 18.04 / 20.04(别名:ubuntu-18.04 / ubuntu-20.04)
要安装发行版,只需运行以下命令(假设已安装proot-distro):

# 查询支持哪些发行版本
proot-distro list1
proot-distro install <alias>

我安装的 是archlinux,如下命令:

proot-distro install archlinux

archlinux大概需要下载600M左右的文件,执行时间看你的网速了。如果想下载一个较小的发布版本可以试试其他的,比如:proot-distro install ubuntu-20.04只需要下载25M左右。见:《玩转手机中的linux系统termux并搭建java开发环境》https://blog.csdn.net/lxyoucan/article/details/113831014。安装alpine会更小,只需要2.5M左右。

命令执行结果如下:

~ $ proot-distro install archlinux
[*] Installing Arch Linux...
[*] Downloading rootfs tarball...% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100   646  100   646    0     0    551      0  0:00:01  0:00:01 --:--:--   551
100  549M  100  549M    0     0  1119k      0  0:08:22  0:08:22 --:--:-- 1964k[*] Checking integrity, please wait...
[*] Extracting rootfs, please wait...
[*] Writing '/data/data/com.termux/files/usr/var/lib/proot-distro/installed-rootfs/archlinux/etc/profile.d/termux-proot.sh'...
[*] Writing resolv.conf file (NS 1.1.1.1/1.0.0.1)...
[*] Writing hosts file...
[*] Registering Android-specific UIDs and GIDs...
[*] Running distro-specific configuration steps...
gpg: /etc/pacman.d/gnupg/trustdb.gpg: trustdb created
gpg: no ultimately trusted keys found
gpg: starting migration from earlier GnuPG versions
gpg: porting secret keys from '/etc/pacman.d/gnupg/secring.gpg' to gpg-agent
gpg: migration succeeded
gpg: Generating pacman keyring master key...
gpg: key CD1AFEBD84DEF5CA marked as ultimately trusted
gpg: directory '/etc/pacman.d/gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/etc/pacman.d/gnupg/openpgp-revocs.d/5BE44E190E37181EE9000E0FCD1AFEBD84DEF5CA.rev'
gpg: Done
==> Updating trust database...
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
==> Appending keys from archlinuxarm.gpg...
==> Locally signing trusted keys in keyring...-> Locally signing key 69DD6C8FD314223E14362848BF7EEF7A9C6B5765...-> Locally signing key 02922214DE8981D14DC2ACABBC704E86B823CD25...-> Locally signing key 9D22B7BB678DC056B1F7723CB55C5315DCD9EE1A...
==> Importing owner trust values...
gpg: setting ownertrust to 4
gpg: inserting ownertrust of 4
gpg: setting ownertrust to 4
==> Updating trust database...
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   3  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:   3  signed:   1  trust: 0-, 0q, 0n, 3m, 0f, 0u
gpg: depth: 2  valid:   1  signed:   0  trust: 1-, 0q, 0n, 0m, 0f, 0u
Generating locales...en_US.UTF-8... done
Generation complete.
checking dependencies...
:: base optionally requires linux: bare metal supportPackages (5) diffutils-3.7-3  linux-firmware-20200721.2b823fc-1  mkinitcpio-28-1  mkinitcpio-busybox-1.31.1-1  linux-aarch64-5.8.0-1Total Removed Size:  711.25 MiB:: Do you want to remove these packages? [Y/n]
:: Running pre-transaction hooks...
(1/1) Removing linux initcpios...
:: Processing package changes...
(1/5) removing linux-aarch64                                                            [###################################################] 100%
(2/5) removing mkinitcpio                                                               [###################################################] 100%
(3/5) removing mkinitcpio-busybox                                                       [###################################################] 100%
(4/5) removing diffutils                                                                [###################################################] 100%
(5/5) removing linux-firmware                                                           [###################################################] 100%
:: Running post-transaction hooks...
(1/3) Reloading system manager configuration...Skipped: Current root is not booted.
(2/3) Arming ConditionNeedsUpdate...
(3/3) Updating module dependencies...
[*] Installation finished.Now run 'proot-distro login archlinux' to log in.

就这么简单,我们竟然在手机上安装了archlinux,当初我在vmware中安装archlinux可是费了好大劲的。
《2021年vmware安装archlinux》
https://blog.csdn.net/lxyoucan/article/details/115226297

现在已经安装完成了archlinux,怎么进入archlinux呢?
进入archlinux

proot-distro login archlinux

执行结果如下:

~ $ proot-distro login archlinux
[root@localhost ~]#

出现了root和#的标识了,这意味着我们现在可以为所欲为了!

切换国内源

使用说明
编辑 /etc/pacman.d/mirrorlist ,在文件的最顶端添加

Server = https://mirrors.ustc.edu.cn/archlinuxarm/$arch/$repo

详细了解见:
https://mirrors.ustc.edu.cn/help/archlinuxarm.html#id1

使用pacman安装软件之前先更新一下系统

#更新系统,不然可能安装软件报错
pacman -Syyu

archlinux安装软件

以安装vim为例

pacman -S vim

neofetch

pacman -S neofetch

安装设置中文

查看当前语言环境

echo $LANG

查看当前系统是否有中文语言包

locale -a

如果没有中文语言包

vim /etc/locale.gen

查看文件中是否有zh_CN.UTF-8在文件中增加一行

zh_CN.UTF-8 UTF-8

配置完成以后运行:

locale-gen

生成 locale。
向 /etc/locale.conf 输入内容

echo 'LANG=zh_CN.UTF-8'  > /etc/locale.conf

然后,修改/etc/environment(在文件的末尾追加):

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"

/etc/environmen这一步加不加实测效果一样,我不清楚为什么这里的环境变量没有生效,反正还是加一下放心一些吧。

手动执行一下export LANG=zh_CN.UTF-8

这里我们输入date查看时间,发现已经有中文了。

[root@localhost ~]# date
2021年 05月 13日 星期四 07:48:25 UTC

重启进的时候发现还是英文的,那我把就把LANG设置放进环境变量里吧。

#这里环境变量根据自己的环境来,如果是zsh才放到zsh的配置文件中
vim /etc/bash.bashrc

在底部增加:

export LANG=zh_CN.UTF-8

备份与还原

这里以备份alpine为例,其他系统备份请用别的发行版本的名称。

备份之前退好先 重启Termux,防止发行版本正在运行,导致备份出错。
备份镜像

#备份alpine
proot-distro backup alpine --output ./alpine20210513.tar.gz
#备份archlinux
proot-distro backup archlinux --output ./archlinux20210513.tar.gz

命令解释:
把当作alpine发行版备份到当前目录下的alpine20210513.tar.gz文件

还原镜像
⚠️警告还原操作会删除数据!
还原后就是备份的数据了。

proot-distro restore alpine.tar.gz

分享备份文件

有时候做好的开发环境,想要分享给小伙伴们要怎么处理呢?
运行下面命令:

termux-setup-storage

手动会弹出如下窗口:

选择 【始终允许】
这时~/storage/ 目录就有手机的存储目录了。如下:

~ $ cd ~/storage/
~/storage $ ls
dcim  downloads  movies  music  pictures  shared

把文件放到这里的目录就可以分享给好友啦!
比如放到downloads目录,使用手机的文件管理器,找到downloads目录点相应的文件点击分享,发送给qq好友就行了。

卸载发行版本

警告警告,会删除数据!

proot-distro remove alpine

参考文件

  • 《Sharing Data》https://wiki.termux.com/wiki/Sharing_Data

Termux中proot-distro安装备份还原linux发行版笔记相关推荐

  1. fossid安装教程_如何在一个 U 盘上安装多个 Linux 发行版

    本教程介绍如何在一个 U 盘上安装多个 Linux 发行版.这样,你可以在单个 U 盘上享受多个现场版live Linux 发行版了. 我喜欢通过 U 盘尝试不同的 Linux 发行版.它让我可以在真 ...

  2. Linux 桌面玩家指南:11. 在同一个硬盘上安装多个 Linux 发行版以及为 Linux 安装 Nvidia 显卡驱动...

    Linux 桌面玩家指南:11. 在同一个硬盘上安装多个 Linux 发行版以及为 Linux 安装 Nvidia 显卡驱动 原文:Linux 桌面玩家指南:11. 在同一个硬盘上安装多个 Linux ...

  3. 如何安装微软的Linux发行版CBL-Mariner 1.0

    CBL-Mariner 1.0 是微软为内部使用而开发的这个新 Linux 发行版的第一个稳定版本. 了解如何在 VirtualBox 上安装它. 毫无疑问,微软近年来对 Linux 表现出了更多的真 ...

  4. WSL:删除已安装好的Linux 发行版

    如果您从 Windows 11 或 10 上的备份中导入 Linux 发行版,您将找不到从"设置"应用.命令提示符或 PowerShell 中卸载它的选项.在这种情况下,您需要取消 ...

  5. 32位 shell.efi x86_通过grub,让32位的efi也能运行64位的Linux发行版

    GRUB是什么 是一个来自GNU项目的启动引导程序.GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统.GRUB可用于选择操作系统分区上的 ...

  6. 哪个版本的linux适合个人主机,2020年适合个人使用的Linux发行版推荐TOP5

    Linux发行版太多,普通用户应该怎么选?本文就推荐了5款Linux发行版,好用又漂亮,非常适合新手. 01.Deepin Deepin 机器配置不弱,始终推荐deepin. Deepin系统一直都是 ...

  7. Linux发行版之间有什么区别?

    文章目录 Linux发行版之间的5个主要区别 1 桌面环境 2 软件包管理器 3 Linux上的不同显示服务器 4 目标和宗旨 5 开源与专有哲学 所有发行版的共同点:Linux内核 利用Linux的 ...

  8. linux升级grub,如何更新 grub在 Ubuntu 或其他 Linux 发行版上

    在这篇文章中,你将学习在 Ubuntu 或任何其它 Linux 发行版上更新 grub .你也将学习一个或两个关于更新这个 grub 过程如何工作的事情. -- Abhishek Prakash 在这 ...

  9. 2022 年适用于旧硬件的 10 个轻量级 Linux 发行版-谷歌翻译

    我们重点列出了 2022 年非常适合您的旧 PC 的 10 个轻量级 Linux 发行版的列表.我们为您提供它们的功能以及使它们非常适合复兴旧硬件的原因. 我们认为您不应丢弃任何硬件,尤其是 PC 及 ...

  10. 最小linux 服务器版本,2019 年推荐 3 款最小 Linux 发行版 | linux资讯

    2019 年推荐 3 款最小 Linux 发行版 Linux 发行版众多,主流的 Linux 发行版例如 Ubuntu,Manjaro,Debian,Mint,Deepin 一般都很大,也很少能适应配 ...

最新文章

  1. 安装SQL SERVER2000提示注册表文件被挂起的解决方案
  2. php写网页6,基于ThinkPHP6+AdminLTE框架开发的响应式企业网站CMS系统PHP源码,ThinkPHP6开发的后台权限管理系统...
  3. 计算机导航辅助教程,计算机导航辅助下微创人工全膝关节置换的初步经验
  4. Linux 性能分析的前 60 秒
  5. ros 配置udev
  6. jsp复选框追少选择一个否则不能提交_Filecoin的惩罚机制/至联云IPFS:选择无良矿商,你的抵押币就回不来了...
  7. SQL server 系统优化--通过执行计划优化索引(1) (转)
  8. strace命令_在软件部署中使用 strace 进行调试
  9. kmeans及模型评估指标_使用sklearn评估器构建聚类模型
  10. php环境搭建及入门
  11. 如何使用 Mac 中的“信息”?
  12. SQL 比较时间大小
  13. Java Web之EL表达式和JSTL
  14. 找到某个关键字 同义词词林 python_Python从小白到攻城狮(7):函数
  15. python修改pdf内容_如何编辑pdf文件,替换其数据?
  16. flume中HDFS IO error
  17. 不同方式实现IP访问限制
  18. python 基础一
  19. 红米6A刷LineageOS17.1
  20. 一文带你看透 Chrome 浏览器架构

热门文章

  1. 【卸载双系统中的linux系统】删除引导
  2. Redis运行时突然不能读取数据了
  3. Python之选择结构(案例1:快递价格计算系统)
  4. python常用语音识别库_干货收藏 | Python语音识别终极指南
  5. 机器学习sklearn(13)层次聚类
  6. opencv实现移动速度计算
  7. SpringBoot项目 四种读取properties文件的方式
  8. linux强制删除只读文件夹,强制删除文件夹linux的方法是什么
  9. 一元非线性方程求根的算法——二分法/牛顿迭代法
  10. SpringBoot上传文件报The field file exceeds its maximum permitted size of 1048576 bytes.