Distrod is a meta-distro for WSL 2 which runs Systemd as init process. You can run Ubuntu, Arch, and et.c with systemd in a minute. Distrod also has built-in auto-start feature on Windows startup and port forwarding abiltiy.

Overview

Distrod - WSL2 Distros with Systemd!

CI

Distrod is a systemd-based meta-distro for WSL2 that allows you to install Ubuntu, Arch Linux, Gentoo and many other distros with systemd in a minute, or make your current distro run systemd.

Distrod also provides built-in auto-start feature and port forwarding service. This allows you to start systemd-managed services, such as ssh, on Windows startup and make it accessible from outside Windows.

Arch, Debian, and Gentoo are running on WSL 2 with systemd running Demo gif

With Distrod, you can

  1. Run systemd in WSL 2
    You can do the both of the following

    • Install a new distro with systemd running
    • Make your current WSL 2 distro run systemd
  2. Install any image available from linuxcontainers.org as a WSL 2 distro in 1 minute1.

    • The following distros are continuously tested
      • Ubuntu, Debian, Arch Linux, Fedora, CentOS, AlmaLinux, Rocky Linux, Kali Linux, Linux Mint, openSUSE, Amazon Linux, Oracle Linux, Gentoo Linux
        CI (See Integration test on Linux (distro_name))
    • Other distros may or may not work

    * linuxcontainers.org is a vendor-neutral project that offers distro images for containers, which is unrelated to Distrod. LXC/LXD is one of its projects. Systemd runs in the installed distro, so you can also try LXC/LXD in WSL!

  3. Start WSL on Windows Startup.
    This means that you can manage your ssh server and other services with systemd and start them automatically without any hassle!

    • Distrod also provides a port proxy service managed by systemd, allowing you to expose your Linux server to the outside world of Windows easily.

Feature under development

  1. Make your dual-booted physical Linux distro on a separate disk run as a WSL instance.

Install

Option 1: Install a New Distro.

  1. Make sure that your default WSL version is 2.

    > wsl --set-default-version 2
  2. Download and unzip the latest distrod_wsl_launcher-x86_64.zip from release, and double-click the extracted .exe file.

  3. Follow the wizard to install a new distro.

  4. [Optional] To make your distro start on Windows startup, run the following command.

    sudo /opt/distrod/bin/distrod enable --start-on-windows-boot

    You also might want to forward ports of services such as ssh to the outside of Windows. In that case, you can enable the built-in port proxy service provided by Distrod.

    NOTE: On Windows 11, portproxy.service doesn't work on Windows startup, which should be fixed soon. See Known bus.

    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

    For more detailed instruction, see Forward Ports to outside of Windows.

See also

Option 2: Make your Current Distro Run Systemd

By this installation, systemd is enabled in your WSL 2 distro.

  1. Download and run the latest installer script.

    curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh"
    chmod +x install.sh
    sudo ./install.sh install

    This script installs distrod, but doesn't enable it yet.

  2. Enable distrod in your distro

    You have two options. If you want to automatically start your distro on Windows startup, enable distrod by the following command

    /opt/distrod/bin/distrod enable --start-on-windows-boot

    Otherwise,

    /opt/distrod/bin/distrod enable

    You can run enable with --start-on-windows-boot again if you want to enable autostart later.

  3. Restart your distro

    Close your WSL's terminal. Open a new Command Prompt window, and run the following command.

    wsl --terminate Distrod

    After re-opening a new WSL window, your shell runs in a systemd session.

See also

Usage

If you are using Windows Terminal, Windows Terminal will automatically find and register Distrod for you. Just open the tab named "Distrod".

If you are using other terminals, please update your terminal settings to launch the Distrod. For reference, the following command launches a distro by name in WSL

> wsl --distribution Distrod

Update Distrod

  1. Inside a Distrod session, download and run the latest installer script.

    curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh"
    chmod +x install.sh
    sudo ./install.sh update

How Distrod Works

In a nutshell, Distrod is a binary that creates a simple container that runs systemd as an init process, and starts your WSL sessions within that container. To realize that, Distrod does the following things.

  • Modify the rootfs of the concrete distro you chose so that it is compatible with both WSL and systemd.
    • Modify systemd services so that they are compatible with WSL
    • Configure networks for WSL
    • Put /opt/distrod/bin/distrod and other resources in the rootfs.
    • Register the Distrod's binary as the login shell
  • When Distrod is launched by WSL's init as a login shell, Distrod
    1. Starts systemd in a simple container
    2. Launches your actual shell within that container
    3. Bridges between the systemd sessions and the WSL interop environment.

