办公室的台式机使用的是UOSv20,据统信官方所说,对UOSv20会有一段比较长时间的支持。同时,有时候会在deepin25下捣鼓一些东西,于是想到,如果能在UOSv20环境下,跟deepin23/25一样,使用distrobox来部署子系统,岂不美哉?
经过一些尝试,过程分享如下:
了解到distrobox也可以使用docker作为后端,而且distrobox程序只是一些脚本,并不会受系统组件的影响。
也尝试过安装podman,但是podman需要的依赖会与一些重要的组件冲突,为安全起见,就不搞了。
一、更新docker
UOSv20环境下的 docker-ce版本比较旧,不足以支持 distrobox的功能,我们来使用 debian10版本的 docker仓库来更新:
docker-ce
distrobox
debian10
docker
如果网络环境不好,可以下载这个缓存:
docker-buster-amd64-20250620.zip
docker-buster-arm64-20250620.zip
mkdir -p docker-buster cd docker-buster # 从docker仓库的buster目录下载所需deb wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/containerd.io_1.6.31-1_amd64.deb wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-buildx-plugin_0.14.1-1~debian.10~buster_amd64.deb wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-ce-cli_26.1.4-1~debian.10~buster_amd64.deb wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-ce-rootless-extras_26.1.4-1~debian.10~buster_amd64.deb wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-ce_26.1.4-1~debian.10~buster_amd64.deb wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-compose-plugin_2.27.1-1~debian.10~buster_amd64.deb wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-scan-plugin_0.9.0~debian-buster_amd64.deb # 从podman的kubic仓库下载新版本的slirp4netns,后面distrobox会需要 wget https://ftp.lysator.liu.se/pub/opensuse/repositories/devel%3A/kubic%3A/libcontainers%3A/stable/Debian_10/amd64/slirp4netns_1.1.8-4_amd64.deb sudo apt install ./*.deb # 将当前用户加入到docker组中 sudo usermod -aG docker $USER # 将docker守护程序设置为开机启动 sudo systemctl enable docker
二、安装distrobox
缓存文件:distrobox-1.8.1.2.zip
# 自动安装 curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo bash # 如果不放心的话,可以手动检查代码之后再安装,本质上是一些bash脚本,并没有实际的编译过程 git clone https://github.com/89luca89/distrobox cd distrobox sudo make install
三、部署deepin25子系统
参照这个帖子:在deepin25环境中创建无磐石的deepin25子系统
只不过部署脚本调整成docker的版本:
#!/bin/bash set -e export DISTROBOX_USE_DOCKER=true # 检查 distrobox 是否已安装 if ! command -v distrobox &> /dev/null; then echo "错误: 未检测到 distrobox,请安装后再运行此脚本。" exit 1 fi CONTAINER_NAME="beige" CUSTOM_TAG="deepin:beige" # 获取脚本所在的目录 SCRIPT_DIR=$(dirname "$(realpath "$0")") # 判断系统架构 arch=$(uname -m) case "$arch" in x86_64) OSARCH="amd64" ;; aarch64) OSARCH="arm64" ;; *) echo "不支持的系统构架:$arch,仅支持 amd64 或 arm64" exit 1 ;; esac echo "当前系统构架为:$OSARCH" TARBALL="$SCRIPT_DIR/deepin-docker-rootfs-${OSARCH}.tar.gz" # 导入 rootfs 到 docker 镜像 echo "导入 rootfs 到镜像..." docker import "$TARBALL" "$CUSTOM_TAG" # 创建 Distrobox 容器 echo "创建 Distrobox 容器..." distrobox create \ --name "$CONTAINER_NAME" \ --image "$CUSTOM_TAG" \ --volume /data:/data \ --hostname "$CONTAINER_NAME" # 初始化容器(第一次进入会自动设置环境) echo "初始化容器..." distrobox enter "$CONTAINER_NAME" -- bash -c "exit" # 安装玲珑环境 #echo "安装 linglong环境..." distrobox enter "$CONTAINER_NAME" -- bash -c " sudo apt update " # && sudo apt install -y wget apt-file fuse-overlayfs linglong-bin linglong-box linglong-builder echo "✅ 操作完成" echo " 执行该命令以进入子系统: distrobox enter $CONTAINER_NAME"
五、注意事项
不知什么原因,子系统部署之后,没有自动处理用户名绑定,会有两个错误提示:
问题1.当前用户名xxx没有在passwd文件中找到。
问题2.使用sudo时,当前用户名xxx不在sudoers文件中
解决方法:使用 docker exec进入到容器中,创建用户,设置密码,并将用户加入到 sudo组中:
docker exec
sudo
# 进入容器,创建用户,设置密码,以用户名gisadmin为例 docker exec -it beige bash useradd gisadmin passwd # 将gisadmin加入到sudo组中 usermod -aG sudo gisadmin
另外,还有一些小问题,例如 mount: /etc/localtime: special device /usr/share/zoneinfo/Asia/Beijing does not exist.
mount: /etc/localtime: special device /usr/share/zoneinfo/Asia/Beijing does not exist.
无伤大雅,应该可以通过修改目录映射来解决。
No replies yet
Popular Ranking
Popular Events
办公室的台式机使用的是UOSv20,据统信官方所说,对UOSv20会有一段比较长时间的支持。同时,有时候会在deepin25下捣鼓一些东西,于是想到,如果能在UOSv20环境下,跟deepin23/25一样,使用distrobox来部署子系统,岂不美哉?
经过一些尝试,过程分享如下:
了解到distrobox也可以使用docker作为后端,而且distrobox程序只是一些脚本,并不会受系统组件的影响。
也尝试过安装podman,但是podman需要的依赖会与一些重要的组件冲突,为安全起见,就不搞了。
一、更新docker
UOSv20环境下的
docker-ce
版本比较旧,不足以支持distrobox
的功能,我们来使用debian10
版本的docker
仓库来更新:如果网络环境不好,可以下载这个缓存:
docker-buster-amd64-20250620.zip
docker-buster-arm64-20250620.zip
二、安装distrobox
缓存文件:distrobox-1.8.1.2.zip
三、部署deepin25子系统
参照这个帖子:在deepin25环境中创建无磐石的deepin25子系统
只不过部署脚本调整成docker的版本:
五、注意事项
不知什么原因,子系统部署之后,没有自动处理用户名绑定,会有两个错误提示:
问题1.当前用户名xxx没有在passwd文件中找到。
问题2.使用sudo时,当前用户名xxx不在sudoers文件中
解决方法:使用
docker exec
进入到容器中,创建用户,设置密码,并将用户加入到sudo
组中:另外,还有一些小问题,例如
mount: /etc/localtime: special device /usr/share/zoneinfo/Asia/Beijing does not exist.
无伤大雅,应该可以通过修改目录映射来解决。