2017-09-27 22 views
0

在我的Debian开发机器中,我设置了一个用于定制嵌入式systemd的systemd-nspawn环境。systemd-nspawn发送带引导标志的命令

我能够从脚本命令发送到这个容器,以这样的方式

systemd-nspawn -q --bind /usr/bin/qemu-arm-static -D $MOUNTPATH /bin/bash << EOF 
apt-get update 
apt-get -y upgrade 
EOF 

现在我需要做相同的,但首先是-b(引导)标志的容器。脚本内部还可以这么做吗?

现在我做手动以下:

  1. 开始systemd-nspawn与-b标志
  2. 登录
  3. 发出命令
  4. 停止
+0

你能不能启动它,然后用machinectl? –

+0

我试了一下,但我不明白我该如何从脚本中管理它。我可以使用machinectl来登录,但它与上面的命令相同。你介意多解释一下你的想法吗? – Mark

回答

1

systemd- nspawn -D $ MOUNTPATH -b arg1 arg2

只是与

systemd-nspawn -D $装载路径/ bin中相同/初始化ARG1 ARG2

/斌/ INIT是这里的例子,可以是任意的init系统(如/ usr/lib中/ systemd/systemd)。
它是自动检测到的。

如果您使用--boot,那么您将失去对容器中第一个程序的控制权。

初始化系统将运行您的程序。但是你必须按照init系统的指示进行操作。创建init.rc脚本或systemd服务。


和另一个 “取巧的办法” 是:

systemd-nspawn xxxx --boot 
sleep 5s 
systemd-run -M xxxx /bin/bash << EOF 
    apt-get update 
    apt-get -y upgrade 
EOF