WSL安装:Windows下的Linux子系统【让开发人员直接在Windows上按原样运行GNU/Linux环境(包括大多数命令行工具、实用工具和应用程序),且不会产生传统虚拟机或双启动设置开销】
必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。可通过选择“开始”>“设置”>“Windows 更新”>“检查更新”来更新到最新的 Windows 版本。
一、安装 WSL
1、先决条件
必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。
若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定” 。 可通过选择“开始”>“设置”>“Windows 更新”>“检查更新”来更新到最新的 Windows 版本。
2、安装
现在,可以在管理员 PowerShell 或 Windows 命令提示符中输入此命令,然后重启计算机来安装运行适用于 Linux 的 Windows 子系统 (WSL) 所需的全部内容。
wsl --install
此命令将启用所需的可选组件,下载最新的 Linux 内核,将 WSL 2 设置为默认值,并安装 Linux 发行版(默认安装 Ubuntu,请参阅下文更改此设置)。
更新WSL:
wsl.exe --update
首次启动新安装的 Linux 发行版时,将打开一个控制台窗口,要求你等待将文件解压缩并存储到计算机上。 未来的所有启动时间应不到一秒。
上述命令仅在完全未安装 WSL 时才有效,如果运行 wsl --install 并查看 WSL 帮助文本,请尝试运行 wsl --list --online 以查看可用发行版列表并运行 wsl --install -d 以安装发行版。
wsl --list --online
C:\WINDOWS\system32>wsl --list --online
以下是可安装的有效分发的列表。
使默认分发用 “*” 表示。
使用 'wsl --install -d <Distro>' 安装。
NAME FRIENDLY NAME
* Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
openSUSE-42 openSUSE Leap 42
SLES-12 SUSE Linux Enterprise Server v12
Ubuntu-16.04 Ubuntu 16.04 LTS
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
C:\WINDOWS\system32>
wsl --install -d Ubuntu-20.04
二、更改默认安装的 Linux 发行版
默认情况下,安装的 Linux 分发版为 Ubuntu。 可以使用 -d 标志进行更改。
- 若要更改安装的发行版,请输入:wsl --install -d 。 将 替换为要安装的发行版的名称。
- 若要查看可通过在线商店下载的可用 Linux 发行版列表,请输入:wsl --list --online 或 wsl -l -o。
- 若要在初始安装后安装其他 Linux 发行版,还可使用命令:wsl --install -d 。
如果要通过 Linux/Bash 命令行(而不是通过 PowerShell 或命令提示符)安装其他发行版,必须在命令中使用 .exe:wsl.exe --install -d 或若要列出可用发行版,则使用:wsl.exe -l -o。
三、设置 Linux 用户信息
安装 WSL 后,需要为新安装的 Linux 发行版创建用户帐户和密码。 请参阅设置 WSL 开发环境的最佳做法指南来了解详细信息。
四、设置和最佳做法
建议遵循设置 WSL 开发环境的最佳做法这一指南,逐步了解以下操作:为已安装的 Linux 发行版设置用户名和密码、使用基本的 WSL 命令、安装和自定义 Windows 终端、针对 Git 版本控制进行设置、使用 VS Code 远程服务器进行代码编辑和调试、文件存储的最佳做法、设置数据库、装载外部驱动器、设置 GPU 加速等。
五、检查正在运行的 WSL 版本
可列出已安装的 Linux 发行版,并通过在 PowerShell 或 Windows 命令提示符中输入以下命令来检查每个发行版的 WSL 版本:wsl -l -v
。
要在安装新的 Linux 发行版时将默认版本设置为 WSL 1 或 WSL 2,请使用命令 wsl --set-default-version <Version#>
,将 <Version#>
替换为 1 或 2。
要设置与 wsl
命令一起使用的默认 Linux 发行版,请输入 wsl -s <DistributionName>
或 wsl --setdefault <DistributionName>
,将 <DistributionName>
替换为要使用的 Linux 发行版的名称。 例如,从 PowerShell/CMD 输入 wsl -s Debian
,将默认发行版设置为 Debian。 现在从 Powershell 运行 wsl npm init
将在 Debian 中运行 npm init
命令。
要在 PowerShell 或 Windows 命令提示符下运行特定的 WSL 发行版而不更改默认发行版,请使用命令 wsl -d <DistributionName>
,将 <DistributionName>
替换为要使用的发行版的名称。
六、WSL配置SSH
ubuntu_setup_env.sh文件:
#!/bin/bash
set -e
SSHD_LISTEN_ADDRESS=127.0.0.1
SSHD_PORT=2222
SSHD_FILE=/etc/ssh/sshd_config
SUDOERS_FILE=/etc/sudoers
# 0. update package lists
sudo apt-get update
# 0.1. reinstall sshd (workaround for initial version of WSL)
sudo apt remove -y --purge openssh-server
sudo apt install -y openssh-server
# 0.2. install basic dependencies
sudo apt install -y cmake ninja-build gcc clang gdb valgrind build-essential
# 1.1. configure sshd
sudo cp $SSHD_FILE ${SSHD_FILE}.`date '+%Y-%m-%d_%H-%M-%S'`.back
sudo sed -i '/^Port/ d' $SSHD_FILE
sudo sed -i '/^ListenAddress/ d' $SSHD_FILE
sudo sed -i '/^UsePrivilegeSeparation/ d' $SSHD_FILE
sudo sed -i '/^PermitRootLogin/ d' $SSHD_FILE
sudo sed -i '/^PasswordAuthentication/ d' $SSHD_FILE
echo "# configured by CLion" | sudo tee -a $SSHD_FILE
echo "ListenAddress ${SSHD_LISTEN_ADDRESS}" | sudo tee -a $SSHD_FILE
echo "Port ${SSHD_PORT}" | sudo tee -a $SSHD_FILE
echo "UsePrivilegeSeparation no" | sudo tee -a $SSHD_FILE
echo "PermitRootLogin yes" | sudo tee -a $SSHD_FILE
echo "PasswordAuthentication yes" | sudo tee -a $SSHD_FILE
# 1.2. apply new settings
sudo service ssh --full-restart
# 2. autostart: run sshd
sed -i '/^sudo service ssh --full-restart/ d' ~/.bashrc
echo "%sudo ALL=(ALL) NOPASSWD: /usr/sbin/service ssh --full-restart" | sudo tee -a $SUDOERS_FILE
cat << 'EOF' >> ~/.bashrc
sshd_status=$(service ssh status)
if [[ $sshd_status = *"is not running"* ]]; then
sudo service ssh --full-restart
fi
EOF
# summary: SSHD config info
echo
echo "SSH server parameters ($SSHD_FILE):"
echo "ListenAddress ${SSHD_LISTEN_ADDRESS}"
echo "Port ${SSHD_PORT}"
echo "UsePrivilegeSeparation no"
echo "PermitRootLogin no"
echo "PasswordAuthentication yes"
七、windows10 ubuntu子系统 WSL文件位置
windows10 的linux子系统(windows subsystem for linux)WSL 文件位置
以我的系统为例,WSL的root目录对应windows的:
C:\Users\xiaoPeng\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs
其中AppData文件夹默认是隐藏的,但你可以在路径里输入AppData进去。但实际上微软为我们提供了一个默认的变量可以直接指向WSL的目录,wsl$ 你可以在运行(win+R)或资源管理器的路径里直接输入\wsl$进入Ubuntu的目录
参考资料:
安装 WSL官方教程
设置 WSL 开发环境
WSL 的基本命令
wsl (Windows下的Linux子系统)
WSL发展如此迅速,有没有可能会在未来替代原生Linux?
更多推荐
所有评论(0)