WSL2 Linux虚拟机设置自动启动xrdp
开启 `systemd` 是最标准、最干净的 Linux 原生做法。
渲染中...
因为 WSL 2 并没有使用传统的 `systemd` 初始化进程(默认情况下),所以 Linux 系统启动时不会像真正的物理机那样自动运行后台服务。
要在每次启动 WSL 或打开终端时**自动启动 `xrdp`**,有以下几种非常优雅且实用的解决方案:
### 方案一:在 WSL 内部启用 `systemd`(微软官方推荐,最方便)
在较新的 WSL 2(Windows 10/11 最新版)中,微软已经原生支持了 `systemd`。开启后,Linux 的后台服务(包括 `xrdp`、Docker 等)就会像普通的 Linux 系统一样**随 WSL 启动而自动运行**,无需任何额外脚本。
#### 操作步骤:
1. **修改 WSL 配置文件**: 在 WSL 的 Ubuntu 终端中运行以下命令,将 `systemd` 设为启用:
Bash
```
sudo bash -c 'cat <<EOF > /etc/wsl.conf
[boot]
systemd=true
EOF'
```
2. **配置 xrdp 服务开机自启**: 在 WSL 终端中运行:
Bash
```
sudo systemctl enable xrdp
```
3. **设置免密启动(防止 xrdp 启动卡密码)**: 由于 `xrdp` 启动需要 root 权限,为了保证后台顺利自启,允许当前用户免密启动 `xrdp` 即可(上面 enable 后,systemd 会在系统初始化时以 root 执行)。
4. **重启 WSL 生效**: 在 Windows 的 PowerShell 中执行关闭 WSL 命令:
PowerShell
```
wsl --shutdown
```
然后重新打开 Ubuntu 终端,输入以下命令检查 `xrdp` 状态:
Bash
```
sudo systemctl status xrdp
```
如果显示 **`active (running)`**,说明配置成功!以后只要 WSL 一启动,`xrdp` 就会自动在后台跑起来,你可以随时用远程桌面连接。
### 方案二:配置 `sudoers` 免密 + `.bashrc` 自动启动(适合旧版 WSL)
如果你不想开启 `systemd`,或者你的 WSL 版本较低,可以在每次打开 WSL 终端时,让系统在后台检查并自动启动 `xrdp`。
#### 操作步骤:
1. **设置 `xrdp` 服务免密运行**: 在 WSL 终端中输入以下命令编辑 sudoers 权限:
Bash
```
sudo visudo
```
在文件最底部添加一行(将 `your_username` 替换为你自己的 WSL 用户名):
Plaintext
```
your_username ALL=(ALL) NOPASSWD: /usr/sbin/service xrdp *
```
*按 `Ctrl + O` 保存,`Enter` 确认,`Ctrl + X` 退出。*
2. **把启动命令加到用户配置文件中**: 编辑 `~/.bashrc` 文件:
Bash
```
nano ~/.bashrc
```
在文件的**最末尾**加上下面这段逻辑(作用是:如果检测到 `xrdp` 没启动,就静默启动它):
Bash
```
# 自动启动 xrdp 服务
if ! service xrdp status > /dev/null 2>&1; then
sudo service xrdp start > /dev/null 2>&1
fi
```
*保存并退出。*
这样,每次你启动 WSL 终端,它就会自动在后台把 `xrdp` 服务拉起来,完全不需要你手动敲 `sudo service xrdp start` 了。
### 方案三:在 Windows 开机时自动静默启动 WSL 桌面服务
如果你希望**Windows 一开机,Linux 远程桌面直接就能连**(甚至不需要你手抖去打开 WSL 终端),可以在 Windows 侧创建一个静默启动脚本。
1. 按 `Win + R`,输入 `shell:startup` 并回车(这会打开 Windows 的“启动”文件夹)。
2. 在该目录下新建一个文本文件,重命名为 `start-wsl-xrdp.vbs`(注意后缀改为 `.vbs`)。
3. 鼠标右键编辑这个文件,写入以下代码:
VBScript
```
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -u root service xrdp start", 0
```
4. 保存即可。
**效果**:以后每次 Windows 电脑开机登录后,系统就会在后台以 `root` 权限隐式启动 WSL 的 `xrdp` 服务,完全无弹窗。你随时打开 Windows 的“远程桌面连接 (`localhost:3390`)”即可直接进入 Linux 桌面!
### 总结建议
- **首选【方案一】**:开启 `systemd` 是最标准、最干净的 Linux 原生做法。
- **搭配【方案三】**:如果你想开机即用,配合 Windows 启动脚本使用,体验会直接拉满!END
评论
登录后查看和发表评论
前往登录