---
title: WSL Tutorial
slug: WSL-tutorial
description:
date: 2025-09-29T20:46:49+08:00
lastmod: 2025-09-29T20:46:49+08:00
image: cover.png
math:
license:
hidden: false
draft: false
categories:
tags:
---



## WSL原理

首先，从“功能”窗口或通过“wsl --install”命令启用 Windows Linux 子系统 (WSL)。重启电脑后，从 Microsoft Store 安装 Ubuntu 或你选择的任何其他 Linux 发行版。

在Microsoft Store中搜索Ubuntu，您将看到三个版本：“ Ubuntu 16.04”，“ Ubuntu 18.04”和“ Ubuntu”。 这意味着您可以安装特定的LTS版本，或者始终安装最新的LTS版本。安装[Ubuntu](https://apps.microsoft.com/detail/9PDXGNCFSCZV?hl=neutral&gl=CN&ocid=pdpshare) (无编号)意味着您将始终拥有最新的LTS版本。 LTS每两年发布一次新版本。

Wine 允许您直接在Linux 上运行 Windows 应用程序，而 Windows Subsystem for Linux 允许您直接在 Windows 上运行 Linux 应用程序。



点击 Windows 键，输入“Windows 功能”进行搜索，然后点击“打开或关闭 Windows 功能”快捷方式。勾选列表中的 Hyper-V 复选框，和"适用于 Linux 的 Windows 子系统”.然后点击“确定”进行安装。出现提示时，重启电脑。

Hyper-V 管理器应用程序指的是“虚拟化服务器”，这暴露了它作为服务器工具的本质。它可以用来在您自己的计算机上运行虚拟机——在这种情况下，您的本地计算机将充当本地虚拟化服务器。

微软与 Canonical 合作，提供了一个基于 Ubuntu 的完整 Bash shell 环境，该环境运行于该子系统之上。从技术上讲，这根本不是 Linux。Linux 是底层操作系统内核，而这里没有 Linux。

相反，它允许您运行 Bash shell 以及通常在 Ubuntu Linux 上运行的二进制文件。当你运行像 Ubuntu 这样的 Linux 发行版时，它会在你的计算机上下载并安装一个完整的 Ubuntu 用户空间映像。您获得的 Bash shell 实际上只是所有这些 GNU 实用程序和其他软件。

WSL2 在[极其高效的虚拟机中运行完整的 Linux 内核。](https://www.howtogeek.com/196158/how-to-create-and-run-virtual-machines-with-hyper-v/) 与 WSL1 一样，WSL2 允许您使用各种不同的 Linux 发行版，包括 Ubuntu、Debian、Kali、openSUSE、Fedora 等。这也意味着大多数 Linux 应用程序、软件包或命令都能顺利运行。



或者，您也可以使用 PowerShell 安装它。 以管理员身份启动 PowerShell ，然后输入：

```
wsl --install
```

## 查看wsl及其对应版本

主要命令：`wslconfig.exe`



`wsl -l -all -v`  

| NAME           | STATE   | VERSION |
| -------------- | ------- | ------- |
| Ubuntu         | Running | 2       |
| Ubuntu-22.04   | Running | 2       |
| docker-desktop | Stopped | 2       |

指定要启动的实例

```bash
wsl -d Ubuntu-20.04  # 或你的具体发行版名称
```

WSL 2 的虚拟磁盘（ext4.vhdx 文件）默认存在于：

```

C:\Users\<你的用户名>\AppData\Local\Packages\<发行版包名           >\LocalState\CanonicalGroupLimited.Ubuntu_2204.1.4.0_x64__79rhkp1fndgsc   

```

在这个文件夹里有一个关键文件：

`ext4.vhdx`

这个文件就是 **整个 Linux 文件系统**（根目录 `/`）
 包括 `/home`, `/etc`, `/usr`, `/var` 等所有内容。

Doker:

在docker desktop的Resourcews设置中决定了存放的位置

`F:\Docker\wsl\DockerDesktopWSL\disk`

有`docker_data.vhdx`

## 转移到其它的地方

导出分发版为tar文件到D盘

```bash
wsl --export Ubuntu-20.04 D:\ubuntu20.04.tar
```

注销当前分发版

```bash
wsl --unregister Ubuntu-20.04
```

重新导入并安装分发版在D:\wsl\ubuntu

```bash
wsl --import Ubuntu-20.04 D:\wsl\ubuntu D:\ubuntu20.04.tar --version 2
```

设置默认登陆用户为安装时用户名

```bash
ubuntu2004 config --default-user Username
```

这样就能把整个 WSL 系统迁移到 D:\wsl\ 下。



如果 Conda 已安装但不在 PATH：

手动添加到 zsh 配置文件：

```
echo 'export PATH="$HOME/miniconda3/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
```

然后再次执行：

```
conda --version
```

- **将WSL 2设为默认版本**：安装新系统时，可以设置WSL 2为默认，命令如下：

  powershell

  ```powershell
  wsl --set-default-version 2
  ```

  

- **转换现有系统版本**：如果你的Ubuntu正在使用WSL 1，可以将其转换为WSL 2。将 `<Distribution Name>` 替换为你的发行版名称，例如 `Ubuntu-22.04`：

  powershell

  ```powershell
  wsl --set-version <Distribution Name> 2
  ```



Windows自带的bash

该文件通常位于 `C:\Windows\System32\bash.exe` 

输入bash即可打开，无需在微软商店安装Ubuntu。

功能命令可用**bash --help**来查询，

**bash -c "linux命令"**来运行linux命令

仍然可以通过运行 `bash` 命令来启动默认的 Linux 环境，但微软表示此功能已被弃用。这意味如果你想打开安装的Linux分发版，请使用具体名称。

在 Ubuntu 上，您需要在命令前添加 `sudo` 才能[以 root 权限运行该](https://www.howtogeek.com/111479/htg-explains-whats-the-difference-between-sudo-su/)命令。UNIX 平台上的“root”用户拥有完全的系统访问权限，就像 Windows 上的“管理员”用户一样。您的 Windows 文件系统位于 Bash shell 环境中的 `/mnt/c` 目录。

使用与 Linux 终端命令相同的命令。如果您习惯使用带有 DOS 命令的标准 Windows 命令提示符，以下是 Bash 和 Windows 中一些通用的基本命令：

- 
  更改目录：Bash 中的 `cd` ，DOS 中的 `cd` 或 `chdir`
- 列出目录内容：Bash 中的 `ls` ，DOS 中的 `dir`
- 移动或重命名文件：在 Bash 中 `mv` ，在 DOS 中 `move` 和 `rename`
- 
  复制文件：Bash 中的 `cp` ，DOS 中的 `copy`
- 删除文件：Bash 中的 `rm` ，DOS 中的 `del` 或 `erase`
- 创建目录：Bash 中的 `mkdir` ，DOS 中的 `mkdir`
- 用文本编辑器：Bash 中的 `vi` 或 `nano` ，在 DOS 中 `edit`





需要记住的是，与 Windows 不同，Bash shell 及其模拟 Linux 的环境区分大小写。换句话说，包含大写字母的“File.txt”与不包含大写字母的“file.txt”是不同的。

## WSLg

**WSLg（Windows Subsystem for Linux GUI）**
 是 **WSL 2 的图形扩展**，用于在 Windows 上原生运行 **Linux 的图形化应用程序（GUI）**。
 比如：

- Wayland（Linux GUI 协议）

- Weston（Wayland compositor）

- PulseAudio（声音）

- RDP 协议桥接（与 Windows 桌面通信）

`wsl --version`来判断是否安装了WSLg



## X Server

如果您在 Windows 桌面上安装 X 服务器应用程序，并在 Bash shell 中更改设置，应用程序会将其图形输出发送到 X 服务器应用程序，并显示在 Windows 桌面上。一切应该都运行正常，前提是这些应用程序不依赖于 Windows Linux 子系统尚不支持的 Linux 系统调用。



1. 您可以在 Windows 上安装几种不同的 X 服务器，但我们推荐使用 [Xming](https://sourceforge.net/projects/xming/) 。下载并安装到您的 Windows 10 电脑上。
2.  安装程序

```
sudo apt-get install vim-gtk
```

3. 设置显示环境变量

​	第三步：设置显示环境变量

现在，您需要设置“DISPLAY”环境变量，使其指向 Windows 10 PC 上运行的 X 服务器。如果不这样做，图形应用程序将无法启动。

为此，请在 Bash 环境中运行以下命令：

```
export DISPLAY=:0
```

此设置仅适用于当前的 Bash 会话。如果您关闭窗口，Bash 将会忽略它。每次重新打开 Bash 并想要运行图形应用程序时，您都必须运行此命令。

4. 启动应用程序

现在，只需输入可执行文件的名称即可启动图形应用程序，就像输入其他命令一样。例如，要启动 vim-gtk，请运行：

```
gvim
```

例如，要启动 gvim，您可以运行：

```
DISPLAY=:0 gvim
```



## 一些小功能

1. 让Bash自动启动Zh

打开.bashrc

```bash
# Launch Zsh
if [ -t 1 ]; then

exec zsh

fi
```

2.  创建指定路径的conda

`mkdir -p /mnt/f/conda_envs`

`conda create -p /mnt/f/conda_envs/my_project_env python=3.9`

那么会和电脑安装的conda环境冲突吗？

不会！因为wsl的系统安装的conda和电脑安装的conda是隔开的。

`conda config --show envs_dirs`

来查看虚拟环境所在的位置，可以看出是不一样的

```bash
envs_dirs:
 - /home/chen/miniconda3/envs(wsl)
 &&
- H:\Miniconda3\envs(windows)
```

3. 多个ubuntu

现在，当您运行 `wsl` 或 `bash` 命令时，您选择的 Linux 发行版就会打开。

当您使用 `wsl command` 或 `bash -c command`[ 运行单个命令](https://www.howtogeek.com/262086/how-to-run-linux-commands-from-outside-the-bash-shell-on-windows-10/)时，也会使用您的默认 Linux 发行版。

```
wsl.exe
```

或 `bash.exe` 来启动 shell，或者当你使用

```
 wsl [command]
```

或者

```
bash -c [command]
```



要设置默认 Linux 发行版，请运行以下命令，其中 Name 是 Linux 发行版的名称：

```bash
wslconfig /setdefault Name
```

这些命令也与 `bash.exe` 命令中使用的 `-c` 开关配合使用。只需使用以下命令结构，其中“distro-command”是您用于启动 Linux 发行版的命令，“command”是您要运行的 Linux 命令。

```bash
distro-command -c command
```





 一、为什么会自动启动？

当你安装 Anaconda 或 Miniconda 时，它会在安装结束时提示：

> Do you wish the installer to initialize Anaconda3 by running conda init?

如果选择了 “yes”，它就会在你的 shell 启动文件（例如 `~/.bashrc` 或 `~/.zshrc`）中添加一段代码，大概长这样：

```
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/username/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/username/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/username/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/username/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<
```

这段脚本会自动运行 `conda activate base`，导致每次开新终端都进入 `(base)` 环境。

`conda config --set auto_activate_base false`



安装ubuntu字体

要安装字体，首先从 Ubuntu 网站下载 [Ubuntu 字体系列 ](http://font.ubuntu.com/)。打开下载的 .zip 文件并找到“UbuntuMono-R.ttf”文件。这是 Ubuntu 等宽字体，也是终端中唯一使用的字体。这也是您唯一需要安装的字体。双击“UbuntuMono-R.ttf”文件，您将看到字体的预览。单击“安装”将其安装到您的系统。

在键盘上按下 Windows+R 组合键，输入 `regedit` ，然后按 Enter 键，打开注册表编辑器。导航到以下注册表项，或将其复制并粘贴到注册表编辑器的地址栏中：



在右侧窗格中右键单击，然后选择“新建 > 字符串值”。将新值命名为 `000` 。

双击刚刚创建的“000”字符串，然后输入 `Ubuntu Mono` 作为其数值数据。

如果您正在使用 Windows 终端（您应该使用，它[在很多方面都有很大的改进）](https://www.howtogeek.com/673729/heres-why-the-new-windows-10-terminal-is-amazing/) ，那么更改字体会更容易。安装 Ubuntu 字体后，打开终端，单击向下的小箭头，然后选择“设置”。打开“默认值”>“外观”，然后从可用字体列表中选择“Ubuntu Mono”。



## IRC

互联网中继聊天（IRC）是一个基于文本的即时消息聊天系统。IRC是为论坛频道（称为channels）中的小组交流而设计的，但也允许通过私人消息进行一对一交流，以及聊天和数据传输，包括文件共享。

互联网中继聊天是作为一种应用层协议来实现的，以便于以文本的形式进行通信。聊天过程在客户端-服务器网络模型上工作。用户使用客户端连接到IRC服务器，该客户端可以是网络应用程序、独立的桌面程序，也可以嵌入到较大程序的一部分中，IRC服务器可能是较大IRC网络的一部分。用于连接的程序示例包括Mibbit、IRCCloud、KiwiIRC和mIRC。



## Windows 注册表

Windows 注册表是多个数据库的集合。它包含适用于所有用户的系统范围的注册表设置，并且每个 Windows 用户帐户也都有其自己的用户特定设置。

在 Windows 10 和 Windows 7 上，系统范围的注册表设置存储在

```
C:\Windows\System32\Config\
```

而每个 Windows 用户帐户都有自己的 NTUSER.dat 文件，其中包含其用户特定的密钥目录。您不能直接编辑这些文件。

```
C:\Windows\Users\Name
```




但这些文件存储在哪里并不重要，因为您永远不需要接触它们。当您登录 Windows 时，它会将这些文件中的设置加载到内存中。当您启动程序时，它可以检查存储在内存中的注册表以查找其配置设置。当您更改程序的设置时，它可以更改注册表中的设置。当您退出电脑并关机时，它会将注册表的状态保存到磁盘中。


注册表包含类似文件夹的“键”和“值”，这些键可以包含数字、文本或其他数据。注册表由多组键和值组成，例如 HKEY_CURRENT_USER 和 HKEY_LOCAL_MACHINE。这些组被称为“蜂巢”。

并非所有程序都将其所有设置存储在 Windows 注册表中。每个程序开发人员都可以决定将注册表用于所有设置、仅用于部分设置或不用于任何设置。某些程序将其所有（或部分）设置存储在配置文件中，例如，存储在 [“应用程序数据”文件](https://www.howtogeek.com/318177/what-is-the-appdata-folder-in-windows/)夹下。但 Windows 本身会大量使用注册表。

当您需要查找 Windows 中通常不显示的选项时，此功能尤其有用。有些功能只有通过修改注册表才能实现。其他设置在 [Windows 专业版的](https://www.howtogeek.com/222458/should-you-upgrade-to-the-professional-edition-of-windows-10/)[组策略](https://www.howtogeek.com/125171/htg-explains-what-group-policy-is-and-how-you-can-use-it/)中可用，但您通常可以通过调整注册表在 Windows 家庭版中更改它们。

在左侧窗格中导航到需要修改的键值。你会知道需要修改的位置，因为你正在尝试应用的注册表修改说明会告诉你。

为了以防万一，我们通常建议在编辑注册表之前[备份注册表 ](https://www.howtogeek.com/197785/how-to-backup-and-restore-the-windows-registry/)（以及[你的电脑 ](https://www.howtogeek.com/242428/whats-the-best-way-to-back-up-my-computer/)，你应该始终保留备份！）。但如果你正确遵循合法的说明，就不会有问题。首先，您需要打开注册表编辑器应用程序。按 Windows+R 打开“运行”对话框。输入“regedit”，然后按 Enter。您也可以打开“开始”菜单，在搜索框中输入“regedit.exe”，然后按 Enter。

您还可以通过下载并运行 .reg 文件来编辑注册表，这些文件包含运行时应用的更改。您应该只从信任的来源下载并运行 .reg 文件，但它们是文本文件，因此您可以右键单击它们并在记事本中打开它们。

更好的是，你可以[创建自己的注册表修改文件 ](https://www.howtogeek.com/167579/how-to-make-your-own-windows-registry-hacks/)。一个 .reg 文件可以包含多个不同的设置，因此你可以创建一个 .reg 文件，在运行它时，自动将所有你喜欢的注册表修改和配置调整应用到 Windows PC 上。

### 下面应该放在linux系统及其应用里的



下载软件安装包



`apt-get`

用于安装软件的命令。“Apt”代表“高级软件包工具”。此命令从 Ubuntu 的集中式软件存储库下载软件包并将其安装到您的系统上。如果您尝试安装的软件包需要（或“依赖”）其他软件包，apt-get 也会自动下载并安装这些软件包（称为依赖项）。Apt-get 适用于“.deb”软件包，该软件包以 Ubuntu 所基于的 Linux 发行版 Debian 命名。

您需要运行 apt-get 并输入“ [sudo](https://www.howtogeek.com/111479/htg-explains-whats-the-difference-between-sudo-su/) ”命令，该命令会授予其超级用户（即 root）权限。这允许该命令在 Linux 环境中修改和安装系统文件。使用 sudo 时，您必须输入当前用户帐户的密码。



更新软件包

首先，您需要运行以下命令从软件存储库下载最新的软件包列表：

```
sudo apt-get update
```

安装软件包

`sudo apt-get install packagename`

搜索包

此命令不需要 sudo，因为它只是一个简单的搜索。但是，如果您愿意，可以使用 sudo 运行它，它仍然可以正常工作。

```
apt-cache search sometext
```

更新所有已经安装的包

`sudo apt-get upgrade`



卸载包

`sudo apt-get remove packagename`

上述命令仅删除软件包的二进制文件，而不会删除任何关联的配置文件。如果您要删除与软件包关联的所有内容，请运行以下命令：

```
sudo apt-get purge packagename
```



以上两个命令都不会删除任何“依赖项”，这些依赖项是由于软件包需要而安装的软件包。如果您卸载某个软件包，然后稍后再将其删除，您的系统可能仍会保留一些不再需要的依赖项。要删除任何作为依赖项安装但不再需要的软件包，请运行以下命令：

```
sudo apt-get autoremove
```





如何安装其他软件

例如，通过 apt-get 安装 Ruby 后，Ruby 的 gems 会通过“gem install”命令进行安装。Ruby 有自己的软件安装系统，与 apt-get 无关。

一些软件包可以在第三方托管的 PPA（即“个人软件包存档”）中找到。要安装这些软件包，您需要将 [PPA 添加到您的系统 ](https://www.howtogeek.com/142414/how-to-install-software-from-outside-ubuntus-software-repositories/)，然后使用常规的 apt-get 命令。

较新的软件可能需要从源代码编译和安装。您使用 apt-get 安装的所有软件包均已由 Ubuntu 的构建系统从源代码编译，并方便地打包成可安装的 .deb 软件包。您应该尽可能避免这种情况，但在某些情况下可能不可避免。



软件工程的需求分析，准确来讲是我们最终要做出来的系统



- 用户的根本性需求
- 用户的描述性需求
- 系统的表现性需求



系统软件系统满足用户需要的关键问题

用户认知下软件系统的预知表现

软件工程师需要完成的系统任务

数据要求

- 复杂的数据？许多基本的数据元素组成
- 数据结构表示数据元素之间的逻辑关系
- 数据字典不够形象直观。常利用图形工具



软件工程中的需求分析属于开发计划的一部分

不是系统的解决方案

系统的解决方案是实现





## 附录

### 参考文献

### 版权信息

本文原载于[blog.chenalna.site](https://blog.chenalna.site/)，遵循 CC BY-NC-SA 4.0 协议，复制请保留原文出处。