Code Monkey home page Code Monkey logo

manjarowsl2's Introduction

Disclaimer

This project is in no way related to or created by the official Manjaro team or its members. It is solely a project of mine. Do not go around spamming the Manjaro forum if you come across any issues. You certainely won't receive any help. Mention your issues here and I'll try to find a solution.

ManjaroWSL2

Manjaro on WSL2 (Windows 10 FCU or later) based on wsldl.

Screenshot-2022-11-17-155106.png Github All Releases GitHub release (latest by date) PRs Welcome License

Features and important information

ManjaroWSL2 may not properly load the Intel WSL driver by default which makes it impossible to use the D3D12 driver on Intel graphics cards. This is because the Intel WSL driver files link against libraries that do not exist on Manjaro. You can manually fix this issue using ldd to see which libraries they are linked, eg: ldd /usr/lib/wsl/drivers/iigd_dch_d.inf_amd64_49b17bc90a910771/*.so, and then try installing the libraries marked not found from the Manjaro package repository. If the corresponding library file is not found in the package repository, it may be that the version suffix of the library file is different, such as libedit.so.0.0.68 and libedit.so.2. In such a case, you can try to create a symlink.

ManjaroWSL2 has the following features during the installation stage.

  • Increase virtual disk size from the default 256GB
  • Create a new user and set the user as default
  • ManjaroWSL2 Supports systemd natively if you are running wsl v0.67.6 (more details here) and above. For earlier versions of wsl, systemd is supported using diddledani's one-script-wsl2-systemd. This is done automatically during initial setup.
  • ManjaroWSL2 includes a wsl.conf file which only has section headers. Users can use this file to configure the distro to their liking. You can read more about wsl.conf and its configuration settings here.

Requirements

  • For x64 systems: Version 1903 or higher, with Build 18362 or higher.
  • For ARM64 systems: Version 2004 or higher, with Build 19041 or higher.
  • Builds lower than 18362 do not support WSL 2.
  • If you are running Windows 10 version 2004 or higher, you can install all components required to run wsl2 with a single command. This will install ubuntu by default. More details are available here.
     wsl.exe --install
  • If you are running Windows 10 lower then version 2004, follow the steps below. For more details, check this microsoft document.
    • Enable Windows Subsystem for Linux feature.
     dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    • Enable Virtual Machine feature
     dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    • Download and install the latest Linux kernel update package from here.

How to install

  • Make sure all the steps mentioned under "Requirements" are completed.
  • Download installer zip
  • Extract all files in zip file to same directory
  • Set version 2 as default. Note that this step is required only for manual installation.
    wsl --set-default-version 2
    
  • Run Manjaro.exe to extract rootfs and register to WSL

Note: Exe filename is using the instance name to register. If you rename it you can register with a diffrent name and have multiple installs.

How to setup

ManjaroWSL2 will ask you to create a new user during its first run. If you choose to create a new user during the first run, the steps below are not required unless you want to create additional users.

Open Manjaro.exe and run the following commands.

passwd
useradd -m -g users -G wheel -s /bin/bash <username>
echo "%wheel ALL=(ALL) ALL" >/etc/sudoers.d/wheel
passwd <username>
exit

You can set the user you created as default user using 2 methods.

Open Manjaro.exe, run the following command (replace username with the actual username you created).

sed -i '/\[user\]/a default = username' /etc/wsl.conf

Shutdown and restart the distro (this step is important).

(or)

Execute the command below in a windows cmd terminal from the directory where Manjaro.exe is installed.

>Manjaro.exe config --default-user <username>

Set up pacman mirrors before you proceed using ManjaroWSL2. Pacman is configured to use the Global mirror by default. Switch to the mirror/mirrors of your choice or reset to use all mirrors before you update. More information on how to use pacman-mirrors is available here.

$sudo pacman-mirrors --country <name>
$sudo pacman -Syu

How to use installed instance

exe usage

Usage :
    <no args>
      - Open a new shell with your default settings.

    run <command line>
      - Run the given command line in that instance. Inherit current directory.

    runp <command line (includes windows path)>
      - Run the given command line in that instance after converting its path.

    config [setting [value]]
      - `--default-user <user>`: Set the default user of this instance to <user>.
      - `--default-uid <uid>`: Set the default user uid of this instance to <uid>.
      - `--append-path <true|false>`: Switch of Append Windows PATH to $PATH
      - `--mount-drive <true|false>`: Switch of Mount drives
      - `--default-term <default|wt|flute>`: Set default type of terminal window.

    get [setting]
      - `--default-uid`: Get the default user uid in this instance.
      - `--append-path`: Get true/false status of Append Windows PATH to $PATH.
      - `--mount-drive`: Get true/false status of Mount drives.
      - `--wsl-version`: Get the version os the WSL (1/2) of this instance.
      - `--default-term`: Get Default Terminal type of this instance launcher.
      - `--lxguid`: Get WSL GUID key for this instance.

    backup [contents]
      - `--tar`: Output backup.tar to the current directory.
      - `--reg`: Output settings registry file to the current directory.
	  - `--tgz`: Output backup.tar.gz to the current directory.
      - `--vhdx`: Output backup.ext4.vhdx to the current directory.
      - `--vhdxgz`: Output backup.ext4.vhdx.gz to the current directory.

    clean
      - Uninstall that instance.

    help
      - Print this usage message.

Run exe

>{InstanceName}.exe
[root@PC-NAME user]#

Run with command line

>{InstanceName}.exe run uname -r
4.4.0-43-Microsoft

Run with command line using path translation

>{InstanceName}.exe runp echo C:\Windows\System32\cmd.exe
/mnt/c/Windows/System32/cmd.exe

Change default user(id command required)

>{InstanceName}.exe config --default-user user

>{InstanceName}.exe
[user@PC-NAME dir]$

Set "Windows Terminal" as default terminal

>{InstanceName}.exe config --default-term wt

How to update

Updating Manjaro doesn't require you to download and install a newer release everytime. Usually all it takes is to run the command below to update the instance.

$sudo pacman -Syu

Sometimes updates may fail to install. You can try the command below in such a situation.

$sudo pacman -Syyuu

You may need to install a newer release if additional features have been added/removed from the installer.

How to uninstall instance

>Manjaro.exe clean

How to backup instance

export to backup.tar.gz

>Manjaro.exe backup --tgz

export to backup.ext4.vhdx.gz

>Manjaro.exe backup --vhdxgz

How to restore instance

There are 2 ways to do it.

Rename the backup to rootfs.tar.gz and run Manjaro.exe

(or)

.tar(.gz)

>Manjaro.exe install backup.tar.gz

.ext4.vhdx(.gz)

>Manjaro.exe install backup.ext4.vhdx.gz

You may need to run the command below in some circumstances.

>Manjaro.exe --default-uid 1000

How to build from source

prerequisites

Docker, tar, zip, unzip, bsdtar need to be installed.

git clone [email protected]:sileshn/ManjaroWSL2.git
cd ManjaroWSL2
make

Copy the Manjaro.zip file to a safe location and run the command below to clean.

make clean

How to run docker in ManjaroWSL2 without using docker desktop

Install docker.

sudo pacman -S docker

Follow this blog post for further details on how to setup. Alternatively, if using systemd, use the commands below to setup and reboot.

sudo systemctl start docker.service
sudo systemctl enable docker.service
sudo usermod -aG docker $USER

Screenshot-2022-11-17-155326.png

How to setup a desktop environment

You need to follow the official instructions to setup desktop environment.

Take Plasma 5 as an example, first install the desktop environment:

sudo pacman -S plasma kio-extras
sudo systemctl enable sddm.service --force

Second, you need to install the xorg and xrdp.

pacman -S xorg xorg-server xrdp

xorgxrdp is in AUR so you can install it with yay or pamac.

yay -S xorgxrdp

Then you need to enable and start xrdp service.

sudo systemctl enable xrdp.service
sudo systemctl start xrdp.service
sudo systemctl reboot

You will need to add below code to your ~/.xinitrc file. Create the file if it doesn't exist.

#!/bin/sh
/usr/lib/plasma-dbus-run-session-if-needed startplasma-x11

Finally, execute ip addr | grep eth0 to get the IP address. You should be able to press Win+R and run mstsc to connect to your RDP server with the ip:3389 as target input. Remember to select the xvnc option to log in, you should be able to see the desktop after it.

Refer to the following links for more information.

https://www.reddit.com/r/ManjaroLinux/comments/iu1mxb/manjaro_running_on_wsl_2_windows_subsystem_for/ https://wiki.archlinux.org/title/xrdp#Black_screen_with_a_desktop_environment

299938465-44a7d727-5383-40e9-bc86-6f5f6bd92043.png

manjarowsl2's People

Contributors

biswa96 avatar fubuchi avatar harryyoud avatar hill-98 avatar jackthemico avatar nils-werner avatar sileshn avatar sitiom avatar vinfall avatar yosukes-dev avatar yuk7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

manjarowsl2's Issues

fails to update. Also cannot install pamac in the readme. PGP signature is incorrect.

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

Microsoft Windows [Version 10.0.22621.1702]

Kernel Version

Linux version 5.15.90.1-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Fri Jan 27 02:56:13 UTC 2023

Repro Steps

sudo pacman -Syu

Expected Behavior

Installs and updates.

Actual Behavior

[brian@DESKTOP-HMN4M4C ~]$ sudo pacman -Syu
error: wslutilities: signature from "WSL Utilities Package Signing Key [email protected]" is unknown trust
:: Synchronizing package databases...
core 143.6 KiB 49.4 KiB/s 00:03 [##############################################] 100% extra 1636.8 KiB 2.13 MiB/s 00:01 [##############################################] 100% community 7.0 MiB 8.24 MiB/s 00:01 [##############################################] 100% multilib 145.5 KiB 808 KiB/s 00:00 [##############################################] 100% wslutilities 1153.0 B 1098 B/s 00:01 [##############################################] 100%error: wslutilities: key "2D4C887EB08424F157151C493DD50AA7E055D853" is unknown
:: Import PGP key 2D4C887EB08424F157151C493DD50AA7E055D853? [Y/n] Y
error: key "2D4C887EB08424F157151C493DD50AA7E055D853" could not be looked up remotely
error: failed to synchronize all databases (invalid or corrupted database (PGP signature))

Blue Screen Issue After Setting Up KDE Plasma Desktop and Connecting via RDP

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

10.0.22621.3155

Kernel Version

5.15.133.1-1

Repro Steps

  1. Install KDE Plasma and necessary packages with:
    sudo pacman -S plasma kio-extras
    sudo systemctl enable sddm.service --force
    pacman -S xorg xorg-server xrdp
    yay -S xorgxrdp
  2. Enable and start xrdp service:
  3. sudo systemctl enable xrdp.service
    sudo systemctl start xrdp.service
    sudo systemctl reboot
  4. Add the specified code to ~/.xinitrc.
  5. Obtain IP address with ip addr | grep eth0.
  6. Connect to the RDP server using mstsc with ip:13389 and select the xvnc option.

Expected Behavior

I expected to see the KDE Plasma desktop environment after successfully logging in through the RDP session.

Actual Behavior

After entering my username and password, I am presented with a blue screen, and the desktop environment does not load.
image

Can't install some packages through pacman.

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

Microsoft Windows [Version 10.0.19045.3324]

Kernel Version

5.15.90.1

Repro Steps

Run sudo pacman -S nasm

Expected Behavior

Nasm being installed.

Actual Behavior

~/s/c/asmtest > sudo pacman -S nasm        
[sudo] password for taitep: 
error: wslutilities: signature from "WSL Utilities Package Signing Key <[email protected]>" is unknown trust
error: database 'wslutilities' is not valid (invalid or corrupted database (PGP signature))

ManjaroWSL2 in any terminal running tmux crashes after a time (seconds to minutes)

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

Microsoft Windows [Version 10.0.22631.3296]

Kernel Version

Linux version 5.15.146.1-microsoft-standard-WSL2 (root@65c757a075e2) (gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37) #1 SMP Thu Jan 11 04:09:03 UTC 2024

Repro Steps

Install ManjaroWSL2 following all instructions with careful attention to detail.

pamac install zsh
pamac install tmux

Install your regular zsh/tmux dot files

Open a Manjaro WSL2 session in for example Windows Terminal. Work along as usual for some small period of time at which point an error message flashes something like:

"No session available" and then the tab closes/vanishes.

Expected Behavior

I was running ManjaroWSL2 perfectly for a few months with no issue and this started happening all of a sudden out of the blue.

I never had it kill my terminal tab unexpectedly. That's what I would expect :)

Actual Behavior

Open a Manjaro WSL2 session in for example Windows Terminal. Work along as usual for some small period of time at which point an error message flashes something like:

"No session available" and then the tab closes/vanishes.

gpu not used by mesa driver

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

10.0.22621.819

Kernel Version

5.15.74.2

Repro Steps

WSL Version: 1.0.0.0
kernel Version: 5.15.74.2
WSLg Version: 1.0.47
MSRDC Version: 1.2.3575
Direct3D Version: 1.606.4
DXCore Version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows Version: 10.0.22621.819


pacman -S mesa mesa-utils
glxgears

check on windows taskmanager to see if the gpu is being used.

Expected Behavior

the gpu is used to render glxgears

Actual Behavior

glxgears is rendered using cpu


additional info:

❯ glxinfo | grep -i opengl
OpenGL vendor string: Mesa/X.org
OpenGL renderer string: llvmpipe (LLVM 14.0.6, 256 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 22.2.3
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5 (Compatibility Profile) Mesa 22.2.3
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 22.2.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
❯ lspci
94ed:00:00.0 3D controller: Microsoft Corporation Basic Render Driver

Hardware 3D acceleration does not seem to work/be enabled

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

Microsoft Windows [Version 10.0.22621.1555]

Kernel Version

5.15.90.1-microsoft-standard-WSL2

Repro Steps

Follow normal installation

Expected Behavior

To see decent performance with 3D acceleration

Actual Behavior

GUI works fine, I can run GUI apps, but they're extremely slow, and as far as I can tell, not using my graphics card?

I tried using glxgears as a benchmark, and would get ~120fps on my computer, but on my laptop that runs Manjaro, I get ~40000fps. My computer that I'm testing this on has a 1080 ti vs a shoddy integrated GPU in my laptop, so this doesn't stack up? I would've tried more benchmarks, but most crashed.
When I check task manager running GUI apps I also see my CPU usage spike, and don't see any GPU usage?

Anyway, I checked neofetch and lspci, and both tell me that my GPU is a 0b26:00:00.0 Microsoft Corporation Basic Render Driver, which I suspect is some kind of software fallback?
Strangely enough, the GL Vendor is set to NVIDIA GeForce GTX 1080 Ti.

OpenGL 4.2
D3D12 (NVIDIA GeForce GTX 1080 Ti): Microsoft Corporation
GLSL version: 4.2

Request dnsutils package be added as part of the base image.

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

Microsoft Windows [Version 10.0.22621.1992]

Kernel Version

Kernel version: 5.15.90.1

Repro Steps

Attempt to perform a nslookup with base image.

$ nslookup

Expected Behavior

nslookup should be present and perform the needful lookup

Actual Behavior

The command isn't available in the base MarjaroWSL2 image so you get a command not found error.
This is part of the dnsutils package.

Having these tools available the ability to download packages in order to diagnose DNS related network issues. This is especially important in WSL in environments where you're connection is routed through a VPN. In this case DNS traffic to "normal" DNS servers may be blocked.

Can not open manjaro this time

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

Microsoft Windows [Version 10.0.22621.819]

Kernel Version

can not open manjaro

Repro Steps

use wsl.exe to run manjaro.

Expected Behavior

灾难性故障
Error code: Wsl/Service/CreateInstance/E_UNEXPECTED

[已退出进程,代码为 4294967295 (0xffffffff)]

Actual Behavior

manjaro is open

GPU integration with ManjaroWSL2

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

Microsoft Windows [Version 10.0.22631.2861]

Kernel Version

5.15.146.1-microsoft-standard-WSL2

Repro Steps

I came into this while using hashcat:
hashcat -I
hashcat (v6.2.6) starting in backend information mode

clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR

ATTENTION! No OpenCL, HIP or CUDA compatible platform found.

You are probably missing the OpenCL, CUDA or HIP runtime installation.

* AMD GPUs on Linux require this driver:
  "AMDGPU" (21.50 or later) and "ROCm" (5.0 or later)
* Intel CPUs require this runtime:
  "OpenCL Runtime for Intel Core and Intel Xeon Processors" (16.1.1 or later)
* NVIDIA GPUs require this runtime and/or driver (both):
  "NVIDIA Driver" (440.64 or later)
  "CUDA Toolkit" (9.0 or later)
  

Despite nvidia-smi finding my 4070 gpu.

Is there a way to apply computation via my host GPU?
Seems Nvidia supports easy installation for Ubuntu, and hints on installing nvidia-toolkit-12-x alone to handle this on other distros.
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#getting-started-with-cuda-on-wsl

Expected Behavior

It would be nice to be able to run GPU processes on the WSL side, might be beneficial for machine learning or hash cracks...

Actual Behavior

I can detect the GPU with nvidia-smi, but cant using clinfo, hashcat, or johntheripper.

wslutilities key

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

Windows version: 10.0.22621.1702

Kernel Version

5.15.90.1

Repro Steps

Install ManjaroWSL2 as per instructions up to
sudo pacman -Syu in "How to setup"

Expected Behavior

sudo pacman -Syu completes successfully.

Actual Behavior

Running this command shows the error:

error: wslutilities: key "2D4C887EB08424F157151C493DD50AA7E055D853" is unknown
:: Import PGP key 2D4C887EB08424F157151C493DD50AA7E055D853? [Y/n]

Type Y

error: key "2D4C887EB08424F157151C493DD50AA7E055D853" could not be looked up remotely
error: failed to synchronize all databases (invalid or corrupted database (PGP signature))

I can't run Manjaro

Requirements

  • Yes
  • No

WSL Version

  • WSL 2
  • WSL 1

Version

Microsoft Windows [Version 10.0.19045.2546]

Kernel Version

No response

Repro Steps

Just run Manjaro.exe

Expected Behavior

It should start

Actual Behavior

I get an error:

PS D:\PortablePrograms\Manjaro> .\Manjaro.exe
Processing fstab with mount -a failed.

<3>WSL (9) ERROR: CreateProcessEntryCommon:570: execvpe /bin/bash failed 8
<3>WSL (9) ERROR: CreateProcessEntryCommon:579: Create process not expected to return

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.