使用 systemd-nspawn 進行系統設置

使用 systemd-nspawn 進行系統設置

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

我需要設定鍵盤映射、主機名,也許還有時區和區域設定。我想使用 systemd 工具,例如 hostnamectl、localectl、timedatectl...

是否可能以及執行此操作的方法,或者我應該使用配置文件嗎?它們甚至被 systemd 辨識嗎?例如,如果我在 /etc/hostname 中設定主機名,它是否可以正確識別?我也可以這樣設定鍵盤映射嗎?

答案1

是否可以

是的

我在 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

相關內容