2017-09-27 127 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