Debian

使用 systemd-nspawn 進行系統設置

  • May 26, 2017

我可以在啟動之前使用 systemd-nspawn 設置“chroot”安裝(在這種情況下,debian 使用 debootstrap)嗎?即無人值守的安裝和設置。

我需要設置鍵盤映射、主機名、時區和語言環境。我想使用 systemd 工具,例如 hostnamectl、localectl、timedatectl、…

是否有可能以及這樣做的方式還是我應該使用配置文件?他們甚至被systemd辨識嗎?例如,如果我在 /etc/hostname 中設置了一個主機名,它會被正確辨識嗎?我也可以這樣設置鍵盤映射嗎?

是否可以

是的.

我已經在 nspawn 中執行了 Debian。它適用於最少安裝。

另一方面,如果您使用桌面安裝執行此操作,您應該會發現一兩個小問題可以解決。

我應該使用配置文件嗎?他們甚至被systemd辨識嗎?例如,如果我在 /etc/hostname 中設置了一個主機名,它是否被正確辨識?

/etc/hostname 絕對有效,它由 systemd 支持,這正是hostnamectl要編輯的內容。一般來說,在這裡很難看出你在擔心什麼。Debian Jessie 預設使用 systemd,因此任何為 Debian Jessie 編寫的關於如何配置的文件——例如在安裝指南的 debootstrap 附錄中——都應該適用於 systemd。(儘管該附錄更像是一個草圖,並沒有顯示如何讓它在無人值守的情況下執行)。


從你所說的,你可能也對systemd-firstboot. 我沒有嘗試使用它,我的理解是它在某些方面受到限制,但它可能會提供資訊。

在任何情況下,我認為您都需要使用systemd-nspawn --boot,添加了一個類似於 systemd-firstboot 使用的服務文件。如果您不啟動系統,例如hostnamectl將無法工作… 一旦您的腳本以一種或另一種方式完成,它還需要關閉系統。

一個值得注意的問題是,如果您安裝了任何網路服務(包括 avahi、cups、…),您可能希望執行 nspawn--net-veth或同等服務,以避免與主機網路服務發生衝突。此時要獲得網路訪問權限(例如安裝更多軟體包),請在介面上設置 DHCP 客戶端host0

引用自:https://unix.stackexchange.com/questions/367386