Other Notes

  1. Does WSLg works on Distrod?

    Yes! Distrod doesn't prevent anything about WSLg. Distrod sets up sockets for X11 and environment variables properly.

    However, WSLg itself has some quirks even on non-Distrod WSL2 distros. Try many things until a GUI app runs. For example, to run xeyes without failure, I had to run it three times on the non-Distrod official Ubuntu 20.04.

See also

Footnotes

  1. as long as your network connection is fast enough :) ↩

Comments
  • Bind mount `/tmp/.X11-unix` for newer version of WSL2

    Bind mount `/tmp/.X11-unix` for newer version of WSL2

    Fix #56.

    After WSL 0.60.0 release, microsoft switched to bind mount the /tmp/.X11-unix rather than symlink it as they previously do. This breaks wslg in Distrod for latest WSL on MS Store.

    Distrod should bind mount for WSL 0.60.0, and keep the symlink strategy for older versions of WSL.

    I've tested the fix on WSL 0.60.0, WSL 0.58.3 and in-box WSL, all of them worked ok.

    EDIT: Before this PR is merged, you may use opt tar packaged by me for a while πŸ‘‰ opt_distrod.tar.gz

    opened by Locietta 17
  • How to change default shell

    How to change default shell

    Is it safe to use a different shell with a user? As the default shell is set to /opt/distrod/alias/usr/bin/bash and I'd like to use fish as the shell for my default user.

    Is it changing it to /usr/bin/fish okay, or will this break any distrod functionality?

    opened by derphilipp 10
  • weston is crashing after enabling wsl-distrod

    weston is crashing after enabling wsl-distrod

    I see weston crashing in "dmesg -Tw" after enabling wsl-distrod. I wrote an issue report to Microsoft's WSLg repository too a week ago.

    https://github.com/microsoft/wslg/issues/564

    There I used https://github.com/DamionGans/ubuntu-wsl2-systemd-script to enable systemd in WSL 2 Ubuntu-20.04 distro. Somehow the problem is related to Windows task scheduler because when manually starting WSL 2, there is no problem with weston.

    opened by aki-k 9
  • [minor] errors on shell startup

    [minor] errors on shell startup

    Hi, when I boot up the first shell in Ubuntu Community Preview, I get: grep: /proc/sys/fs/binfmt_misc/WSLInterop: No such file or directory grep: /proc/sys/fs/binfmt_misc/WSLInterop: No such file or directory In the stable Ubuntu, however, I get: Failed to connect to bus: No such file or directory Failed to connect to bus: No such file or directory

    However, nothing seems to be broken.

    steps to reproduce: wsl --shutdown and then open up a new shell

    opened by ElDavoo 6
  • Install (Option 1) failed - fallback to normal WSL2 command execution without using systemd

    Install (Option 1) failed - fallback to normal WSL2 command execution without using systemd

    Following the README, choosing Option 1 i checked that default for WSL is version 2, then downloaded the .zip linked in Step 1 and executed the .exe to run Distrod. The following is the (self-explaining) output:

            β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
            β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β•β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—
            β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘
            β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ•β•β•β•β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘
            β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•
            β•šβ•β•β•β•β•β• β•šβ•β•β•šβ•β•β•β•β•β•β•   β•šβ•β•   β•šβ•β•  β•šβ•β• β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β•
    =================================================================================
    Thanks for trying Distrod! Choose your distribution to install.
    You can install a local .tar.xz, or download an image from linuxcontainers.org.
    
    * linuxcontainers.org is a vendor-neutral project that offers distro images for
      containers, which is not related to Distrod. LXC/LXD is one of its projects.
      BTW, you can run Systemd with distrod, so you can try LXC/LXD with distrod!
    =================================================================================
    [1] Use a local tar.xz file
    [2] Download an image from linxcontainers.org
    [Distrod] Choose the way to get a distro image from the list above.
    [Distrod] Type the name or the index of your choice.
    [Default: Download an image from linxcontainers.org]: 2
    [Distrod] Fetching from linuxcontainers.org...
    [1] almalinux
    [2] alpine
    [3] alt
    [4] amazonlinux
    [5] apertis
    [6] archlinux
    [7] busybox
    [8] centos
    [9] debian
    [10] devuan
    [11] fedora
    [12] funtoo
    [13] gentoo
    [14] kali
    [15] mint
    [16] opensuse
    [17] openwrt
    [18] oracle
    [19] plamo
    [20] pld
    [21] rockylinux
    [22] sabayon
    [23] springdalelinux
    [24] ubuntu
    [25] voidlinux
    [Distrod] Choose a linuxcontainers.org image from the list above.
    [Distrod] Type the name or the index of your choice.
    [Default: ubuntu]: 11
    [Distrod] Fetching from linuxcontainers.org...
    [1] 33
    [2] 34
    [3] 35
    [Distrod] Choose a version from the list above.
    [Distrod] Type the name or the index of your choice.
    [Default: 35]: 35
    [Distrod] Fetching from linuxcontainers.org...
    [Distrod] Downloading 'https://images.linuxcontainers.org/images/fedora/35/amd64/default/20211118_20:33/rootfs.tar.xz'...
      [00:00:13] [####################################################] 85.36MiB/85.36MiB (6.23MiB/s, 0s)
    [Distrod] Download done.
    [Distrod] Unpacking and merging the given rootfs to the distrod rootfs. This may take a while...
    [Distrod] Now Windows is installing the new distribution. This may take a while...
    [Distrod] Distrod is installed in %LocalAppData%\Distrod
    [Distrod] Done!
    [Distrod] Please input the new Linux user name. This doesn't have to be the same as your Windows user name.
    [Input user name]: cldsrphl
    Changing password for user cldsrphl.
    New password:
    Retype new password:
    passwd: all authentication tokens updated successfully.
    [Distrod] Querying the generated uid. This may take some time depending on your machine.
    [Distrod] Initializing the new Distrod distribution. This may take a while...
    [Distrod] Distrod has been enabled. Now your shell will start under systemd.
    [Distrod] Setting the default user to uid: 1000
    [Distrod] Installation of Distrod is now complete.
    [Distrod][ERROR] Failed to run the given command in the Systemd container. Fall back to normal WSL2 command execution without using Systemd. Failed to launch the distro.
    
    Caused by:
        0: Failed to make mountpoint shared.
        1: Failed to make the /tmp mountpoint shared.
        2: EINVAL: Invalid argument
    [cldsrphl@D11MMWNX0SDPS66ENGUS distrod_wsl_launcher-x86_64]$
    

    The following is (redacted/freed from personal data) info about my system - commands executed in CMD:

    1. SystemInfo:
    C:\Users\cldsrphl>systeminfo
    Host Name:                 D11MMWNX0SDPS66
    OS Name:                   Microsoft Windows 10 Pro
    OS Version:                10.0.19044 N/A Build 19044
    OS Manufacturer:           Microsoft Corporation
    OS Configuration:          Standalone Workstation
    OS Build Type:             Multiprocessor Free
    
    Original Install Date:     9/16/2021, 3:20:20 AM
    
    System Type:               x64-based PC
    Processor(s):              1 Processor(s) Installed.
                               [01]: AMD64 Family 16 Model 2 Stepping 3 AuthenticAMD ~2300 Mhz
    
    Windows Directory:         C:\Windows
    System Directory:          C:\Windows\system32
    Boot Device:               \Device\HarddiskVolume1
    System Locale:             en-us;English (United States)
    Input Locale:              en-us;English (United States)
    Time Zone:                 (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
    Total Physical Memory:     7,678 MB
    Available Physical Memory: 1,221 MB
    Virtual Memory: Max Size:  15,337 MB
    Virtual Memory: Available: 2,595 MB
    Virtual Memory: In Use:    12,742 MB
    Page File Location(s):     C:\pagefile.sys
    Domain:                    WORKGROUP
    Logon Server:              \\D11MMWNX0SDPS66
    Hotfix(s):                 5 Hotfix(s) Installed.
                               [01]: KB5006365
                               [02]: KB5003791
                               [03]: KB5007186
                               [04]: KB5006753
                               [05]: KB5005699
    Network Card(s):           4 NIC(s) Installed.
                               [01]: Realtek 8185 Extensible 802.11b/g Wireless Device
                                     Connection Name: Wi-Fi
                                     Status:          Media disconnected
                               [02]: Broadcom NetXtreme 57xx Gigabit Controller
                                     Connection Name: Ethernet
                                     DHCP Enabled:    Yes
                                     DHCP Server:     192.168.2.1
                                     IP address(es)
                                     [01]: 192.168.2.136
                                     [02]: fe80::545:81ae:63c6:a9fc
                                     [03]: 2003:cd:70c:bd6f:c551:a499:d529:d25c
                                     [04]: 2003:cd:70c:bd6f:7cfb:63a1:995f:7c7
                                     [05]: 2003:cd:70c:bd6f:545:81ae:63c6:a9fc
                               [03]: VirtualBox Host-Only Ethernet Adapter
                                     Connection Name: VirtualBox Host-Only Network
                                     DHCP Enabled:    No
                                     IP address(es)
                                     [01]: 192.168.56.1
                                     [02]: fe80::34ba:1c8b:7b2:8608
                               [04]: Bluetooth Device (Personal Area Network)
                                     Connection Name: Bluetooth Network Connection 2
                                     Status:          Media disconnected
    Hyper-V Requirements:      A hypervisor has been detected. Features required for Hyper-V will not be displayed.
    
    1. WSL --status:
    C:\Users\cldsrphl>wsl --status
    Default Distribution: Ubuntu-20.04
    Default Version: 2
    
    Windows Subsystem for Linux was last updated on 11/3/2021
    WSL automatic updates are on.
    
    Kernel version: 5.10.60.1
    
    1. WSL --list:
    C:\Users\cldsrphl>wsl --list
    Windows Subsystem for Linux Distributions:
    Ubuntu-20.04 (Default)
    Distrod
    Ubuntu
    
    1. WSL -d distrod:
    C:\Users\cldsrphl>wsl -d distrod
    [Distrod][ERROR] Failed to run the given command in the Systemd container. Fall back to normal WSL2 command execution without using Systemd. Failed to launch the distro.
    
    Caused by:
        0: Failed to make mountpoint shared.
        1: Failed to make the /tmp mountpoint shared.
        2: EINVAL: Invalid argument
    [cldsrphl@D11MMWNX0SDPS66ENGUS cldsrphl]$
    
    1. SystemCtl status (executed inside distrod):
    [cldsrphl@D11MMWNX0SDPS66ENGUS cldsrphl]$ systemctl status
    System has not been booted with systemd as init system (PID 1). Can't operate.
    Failed to connect to bus: Host is down
    

    Please advise how to go on, what commands/procedures might help to investigate the issue.

    Note: I was already running the default Ubuntu wsl-distro as installed originally via wsl --install (not the Ubuntu-20.04 - this one was added later). After the initial setup (specifying user/passwd) i ran sudo apt update and sudo apt full-upgrade - the latter was processing when i executed distrod - mentioning in case there is a need to not have a wsl-distro already running when doing the install via distrod.

    I will now try Option 2, by applying it to the fresh setup and updated Ubuntu wsl-distro.

    opened by claudiusraphael 5
  • [Bug]: Failed to connect to bus: No such file or directory systemctl --user flag

    [Bug]: Failed to connect to bus: No such file or directory systemctl --user flag

    Describe the bug

    Bug happens when I try to run systemctl with --user flag

    normal systemctl enable service works fine but I would like to run as user, is this possible?

    Steps to reproduce

    systemctl --user enable service

    Expected behavior

    No response

    Windows version

    21H2 19044.1348

    Linux kernel version

    Linux win 5.10.60.1-microsoft-standard-WSL2 #1 SMP Wed Aug 25 23:20:18 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

    Distro

    Ubuntu Focal

    Logs

    a

    additional comment

    No response

    opened by lopugit 4
  • [Bug]: Internet speed is absolutely horrible

    [Bug]: Internet speed is absolutely horrible

    Describe the bug

    After I installed Distrod, ubuntu focal, I tried installing some programs, but the internet speed is crazy slow.

    I had normal WSL 2 installed previously, and the internet speed was fine, just wondering if this issue is well known or?

    Kindly

    Steps to reproduce

    Install distrod, run a sudo apt-get install command

    Expected behavior

    No response

    Windows version

    21H2 19044.1348

    Linux kernel version

    Linux win 5.10.60.1-microsoft-standard-WSL2 #1 SMP Wed Aug 25 23:20:18 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

    Distro

    Ubuntu 20.04

    Logs

    .

    additional comment

    No response

    opened by lopugit 4
  • help with running `docker-ce-cli`

    help with running `docker-ce-cli`

    I have followed instructions and installed Debian with distrod, now i've tried to install docker-ce-cli

    manually dockerdis running but service cannot be started, how can i debug or analyse more?

    systemctl status docker.service
    ● docker.service - Docker Application Container Engine
         Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
         Active: failed (Result: exit-code) since Thu 2021-11-25 19:24:50 CET; 32s ago
    TriggeredBy: ● docker.socket
           Docs: https://docs.docker.com
        Process: 2930 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
       Main PID: 2930 (code=exited, status=1/FAILURE)
    
    Nov 25 19:24:50 md3fhv6c systemd[1]: docker.service: Scheduled restart job, restart counter is at 3.
    Nov 25 19:24:50 md3fhv6c systemd[1]: Stopped Docker Application Container Engine.
    Nov 25 19:24:50 md3fhv6c systemd[1]: docker.service: Start request repeated too quickly.
    Nov 25 19:24:50 md3fhv6c systemd[1]: docker.service: Failed with result 'exit-code'.
    Nov 25 19:24:50 md3fhv6c systemd[1]: Failed to start Docker Application Container Engine.
    Nov 25 19:25:16 md3fhv6c systemd[1]: docker.service: Start request repeated too quickly.
    Nov 25 19:25:16 md3fhv6c systemd[1]: docker.service: Failed with result 'exit-code'.
    Nov 25 19:25:16 md3fhv6c systemd[1]: Failed to start Docker Application Container Engine.
    
    opened by andboss 3
  • systemctl reboot gives error Failed to spawn the command status.code() is None unexpectedly

    systemctl reboot gives error Failed to spawn the command status.code() is None unexpectedly

    I installed ArchLinux using Distrod. I have enabled it upon being given a prompt. I install xorg-server and xorg-xinit. I installed lightdm and lightdm-gtk-greeter and enabled it using systemctl enable lightdm. I also installed qtile using pacman -S qtile. After that, to start lightdm at startup, I did systemctl reboot. I got the following error:

    Hangup [Distrod][ERROR] Failed to spawn the command. Caused by: status.code() is None unexpectedly.

    I then tried to start x server manually by doing startx which gave the following error: Xorg.1.log

    I had also install alacritty terminal emulator and when I ran alacritty, it worked fine and a terminal instance spawned.

    I also tried starting qtile directly by running qtile start but got the error

    2021-11-22 16:49:34,139 libqtile core.py:init():L106 not starting; existing window manager Weston WM Traceback (most recent call last): File "/usr/sbin/qtile", line 33, in sys.exit(load_entry_point('qtile==0.18.1', 'console_scripts', 'qtile')()) File "/usr/lib/python3.9/site-packages/libqtile/scripts/main.py", line 55, in main options.func(options) File "/usr/lib/python3.9/site-packages/libqtile/scripts/start.py", line 87, in start q = make_qtile(options) File "/usr/lib/python3.9/site-packages/libqtile/scripts/start.py", line 50, in make_qtile kore = libqtile.backend.get_core(options.backend) File "/usr/lib/python3.9/site-packages/libqtile/backend/init.py", line 15, in get_core return importlib.import_module(f"libqtile.backend.{backend}.core").Core(*args) File "/usr/lib/python3.9/site-packages/libqtile/backend/x11/core.py", line 107, in init raise ExistingWMException(existing_wmname) libqtile.backend.x11.core.ExistingWMException: Weston WM

    meaning that Weston WM (which I guess wsl is built on) was already running

    I am on windows build 22504.1010

    opened by IamMarcIvanov 3
  • Failed to register the distribution

    Failed to register the distribution

    System: Windows 10 Pro, WSL version 2. Here's the log:

    [Distrod] Choose a linuxcontainers.org image from the list above.
    [Distrod] Type the name or the index of your choice.
    [Default: ubuntu]: 4
    [Distrod] Fetching from linuxcontainers.org...
    [1] 2.0.20210525.0
    [2] current
    [Distrod] Choose a version from the list above.
    [Distrod] Type the name or the index of your choice.
    [Default: current]:
    [Distrod] Fetching from linuxcontainers.org...
    [Distrod] Downloading 'https://images.linuxcontainers.org/images/amazonlinux/current/amd64/default/20211109_05:09/rootfs.tar.xz'...
      [00:00:02] [#########################################################################] 52.27MiB/52.27MiB (25.77MiB/s, 0s)
    [Distrod] Download done.
    [Distrod] Unpacking and merging the given rootfs to the distrod rootfs. This may take a while...
    [Distrod] Now Windows is installing the new distribution. This may take a while...
    Unspecified error
    [Distrod][ERROR] Failed to register the distribution.
    Caused by:
        Failed: cmd.exe /C wsl --import Distrod %LocalAppData%\Distrod "C:\\Users\\me\\AppData\\Local\\Temp\\.tmpdmQenr\\install.tar.gz"
    
    opened by alexeiz 3
  • Option 2's `dstros enable --start-on-windows-boot` seems to require restarting WSL2

    Option 2's `dstros enable --start-on-windows-boot` seems to require restarting WSL2

    I followed the steps in Option 2 of README.

    Step 1, downloading and installing scripts succeeded.

    In step 2, I got this error.

    [Distrod][WARN] whoami.exe had an error:
    [Distrod][ERROR] Failed to enable the autostart on Windows boot.
    
    Caused by:
        wslpath -w '/tmp/.tmpTQ234D' exited with error. stderr: /bin/wslpath: /tmp/.tmpTQ234D: Invalid argument
    

    I checked whoami.exe and wslpath, and I found these commands do not work with sudo.

    > /mnt/c/Windows/System32/whoami.exe
    desktop-xxxxxx\tomyk
    ~
    > sudo /mnt/c/Windows/System32/whoami.exe
    ((no output with exit status code 255))
    
    > wslpath -w /tmp/.tmpTQ234D
    \\wsl.localhost\Ubuntu\tmp\.tmpTQ234D
    ~
    > sudo wslpath -w /tmp/.tmpTQ234D
    wslpath: /tmp/.tmpTQ234D: Invalid argument
    

    This is fixed by running /opt/distrod/bin/distrod enable, wsl --termiante Ubuntu, and wsl zsh, then run /opt/distrod/bin/distrod enable --start-on-windows-boot again. Here these commands return the same results with and without sudo.

    I suggest to put instructions to restart WSL2 for --start-on-windows-boot if it fails.

    opened by tomykaira 3
  • [Bug]: Failed to disable systemd-resolved.service. on Nixos

    [Bug]: Failed to disable systemd-resolved.service. on Nixos

    Describe the bug

    I try to make my Nixos Distro Run Systemd with the second method.

    Steps to reproduce

    It'run on my Nixos on wsl.

    I do what is written on the paragraph "Option 2: Make your Current Distro Run Systemd"

    curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh"
    chmod +x install.sh
    

    I've change install.sh mkdir become mkdir -p in order to fix the following problem: can't create the file sudo ./install.sh install It works

    /opt/distrod/bin/distrod enable --start-on-windows-boot doesn't work. I need root permission.

    sudo /opt/distrod/bin/distrod enable --start-on-windows-boot

    [Distrod][WARN] Faled to disable systemd-resolved.service. Error: Failed to parse unit file '"/etc/systemd/system/systemd-resolved.service"'.

    Caused by: description() is deprecated; use Display: No directives in the file [Distrod][ERROR] Failed to initialize the rootfs.

    Caused by: 0: Failed to create per-user WSL envs load script. 1: Failed to create HostPath("/etc/profile.d/distrod-user-wsl-envs.sh") 2: No such file or directory (os error 2)

    It doesn't work. I've already done that with Debian on WSL and it has worked fine. That is a problem specific to Nixos

    Expected behavior

    No response

    Windows version

    windows 11

    Linux kernel version

    Linux nixos 5.15.79.1-microsoft-standard-WSL2 #1 SMP Wed Nov 23 01:01:46 UTC 2022 x86_64 GNU/Linux

    Distro

    Nixos

    How did you install that distro?

    Installed by Distrod wizard

    Logs

    I've used the second option I haven't launch Distrod. I've tried the first option, but it has worked as I gived the tar.something file but that is another problem.

    additional comment

    No response

    opened by GENDRAUD 0
  • [Bug]: some systemd services failed

    [Bug]: some systemd services failed

    Describe the bug

    I don't know if these failures are serious but after an upgrade to systemd 102 and distrod 0.1.7 with archlinux, my system is shown as degraded because of 4 services which have failed.

    Steps to reproduce

    1. updade wsl with wsl-update
    2. updade archlinux
    3. update distrod

    Expected behavior

    Before update, system was fine (no service failures).

    Windows version

    Windows 10 version 21H2 (19044.2251)

    Linux kernel version

    Linux HOSTNAME 5.10.102.1-microsoft-standard-WSL2 #1 SMP Wed Mar 2 00:30:59 UTC 2022 x86_64 GNU/Linux

    Distro

    Archlinux (rollling)

    How did you install that distro?

    Installed by Distrod wizard

    Logs

    $ systemctl status --failed
    Γ— systemd-sysctl.service - Apply Kernel Variables
         Loaded: loaded (/usr/lib/systemd/system/systemd-sysctl.service; static)
         Active: failed (Result: exit-code) since Tue 2022-12-13 09:26:19 CET; 33min ago
           Docs: man:systemd-sysctl.service(8)
                 man:sysctl.d(5)
        Process: 123 ExecStart=/usr/lib/systemd/systemd-sysctl (code=exited, status=243/CREDENTIALS)
       Main PID: 123 (code=exited, status=243/CREDENTIALS)
    
    Γ— systemd-tmpfiles-clean.service - Cleanup of Temporary Directories
         Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.service; static)
        Drop-In: /run/systemd/system/systemd-tmpfiles-clean.service.d
                 └─exclude_wslg_sockets.conf
         Active: failed (Result: exit-code) since Tue 2022-12-13 09:41:48 CET; 17min ago
    TriggeredBy: ● systemd-tmpfiles-clean.timer
           Docs: man:tmpfiles.d(5)
                 man:systemd-tmpfiles(8)
        Process: 1226 ExecStart=systemd-tmpfiles --clean --exclude-prefix=/tmp/.X11-unix (code=exited, status=243/CREDENTIA>
       Main PID: 1226 (code=exited, status=243/CREDENTIALS)
    
    Γ— systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev
         Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup-dev.service; static)
         Active: failed (Result: exit-code) since Tue 2022-12-13 09:26:19 CET; 33min ago
           Docs: man:tmpfiles.d(5)
                 man:systemd-tmpfiles(8)
        Process: 132 ExecStart=systemd-tmpfiles --prefix=/dev --create --boot (code=exited, status=243/CREDENTIALS)
       Main PID: 132 (code=exited, status=243/CREDENTIALS)
    
    Γ— systemd-tmpfiles-setup.service - Create Volatile Files and Directories
         Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static)
        Drop-In: /run/systemd/system/systemd-tmpfiles-setup.service.d
                 └─exclude_wslg_sockets.conf
         Active: failed (Result: exit-code) since Tue 2022-12-13 09:26:19 CET; 33min ago
           Docs: man:tmpfiles.d(5)
                 man:systemd-tmpfiles(8)
        Process: 147 ExecStart=systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev --exclude-prefix=/tmp/.X11-u>
       Main PID: 147 (code=exited, status=243/CREDENTIALS)
    

    additional comment

    No response

    opened by pendenaor 0
  • Support spaces in Windows usernames/user folder

    Support spaces in Windows usernames/user folder

    Microsoft will format a user's folder as "C:\Users\FirstName LastName" in some circumstances. The command line arguments must be quoted to ensure that the file path is treated as one argument.

    opened by BenjaminBrienen 0
  • /run/httpd gets deleted after every reboot of CentOS7

    /run/httpd gets deleted after every reboot of CentOS7

    I have some problems with running Apache and MariaDB in CentOS7 on Distrod. I have installed both in a fresh WSL 2 installation of CentOS7, they work until I restart WSL with wsl --shutdown or wsl --terminate Distrod.

    It turned out that Apache fails to start after reboot because the /run/httpd directory gets deleted when restarting CentOS. I managed to get Apache running by recreating the missing directory: sudo mkdir /run/httpd sudo chown root:apache /run/httpd sudo chmod 0710 /run/httpd sudo systemctl start httpd.service sudo systemctl status -l httpd.service

    However, I can't start MariaDB, must be something similar, but I don't know yet what is missing here.

    My question is how to make the contents of the /run/ directory persistent to survive rebooting?

    opened by aleskl 0
  • [Bug]: Can't install two distros on on one machine

    [Bug]: Can't install two distros on on one machine

    Describe the bug

    after installing the first distro, if we open the setup file again it throws me in the same first distro and doesnot let me install another distro.

    Steps to reproduce

    try to install two distros

    Expected behavior

    setup doesnot run like the first run

    Windows version

    11

    Linux kernel version

    5.15.74.2

    Distro

    Arch Linux

    How did you install that distro?

    Installed by Distrod wizard

    Logs

    sorry, can't provide logs

    additional comment

    No response

    opened by Vrashabh-Sontakke 1
Releases(v0.1.7)
Owner
Takaya Saeki
οΌˆβ˜•, 🍣, πŸ”) => πŸ’»
Takaya Saeki
RCore-Tutorial-v3 - Let's write an OS which can run on RISC-V in Rust from zero!

