systemd-nspawn
systemd組み込みの軽量コンテナ、ディレクトリをコンテナに見立てて潜れる。通常は中のsystemdを走らせるが、代わりに任意のコマンドを実行できるのでbetter chrootとしても利用可能。
対象のディレクトリに移動してsudo systemd-nspawnを実行するか、sudo systemd-nspawn -D {対象のディレクトリ}を実行するとシェルが走る
引数を付けると任意のコマンドが走る
-bを付けるとコンテナ内のsystemdが起動する
組み込みなのでsystemdが入っていればどこでも使えるはず
root権限は必要
上にも書いているが、まともに走らせるためにはコンテナの中にもsystemdが必要
Linuxシステムとして機能するようにprocやsysのマウント等の面倒をsystemdが見てくれる
コンテナを抜けると解除されるので自力でアンマウントする必要がない
Dockerみたいなフルマネージドなコンテナシステムと違って、イメージを管理する機能は一切ない
ので自力で構築したりマウントで繋げたりして用意する必要がある
ephemeralというオプションが存在するが、ルートになるファイルシステムの機能を利用したもので、squashfs等のread only filesystemには使えない
overlayを自力でセットアップする必要がある
出力がCRLFなので利用したい場合はtrとかdos2unixを噛ませること