<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Damian Cyrus</title>
    <description>The latest articles on DEV Community by Damian Cyrus (@damian_cyrus).</description>
    <link>https://dev.to/damian_cyrus</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F138869%2Feaf22844-4f68-4701-abd9-700960b64e1c.jpg</url>
      <title>DEV Community: Damian Cyrus</title>
      <link>https://dev.to/damian_cyrus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/damian_cyrus"/>
    <language>en</language>
    <item>
      <title>Add Manjaro into WSL 2</title>
      <dc:creator>Damian Cyrus</dc:creator>
      <pubDate>Mon, 03 Jun 2024 14:19:33 +0000</pubDate>
      <link>https://dev.to/damian_cyrus/add-manjaro-into-wsl-2-3f5i</link>
      <guid>https://dev.to/damian_cyrus/add-manjaro-into-wsl-2-3f5i</guid>
      <description>&lt;p&gt;I like Manjaro Linux. Too bad it is my second system, as I still need Windows software every day, which might or not work on a Linux distribution.&lt;/p&gt;

&lt;p&gt;For this I wanted to use it in WSL, and found this nice YouTube video: &lt;a href="https://www.youtube.com/watch?v=h0Wg_aknGdc" rel="noopener noreferrer"&gt;Arch Linux on Windows Subsystem for Linux (WSL) - YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Based on the steps from the video I made my decision to use it as a base. The only preparation for this was to find out which docker image to use. Everything else is the same. I guess other distributions will work similarly if there is a docker image.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Windows 10/11 with WSL 2 support&lt;/li&gt;
&lt;li&gt;docker cli

&lt;ul&gt;
&lt;li&gt;Docker Desktop or&lt;/li&gt;
&lt;li&gt;Rancher Desktop with Container Engine: &lt;code&gt;dockerd (moby)&lt;/code&gt; within the settings&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Windows Terminal&lt;/li&gt;

&lt;li&gt;Windows PowerShell Core (recommended)&lt;/li&gt;

&lt;li&gt;Ubuntu (or any other available distribution from the Windows Store) on WSL installed&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step by step
&lt;/h2&gt;

&lt;p&gt;This guide will not go much into details, as it should bring you fast to an up and running system.&lt;/p&gt;

&lt;p&gt;At the end there will be a condensed version, too. Use it when you understand the topics well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preparations
&lt;/h2&gt;

&lt;p&gt;Make sure about the requirements, and your Linux distribution can run docker within.&lt;/p&gt;

&lt;h2&gt;
  
  
  Login into WSL
&lt;/h2&gt;

&lt;p&gt;Open Windows Terminal, go into your WSL distribution and run following steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pull image from docker hub: &lt;code&gt;docker pull manjarolinux/base&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Create a Manjaro Linux container: &lt;code&gt;docker create -i manjarolinux/base bash&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Copy the first eight or ten characters from the output. Example: &lt;code&gt;83398c22...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Run the container: &lt;code&gt;docker container start 83398c22&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Run interactive shell with it: &lt;code&gt;docker exec -it 83398c22 /bin/bash&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Within the Linux distribution
&lt;/h2&gt;

&lt;p&gt;You have run the bash shell and it should now show information by running: &lt;code&gt;whoami&lt;/code&gt;. It will show your logged in user is &lt;code&gt;root&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Initialize &lt;code&gt;pacman&lt;/code&gt; keys
&lt;/h3&gt;

&lt;p&gt;There might be an optional step, but I recommend it for Arch Linux distributions. This one is for Manjaro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pacman-key &lt;span class="nt"&gt;--refresh-keys&lt;/span&gt;
pacman-key &lt;span class="nt"&gt;--populate&lt;/span&gt; archlinux manjaro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This can take time.&lt;/p&gt;

&lt;p&gt;For more information see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://forum.manjaro.org/t/howto-solve-keyring-related-issues-in-manjaro/96949" rel="noopener noreferrer"&gt;[HowTo] Solve Keyring Related Issues in Manjaro - Contributions / Tutorials - Manjaro Linux Forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.manjaro.org/index.php/Pacman_troubleshooting#Errors_about_Keys" rel="noopener noreferrer"&gt;Pacman troubleshooting - Manjaro#Errors_about_Keys&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Add user and admin rights
&lt;/h2&gt;

