WSL2 Linux仮想マシンでxrdpを自動起動するように設定する
`systemd` の起動は、最も標準的でクリーンな Linux ネイティブな方法です。
レンダリング中...
WSL 2 はデフォルトで従来の `systemd` 初期化プロセスを使用しないため、Linux システム起動時に実際の物理マシンとは異なり、バックグラウンドサービスが自動的に実行されません。
WSL の起動時またはターミナルを開くたびに **`xrdp` を自動起動**するには、以下の非常に洗練された実用的なソリューションがいくつかあります。
### ソリューション 1: WSL 内部で `systemd` を有効にする (Microsoft 公式推奨、最も便利)
比較的新しい WSL 2 (Windows 10/11 最新版) では、Microsoft は `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` はバックグラウンドで自動的に実行され、いつでもリモートデスクトップで接続できるようになります。
### ソリューション 2: `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` を手動で入力する必要は全くなくなります。
### ソリューション 3: Windows 起動時に WSL デスクトップサービスをサイレントに自動起動する
**Windows が起動したらすぐに Linux リモートデスクトップに接続できるようにしたい** (WSL ターミナルを開く手間すら省きたい) 場合は、Windows 側でサイレント起動スクリプトを作成できます。
1. `Win + R` を押し、「ファイル名を指定して実行」に `shell:startup` と入力して Enter キーを押します (これにより 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 PC が起動してログインした後、システムはバックグラウンドで `root` 権限で WSL の `xrdp` サービスを暗黙的に起動します。ポップアップウィンドウは一切表示されません。いつでも Windows の「リモート デスクトップ接続 (`localhost:3390`)」を開いて、直接 Linux デスクトップに入ることができます!
### まとめと推奨
- **【ソリューション 1】を最優先**: `systemd` を有効にすることは、最も標準的でクリーンな Linux ネイティブな方法です。
- **【ソリューション 3】と組み合わせる**: 起動時にすぐに使えるようにしたい場合は、Windows の起動スクリプトと組み合わせることで、体験が格段に向上します!END
コメント
ログインしてコメントを閲覧・投稿してください
ログインへ