rCore-Tutorial-v3 rCore-Tutorial version 3.5. See the Documentation in Chinese. Official QQ group number: 735045051 news 2021.11.20: Now we are updati

rCore OS 786 Jan 2, 2023
Let's write an OS which can run on ARM in Rust from scratch

rCore-Tutorial-v3 rCore-Tutorial version 3.5. See the Documentation in Chinese. news 2021.11.20: Now we are updating our labs. Please checkout chX-dev

rCore OS 10 Dec 17, 2022
Let's write an OS which can run on x86_64 in Rust from scratch

rCore-Tutorial-v3 rCore-Tutorial version 3.5. See the Documentation in Chinese. news 2021.11.20: Now we are updating our labs. Please checkout chX-dev

rCore OS 6 Apr 1, 2022
A lightweight microkernel/IPC based operating system built with Rust which is not a clone of any existing operating system

Noble Operating System Noble is a lightweight microkernel and IPC based operating system built with Rust which is not a clone of any existing operatin

Revolution Xenon 3 Jan 10, 2022
Open Source Rust kernel; Runs WASM and WASI as lightweight containers.

?? etheryal Kernel etheryal kernel is an Open Source capability-based Kernel written in the Rust programming language. The kernel allows implementing

null 32 Dec 4, 2022
(Going to be) A microkernel that implements a WebAssembly "usermode" that runs in Ring 0.