&lt;p&gt;Add a user within the &lt;code&gt;wheel&lt;/code&gt; group and change its password:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;useradd &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="nt"&gt;-G&lt;/span&gt; wheel cyrdam
passwd crydam
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why &lt;code&gt;wheel&lt;/code&gt; group? The wheel group will get &lt;code&gt;sudo&lt;/code&gt; privileges in the next steps.&lt;/p&gt;

&lt;p&gt;Next, the packages need to be up to date, and applications installed for user accounts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pacman &lt;span class="nt"&gt;-Syu&lt;/span&gt;
pacman &lt;span class="nt"&gt;-Syu&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;vim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will install &lt;code&gt;sudo&lt;/code&gt; and &lt;code&gt;vim&lt;/code&gt;. You can choose any other shell editor if you like, this will go with the following.&lt;/p&gt;

&lt;p&gt;Now we can add &lt;code&gt;sudo&lt;/code&gt; privileges to the &lt;code&gt;wheel&lt;/code&gt; group by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;EDITOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;vim visudo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And remove the hash character on the following line:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# %wheel ALL=(ALL) ALL&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;should look like&lt;/p&gt;

&lt;p&gt;&lt;code&gt;%wheel ALL=(ALL) ALL&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Save and close &lt;code&gt;vim&lt;/code&gt; by typing: &lt;code&gt;:wq&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Exit the docker container with the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Export the docker image
&lt;/h2&gt;

&lt;p&gt;Create a directory on your hard drive from within the Linux distribution and go there. Then create a sub-folder for the &lt;code&gt;.vhdx&lt;/code&gt; image file. You can choose whatever folder you like, but I recommend not to use a directory within the user directory.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /mnt/c/dev/wsl/
&lt;span class="nb"&gt;mkdir &lt;/span&gt;manjarolinux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The directory &lt;code&gt;manjarolinux&lt;/code&gt; is there to store the &lt;code&gt;.vhdx&lt;/code&gt; file and will be empty at this moment. Stay in the current folder and run this docker command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;export &lt;/span&gt;83398c22 &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /mnt/c/dev/wsl/manjarolinux.tar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will take seconds to write the container into the file given by the path.&lt;/p&gt;

&lt;p&gt;The container ID needs to be the same as at the beginning. You can get it by looking into the container list with: &lt;code&gt;docker container ls&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now exit your Linux distribution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Import the image into WSL
&lt;/h2&gt;

&lt;p&gt;From the Windows Terminal you go to the created directory and check if everything looks fine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;C:&lt;span class="se"&gt;\d&lt;/span&gt;ev&lt;span class="se"&gt;\w&lt;/span&gt;sl&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There you see the &lt;code&gt;.tar&lt;/code&gt; file and the empty directory &lt;code&gt;manjarolinux&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It is time to import the image into WSL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wsl &lt;span class="nt"&gt;--import&lt;/span&gt; Manjaro ./manjarolinux manjarolinux.tar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation of the parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;wsl --import&lt;/code&gt;: command to import a distribution&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Manjaro&lt;/code&gt;: Name of the distribution in WSL (and Windows Terminal drop-down menu)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;./manjarolinux&lt;/code&gt;: where to store the &lt;code&gt;.vhdx&lt;/code&gt; image file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;manjarolinux.tar&lt;/code&gt;: file to import&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Restart Windows Terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update Windows Terminal settings
&lt;/h2&gt;

&lt;p&gt;In Windows Terminal open the drop-down menu and run &lt;code&gt;Manjaro&lt;/code&gt; from there. It will run the user as &lt;code&gt;root&lt;/code&gt;. Nobody wants that. Add a little start command to change it each time we run the Terminal Window.&lt;/p&gt;

&lt;p&gt;Go to the Windows Terminal settings and open the file version of the settings by clicking on the gear icon on the bottom left side of the window. Your editor for the file should open. Search for &lt;code&gt;Manjaro&lt;/code&gt;. Add &lt;code&gt;commandline&lt;/code&gt; into the settings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Manjaro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"commandline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"wsl.exe -u cyrdam -d Manjaro"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You could also do it over GUI for the &lt;code&gt;Manjaro&lt;/code&gt; profile.&lt;/p&gt;

