WSLの初期設定と問題対策

1. 初期設定

1.1. ubuntuのユーザ作成

以下のコマンドを入力してユーザを作成します。

adduser <ユーザ名> usermod -aG sudo <ユーザ名>

<ユーザ名>を作成したいユーザ名にしてください。 実行結果は以下となります。

root@LAPTOP-SSBI3BQM:~# adduser hoge Adding user `hoge' ... Adding new group `hoge' (1000) ... Adding new user `hoge' (1000) with group `hoge' ... Creating home directory `/home/hoge' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for hoge Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y root@LAPTOP-SSBI3BQM:~# usermod -aG sudo hoge root@LAPTOP-SSBI3BQM:~#

1.2. WSLの起動時ログインユーザの指定

以下のコマンドを入力します。hogeは、起動時にログイン状態にするユーザ名に変更してください。

cat << EOF >> /etc/wsl.conf [user] default=hoge EOF

上記コマンドは、/etc/wsl.conf というファイルを作って、以下の内容で保存します。
hogeは、起動時にログイン状態にするユーザ名となります。

[user] default=hoge

WSL の Linux を終了するため、powershell で WSL を終了させます。

PS C:\> wsl --shutdown PS C:\>

2. 問題対策

2.1. resolv.confの問題対応

/etc/resolv.conf が上書きされ、名前解決ができなくなる問題が発生するときがあります。
その場合、/etc/wsl.conf に以下を追記します。

  1. 以下のコマンドでnanoを立ち上げます。
sudo nano /etc/wsl.conf
  1. 以下の内容を追記します。
[network] generateResolvConf = false

Ctrl + oを押下して保存し、Ctrl + x を押下してnanoを終了します。

  1. 以下のコマンドでnanoを立ち上げます。
sudo nano /etc/resolv.conf
  1. 以下の内容を追記します。
nameserver 8.8.8.8

wslを再起動した場合に、/etc/resolv.conf が消える場合は、上記処理に追加して以下を行います。

sudo chattr +i /etc/resolv.conf

2.2. WSLを起動しようとした際、以下のエラーで失敗してしまう。

スタブは正しくないデータを受信しました。 Error code: Wsl/Service/0x800706f7 Press any key to continue...

解決策
Windows PowerShell(管理者)を立ち上げ以下のコマンドを入力します。

netsh winsock reset

以下のメッセージがでますが、再起動してはいけません。
再起動するとWSLの起動がエラーで失敗してしまいます。

Winsock カタログをリセットしました。 リセットを完了するためにコンピューターを再起動する必要があります。