仮想環境にsystemd-nspawnを使うにあたって、systemd-nspawan@machineを編集していたのだが、nspawnファイルを使うほうが良いらしい。
/etc/systemd/nspawn/machine.nspawnを作ればそれを読み取ってくれるらしい。読み取らせるオプションがsystemd-nspawnの–settings=override だった。
プロセスを見ると–network-veth とか -U とかついているんだけどoverrideでちゃんとnspawnファイルを読み込んでいるらしくそちらが有効になっているようだ。
一番怖かったのは-Uで、やけに起動に時間がかかるな、と思ったら全部のUIDをprivate用に変更してくれやがって修正が大変でした。
これを外す方法がわからなかったのでsystemctl edit したと言っても過言ではない。
PrivateUsers=0 がその設定。
/etc/systemd/machine.nspwan
[Exec] Boot=true Hostname=machine LinkJournal=try-guest PrivateUsers=0 [Network] Bridge=bridge0 [Files] Bind=/home
systemctl edit systemd-nspawn@machine.service
するのとどっちがいいかというと、一応用意されている.nspawnファイルの方が良いのかなーということで全部.nspawnに置き換えた。
とりあえず問題は出ていない。
あと、mount -o bind で共有するより、Bindで指定するほうが、host0で余計なマウントが出てこない(cgroupでnamespaceが分けられている?)ので良さそうだ。まあhomeぐらいしかないんだけど。
/var/cache/apt/archivesとか共有してもいいかもしんない。
ちなみにネットワークを分けずにhost0のネットワークそのまま使う場合には、[Network]にPrivate=false でOK。
コメントを残す