&lt;p&gt;Close the editor for the file, restart Windows Terminal and open &lt;code&gt;Manjaro&lt;/code&gt; again. Check the user with &lt;code&gt;whoami&lt;/code&gt;. It should show you your defined user (in my case cyrdam).&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional step (aka signature)
&lt;/h2&gt;

&lt;p&gt;To have a pleasant view and proof of running Manjaro within WLS you can install &lt;code&gt;archey3&lt;/code&gt; and present the output of your system, showing you also the kernel version from Microsoft. Run following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-Syu&lt;/span&gt; archey3
archey3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See running Manjaro Linux in WSL on Windows.&lt;/p&gt;

&lt;p&gt;My output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ archey3

               +                OS: Arch Linux x86_64
               #                Hostname: name of the machine
              ###               Kernel Release: 5.15.79.1-microsoft-standard-WSL2
             #####              Uptime: 1:13
             ######             WM: None
            ; #####;            DE: None
           +##.#####            Packages: 151
          +##########           RAM: 1436 MB / 15856 MB
         #############;         Processor Type: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz
        ###############+        $EDITOR: None
       #######   #######        Root: 798M / 1007G (0%) (ext4)
     .######;     ;###;`".
    .#######;     ;#####.
    #########.   .########`
   ######'           '######
  ;####                 ####;
  ##'                     '##
 #'                         `#
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Improvement thoughts
&lt;/h2&gt;

&lt;p&gt;To make this less time taking it would be possible to automate this entire process by a script with input capabilities. That means we would also run commands within the terminal and containers directly.&lt;/p&gt;

&lt;p&gt;I do not know how this could work, but here is a summary of all steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Within Linux distribution
&lt;/h3&gt;

&lt;p&gt;Run Windows Terminal with your Linux distribution, then start with the commands.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Download image and create container&lt;/span&gt;
docker pull manjarolinux/base
docker create &lt;span class="nt"&gt;-i&lt;/span&gt; manjarolinux/base bash
&lt;span class="c"&gt;# Copy the first eight characters of the output (example: 83398c22)&lt;/span&gt;
&lt;span class="c"&gt;# Run the container&lt;/span&gt;
docker container start 83398c22
&lt;span class="c"&gt;# Login into the container with the bash shell&lt;/span&gt;
docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; 83398c22 /bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Within docker container
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Update pacman keys (can take a while)&lt;/span&gt;
pacman-key &lt;span class="nt"&gt;--refresh-keys&lt;/span&gt;
pacman-key &lt;span class="nt"&gt;--populate&lt;/span&gt; archlinux manjaro
&lt;span class="c"&gt;# Add user&lt;/span&gt;
useradd &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="nt"&gt;-G&lt;/span&gt; wheel cyrdam
passwd crydam
&lt;span class="c"&gt;# Update packages, install sudo and editor&lt;/span&gt;
pacman &lt;span class="nt"&gt;-Syu&lt;/span&gt;
pacman &lt;span class="nt"&gt;-Syu&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;vim
&lt;span class="c"&gt;# Add user group to sudo user&lt;/span&gt;
&lt;span class="nv"&gt;EDITOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;vim visudo
&lt;span class="c"&gt;# Edit the line: '# %wheel ALL=(ALL) ALL' &amp;gt; '%wheel ALL=(ALL) ALL'&lt;/span&gt;
&lt;span class="c"&gt;# Exit vim&lt;/span&gt;
:wq
&lt;span class="c"&gt;# Exit docker container&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Back in Linux distribution
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create the folder first if not available then go to&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /mnt/c/dev/wsl/
&lt;span class="nb"&gt;mkdir &lt;/span&gt;manjarolinux
&lt;span class="c"&gt;# Use the ID from before or search for it with: `docker container ls`&lt;/span&gt;
docker &lt;span class="nb"&gt;export &lt;/span&gt;83398c22 &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /mnt/c/dev/wsl/manjarolinux.tar
&lt;span class="c"&gt;# Exit the Linux distribution&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Within Windows PowerShell
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;C:&lt;span class="se"&gt;\d&lt;/span&gt;ev&lt;span class="se"&gt;\w&lt;/span&gt;sl&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="c"&gt;# Check directory content for .tar file and empty folder&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;span class="c"&gt;# Import image&lt;/span&gt;
wsl &lt;span class="nt"&gt;--import&lt;/span&gt; Manjaro ./manjarolinux manjarolinux.tar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Within Windows Terminal settings
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Update settings for 'Manjaro' profile by adding following line&lt;/span&gt;
&lt;span class="s2"&gt;"commandline"&lt;/span&gt;: &lt;span class="s2"&gt;"wsl.exe -u cyrdam -d Manjaro"&lt;/span&gt;
&lt;span class="c"&gt;# Restart terminal&lt;/span&gt;
&lt;span class="c"&gt;# Open 'Manjaro' and check user is not root&lt;/span&gt;
&lt;span class="nb"&gt;whoami&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Within Manjaro
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-Syu&lt;/span&gt; archey3
archey3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;If someone knows how to make this automated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;adding the image name (dynamic)&lt;/li&gt;
&lt;li&gt;adding the distribution name for WSL (dynamic)&lt;/li&gt;
&lt;li&gt;running all commands without issues or destroying anything&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;then please share your knowledge. Is there a better solution?&lt;/p&gt;

