Distrod - 带有 Systemd 的 WSL2 发行版

Distrod 是一个基于 systemd 的 WSL2 元发行版,它允许您在一分钟内使用 systemd 安装 Ubuntu、Arch Linux、Gentoo 和许多其他发行版,或者让您当前的发行版运行 systemd。

Distrod 还提供内置的自动启动功能和端口转发服务。这允许您在 Windows 启动时启动 systemd 管理的服务,例如ssh,并使其可以从 Windows 外部访问。

官方网站:
 
 

使用 Distrod,您可以

  1. 在 WSL 2 中运行 systemd
    您可以执行以下两项操作
  2. 安装运行 systemd 的新发行版
  3. 让您当前的 WSL 2 发行版运行 systemd
  4. 在 1 分钟内将linuxcontainers.org提供的任何映像安装为 WSL 2 发行版1。
  5. 以下发行版不断测试Ubuntu、Debian、Arch Linux、Fedora、CentOS、AlmaLinux、Rocky Linux、Kali Linux、Linux Mint、openSUSE、Amazon Linux、Oracle Linux、Gentoo Linux
    (见Integration test on Linux (distro_name))
  6. 其他发行版可能工作也可能不工作
  7. * linuxcontainers.org是一个供应商中立的项目,它为容器提供发行版映像,与 Distrod 无关。LXC/LXD 是其项目之一。Systemd 在已安装的发行版中运行,因此您也可以在 WSL 中尝试 LXC/LXD!
  8. 在 Windows 启动时启动 WSL。
    这意味着您可以使用 systemd 管理您的 ssh 服务器和其他服务并自动启动它们而无需任何麻烦!
  9. Distrod 还提供由 systemd 管理的端口代理服务,允许您轻松地将 Linux 服务器暴露给 Windows 的外部世界。

正在开发的功能

  1. 使您在单独磁盘上的双启动物理 Linux 发行版作为 WSL 实例运行。

安装

选项 1:安装新发行版。

  1. 确保您的默认 WSL 版本为 2。
  2. > wsl --set-default-version 2
  3. 从 release下载并解压缩最新distrod_wsl_launcher-x86_64.zip版本,然后双击解压缩的.exe文件。
  4. 按照向导安装新发行版。
  5. [可选] 要使您的发行版在 Windows 启动时启动,请运行以下命令。
  6. sudo /opt/distrod/bin/distrod enable --start-on-windows-boot
  7. 您可能还希望将服务端口转发ssh到 Windows 外部。在这种情况下,您可以启用 Distrod 提供的内置端口代理服务。
  8. 注意:在 Windows 11 上,portproxy.service在 Windows 启动时不起作用,应该很快就会修复。请参阅已知总线。
  9. echo 22 | sudo tee /opt/distrod/conf/tcp4_ports # update the portproxy.service's configuration sudo systemctl enable --now portproxy.service # enable and start it
  10. 有关更详细的说明,请参阅将端口转发到 Windows 外部。

选项 2:让您当前的发行版运行 Systemd

通过此安装,您的 WSL 2 发行版中启用了 systemd。

  1. 下载并运行最新的安装程序脚本。
  2. curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh" chmod +x install.sh sudo ./install.sh install
  3. 此脚本安装 distrod,但尚未启用它。
  4. 在您的发行版中启用发行版
  5. 你有两个选择。如果要在 Windows 启动时自动启动发行版,请通过以下命令启用发行版
  6. /opt/distrod/bin/distrod enable --start-on-windows-boot
  7. 否则,
  8. /opt/distrod/bin/distrod enable
  9. 如果您想稍后启用自动启动,您可以再次enable运行。--start-on-windows-boot
  10. 重启你的发行版
  11. 关闭 WSL 的终端。打开一个新的命令提示符窗口,然后运行以下命令。
  12. wsl --terminate Distrod
  13. 重新打开一个新的 WSL 窗口后,您的 shell 将在 systemd 会话中运行。

也可以看看

  • 在 Windows 启动时启动 WSL 2
  • 将端口转发到 Windows 外部
  • 排查 WSL 网络故障
  • 在 Systemd 容器外打开一个 Shell 会话
  • 禁用 Systemd / Distrod

用法

如果您使用的是Windows Terminal,Windows Terminal 会自动为您查找并注册 Distrod。只需打开名为“Distrod”的选项卡。

如果您使用其他终端,请更新您的终端设置以启动 Distrod。作为参考,以下命令在 WSL 中按名称启动发行版

> wsl --distribution Distrod

更新发行版

  1. 在 Distrod 会话中,下载并运行最新的安装程序脚本。
  2. curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh" chmod +x install.sh sudo ./install.sh update

Distrod 的工作原理

简而言之,Distrod 是一个二进制文件,它创建一个简单的容器,将 systemd 作为初始化进程运行,并在该容器中启动 WSL 会话。为了实现这一点,Distrod 做了以下事情。

  • 修改您选择的具体发行版的 rootfs,使其与 WSL 和 systemd 兼容。修改 systemd 服务,使其与 WSL 兼容为 WSL 配置网络把/opt/distrod/bin/distrod和其他资源放在rootfs中。将 Distrod 的二进制文件注册为登录 shell
  • 当 WSL 的 init 作为登录 shell 启动 Distrod 时,Distrod在一个简单的容器中启动 systemd在该容器中启动您的实际外壳systemd 会话和 WSL 互操作环境之间的桥梁。

其他注意事项

  1. WSLg 是否适用于 Distrod?
  2. 是的!Distrod 不会阻止有关 WSLg 的任何事情。Distrod 为 X11 和环境变量正确设置了套接字。
  3. 然而,即使在非 Distrod WSL2 发行版上,WSLg 本身也有一些怪癖。尝试许多事情,直到 GUI 应用程序运行。例如,要运行xeyes不失败,我必须在非 Distrod 官方 Ubuntu 20.04 上运行 3 次。

分类: 默认 标签: 安装 启动 发行版 端口 容器 运行 启动时 会话 转发 启用 发布于: 2022-09-27 11:24:49, 点击数: