systemd-nspawnでManjaro LinuxからArch Linuxする
virtualization
- TOP
- Old Archives
- systemd-nspawnでManjaro LinuxからArch Linuxする
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のアイコンが出るようになる。