&lt;p&gt;Currently, I can export my Manjaro Linux and share it on other machines if necessary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wsl &lt;span class="nt"&gt;--export&lt;/span&gt; &amp;lt;distributionsname&amp;gt; &amp;lt;TAR-file&amp;gt;
wsl &lt;span class="nt"&gt;--import&lt;/span&gt; &amp;lt;distributionsname&amp;gt; &amp;lt;directory path to vhdx file&amp;gt; &amp;lt;TAR-file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But be careful: you will also copy every file within the distribution, that also means project files that might not be for sharing because of legal reasons.&lt;/p&gt;

</description>
      <category>wsl</category>
      <category>linux</category>
      <category>windows</category>
    </item>
    <item>
      <title>My journey of four years at diconium</title>
      <dc:creator>Damian Cyrus</dc:creator>
      <pubDate>Fri, 26 May 2023 11:12:28 +0000</pubDate>
      <link>https://dev.to/damian_cyrus/my-journey-of-four-years-at-diconium-38fc</link>
      <guid>https://dev.to/damian_cyrus/my-journey-of-four-years-at-diconium-38fc</guid>
      <description>&lt;p&gt;After my graduation and work as a 3D artist in 2011 I started my career as a professional web developer in an international publishing company and after seven years I quit there. Why? - actually, for many reasons, it accumulated: While the payment could have been better and the technology became less engaging over time, I saw it as an opportunity to broaden my horizons and work with a new tech stack. Plus, I was excited about the prospect of collaborating with others who shared my passion for this direction.&lt;/p&gt;

&lt;p&gt;I accepted a recruiter´s offer for a company called &lt;a href="https://diconium.com" rel="noopener noreferrer"&gt;diconium&lt;/a&gt; in Stuttgart. I agreed to go to the interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Job interview
&lt;/h2&gt;

&lt;p&gt;The job interview had three parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get to know&lt;/li&gt;
&lt;li&gt;Technical interview&lt;/li&gt;
&lt;li&gt;Personal Manager interview&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My future director interviewed me first, also as a get to know. The vibe between us was good and I said I would take the job. The technical interview was around the normal path of: do you know this and that? - OK, that is fine, and if not, you will learn it on the way.&lt;/p&gt;

&lt;p&gt;It felt different, like your word had a meaning and trust to the persons on the other side.&lt;/p&gt;

&lt;h2&gt;
  
  
  New job, new life
&lt;/h2&gt;

&lt;p&gt;After the switch it took time to get into the unfamiliar environment from a PHP developer with HTML and CSS skills into a full JavaScript environment. It was a tremendous change for me. At that time, I never used JavaScript so heavily and tried to avoid it wherever I could.&lt;/p&gt;

