<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <author>
    <name>Dabbler</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://www.dabbler.top/en/</id>
  <link href="https://www.dabbler.top/en/" rel="alternate"/>
  <link href="https://www.dabbler.top/en/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, Dabbler</rights>
  <subtitle>Dabbler&apos;s personal tech blog about AI tool practice, project building, self-hosted systems, and debugging retrospectives.</subtitle>
  <title>Dabbler&apos;s Blog</title>
  <updated>2026-06-12T01:00:00.000Z</updated>
  <entry>
    <author>
      <name>Dabbler</name>
    </author>
    <category term="Beginner Guide" scheme="https://www.dabbler.top/categories/Beginner-Guide/"/>
    <category term="WSL2" scheme="https://www.dabbler.top/tags/WSL2/"/>
    <category term="Windows" scheme="https://www.dabbler.top/tags/Windows/"/>
    <category term="Linux" scheme="https://www.dabbler.top/tags/Linux/"/>
    <category term="Docker" scheme="https://www.dabbler.top/tags/Docker/"/>
    <category term="VS Code" scheme="https://www.dabbler.top/tags/VS-Code/"/>
    <category term="Tutorial" scheme="https://www.dabbler.top/tags/Tutorial/"/>
    <content type="html">
      <![CDATA[<h1 id="About-WSL"><a href="#About-WSL" class="headerlink" title="About WSL"></a>About WSL</h1><p>WSL | Windows Subsystem for Linux | Windows Linux subsystem</p><p>Some people may ask why they should install WSL. WSL is lighter, can be used to learn Linux and do development, and makes switching and interoperability between Windows and Linux more convenient. I first learned about it when using Docker on Windows. Also, it is fun 😋</p><h1 id="About-Terminal-Software"><a href="#About-Terminal-Software" class="headerlink" title="About Terminal Software"></a>About Terminal Software</h1><p>You will keep using a terminal during the process. You can directly use the built-in Windows Terminal. Here are also a few terminal apps I recommend:</p><h2 id="Tabby"><a href="#Tabby" class="headerlink" title="Tabby"></a><a href="https://tabby.sh/">Tabby</a></h2><p>I have been using it personally. The main reasons are that it is modern and good-looking, open source, supports plugins, and has Chinese support.</p><h2 id="MobaXterm"><a href="#MobaXterm" class="headerlink" title="MobaXterm"></a><a href="https://mobaxterm.mobatek.net/">MobaXterm</a></h2><p>It has both free and paid versions. The free version is enough. I have heard from others that it is useful, though it does not look very good (personally speaking).</p><h2 id="Termius"><a href="#Termius" class="headerlink" title="Termius"></a><a href="https://termius.com/">Termius</a></h2><p>It has mobile and desktop versions. I mostly use it on my phone to connect through SSH. GitHub Student Developer Pack includes it. It looks quite good, but it does not have Chinese.</p><h1 id="Install-WSL"><a href="#Install-WSL" class="headerlink" title="Install WSL"></a>Install WSL</h1><h2 id="1-Enable-Windows-Features"><a href="#1-Enable-Windows-Features" class="headerlink" title="1. Enable Windows Features"></a>1. Enable Windows Features</h2><p>Search for “Turn Windows features on or off”.</p><p><img src="https://img.dabbler.top/file/article/WSL1.png" alt="WSL1.png"></p><p>Enable the two options below.</p><p><img src="https://img.dabbler.top/file/article/WSL2.png" alt="WSL2.png"></p><h2 id="2-Install-Linux-and-Move-It-to-Another-Drive"><a href="#2-Install-Linux-and-Move-It-to-Another-Drive" class="headerlink" title="2. Install Linux and Move It to Another Drive"></a>2. Install Linux and Move It to Another Drive</h2><p>Open PowerShell in the terminal and set the default WSL version to WSL2.</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wsl <span class="literal">--set-default-version</span> <span class="number">2</span></span><br></pre></td></tr></table></figure><p>Then enter the following command to list all available distributions.</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wsl <span class="literal">--list</span> <span class="literal">--online</span></span><br></pre></td></tr></table></figure><p><img src="https://img.dabbler.top/file/article/WSL3.png" alt="WSL3.png"></p><p>For beginners, I recommend Ubuntu. I use Ubuntu-24.04 daily, but I also installed Arch Linux. If you like tinkering, you can try it. Choose according to your preference. Now start the installation.</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">wsl <span class="literal">--install</span> &lt;the NAME of the distribution you chose&gt;</span><br><span class="line"><span class="comment"># Example</span></span><br><span class="line">wsl <span class="literal">--install</span> Ubuntu<span class="literal">-24</span>.<span class="number">04</span></span><br></pre></td></tr></table></figure><p>When installing WSL2, you can use <code>--location</code> to specify the install location, for example:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wsl <span class="literal">--install</span> Ubuntu<span class="literal">-24</span>.<span class="number">04</span> <span class="literal">--location</span> D:\WSL\Ubuntu<span class="literal">-24</span>.<span class="number">04</span></span><br></pre></td></tr></table></figure><p>Wait for the installation. If the download is slow, try changing your network environment.</p><p>After installation, follow the prompts to create a user and set a password.</p><p>The default distribution location is <code>C:\Users\your-username\AppData\Local\wsl</code>. If you install a lot of things later, it can take up a lot of space. The following is a migration guide for distributions installed without a specified location.</p><p>Enter <code>exit</code> to return to PowerShell, then enter the following command to export your distribution.</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">wsl <span class="literal">--export</span> &lt;distribution name&gt; &lt;export path&gt;</span><br><span class="line"><span class="comment"># Example</span></span><br><span class="line">wsl <span class="literal">--export</span> Ubuntu<span class="literal">-24</span>.<span class="number">04</span> D:\WSL\Ubuntu<span class="literal">-24</span>.<span class="number">04</span>\Ubuntu<span class="literal">-24</span>.<span class="number">04</span>.tar</span><br></pre></td></tr></table></figure><p>Then unregister the original distribution. This will also delete the distribution from the default location.</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">wsl <span class="literal">--unregister</span> &lt;distribution name&gt;</span><br><span class="line"><span class="comment"># Example</span></span><br><span class="line">wsl <span class="literal">--unregister</span> Ubuntu<span class="literal">-24</span>.<span class="number">04</span></span><br></pre></td></tr></table></figure><p>Import the exported distribution into the location you chose.</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">wsl <span class="literal">--import</span> &lt;custom distribution name&gt; &lt;import location&gt; &lt;path to the exported .tar archive&gt;</span><br><span class="line"><span class="comment"># Example</span></span><br><span class="line">wsl <span class="literal">--import</span> Ubuntu<span class="literal">-24</span>.<span class="number">04</span> D:\WSL\Ubuntu<span class="literal">-24</span>.<span class="number">04</span> D:\WSL\Ubuntu<span class="literal">-24</span>.<span class="number">04</span>\Ubuntu<span class="literal">-24</span>.<span class="number">04</span>.tar</span><br></pre></td></tr></table></figure><p>Now you can delete the exported <code>.tar</code> archive (keep it if you want it as a backup).</p><p>Here are some commonly used WSL commands:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">wsl <span class="literal">--list</span> <span class="literal">--verbose</span> <span class="comment"># Or wsl -l -v, list all installed distributions and their WSL versions</span></span><br><span class="line">wsl <span class="literal">--set-default</span> &lt;distribution name&gt; <span class="comment"># Set the default distribution, for example wsl --set-default Ubuntu-24.04</span></span><br><span class="line">wsl <span class="literal">--shutdown</span> <span class="comment"># Shut down all running distributions</span></span><br><span class="line">wsl <span class="literal">-d</span> &lt;distribution name&gt; <span class="comment"># Enter a distribution, for example wsl -d Ubuntu-24.04</span></span><br><span class="line">wsl <span class="comment"># Enter the default distribution</span></span><br></pre></td></tr></table></figure><h2 id="3-Configure-Your-Distribution"><a href="#3-Configure-Your-Distribution" class="headerlink" title="3. Configure Your Distribution"></a>3. Configure Your Distribution</h2><h3 id="User-Issues"><a href="#User-Issues" class="headerlink" title="User Issues"></a>User Issues</h3><p>Sometimes after entering your distribution, you may be the root user. This may be because you have not created another user. Find a tutorial to create one, then set the default user. Open the configuration file:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> vim /etc/wsl.conf</span><br></pre></td></tr></table></figure><p><img src="https://img.dabbler.top/file/article/WSL4.png" alt="WSL4.png"></p><p>The section below sets the default user. Change it to your username.</p><p>Then exit, enter the following commands in PowerShell, and start the distribution again.</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">wsl <span class="literal">--shutdown</span></span><br><span class="line">wsl <span class="literal">-d</span> Ubuntu<span class="literal">-24</span>.<span class="number">04</span></span><br></pre></td></tr></table></figure><h3 id="Detailed-Configuration"><a href="#Detailed-Configuration" class="headerlink" title="Detailed Configuration"></a>Detailed Configuration</h3><p>There are many other settings for <code>wsl.conf</code> (distribution-specific settings, located at <code>/etc/wsl.conf</code> inside each distribution) and <code>.wslconfig</code> (global settings, located at <code>C:\Users\your-username\.wslconfig</code> on Windows). I will not go into detail here. For specific configuration methods, refer to Microsoft’s documentation: <a href="https://learn.microsoft.com/en-us/windows/wsl/wsl-config">Advanced settings configuration in WSL</a></p><p>I recommend directly finding <code>WSL Settings</code> in the All apps section of the Start menu and using the graphical interface for global settings. It is more convenient and intuitive, and each option has a short explanation below it.</p><p>Here is my <code>.wslconfig</code> (settings adjusted in <code>WSL Settings</code> do not seem to appear in the <code>.wslconfig</code> file).</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[wsl2]</span><br><span class="line">memory=4GB # Memory</span><br><span class="line">processors=8 # Number of processors</span><br><span class="line">defaultVhdSize=30GB # Virtual hard disk size</span><br><span class="line"></span><br><span class="line">[experimental]</span><br><span class="line">sparseVhd=true # Make the distribution virtual disk use only the actual storage size instead of preallocating the maximum size</span><br></pre></td></tr></table></figure><p>I do not quite understand <code>sparseVhd=true</code>. It does not seem very useful, and it may show a warning on startup, like this:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">wsl: Sparse VHD support is currently disabled due to potential data corruption.</span><br><span class="line">To force the distribution to use sparse vhd, run:</span><br><span class="line">wsl.exe --manage  --set-sparse --allow-unsafe</span><br></pre></td></tr></table></figure><h3 id="Replace-the-Mirror-Source"><a href="#Replace-the-Mirror-Source" class="headerlink" title="Replace the Mirror Source"></a>Replace the Mirror Source</h3><p>The default source may feel slow in China. In that case, you need to replace it with a mirror source.</p><p>I recommend using the mirror switching script <a href="https://linuxmirrors.cn/">LinuxMirrors</a>.</p><p>Or change it manually:</p><ol><li>Back up the original source list (optional)</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> <span class="built_in">cp</span> /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak</span><br></pre></td></tr></table></figure><ol start="2"><li>Edit the source list file and replace it with a mirror source</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> vim /etc/apt/sources.list.d/ubuntu.sources</span><br></pre></td></tr></table></figure><p>Replace the following part in the file:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">Types: deb</span><br><span class="line">URIs: http://archive.ubuntu.com/ubuntu/</span><br><span class="line">Suites: noble noble-updates noble-backports</span><br><span class="line">Components: main universe restricted multiverse</span><br><span class="line">Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg</span><br></pre></td></tr></table></figure><p>With:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">Types: deb</span><br><span class="line">URIs: http://cn.archive.ubuntu.com/ubuntu/</span><br><span class="line">Suites: noble noble-updates noble-backports</span><br><span class="line">Components: main universe restricted multiverse</span><br><span class="line">Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg</span><br></pre></td></tr></table></figure><p>That is it. You can run the command below to try it.</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> apt update &amp;&amp; <span class="built_in">sudo</span> apt upgrade -y &amp;&amp; <span class="built_in">sudo</span> apt autoclean &amp;&amp; <span class="built_in">sudo</span> apt clean &amp;&amp; <span class="built_in">sudo</span> apt autoremove</span><br></pre></td></tr></table></figure><p>If you want to operate files on Windows from WSL, go to <code>/mnt</code>. It contains mounted folders for each Windows drive.</p><h1 id="About-WSLg"><a href="#About-WSLg" class="headerlink" title="About WSLg"></a>About WSLg</h1><p>WSLg lets you run graphical applications from WSL on Windows. You can directly run graphical applications with commands inside WSL. Remember to make sure the following setting is enabled in <code>WSL Settings</code>.</p><p><img src="https://img.dabbler.top/file/article/WSLg.png" alt="WSLg.png"></p><h1 id="Connect-to-WSL-in-VS-Code"><a href="#Connect-to-WSL-in-VS-Code" class="headerlink" title="Connect to WSL in VS Code"></a>Connect to WSL in VS Code</h1><p>Some people may not be used to terminal editors. Next, here is a brief note on connecting to WSL in VS Code for file editing and development. Install the following extension:</p><p><img src="https://img.dabbler.top/file/article/VSC-WSL1.png" alt="VSC-WSL1.png"></p><p><img src="https://img.dabbler.top/file/article/VSC-WSL2.png" alt="VSC-WSL2.png"></p><p>Then you can connect to a WSL distribution from the Remote Explorer in the left sidebar.</p><p><img src="https://img.dabbler.top/file/article/VSC-WSL3.png" alt="VSC-WSL3.png"></p><h1 id="Use-Docker-in-WSL"><a href="#Use-Docker-in-WSL" class="headerlink" title="Use Docker in WSL"></a>Use Docker in WSL</h1><blockquote><p>It is best not to install Docker Desktop and an independent Docker engine inside WSL at the same time.</p></blockquote><h2 id="1-Integrate-with-Docker-Desktop"><a href="#1-Integrate-with-Docker-Desktop" class="headerlink" title="1. Integrate with Docker Desktop"></a>1. Integrate with Docker Desktop</h2><p>First make sure Docker Desktop is installed on the Windows host, and enable <code>Use the WSL 2 based engine</code> in settings.</p><p><img src="https://img.dabbler.top/file/article/docker1.png" alt="docker1.png"></p><p>Then enable WSL integration in the following location, check the distributions where you want to use Docker, and remember to apply the settings.</p><p><img src="https://img.dabbler.top/file/article/docker2.png" alt="docker2.png"></p><p>Now you can directly use Docker in WSL to pull images and create containers.</p><p>Here are some commonly used Docker commands:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">docker images <span class="comment"># List all images, including images in Windows. These are managed by Docker Desktop</span></span><br><span class="line">docker container <span class="built_in">ls</span> <span class="comment"># List all containers</span></span><br><span class="line">docker volume <span class="built_in">ls</span> <span class="comment"># List all volumes</span></span><br><span class="line">docker network <span class="built_in">ls</span> <span class="comment"># List all networks</span></span><br><span class="line"></span><br><span class="line">docker rmi &lt;image name/image ID&gt; <span class="comment"># Delete an image</span></span><br><span class="line">docker container <span class="built_in">rm</span> &lt;container ID&gt; <span class="comment"># Delete a container</span></span><br><span class="line">docker volume <span class="built_in">rm</span> &lt;volume name&gt; <span class="comment"># Delete a volume</span></span><br><span class="line">docker network <span class="built_in">rm</span> &lt;network ID&gt; <span class="comment"># Delete a network</span></span><br><span class="line"></span><br><span class="line">docker pull &lt;various options&gt; &lt;container name:tag&gt; <span class="comment"># Pull an image</span></span><br><span class="line">docker ps <span class="comment"># View running containers</span></span><br><span class="line">docker logs &lt;container name/container ID&gt; <span class="comment"># View container logs. Optional parameters are available, ask AI about them</span></span><br><span class="line"></span><br><span class="line">docker system prune <span class="comment"># Clean up unused Docker resources. Use with caution</span></span><br></pre></td></tr></table></figure><h2 id="2-Install-an-Independent-Docker-Engine-Inside-WSL"><a href="#2-Install-an-Independent-Docker-Engine-Inside-WSL" class="headerlink" title="2. Install an Independent Docker Engine Inside WSL"></a>2. Install an Independent Docker Engine Inside WSL</h2><p>I will not cover the specific installation method here. Please refer to the <a href="https://docs.docker.com/engine/install/">official Docker documentation</a>.</p>]]>
    </content>
    <id>https://www.dabbler.top/en/posts/wsl2-beginners-guide/</id>
    <link href="https://www.dabbler.top/en/posts/wsl2-beginners-guide/"/>
    <published>2026-06-12T01:00:00.000Z</published>
    <summary>A beginner-friendly WSL2 guide covering Windows feature setup, Ubuntu installation and migration, distribution configuration, mirrors, WSLg, VS Code integration, and Docker usage.</summary>
    <title>WSL2 Beginner&apos;s Guide</title>
    <updated>2026-06-12T01:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Dabbler</name>
    </author>
    <category term="Hexo" scheme="https://www.dabbler.top/categories/Hexo/"/>
    <category term="Hexo" scheme="https://www.dabbler.top/tags/Hexo/"/>
    <category term="Blog" scheme="https://www.dabbler.top/tags/Blog/"/>
    <content type="html">
      <![CDATA[<p>This article is more or less the first post after restarting this blog.</p><p>I used to run a blog with WordPress. At that time, a service provider offered the required setup conditions for free, so I built my blog with a try-it-out mindset. Later, the service became unavailable because of issues with the data center. Recently I had some spare time, and after seeing a friend build a blog as well, I picked mine back up.</p><p>I want this blog to stay simple and lightweight, while still being controllable enough for me to adjust its content, styling, and publishing flow.</p><p>So in the end, I chose <a href="https://hexo.io/">Hexo</a>.</p><h2 id="Why-Start-with-Hexo"><a href="#Why-Start-with-Hexo" class="headerlink" title="Why Start with Hexo"></a>Why Start with Hexo</h2><p>Hexo is not new, but it fits my needs well. The content is written in Markdown, the output is static files, and the deployment flow is direct. For a personal blog, this plainness is actually an advantage: fewer dependencies, easier migration, and easier debugging when something goes wrong.</p><p>It also lets me work on the frontend I like and customize the site deeply.</p><h2 id="What-This-Blog-Will-Cover"><a href="#What-This-Blog-Will-Cover" class="headerlink" title="What This Blog Will Cover"></a>What This Blog Will Cover</h2><p>This blog will mainly focus on technical content, especially things I have actually done, struggled with, or thought about repeatedly.</p><p>I expect to write about a few types of topics:</p><ul><li>Technical experience and notes.</li><li>My experience using AI tools.</li><li>Self-hosted services and server maintenance notes.</li></ul><p>Because I can be rather lazy, updates will probably be irregular. Maybe I will write a post whenever the mood strikes.</p><h2 id="About-This-Theme"><a href="#About-This-Theme" class="headerlink" title="About This Theme"></a>About This Theme</h2><p>This site is currently using “Zhimo”, a theme I developed with the help of AI.</p><p>The theme is still being optimized and adjusted. There may be potential bugs, and I may open-source it after it becomes more complete.</p><h2 id="A-Note-to-My-Future-Self"><a href="#A-Note-to-My-Future-Self" class="headerlink" title="A Note to My Future Self"></a>A Note to My Future Self</h2><p>I hope I can keep doing this, keep learning more, and keep sharing more. There is no need to feel lost. Just do what I want to do.</p><blockquote><p><em>“凡心所向，素履以往；生如逆旅，一苇以航。” – Qi Jinnian, The Song of Dust</em></p></blockquote>]]>
    </content>
    <id>https://www.dabbler.top/en/posts/hello-hexo/</id>
    <link href="https://www.dabbler.top/en/posts/hello-hexo/"/>
    <published>2026-06-08T04:00:00.000Z</published>
    <summary>As the first post on this blog, this article records why I rebuilt the site with Hexo, what I plan to write here, and a brief introduction to the theme.</summary>
    <title>Hello, Hexo</title>
    <updated>2026-06-11T04:00:00.000Z</updated>
  </entry>
</feed>