👋

WSL2(Ubuntu 22.04)上でSnapdを動かす(2022)

2022/09/05に公開

Ubuntuのインストーラーが豪華になってた

関連記事:
WSL2(Ubuntu 20.04)上でSnapdを動かす
Distrodを使ってWSL2でsystemdを動かす

この記事更新するとは思わんかったな。
zennに移行して最初の方に以下の記事を書いた。

WSL2(Ubuntu 20.04)上でSnapdを動かす

強引にコマンド打ってsystemdを入れちゃおう作戦。
その後、systemdを追加する手法が見つかったのでDistrod主体に切り替えたのだが、
どうも公式がUbuntuサポートしようと動いたようだ。

('ω') まぁ、snapd使いたいし

ということで公式手順でsnapdを動かす方法を書いていく。

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

事前準備

WSLのカーネルは最新にしておく

wsl --update

Ubuntu22.04以上サポートらしい。
20.04の人はバージョンアップより新規で入れる方がいいかもしれない。
そのまま使いたい人は以下のコマンドを実行

sudo do-release-upgrade -d

wsl Ubuntu22.04インストール

こちらを参考の事

https://news.mynavi.jp/techplus/article/20220430-2330411/

最新にしとこう

sudo apt update; sudo apt upgrade -y

systemdを常駐させる設定にする

状態確認

まず初期状態のプロセスを確認

ps axuw
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   1744  1080 ?        Sl   14:10   0:00 /init
root         7  0.0  0.0   1764    68 ?        Ss   14:10   0:00 /init
・・・
dozo      1051  0.0  0.0  11112  1556 pts/0    R+   14:14   0:00 ps axuw

PID1には/initが鎮座している。

wsl.confにwsl-systemdを設定

Ubuntu22.04では以下のコマンドが追加されている

| /usr/libexec/wsl-systemd

これをwsl.confのbootディレクティブに設定する

/etc/wsl.conf
[boot]
command="/usr/libexec/wsl-systemd"

Ubuntu再起動

powershellに戻ってubuntuを再起動し、
ubuntuコマンドでログインする。

powershell
wsl -t Ubuntu-22.04
ubuntu2204.exe

状態再確認

ps axuw
USER PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root 1  7.0  0.1 165980 11168 ?        Ss   14:45   0:00 /lib/systemd/systemd --unit=multi-user.target
・・・
dozo 365  0.0  0.0  11112  1568 pts/0    R+   14:45   0:00 ps axuw

(・∀・) それっぽい!

snapdを使ってみる

さて、それではsnapd経由でchromiumを入れてみよう。
snapdのインストールはすでにあるので必要ない。

sudo snap install chromium
 chromium 104.0.5112.101 from Canonical✓ installed
sudo snap install microk8s --classic
 microk8s (1.24/stable) v1.24.3 from Canonical✓ installed

(^_-)-☆ やったね!

参考:

------------------- ↓ 後書はここから ↓-------------------

ubuntu2204.exeが使えないとき

OSアップデートなどでubuntu2204.exeが使えないときは
wslコマンドで以下のようにする
(シェルがbashの時)

wsl -d Ubuntu-22.04 -e /usr/libexec/nslogin /bin/bash

ERROR: Systemd is not running. エラー

wslログイン時に以下のエラーが出るとき

wsl -d Ubuntu-22.04 -e /usr/libexec/nslogin /bin/bash
ERROR: Systemd is not running. Please terminate this instance by running "wsl -t <distro>" from Windows shell and try again.

即時起動しないので、
OS起動して少し経ってからログインするとエラーが出なくなる

Discussion