&lt;p&gt;My first task was to learn for an Angular project. That took time, but on the way, it changed to a &lt;a href="https://reactjs.org" rel="noopener noreferrer"&gt;React&lt;/a&gt; project.&lt;/p&gt;

&lt;p&gt;I stayed with that project. With two other developers we created a demo shop within two months before the presentation. We proved that we could deliver what the customer wanted. I dedicated myself to creating something great, went on as the lead developer of the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jack of all trades
&lt;/h2&gt;

&lt;p&gt;At the beginning I was doing like everything: coding, Jenkins Pipeline, composition and integration, discussions about concepts and architecture and code quality, because it was necessary for the project. It was a good start, but not everybody liked this pace. The lack of experience also made it hard for others to work together, as there was a demand to have a stricter workflow than they were comfortable with. As a team we decided to concentrate more on coding and less on people management to deliver code quality. The client liked it. It was decided to increase the team.&lt;/p&gt;

&lt;p&gt;I experienced separating parts of the work and bringing the responsibility to others more suited for it. We split the teams because of size, added more lead developers, created groups of core members to control the projects vision with multiple teams and continued.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then scrum game came
&lt;/h2&gt;

&lt;p&gt;As we went on with our work there was a change coming: we had to use an agile way for all teams: &lt;a href="https://www.scaledagileframework.com/" rel="noopener noreferrer"&gt;SAFe&lt;/a&gt; with &lt;a href="https://en.wikipedia.org/wiki/Scrum_(software_development)" rel="noopener noreferrer"&gt;scrum&lt;/a&gt;. I liked what I saw, we left the "lead developers" and put our trust to the agile way. I got my &lt;a href="https://www.credly.com/badges/0f257c29-f889-4b80-a64f-4b147d698439/" rel="noopener noreferrer"&gt;certification&lt;/a&gt; and continued to use the framework to our needs.&lt;/p&gt;

&lt;p&gt;On the way I learned a considerable number of things, what it means to be agile, and how I need to adapt with my own workflow. To my surprise I worked already in an equivalent way but having a framework to show you with images made it again a nice addition.&lt;/p&gt;

&lt;p&gt;Agile is not making the development process faster, but a little rounder. Why a little? Because it was more transparent than expected. It was a struggle at the beginning. Developers without the experience to change their workflow could not adapt and left.&lt;/p&gt;

&lt;p&gt;The team found a way to adapt to our unfamiliar environment. There were people who adapted well, they understood the parts what that agile framework was for and how to use it.&lt;/p&gt;

&lt;p&gt;This helped me personally to achieve a great deal of points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can link everything&lt;/li&gt;
&lt;li&gt;It gets clearer on who manages what&lt;/li&gt;
&lt;li&gt;I do not know everything&lt;/li&gt;
&lt;li&gt;Others do not know everything&lt;/li&gt;
&lt;li&gt;People need your opinion&lt;/li&gt;
&lt;li&gt;Start talking to each other as soon as possible&lt;/li&gt;
&lt;li&gt;The planning is working when you make it transparent&lt;/li&gt;
&lt;li&gt;Adapt fast to changes&lt;/li&gt;
&lt;li&gt;Learn and improve ourselves for the bright future (tickets)&lt;/li&gt;
&lt;li&gt;Learn from the (dark) past&lt;/li&gt;
&lt;li&gt;You develop slow at the beginning and get faster with time&lt;/li&gt;
&lt;li&gt;Stories get better with time: tests, descriptions, tasks, acceptance criteria, splitting, structure/templates, refinement&lt;/li&gt;
&lt;li&gt;We can communicate and react faster to changes on the way&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Before I moved to another team
&lt;/h2&gt;

&lt;p&gt;After our first demo presentation I wanted to improve the product but was disappointed for a long time. I presented simple future issues from time to time. People were not seeing the issues at the time. In my mind issues were increasing. Then I realized: it was only in &lt;strong&gt;my&lt;/strong&gt; mind. We could have planned these things, but the project members were not there in mind, until things started really to crumble. We mentioned this to a big round, that we needed to improve.&lt;/p&gt;

