linux上的改键软件

笔记本电脑上有几个按键不灵了,window到时有好多改键软件,linux没有啊。今天听说了一个,记录下来

  1. keyd:Linux 系统级改键工具。这是一个 Linux 上的系统级键盘重映射守护进程,基于内核输入层(evdev/uinput)实现,无需依赖桌面环境,配置在 X11、Wayland 和 TTY 终端中均可生效。支持按下、长按设置不同动作、自定义按键组合,以及为不同键盘单独配置按键映射规则等功能。

Distrobox---在linux下运行的,类似于termux功能的容器

一直喜欢在手机下用termux的原因是,我随时可以采用anlinux的方式,来在proot的容器下运行一套linux, 然后做各种验证,不会污染别的系统。可是必竟手机的限制还是大啊。总想着我的PC机上能不能装termux,今天竟让我找到了,原来linux原生就有这种功能的软件,它就是Distrobox

一 简介
  1. distrobox create 创建一个新的容器环境
  2. distrobox enter 进入一个己创建的容器环境
  3. distrobox list 列出所有由distrobox创建过的容器
  4. distrobox stop 停止一个正在运行的容器
  5. distrobox rm 删除一个容器
  6. distrobox upgrade 升级容器内的软件包
二 创建容器常用参数
  1. –name :为容器指定一个名字,如 ubuntu20,debian12等
  2. –image: 指定要使用的镜像 (如 ubuntu:22.04, archlinux:latest)
  3. –home:为容器指定一个独立的Home目录,以免污染宿主机的home目录
  4. –additional-packages / -ap: 在创建时预装软件包(如 git vim curl)。
  5. –init-hooks: 在容器初始化完成后执行的命令。
  6. –root / -r: 以 root 权限启动容器。
  7. –nvidia: 尝试集成主机的 NVIDIA 驱动,用于 GPU 加速
三 列子

例子 1.

1
2
3
# 创建一个名为 my-ubuntu 的 Ubuntu 22.04 环境,并预装 git 和 vim
distrobox create --image ubuntu:22.04 --name my-ubuntu --additional-packages "git vim"

例子 2.

1
2
3
4
5
6
7
8
9
10
$ distrobox create \
--name test-debian \
--image debian:bookworm \
--hostname test-debian \
--memory 4G \
--cpus 2 \
--mount ~/work/testdata:/opt/testdata:ro \
--no-home
$ distrobox enter test-debian # 进入刚才创建的环境

参数解释

  1. –memory 4G –cpus 2:限制资源,防止测试程序吃光机器性能
  2. –mount ~/work/testdata:/opt/testdata:ro:只读挂载你宿主机测试素材;不需要可以删掉
  3. –no-home:不把宿主~目录直接映射进容器,防止容器内误删宿主文件(安全推荐)
四 更安全的参数
  1. distrobox ephemeral 创建一个临时容器,退出 shell 后自动销毁,适合一次性任务
1
2
3
4
5
6
distrobox ephemeral \
--image debian:bookworm \
--memory 3G \
--cpus 2 \
--mount ~/work/testdata:/opt/testdata:ro

ephemeral 环境内所有修改,exit 之后全部消失,不要存放重要数据,不留任何痕迹
2. –network none 容器无法联网,防止恶意程序外联下载、窃取信息

1
2
3
4
5
6
distrobox ephemeral \
--image debian:bookworm \
--memory 3G \
--cpus 2 \
--network none

python初始化以及,pip 换源

python建立虚环境,换源的方法,以前在别的文档中写,查找麻烦,在这里重新总结

1
2
3
4
$ apt install virtualenv  #建立虚环境
$ python -m venv virtualenv # 另一种命令
$ pip install streamlit -i https://mirrors.bfsu.edu.cn/pypi/web/simple # 北外的源

pip国内的一些镜像

阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣:https://pypi.doubanio.com/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
腾讯云:https://mirrors.cloud.tencent.com/pypi/simple/
浙江大学:http://mirrors.zju.edu.cn/pypi/web/simple/
网易:http://mirrors.163.com/pypi/simple/
华为云:https://repo.huaweicloud.com/repository/pypi/simple
北京外国语大学:https://mirrors.bfsu.edu.cn/pypi/web/simple
上海交通大学:https://mirrors.sjtug.sjtu.edu.cn/pypi/web/simple
南京大学:https://mirrors.nju.edu.cn/pypi/web/simple

修改源方法:

临时使用: 
可以在使用pip的时候在后面加上-i参数,指定pip源 
eg: pip install streamlit -i http://mirrors.aliyun.com/pypi/simple

永久修改: 
linux: 
修改 ~/.pip/pip.conf (没有就创建一个), 内容如下:

[global]
index-url = http://mirrors.aliyun.com/pypi/simple

让我的flask在linux下开机自动运行

我的debian12电脑中的flask程序,每次要 cd 我的项目目录;source bin/activate; python app.py, 可是我想开机就执行,那如何处理?

第一步:创建 systemd 服务文件
1
$ sudo nano /etc/systemd/system/myflaskapp.service
第二步:填写服务内容

将下面的内容复制到文件里。你需要替换掉 User、WorkingDirectory 和 ExecStart 这三行里的实际信息,其他部分保持通用即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=My Flask Application
After=network.target

[Service]
User=你的用户名
WorkingDirectory=/home/你的用户名/你的项目目录
Environment="PATH=/home/你的用户名/你的flask目录/bin"
ExecStart=/home/你的用户名/你的项目目录/venv/bin/python app.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

注意:Environment 那行是在设置环境变量 PATH,这能确保系统运行 app.py 时能找到虚拟环境里的 python 命令,效果等同于你手动 source bin/activate。

第三步:启动并让服务开机自启

保存文件后,依次执行以下命令:

1
2
3
4
5
6
7
8
9

# 1. 让 systemd 重新加载,识别新的服务文件
sudo systemctl daemon-reload

# 2. 启动你的 Flask 应用
sudo systemctl start myflaskapp

# 3. 设置开机自启
sudo systemctl enable myflaskapp
第四步:检查和调试

你可以用下面的命令确认服务是否正常运行:

1
2
3
4
5
6

# 查看运行状态
sudo systemctl status myflaskapp

# 查看实时日志(按 Ctrl+C 退出)
sudo journalctl -u myflaskapp -f

ubuntu,或 debian下,利用nvm安装nodejs

一 安装 nvm, 以下方法二选一
1
2
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash
二 利用nvm安装并管理nodejs
1
2
3
4
5
6
7
8
9
$ nvm install 22  # 安装nodejs v22.22.1 
$ node -v # v22.22.1
$ nvm install 24.5 # 同时,还能安装别的版本,如nodejs v24.5.0
$ node -v # v24.5.0

$ nvm use 22 # 指定使用nodejs的这个版本 v22.22.1 (npm v10.9.4)
$ node -v # v22.22.1
$ nvm use 20 # 指定使用 node的这个版本 v20.20.1 (npm v10.8.2)
$ node -v # v20.20.1

免费域名与内网穿透项目

1. FreeDomain:领取你的免费域名。

该项目是由非营利组织 DigitalPlat 发起,旨在为个人和组织免费提供域名注册服务。用户可注册一个免费域名,并将其托管在 Cloudflare、Hostry 等 DNS 提供商。

2. threatexpert/gonc: 告别IP地址!用暗号实现内网直连的神器来了

threatexpert/gonc的核心思路特别简单:把“连接”从IP依赖变成“暗号”匹配。你不需要知道对方的公网IP,也不需要搭建中转服务器,只要两端同时喊出一个暗号,系统就能自动完成打洞直连,而且全程加密。

为什么能做到?这背后是“三件黑科技”。

第一件:零配置的内网穿透。它利用STUN协议获取你的外网地址,再通过MQTT信令交换打洞信息。两端同时向公共服务器发送暗号,服务器就会帮你“牵线搭桥”,尝试UDP或TCP打洞。成功率超过90%,就算遇到对称NAT,也能自动降级到TURN中转。对比frp和ngrok,你不需要买服务器、不需要配域名,一条命令搞定。