Read this (from the creator of Nebulet) Hi everyone, It's been a while since I've looked at this repository. Nebulet is not in active development, and

Nebulet 2.3k Dec 15, 2022
A language-based OS to run Rust on bare metal

RustOS A simple, language-based OS. Current features: Simple VGA for seeing output Some Rust libraries (core, alloc, collections) already in Working (

null 402 Dec 8, 2022
A language-based OS to run Rust on bare metal

RustOS A simple, language-based OS. Current features: Simple VGA for seeing output Some Rust libraries (core, alloc, collections) already in Working (

null 79 Dec 3, 2022
A library that makes it VERY easy to run Holochain as a library, from your own binary, with great defaults

embedded-holochain-runner A library that makes it VERY easy to run Holochain as a library, from your own binary, with great defaults How it will work

Sprillow 14 Jul 23, 2022
Examples on how to write Windows kernel drivers in Rust

windows-kernel-rs Note: this is still work in progress! This is a Windows kernel framework in Rust that consists of windows-kernel-sys, a crate that p

S.J.R. van Schaik 77 Dec 28, 2022
The Operating System built for modern humans!

What is QuantumOS? Quantum OS is a continuation project of my ever loving joy for operating system development. I started with a project called Fluxed

Main Menu 11 Dec 31, 2022
The official kernel for Popcorn OS, and operating system designed for handheld devices.

About Popkern is the kernel for Popcorn OS, an operating system designed for handheld devices. As such, the kernel is (to be) optimised at all levels

Team Scena 3 Sep 19, 2021
πŸ’ Small, simple, and fast kernel written in Rust. 🌸

?? Small, simple, and fast kernel written in Rust. ??

Cherry Developers 5 May 20, 2022
An UEFI application that unlocks a SED and starts an OS from it. Written in Rust

opal-uefi-greeter This is an UEFI application written in Rust that unlocks a SED and then launches another UEFI application from the unlocked drive -

Anton Bulakh 26 Jan 4, 2023
suidsnoop is a tool based on eBPF LSM programs that logs whenever a suid binary is executed and implements custom allow/deny lists.

suidsnoop Log suid binaries and enforce per-uid suid policy. suidsnoop is a tool for logging whenever a suid binary is executed on your system and opt

William Findlay 11 Dec 22, 2022
This project is based on code from freertos.rs and some additions to simplify the usage of FreeRTOS in embedded applications written in Rust

FreeRTOS-rust This project is based on code from freertos.rs and some additions to simplify the usage of FreeRTOS in embedded applications written in

Lobaro 196 Jan 4, 2023
A RISC-V and unix-like operating system developed just for fun.

Orca θ™Žι²Έ A RISC-V and unix-like operating system developed just for fun. Schedule [*] bootloader (use RustSBI-qemu) [ ] linker & stack [ ] memory alloc

Mr.Z 4 May 29, 2022
Writing an OS in Rust, To Study Operating System and Computer System

Hun Os Writing an OS in Rust, To Study Operating System and Computer System Reference Os Written In Rust https://github.com/seonghun-dev/blog_os https

Jung Seonghun 2 Dec 15, 2022
Cross-architecture utilities for temporarily disabling interrupts and signals.

interrupts Cross-architecture utilities for temporarily disabling interrupts and signals. Use disable to disable interrupts with a guard: // interrupt

Martin KrΓΆning 4 Oct 5, 2023