&lt;p&gt;The team found a way to communicate with others. There was a way for all of us to make things transparent without getting on the bad side of the client. It took the fear out of everyone to talk with others, rather than stay within the team.&lt;/p&gt;

&lt;p&gt;It still took quite a while until this was set in motion, which put me again in a disappointed state. Of course, we needed to achieve other topics, create new features, and evolve the product. Because of the complexity of the code base, it got worse again. It felt impossible to fix the developer experience for everyone all alone.&lt;/p&gt;

&lt;p&gt;Yes, everyone wanted to have it better, but the teams did not plan it, so: will not do. Sometimes it felt to me that people were scared because of reasons unspoken.&lt;/p&gt;

&lt;p&gt;I talked to other developers about it. The team itself seemed to have no power to change this situation. What power? The teams have the power! Why do we not use it? Trying to make the customer happy is of course our job, but that does not mean the customer does not need to see that we are struggling until it boils up and we then are fixing the breaks on the speedway. When the developers are happy, then the customers will be happy too.&lt;/p&gt;

&lt;p&gt;I got triggers to move on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The triggers
&lt;/h2&gt;

&lt;p&gt;There were multiple components that I created. Multiple of these lasted for a year, just updated like an extension, not changing anything. This made me think, as I saw the changes in the MR: my components are still alive, is that now boring or impressive?&lt;/p&gt;

&lt;p&gt;In another part I fought with the pipeline, unit tests, linting, workflows, and got angry about it. I tried to fix it, but in the end, I got the answer to the task: the client did not allow it within the planning. We had it planned in the Definition of Done (DoD), but:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nobody reads the Definition of Done.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This was an important statement within the team. We had that DoD ready, but no one used it, even if they should. Why was that so? Team members needed to set up more workflows = need to remember more things rather than coding. The process of remembering and doing more, rather than working on code only, made developers ignore the DoD.&lt;/p&gt;

&lt;p&gt;Not everyone liked to do more than coding. That is understandable, but that was our role in this agile project. And I understood that even if I did this way of work, I would never be able to change the team, as single individuals did not want to change. The team stood still, and steps of improvement took a long, long time.&lt;/p&gt;

&lt;p&gt;After three years on this project, I did not want to give up. I can be very stubborn. But I learned my lesson. There was a way, a trigger to move on.&lt;/p&gt;

&lt;p&gt;There was a new team created from within the project, but with a slightly different goal: A design system team. I love these things. You create a design system, and it gets boring when you have it running. That wording feels negative, but thinking about my old components, that still lived on, it was exactly the thing I wanted: a stable code base standing and not failing anyone.&lt;/p&gt;

&lt;p&gt;I asked to join the team and went on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The new team
&lt;/h2&gt;

&lt;p&gt;The design system team had a bunch of people with separate roles: UI, UX, developer, tester, product owner, scrum master. There was everything within it. It felt great. I could concentrate, improve, and learn the things I saw were important.&lt;/p&gt;

&lt;p&gt;Next to the new experience I received, I looked at the other teams, and they saw improvements in the code. This was unexpected and it felt like their mindset changed. People saw us achieving things and getting a moment that the others were missing.&lt;/p&gt;

&lt;p&gt;The design system team did remarkable things. We adapted new processes to improve our pace. I dove more into design systems and tried to make our product what we dreamed about as a team, not as an individual.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other tasks
&lt;/h2&gt;

&lt;p&gt;Next to the main work I had other tasks, like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;writing blog posts&lt;/li&gt;
&lt;li&gt;help others with writing blog posts&lt;/li&gt;
&lt;li&gt;enrich on-boarding processes&lt;/li&gt;
&lt;li&gt;creating knowledge within the unit as a whole&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All these tasks made me open to people. They started to see me as someone not too strict anymore on all that process stuff, but as someone who wants to improve the developer experience and make the client happy. To reach that it took time - time - I liked to invest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The end
&lt;/h2&gt;

&lt;p&gt;My personal priorities started to change over time. I looked over my life and decided that it was time to move on. The time I spent on the first team felt wasted, personally. The reason was quite simple: it took exceptionally long to reach the state I had in mind. The general project developed into the direction I imagined that I did not want to.&lt;/p&gt;

&lt;p&gt;With the design system team, I was more than happy, and I still feel great to have been a part of them. It was the most fun time I ever had since working as a developer. But that is it. It was the highest state I could achieve. There were more things I wanted to do and might even reach higher levels of what I am now, but I knew I had to move on.&lt;/p&gt;

&lt;p&gt;I felt lucky with the team I joined so heart-fully. I will not deny it was a hard decision and I do not regret the move. I understood my reasons well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things I learned on this journey
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ask questions

&lt;ul&gt;
&lt;li&gt;anything that is unclear&lt;/li&gt;
&lt;li&gt;when you are struggling&lt;/li&gt;
&lt;li&gt;when you do not understand&lt;/li&gt;
&lt;li&gt;because there is never something like knowing everything&lt;/li&gt;
&lt;li&gt;people will help you&lt;/li&gt;
&lt;li&gt;it is not stupid&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;There are people

&lt;ul&gt;
&lt;li&gt;I like to work with&lt;/li&gt;
&lt;li&gt;compatible with me&lt;/li&gt;
&lt;li&gt;better than me&lt;/li&gt;
&lt;li&gt;understanding what I want to say&lt;/li&gt;
&lt;li&gt;that let me learn to grow&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Try to understand

&lt;ul&gt;
&lt;li&gt;the company, its structure, and clients as good as you can&lt;/li&gt;
&lt;li&gt;the co-workers, each is a hero within your reach&lt;/li&gt;
&lt;li&gt;bottlenecks, try to figure out how we could remove them&lt;/li&gt;
&lt;li&gt;ways for improvement&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Before you start something

&lt;ul&gt;
&lt;li&gt;think before you start anything&lt;/li&gt;
&lt;li&gt;use whiteboards, notes, or words to display anything, it helps best to focus&lt;/li&gt;
&lt;li&gt;talk to people&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Slow down

&lt;ul&gt;
&lt;li&gt;you cannot know everything from day one&lt;/li&gt;
&lt;li&gt;each process might be bigger than it looks like&lt;/li&gt;
&lt;li&gt;split tasks into smaller pieces to move on faster&lt;/li&gt;
&lt;li&gt;understand the big picture&lt;/li&gt;
&lt;li&gt;figure out issues by analyzing and understanding it first before debugging&lt;/li&gt;
&lt;li&gt;structure your notes&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Talk to people in general

&lt;ul&gt;
&lt;li&gt;they know what is going on&lt;/li&gt;
&lt;li&gt;consider their opinions, be open minded&lt;/li&gt;
&lt;li&gt;figure out where they stay and why&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Try to challenge yourself

&lt;ul&gt;
&lt;li&gt;by projects/tasks&lt;/li&gt;
&lt;li&gt;view on issues&lt;/li&gt;
&lt;li&gt;help others by sharing experience rather than solutions only&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Do not try to

&lt;ul&gt;
&lt;li&gt;fix everything yourself&lt;/li&gt;
&lt;li&gt;push your own programming onto others&lt;/li&gt;
&lt;li&gt;move an elephant all alone&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  The next thing
&lt;/h2&gt;

&lt;p&gt;In my new job I wanted to do things with something in mind which I could not achieve before. From here on I want to evolve further, see myself in a higher light within the next year. This is something I want; this is something I need. A goal that motivates me to push myself. I saw the time was right, and I had the motivation to do so.&lt;/p&gt;

&lt;p&gt;Each change brings new challenges, meeting new people, creating new possibilities and the growing not only as a developer, but also as a person in general. I thank you all for that.&lt;/p&gt;

&lt;p&gt;The greatest thank you goes to my family: especially my wife, for pushing me to move faster towards new challenges and solutions, and our kids who made me completely rethink and readjust communication skills, looking inside and outside of the given frame. It was not an easy decision, but I know it was the right one.&lt;/p&gt;

&lt;p&gt;Let us look ahead into a great future, together. ♥&lt;/p&gt;

</description>
      <category>career</category>
      <category>experience</category>
    </item>
  </channel>
</rss>