第二件:端到端加密+双向认证。默认使用TLS 1.3或DTLS加密所有流量,并且支持双向证书认证。就算暗号泄露,没有正确证书的第三方也连不上。这比传统nc的明文传输和socat的繁琐配置强太多了。

第三件:自带“懒人模式”多功能。它内置了HTTP文件服务器、SOCKS5代理、端口转发、反弹Shell等功能。比如你想让外网访问内网的文件,一条命令就启动文件服务,结合P2P隧道,直接暴露给对端。甚至还能配合WireGuard实现异地组网,把gonc的P2P隧道作为底层传输。

3. NetBird是一个基于WireGuard的零信任mesh网络方案,Go语言写的,2021年开源到现在拿了26.5k star,1.4k fork。

功能就一句话:把你散落在各地的设备(笔记本、服务器、树莓派、手机)拉进一张加密的虚拟局域网,设备之间点对点直连,不走中转服务器。和传统VPN的区别是它不需要开公网端口,不需要配防火墙规则,NAT穿透全自动,装完就能用。
一条命令装完

自托管的门槛低到离谱,一台1核2G的Linux小鸡就够,只要公网能访问TCP 80/443和UDP 3478就行。

1
2
export NETBIRD_DOMAIN=netbird.example.com
curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started.sh | bash

脚本会自动装好管理面板、信令服务器、TURN中继、身份认证一整套。客户端更简单,Linux一行curl -fsSL
https://pkgs.netbird.io/install.sh | sh,Windows/macOS/Android/iOS都有官方包,连OpenWRT、群晖、pfSense、树莓派都支持。

4. DDNS-Go, 3MB的开源DDNS神器,1秒打通外网访问
  1. 动态域名的全自动同步, 它在后台运行时,它会每隔几分钟,极其敏锐地去测一下你家网卡当前的公网IP。一旦发现IP发生了变动,它会瞬间调用域名解析商的官方API接口,在后台把你的域名自动更新指向这个新IP。
  2. 极简的配置流, 域名准备:去阿里或腾讯花几块钱买一个一整年的便宜域名。获取它们的AccessKey。打开DDNS-Go的网页后台,填入你买域名的账号Key。开启IPv6(重点):在IPv6一栏,勾选启用。在Domains(域名)栏,写下你的域名(如nas.abc.com)。点击保存。 从此以后,只要你在外面输入你的专属二级域名,数据就会跨越千山万水,以你家宽带绝对的物理上限速度,直连回你卧室的NAS里。不用去给各种商业穿透软件交几百块的年费,用你本来就拥有的IPv6算力,开启真正的千兆私有云盘。获取指南: 直接在浏览器或GitHub搜索DDNS-Go(作者是jeessy)
5. 千问给的免费域名+内网穿透建站方案
  1. us.kg (目前最火的免费二级域名)

    特点:完全免费,支持自定义前缀(如 crm.us.kg),最关键的是它支持将 DNS 托管到 Cloudflare。
    优势:只要接入 Cloudflare,你就能免费使用 Cloudflare Tunnel、CDN 加速和 WAF 防火墙,体验和几十块钱的顶级域名一模一样。
    获取方式:搜索 us.kg 域名注册(有很多开源社区提供的免费注册面板),注册后在 Cloudflare 添加站点即可。

  2. 穿透工具:Cloudflare Tunnel (cloudflared)。完全免费,无需公网 IP,自带 CDN 加速,自动提供 HTTPS。
    域名:将刚才的域名与其 DNS 托管到 Cloudflare。
    优势:企业网站用顶级域名显得正规,且 Cloudflare 能帮你抵御基础的 DDoS 攻击

2026年7月,在termux下试装alphie linux

下载 alphine linux 的 rootfs文件并安装
  1. 地址是,http://mirrors.aliyun.com/alpine/latest-stable/releases/aarch64/?spm=a2c6h.25603864.0.0.59865e6caRiYXM
  2. 采用我以前的文章中的脚本改进把alphine的rootfs解压
