LoginSignup
9
6

More than 1 year has passed since last update.

WSL2の.wslconfigを作成するときはUTF-8 BOMなしで

Posted at

ずっと詰まっていたこと

.wslconfigが適用されない。配置場所もファイル名も記述内容もバージョンも正しいはずなのに。

.wslconfigとは

WSL2を使用するときにメモリの使用量やらなんやら色々設定するファイル。
何が設定できるのかはMSのドキュメントを見に行ってください。

必要な環境

  • windows10 Home バージョン2004 (OSビルド19041) 以降
  • 何らかのLinuxディストリビューション

私の環境

  • windows10 Home バージョン21H2 (OSビルド19044.1387)
  • MSストアのUbuntu(Ubuntu 20.04 LTS)

.wslconfigの作成方法

%UserProfile%.wslconfig というファイルを作成する。
私はメモリの枯渇を止めたかったので次のように記述。

.wslconfig
[wsl2]
memory=2GB
swap=8GB

以下を参考に。

しかし、うまく適用されなかった。

結論

UTF-8 BOM付きで .wslconfig を作成していたことが原因だった。
UTF-8 BOM 無し.wslconfig を作成しなければならない。

検証して失敗した行動

書き換えた.wslconfigを適用させる手順。

  1. PowerShellを起動。
  2. wsl --shutdownを実行。
  3. .wslconfigを書き換える。
  4. wslを実行。
  5. free -hを実行して.wslconfigが適用されているか確認する。

memoryswapの記述を変化させる。

memoryは3GB、3Gi、1.5GB、1500MBを、swapは0を試した。
.wslconfigが適用されるかには関係なかったようで失敗。

改行コードをLFに変更

Linuxを完全に理解している 1 ので、Linuxということで改行コードを変更してみた。
CRLFでもLFでも.wslconfigは問題なく適用される。無関係だった。

高速スタートアップの無効化

Win10にある高速スタートアップという機能を使用しているとWSL2に影響を及ぼすという記述を見かける。
高速スタートアップを無効化し、Win10を再起動した。
少なくともメモリには関係なかったようで失敗。

free -hでは.wslconfigが適用されているかわからないのではという検討

WSL2+VSCode+Dockerをしばらく動かし続ける。
無事にメモリが枯渇する。
.wslconfigが適用されている現在、free -hは適切に確保したメモリを表示してくれる。

PowerShell
$ free -h
              total        used        free      shared  buff/cache   available
Mem:          1.9Gi        77Mi       1.8Gi       0.0Ki        32Mi       1.8Gi
Swap:         8.0Gi          0B       8.0Gi

BOM付きで問題が発生するものは多いらしい

utf8 bom とはなどで検索するとBOMが問題を起こすものが出てくる出てくる。
Unicodeで作成されたことを明記しておくモノのようだが、UTF-8では推奨されないモノらしい。逆にUTF-16では必要だとか。

知らなかったので新規作成→テキストドキュメントで作成して、内容を記述し保存、拡張子を変える要領で.wslconfigとしていた。


  1. つまりは何も理解していないということ。 

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6