diff --git a/lib/src/install.rs b/lib/src/install.rs index b9d6a653..384b2fa2 100644 --- a/lib/src/install.rs +++ b/lib/src/install.rs @@ -43,8 +43,6 @@ use crate::mount::Filesystem; use crate::task::Task; use crate::utils::sigpolicy_from_opts; -/// The default "stateroot" or "osname"; see https://github.com/ostreedev/ostree/issues/2794 -const STATEROOT_DEFAULT: &str = "default"; /// The toplevel boot directory const BOOT: &str = "boot"; /// Directory for transient runtime state @@ -158,6 +156,10 @@ pub(crate) struct InstallConfigOpts { #[clap(long)] #[serde(default)] pub(crate) generic_image: bool, + + /// The stateroot name to use. Defaults to `default`. + #[clap(long, hide = true)] + pub(crate) stateroot: Option, } #[derive(Debug, Clone, clap::Parser, Serialize, Deserialize, PartialEq, Eq)] @@ -558,8 +560,12 @@ async fn initialize_ostree_root_from_self( // Another implementation: https://github.com/coreos/coreos-assembler/blob/3cd3307904593b3a131b81567b13a4d0b6fe7c90/src/create_disk.sh#L295 crate::lsm::ensure_dir_labeled(rootfs_dir, "", Some("/".into()), 0o755.into(), sepolicy)?; - // TODO: make configurable? - let stateroot = STATEROOT_DEFAULT; + let stateroot = state + .config_opts + .stateroot + .as_deref() + .unwrap_or(ostree_ext::container::deploy::STATEROOT_DEFAULT); + Task::new_and_run( "Initializing ostree layout", "ostree",