欢迎光临
我们一直在努力

Linux WSL 实操(模块 1):WSL 环境适配与 systemd 启用

Linux WSL 实操(模块 1):WSL 环境适配与 systemd 启用

本系列基于 Ubuntu on WSL2 做 Linux 实操,共 10 个模块:

模块内容
1 WSL 环境适配与 systemd 启用 ← 本文
2 目录与文件操作
3 用户与权限
4 systemd 与 journald
5 Nginx 静态站点
6 反向代理
7 Shell 脚本基础
8 脚本进阶与 crontab
9 Docker 与 Compose
10 多容器编排

本文的目标是:把 WSL 环境调校到"能当正经 Linux 用"的状态——确认 WSL2、确认 systemd 可用、更新软件源、最后用 nginx + systemctl 做一次综合验收。


一、为什么要先做这一步

很多人在 WSL 里跑 systemctl 会看到这个报错:

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

原因就两个:发行版是 WSL1,或者 没启用 systemd。

对比项WSL1WSL2
实现方式 系统调用翻译层 轻量虚拟机 + 真实 Linux 内核
systemd 支持 ❌ 永远不支持 ✅ 支持(需 ≥ 0.67.6)
文件性能 跨系统读写快 Linux 文件内读写快
Docker 支持 不支持 支持

systemd 是什么? Linux 的"大管家"进程,负责启动和管理所有其他服务。systemctl 是它的遥控器。没有 systemd,systemctl start nginx 这类命令全废,后面模块 4/5/6 都做不了。

怎么判断有没有 systemd? 看 1 号进程是谁。Linux 里 PID 1 就是 init 进程,如果是 systemd,说明管家在岗;如果是 init 或 sh,就没有。


二、环境准备

如果还没装 WSL2 / Ubuntu:

项目获取方式
WSL 本体 https://github.com/microsoft/WSL/releases
Ubuntu 发行版 微软商店直接搜 Ubuntu 安装,或官网 https://ubuntu.com/download
我之前教程中有提到 Docker Desktop 安装与配置完整教程

装好后设置好用户名和密码即可。


三、Step 1:打开终端并确认 WSL 版本

按 Win + R,输入 wt 回车,打开 Windows Terminal(默认进 PowerShell)。

在这里插入图片描述

3.1 查看 WSL 版本

wsl version

命令拆解:

片段含义
wsl WSL 管理程序本体(Windows Subsystem for Linux 的缩写)
–version 选项,把版本号打印出来

在这里插入图片描述

验收标准:WSL 版本 ≥ 0.67.6 就过关。不满足就先执行 wsl –update,装完重开 PowerShell 再看。

3.2 确认发行版是 WSL2

wsl l v

片段含义
wsl WSL 管理程序本体
-l –list 的简写:列出装了哪些发行版
-v –verbose 的简写:显示详细信息(主要为了看 VERSION 那列)

在这里插入图片描述

验收标准:VERSION 那列是 2。

如果是 1,执行转换(把 Ubuntu 换成 NAME 列显示的实际名字),需要等几分钟:

wsl set-version Ubuntu 2


四、Step 2:进入 Ubuntu

直接从开始菜单打开 Ubuntu,或者在 PowerShell 里执行:

wsl d ubuntu

在这里插入图片描述


五、Step 3:确认 systemd 已在运行

5.1 看 1 号进程是谁

ps -p 1 -o comm=

片段含义
ps process status 的缩写,查看进程的命令
-p 1 只看 PID(进程编号)为 1 的那一个进程
-o output,指定"我要看哪几列"
comm= 只要 command(命令名)这一列;末尾等号表示连表头都不要

在这里插入图片描述

输出 systemd → 过关。输出 init 或 sh → 没有 systemd,继续往下看 5.3。

5.2 检查配置文件

cat /etc/wsl.conf

片段含义
cat concatenate 的缩写,把文件内容原样打印到屏幕上
/etc/wsl.conf 要查看的文件路径

在这里插入图片描述

看到下面这段就说明已启用:

[boot]
systemd=true

新版本的 Ubuntu 在 WSL2 里默认就开启了 systemd,一般不用手动配置。如果你的文件里没有这段,按 5.3 补上。

5.3 手动开启(老版本才需要)

sudo tee /etc/wsl.conf <<'EOF'
[boot]
systemd=true
EOF

然后回到 PowerShell 执行 wsl –shutdown 彻底关机,再重新打开 Ubuntu 生效。

5.4 最终确认

systemctl is-system-running

片段含义
systemctl systemd 的控制工具,名字是 system + ctl(control 的缩写)
is-system-running 子命令,问系统:“你整体跑起来了吗?”

在这里插入图片描述

看到 running 就没问题。如果报 Failed to connect to bus,说明 systemd 没起来,回 5.3 检查。


六、Step 4:更新系统软件包

环境确认好之后,顺手把系统更新到最新,避免后面装软件踩版本坑。

6.1 刷新软件目录

sudo apt update

片段含义
sudo 管理员身份(apt 要写系统目录,必须提权)
apt Ubuntu 的软件包管理工具,相当于"应用商店管家"
update 子命令:刷新本地的软件目录(索引),不安装任何包

在这里插入图片描述

update 只是"更新商店目录",一个包都不装。真正升级是 6.3 的 upgrade。

执行后会提示输入密码:

在这里插入图片描述

⚠️ 新手最容易以为"卡住了":Linux 输入密码时屏幕上不会显示任何字符(连 **** 都没有),这是正常的安全设计。盲打完直接按回车就行。

回车后开始拉取索引,最后回到命令提示符即刷新完成。

6.2 看看有哪些能升(只看不升)

apt list –upgradable

片段含义
apt 软件包管理工具
list 子命令:把包列出来
–upgradable 选项:只列出"有新版可以升"的那些包

在这里插入图片描述

会列出一屏待升级的包名,按 Q 即可回到命令提示符。

6.3 正式升级

sudo apt upgrade -y

片段含义
upgrade 子命令:把已装的包升到最新版
-y 选项:遇到"确定吗 [Y/n]"自动回答 Yes,不用来回确认

在这里插入图片描述

下载、解包进度走完会回到提示符。中途可能弹紫色配置框,直接回车选默认即可。

6.4 清理残留依赖

sudo apt autoremove -y

片段含义
autoremove auto(自动)+ remove(删除),删掉已经没人依赖的孤儿包
-y 自动回答 Yes

在这里插入图片描述

列表为空或明显变少,说明前面的 upgrade 确实生效了。


七、Step 5:综合验收 —— 装 nginx 并用 systemd 管起来

前面都是配置,这一步做一次端到端验收:装一个真实服务,用 systemd 设为开机自启并立刻启动,再用 HTTP 请求验证它真的在跑。

sudo apt install -y nginx
sudo systemctl enable –now nginx
systemctl is-enabled nginx
curl -I localhost

四条命令逐行拆解:

命令片段含义
sudo apt install -y nginx install 子命令:安装
nginx 目标软件名,一个 Web 服务器(后面几个模块都围着它转)
sudo systemctl enable –now nginx enable 子命令:设为"开机自动启动"
–now 选项:顺便现在就启动,不用等下次开机
systemctl is-enabled nginx is-enabled 子命令:查询"有没有设为开机自启"
curl -I localhost curl 发 HTTP 请求的小工具
-I 选项:只要响应头(大写的 i)
localhost 本机地址,就是这台 WSL 自己

在这里插入图片描述

验收标准:

命令期望输出
systemctl is-enabled nginx enabled
curl -I localhost HTTP/1.1 200 OK

两条都满足,说明 systemd 可用 + 服务管理正常 + 网络栈正常,环境已经完全就绪。✅


八、收尾:正确关闭 WSL

用完别直接关窗口,WSL 的虚拟机会继续占内存。

exit

退出 Ubuntu 后,回到 PowerShell 执行:

wsl shutdown

彻底结束 WSL 进程、释放内存。下次打开 Ubuntu 会自动重新启动。


九、命令速查表

命令作用执行位置
wsl –version 查看 WSL 版本(需 ≥ 0.67.6) PowerShell
wsl -l -v 列出发行版及其 WSL 版本 PowerShell
wsl –set-version Ubuntu 2 把发行版转成 WSL2 PowerShell
wsl -d ubuntu 启动 Ubuntu PowerShell
wsl –shutdown 彻底关闭 WSL,释放内存 PowerShell
ps -p 1 -o comm= 看 1 号进程是不是 systemd Ubuntu
cat /etc/wsl.conf 查看 WSL 配置 Ubuntu
systemctl is-system-running 检查 systemd 整体状态 Ubuntu
sudo apt update 刷新软件目录(不装包) Ubuntu
apt list –upgradable 列出可升级的包 Ubuntu
sudo apt upgrade -y 升级所有已装包 Ubuntu
sudo apt autoremove -y 清理孤儿依赖 Ubuntu
sudo systemctl enable –now <服务> 设开机自启并立即启动 Ubuntu
systemctl is-enabled <服务> 查服务是否开机自启 Ubuntu

十、常见问题排查

现象原因与处理
Failed to connect to bus: Host is down systemd 没启用。检查 /etc/wsl.conf 是否有 [boot] systemd=true,改完必须 wsl –shutdown 重启才生效
wsl -l -v 显示 VERSION 是 1 执行 wsl –set-version Ubuntu 2 转换,需要几分钟
wsl –version 提示命令不存在 WSL 版本太老,先 wsl –update
输入密码时屏幕没反应 正常现象,Linux 密码输入不回显,盲打后回车
apt update 卡住或很慢 可换成国内镜像源(阿里/清华 Ubuntu 镜像)
apt upgrade 弹紫色配置框 直接回车选默认即可
改了 /etc/wsl.conf 但没生效 必须 wsl –shutdown 彻底关机再启动,光 exit 不够
WSL 一直占内存 用完 exit + wsl –shutdown
curl: command not found 先 sudo apt install -y curl

十一、本篇小结

检查项验收标准
WSL 版本 ≥ 0.67.6
发行版版本 WSL2
1 号进程 systemd
/etc/wsl.conf [boot] systemd=true
systemd 状态 running
软件源 已 update + upgrade
综合验收 nginx enabled 且 curl -I localhost 返回 200

到这里,WSL 已经是一台"能正经干活"的 Linux 了。下一个模块:目录与文件操作。


相关链接

  • WSL releases:https://github.com/microsoft/WSL/releases
  • Ubuntu 官网下载链接:https://ubuntu.com/download
  • Docker Desktop 安装与配置完整教程(含 WSL2 安装)
赞(0)
未经允许不得转载:171主机测评 » Linux WSL 实操(模块 1):WSL 环境适配与 systemd 启用
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址