进入alphine, 由于alphine中没有bash, 只有ash, 所以star脚本有些不同
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/data/data/com.termux/files/usr/bin/sh
cd $(dirname $0)
## unset LD_PRELOAD in case termux-exec is installed
unset LD_PRELOAD
command="proot"
command+=" --link2symlink"
command+=" -0"
command+=" -r debian13"
if [ -n "$(ls -A ubuntu-binds)" ]; then
for f in ubuntu-binds/* ;do
. $f
done
fi
command+=" -b /dev"
command+=" -b /proc"
command+=" -b debian13/root:/dev/shm"
## uncomment the following line to have access to the home directory of termux
#command+=" -b /data/data/com.termux/files/home:/root"
## uncomment the following line to mount /sdcard directly to /
command+=" -b /sdcard"
command+=" -b /storage"
command+=" -w /root"
command+=" /usr/bin/env -i"
command+=" HOME=/root"
command+=" PATH=/usr/local/sbin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/games:/usr/local/games"
command+=" TERM=$TERM"
command+=" LANG=C.UTF-8"
command+=" /bin/ash --login"
com="$@"
if [ -z "$1" ];then
exec $command
else
$command -c "$com"
fi
设置
1
2
3
4
5
6
7
8
9
10
cat > /etc/resolv.conf <<EOF
nameserver 223.5.5.5
nameserver 1.1.1.1
nameserver 8.8.8.8
EOF
sed -i 's|https://dl-cdn.alpinelinux.org/alpine|https://mirrors.tuna.tsinghua.edu.cn/alpine|g' /etc/apk/repositories # 设置成清华源
apk update
apk upgrade
apk install vim-full

2026年7月,时隔五年重新启动Anlinux

自从termux支持debootstrap后,我发现我可以随时生产最新版的debian arm系统,都弃用繁琐的anlinux, 可是直到2026年7月,发现新版的termux竟改了一些权限,导致在termux下使用debootstrap生成的debian竟然不能生成sudo 用户, systemcrtl也有问题,豆包与deebseek都劝我用proot-distro安装,然而,新版的proot-distro竟然是从docker来拉取linux的rootfs的,我的个天啊,国内这网络环境,对docker天然不友好。于是悲催了,我的手机无法安装linux了。肿么办?翻开老笔记,再结合阿里的通义千问3.7的建议,于是重新拾取了Anlinux

一 安装ubuntu26.04

  1. https://cdimage.ubuntu.com/ubuntu-base/releases/ 下载26.04版的 rootfs ubuntu-base-26.04-base-arm64.tar.gz
  2. 把 ubuntu-base-26.04-base-arm64.tar.gz 放到termux的 ~\目录下
  3. 修改ubuntu2604.sh脚本如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/data/data/com.termux/files/usr/bin/bash
folder=ubuntu-2604
if [ -d "$folder" ]; then
first=1
echo "skipping downloading"
fi
# 定义ubutnu26.04 的 rootfs

tarball="ubuntu-base-26.04-base-arm64.tar.gz"
cur=`pwd`
mkdir -p "$folder"
cd "$folder"
echo "Decompressing Rootfs, please be patient."
proot --link2symlink tar -zxvf ${cur}/${tarball}||:
cd "$cur"

mkdir -p ubuntu-binds
bin=start-ubuntu.sh
echo "writing launch script"
cat > $bin <<- EOM
#!/bin/bash
cd \$(dirname \$0)
## unset LD_PRELOAD in case termux-exec is installed
unset LD_PRELOAD
command="proot"
command+=" --link2symlink"
command+=" -0"
command+=" -r $folder"
if [ -n "\$(ls -A ubuntu-binds)" ]; then
for f in ubuntu-binds/* ;do
. \$f
done
fi
command+=" -b /dev"
command+=" -b /proc"
command+=" -b ubuntu-2604/root:/dev/shm"
## uncomment the following line to have access to the home directory of termux
#command+=" -b /data/data/com.termux/files/home:/root"
## uncomment the following line to mount /sdcard directly to /
command+=" -b /sdcard"
command+=" -b /storage"
command+=" -w /root"
command+=" /usr/bin/env -i"
command+=" HOME=/root"
command+=" PATH=/usr/local/sbin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/games:/usr/local/games"
command+=" TERM=\$TERM"
command+=" LANG=C.UTF-8"
command+=" /bin/bash --login"
com="\$@"
if [ -z "\$1" ];then
exec \$command
else
\$command -c "\$com"
fi
EOM

echo "fixing shebang of $bin"
termux-fix-shebang $bin
echo "making $bin executable"
chmod +x $bin
echo "removing image for some space"
rm $tarball
echo "You can now launch Ubuntu with the ./${bin} script"
  1. 执行 bash ubuntu2604.sh 脚本,对刚才下载的 ubuntu-base-26.04-base-arm64.tar.gz进行解压,并生成启动脚本 start-ubuntu.sh
  2. 执行 bash start-ubuntu.sh,进入刚才安装的ubuntu26.04
  3. 在root用户名与目录下进行如下操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 写入公共 DNS 服务器地址
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 223.5.5.5" >> /etc/resolv.conf
apt update
apt upgrade -y
# 安装最常用的基础工具:sudo、文本编辑器、网络工具、压缩工具等
apt install -y sudo vim wget curl net-tools locales
adduser frank
# 修改 /etc/sudoer文件,增加 frank ALL....
我采用解压,并成功启动ubunt26.04, apt update ,并apt install sudo 然后添加sudo用户frank成功后,采用groups查询,有以下信息,请问需要处理吗?
frank@localhost:~$ groups
groups: cannot find name for group ID 3003
groups: cannot find name for group ID 9997
groups: cannot find name for group ID 20292
groups: cannot find name for group ID 50292
frankli 3003 9997 20292 50292
# 通义千问回答: 结论:完全不需要处理,这不会影响您的任何正常使用。您可以放心地继续使用 frankli 用户,您的 sudo 权限和系统功能都是完全正常的。

二 安装debian13 trixie

在debian官网上没有找到debian的rootfs, 不过可以在电脑上通过我讨厌的docker来拉取,还好有podman这个比docker好用的工具

  1. 在PC电脑上拉取debian的rootfs
1
2
3
4
5
6
7
mkdir trixie
cd trixie
podman pull --platform linux/arm64 debian:trixie-slim
podman create --name temp-debian debian:trixie-slim
podman export temp-debian > debian13-trixie-arm64.tar
ls # 会在本目录下有debian13-trixie-arm64.tar这个文件
podman rm temp-debian # 删除刚才操作所生成的其它文件,但不会删除 debian13-trixie-arm64.tar
  1. 把 debian13-trixie-arm64.tar 放到termux的 ~\目录下
  2. 在手机的termux下执行
1
2
3
4
5
6
# 1. 创建专属目录
mkdir ~/debian13
# 2. 进入该目录
cd ~/debian13
# 3. 执行解压(加上 --preserve-permissions 保留原始权限)
tar -xvf ~/debian13-trixie-arm64.tar --preserve-permissions
  1. 在手机的termux下编写 start-trixie.sh脚本如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/data/data/com.termux/files/usr/bin/bash
cd $(dirname $0)
## unset LD_PRELOAD in case termux-exec is installed
unset LD_PRELOAD
command="proot"
command+=" --link2symlink"
command+=" -0"
command+=" -r debian13"
if [ -n "$(ls -A ubuntu-binds)" ]; then
for f in ubuntu-binds/* ;do
. $f
done
fi
command+=" -b /dev"
command+=" -b /proc"
command+=" -b debian13/root:/dev/shm"
## uncomment the following line to have access to the home directory of termux
#command+=" -b /data/data/com.termux/files/home:/root"
## uncomment the following line to mount /sdcard directly to /
command+=" -b /sdcard"
command+=" -b /storage"
command+=" -w /root"
command+=" /usr/bin/env -i"
command+=" HOME=/root"
command+=" PATH=/usr/local/sbin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/games:/usr/local/games"
command+=" TERM=$TERM"
command+=" LANG=C.UTF-8"
command+=" /bin/bash --login"
com="$@"
if [ -z "$1" ];then
exec $command
else
$command -c "$com"
fi

  1. 在termux下执行 bash start-trixe.sh 进入了debian, 发现拉取的debian是最新版的,并且这个是完整版,己经有了/etc/resolv.conf文件了,所以可以直接 apt update; apt install vim sudo -y就行了。但是修改resolv.conf可以提速,于是还可以如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 修复 DNS(解决无法 ping 通域名的问题)
echo "nameserver 223.5.5.5" > /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf

# 2. 更新软件源并安装您之前需要的 sudo 和用户管理工具
apt update
apt install -y sudo adduser vim-tiny curl wget

# 3. 创建您的普通用户并赋予 sudo 权限
adduser frank
usermod -aG sudo frank

# 4. 切换到 frank用户测试
su - frank
sudo whoami 如果显示为root则为正常

三 proot-distro安装下载的rootfs

1
proot-distro install debian13 --tarball ~/debian13-trixie-arm64.tar

winpodx笔记

github上另一个虚拟机项目Winpodx, 一个底层基于 dockurr/windows的虚拟机项目

最近在github是无意中发现在一个目前只有1.5K关注的虚拟机项目Winpodx, 初看介绍,其作用就是在linux下通过虚拟机安装win11, 然后在win11下启动freeRDP, 然后在linux宿主机上通过运行虚拟机中win11中的程序,看起来像是本地运行一样。我一看,这不就是WinApps吗?遇事不觉问豆包,发现两个还是有些区别的,比如:

  1. 这个是在容器中运行win11, 所以这个的win11无法像WinApps中的win11一样,不能直接访问USB接口,显卡,专业外设,加密狗等无法使用
  2. 不用自己安装kvm+qemu+win11, 这个是直接拉取,傻瓜式安装
  3. 基于dockur/windows技术,运行开销比WinApps小。
  4. 无线网卡可设host模式,这样win11可以直接使用无线打印机,这个WinApps不支持。
  5. 适合轻量办公,不那么频繁使用win11的用户
2026/07/05安装体验
  1. https://github.com/kernalix7/winpodx下载winpodx, 注意debian12与debian13是分开下载的
  2. sudo apt update & sudo apt upgrade -y
  3. sudo apt install podman podman-compose -y
  4. 由于拉取镜像容易失败,所以要设置国内镜像国速,以下操作不用sudo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mkdir -p ~/.config/containers
tee ~/.config/containers/registries.conf <<'EOF'
unqualified-search-registries = ["docker.io"]

[[registry]]
prefix = "docker.io"
location = "docker.io"

# 多套国内公益加速源,自动轮询
[[registry.mirror]]
location = "docker.m.daocloud.io"
[[registry.mirror]]
location = "docker.1ms.run"
[[registry.mirror]]
location = "docker.xuanyuan.me"
EOF
  1. sudo dpkg -i winpodx-x.x.x-x.deb
  2. winpodx setup, 这里候会拉取windows镜像并安装之,随后会在命令行给出端口8007,在浏览器中 localhost:8007, 这里浏览器中就会有本地的win11了,先在里面进win11进行程序安装,如中文系统,windows注册码等
2026/07/06继续,下面一步很重要,我先说的踩了个坑
  1. 我在浏览器中127.0.0.1:8007里安装中文后,要求系统重启,我一重启动后,就坏事了,导致rdp紊乱,下一步采用 woinpodx app run desktop进去,登陆不了了。所以只要浏览器有系统,说明安装成功了,这里候是vnc状态。不用管,进行下一步
  2. winpodx app run desktop 进入rdp登陆后,进入win11系统,安装汉字,可以重启win11, 然后安装讯雷,注册破解win11都行。
  3. 上面的窗口可以关掉了,下面是在linux下找到win11的程序,并执行它。
1
2
3
winpodx app refresh #安装完win11程序后,重新扫描一遍
winpodx app list # 列出win11中可用的程序
winpodx app run 迅雷 # 试用win11中的讯雷
  1. 命令总结:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 【仅第一次部署使用,终生尽量不要再跑】
winpodx setup

# 启动Windows后台环境,等待就绪, linux宿主机重启后,如果要启动winpos, 先这一步
winpodx pod start --wait

# 查看容器运行状态
winpodx pod status

# 打开完整Windows桌面(装软件、调试投屏/打印机才用)
winpodx app run desktop

# 列出Windows里面识别到的全部程序名称
winpodx app list

# 扫描程序,批量创建Linux桌面快捷方式(安装新软件后执行)
winpodx app refresh
winpodx app install-all # 会在linux宿主机上建立win11的应用程序图标

# 直接启动指定程序示例
winpodx app run 迅雷

# 关闭整个Windows容器,释放资源
winpodx pod stop # 不需要使用winpodx时,关闭它
如果我想彻底删除winpodx呢?
1
2
3
4
5
6
7
8
9
10
11
12
winpodx pod stop
podman rm winpodx-windows
# 列出所有卷,寻找winpodx_storage
podman volume ls
# 将下面名称替换成实际查出来的卷名再执行删除
podman volume rm winpodx_storage

# 以下四步把下载的win11镜像全部给清除了。
cd ~/.local
rm -rf winpodx
cd ~/.local/share/containers/
sudo rm -rf *

termux利用工作proot-distro安装linux

2026/07. 采用proot-distrio安装本地 tar 包的方法,比如安装 debian13

1
proot-distro install debian13 --tarball ~/debian13-trixie-arm64.tar

termux神器新的工具proot-distro,是一个Bash脚本,用于在Termux中管理与安装proot下Linux发行版。

目前,它支持安装以下发行版:
  1. Alpine Linux
  2. Arch Linux
  3. Kali Nethunter (rootless)
  4. Ubuntu (18.04 / 20.04)
一. 安装如下:
1
$ pkg install proot-distro
二. 然后利和其安装与运行ubuntu的例子如下:
1
2
proot-distro install ubuntu-20.04  # 安装ubuntu20.04或ubuntu-18.04
proot-distro login ubuntu-20.04 # 运行ubnuntu
本人新测安装动行ubtuntu, net-tools vim己安装,/storage目录下是外置sdcard的文件,/sdcard下的目录是内置存储器的文件。
安装位置在 /data/data/com.termux/files/usr/var/lib/proot-distro
三. 进入本ubuntu20.04后,安装软件报错,比如上面的xfe,出错信怎如下:
dpkg: error processing package xxx (--configure)

并且也无法升级 apt updated出错。
如何解决呢?

1
2
3
4
5
6
mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/
mkdir /var/lib/dpkg/info/
apt-get updated
apt-get -f install
cp /var/lib/dpkg/info_old/* /var/lib/dpkg/info/
rm -rf /var/lib/dpkg/info_old

然后就能正常安装了。
以上在升级为termux0.99版后,不会出错,所以不用以上(第三)步骤了。

最好先建立sudo客户,并以sudo客户登录后,再执行以下步骤

四.中文语言设置
1
2
3
4
5
6
$ apt install language-pack-zh-hans* 安装中文包
$ apt install language-pack-gnome-zh-hans* 安装中文包
$ apt install fonts-wqy-*
# $ apt install fonts-wqy-microhei 安装中文字体
# $ apt install fronts-wqy-zenhei 另一个中文字体
$ vim /etc/default/locale

更改内容如下:
LANG=”zh_CN.UTF-8”
LANGUAGE=”zh_CN:en_US:en”
LC_NUMERIC=”zh_CN.UTF-8”
LC_TIME=”zh_CN.UTF-8”
LC_MONETARY=”zh_CN.UTF-8”
LC_PAPER=”zh_CN.UTF-8”
LC_IDENTIFICATION=”zh_CN.UTF-8”
LC_NAME=”zh_CN.UTF-8”
LC_ADDRESS=”zh_CN.UTF-8”
LC_TELEPHONE=”zh_CN.UTF-8”
LC_MEASUREMENT=”zh_CN.UTF-8”

保存后执行

1
$ fc-cache -fv  #最好进行这一步后再安装fcitx,否则有可能输入法不起做用。

则控制台终端己经会出现中文了

五. 然后可安装xfce4桌面

==记得更改阿里源再安装,不然真的是时间太长了。==

1
2
3
4
5
6
7
8
9
$ apt install dbus
$ apt install python3
$ apt install xfce4 xfce4-terminal # 真是花了好长时间
$ apt install tightvncserver # vncserver软件
$ apt install xfe # 一个优秀的文件管理器,带文件查找功能
$ export DISPLAY=127.0.0.1:0
$ export PULSE_SERVER=tcp:127.0.0.1:4713
打开xdsl的APP,然后回到termux下的linux
$ startxfce4
六. 安装过程中发现一些缺失的东东
1
2
$ apt install dialog
$ apt install apt-utils
七. 关于中文输入法
1
2
3
$ apt install fcitx
$ apt install fcitx-config-*
$ apt install fcitx-table-wbpy # 五笔拼音

*** 然面通过VNC或别的XDSL进入XFCE,有fcitx图标,也能看到拼音,五笔输入法,但是却输入不了中文 ***
vim ~/.profile,在结尾加入

#fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=”@im=fcitx”
然后退出图形界面后,重启动。中文输入法可用了。

如果要一进入桌面就有fcitx,则可
1
$ cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/

采用VNC时,五笔可以用,可是采用xdsl却无法切换中文输入。后来发现是xdsl把Ctrl/Alt/Shift三个键占用了。进系统把中文输入法切换键换为F12可解决

进入桌面后,浏览器浏览国内网站好慢,一直不知道神马原因,开始还以为是手机CPU太差了,后来无意中想到可能是DNS的问题
1
2
$ vim /etc/resolv.conf 
增加一行 nameserver=114.114.114.114

Arm64 版的ubuntu 镜像下载地址

https://partner-images.canonical.com/core/
注意这个地址是有许多版本的linux的,比如ubuntu20.10没有,可是我们想装咋办呢?因为proot-distro当前是装不了的。

  1. 先下载 ubuntu20.10的镜像,https://partner-images.canonical.com/core/groovy/current/ubuntu-groovy-core-cloudimg-arm64-root.tar.gz
  2. 进入termux的 /data/data/com.termux/files/usr/etc/proot-distro目录。
  3. cp ubuntu-20.04.sh ubuntu-20.10.sh
  4. vim ubuntu-20.10.sh,把对应的 bonic改为groovy就行了。
  5. 执行 proot-distro install ubuntu-20.10来安装
  6. ubuntu-20.10.sh的内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
##
## Plug-in for installing Ubuntu groovy.
##

DISTRO_NAME="Ubuntu 20.10"

# Returns download URL.
get_download_url() {
case "$(uname -m)" in
aarch64)
echo "https://partner-images.canonical.com/core/groovy/current/ubuntu-groovy-core-cloudimg-arm64-root.tar.gz"
;;
armv7l|armv8l)
echo "https://partner-images.canonical.com/core/groovy/current/ubuntu-groovy-core-cloudimg-armhf-root.tar.gz"
;;
i686)
# Ubuntu groovy does not provide tarballs for x86 32bit.
;;
x86_64)
echo "https://partner-images.canonical.com/core/groovy/current/ubuntu-groovy-core-cloudimg-amd64-root.tar.gz"
;;
esac
}

# Define here additional steps which should be executed
# for configuration.
distro_setup() {
# Hint: $PWD is the distribution rootfs directory.
#echo "hello world" > ./etc/motd

# Run command within proot'ed environment with
# run_proot_cmd function.
# Uncomment this to do system upgrade during installation.
#run_proot_cmd apt updated
#run_proot_cmd apt upgrade -yq
:
}