Open10

Windows11 Proを使おうとして困った問題のメモ

栗林健太郎栗林健太郎

ターミナルでcvが入力できなくなった

なにいってんだ?という感じかもしれないが、他の文字は入力できるのに、一部入力できない文字が出てきた。Windows Terminalに直接入力ができない問題 #WT - Qiitaにある通り、レジストリエディタで

コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Input以下の

  • InputServiceEnabled
  • InputServiceEnabledForCCI

の値を0にしたら入力できるようになった。

栗林健太郎栗林健太郎

WSL内からVS Codeを起動できない

WSL で VS Code の使用を開始する | Microsoft Learn」によると、WSL内からcodeコマンドを実行すると、WSLをサーバとしてWindowsをクライアントとしてVS Codeが起動できるようであった。まずそのことに驚いた。

そこで試してみると、以下のエラーが出た。

$ code .
/mnt/c/Program Files/Microsoft VS Code/bin/code: 61: /mnt/c/Program Files/Microsoft VS Code/Code.exe: Exec format error

そこで、WSL2 (Preview) cannot run .exe files: exec format error: wsl.exe · Issue #8952 · microsoft/WSLにある通り実行してみた。すると、以下の通りエラーが出た。

sudo sh -c 'echo :WSLInterop:M::MZ::/init:PF > /usr/lib/binfmt.d/WSLInterop.conf'
sudo systemctl restart systemd-binfmt
Failed to restart systemd-binfmt.service: Unit systemd-binfmt.service is masked.

そこで、上記のコメントの次のコメントにある通り実行したら解決した。

$ sudo systemctl unmask systemd-binfmt.service
Removed /etc/systemd/system/systemd-binfmt.service.
$ sudo systemctl restart systemd-binfmt
$ sudo systemctl mask systemd-binfmt.service
Created symlink /etc/systemd/system/systemd-binfmt.service → /dev/null.

無事に起動。

$ code .
Installing VS Code Server for x64 (f1b07bd25dfad64b0167beb15359ae573aecd2cc)
Downloading: 100%
Unpacking: 100%
Unpacked 1608 files and folders to /home/kentaro/.vscode-server/bin/f1b07bd25dfad64b0167beb15359ae573aecd2cc.
栗林健太郎栗林健太郎

Windows11を23H2にアップデートしたら(元のバージョンはもうわからなくなってしまった)、IMEの設定で以下のようにしているにも関わらずCtrl-SpaceでIMEのトグルができなくなった……。

Xに同じことで困っている人がいた。

https://twitter.com/katsuemon_z80/status/1664070807759503360

PowerToysに入ったらしいプレビューという機能が、勝手にCtrl-Spaceをのっとってた……。

栗林健太郎栗林健太郎

他のホストからWSL2で起動しているサーバへアクセスしたい

Windows上からだと、WSL2でlistenしてるポートへlocalhostから自動的にポートフォワーディングされているので、WSL2で起動していてもWindowsで起動しているかのように透過的に扱うことができる。

一方で、他のホストからのアクセスはそうはいかない。「ローカル エリア ネットワーク (LAN) からの WSL 2 ディストリビューションへのアクセス 」というドキュメントがあった。

こんな感じで、netshコマンドを用いてフォワードしてやる必要がある(管理者権限が必要なので、ターミナルを管理者として実行する)。

netsh interface portproxy add v4tov4 listenport=<yourPortToForward> listenaddress=0.0.0.0 connectport=<yourPortToConnectToInWSL> connectaddress=(wsl hostname -I)

Stable Diffusion Web uiにLAN内のべつのホストから接続するために、以下の内容のコマンドを実行した(172.29.205.223は、(wsl hostname -I)を実行した結果。そのコマンドそのものを書いたのではだめだった)。

netsh interface portproxy add v4tov4 listenport=7860 listenaddress=0.0.0.0 connectport=7860 connectaddress=172.29.205.223

(Microsoft は、このエクスペリエンスを改善する方法を検討しています)

とあるので、Microsoftとしてももっといい感じにしようとしているようである。

栗林健太郎栗林健太郎

↑と思ったら、そんなことなかった?挙動がよくわからなくなってきた。

やっぱ必要だった。

栗林健太郎栗林健太郎

WSL2(Ubuntu)で音がならない

こんなエラーが出てしまう。

ALSA lib confmisc.c:855:(parse_card) cannot find card '0'

以下の記事に従ってWindowsでPulseAudioサーバを設定・起動する。

WSL2:PCから音を出す方法 – demura.net

Ubuntu上でpulseaudioを入れる。

apt -y install pulseaudio

WSLで音を出して楽しむTIPSざっくり

これでちゃんと音が出るようになった。

aplay ~/tmp/test.wav
Playing WAVE '/home/kentaro/tmp/test.wav' : Signed 16 bit Little Endian, Rate 24000 Hz, Mono