systemd nspawn
なんかSystemdを毛嫌いする人が多いのだけど、結構使いやすくて便利な機能が多いので、私は好きだ。Xサーバーみたいだと思う。
systemd-nspawnはcrgoupsを利用したLinuxコンテナである。 LXCよりもずっとシンプルな実装で、かつ簡単に使うことができる。 全然知られていないけど。
とりあえずArchする
Manjaroにもarch-install-scriptsがあるためpacstrapできたりする。 なので、初回インストール前には
# pacman -S arch-install-scripts
とやっておく。
そしたらコンテナを作る。 こちらは新規コンテナを作るときにやる作業。
# pacstrap -i -c ~/Container base base-devel
Arch Linuxをインストールしたことのある人ならわかると思うのだけど、 最低限baseがないと機能しない。そして、AURを利用する場合はbase-develも含んでおかないといけない。
あとはログインする。 これは、起動時に実行するもの。
# systemd-nspawn -b -D ~/Container
これでコンテナを起動することができる。終了する場合、コンテナ上で電源を切る。 終了は少し時間がかかる。
# poweroff
LXCと違って自動的にブリッジインターフェイスもセットアップされ、起動しただけでネットワークがちゃんと機能する状態になる。 LXCと比べても随分と話が早い。
ManjaroだとArchを構築するのは簡単だし、もちろんArchやAnterogosでも簡単だけど、そうでないディストリビューションがどうやってコンテナ上にOSをインストールするか、については各々調べて欲しい。 私はArchが使えれば満足なので、コンテナ上で他のディストリビューションを使おうとは思わないし、現状、Manjaro以外をホストにしようとも思わないからだ。
おまけ。この環境からPowerlevel9kするために
ちょっとつまずいたのでおまけ。 標準ロケールがen_US.utf8になっているため、Powerlevel9kのPowerline記号が出ない。
そこで、/etc/locale.genを編集してja_JP.UTF-8 UTF-8をアンコメントし、
# locale-gen
そして、/etc/locale.confを編集してLANGをja_JP.UTF-8にしてから
# localectl set-locale LANG=ja_JP.UTF-8
これでちゃんとPowerlevel9kのアイコンが出るようになる。