diff --git a/src/cmd/init/bootstrap.rs b/src/cmd/init/bootstrap.rs index cf9b7b6..125c7e8 100644 --- a/src/cmd/init/bootstrap.rs +++ b/src/cmd/init/bootstrap.rs @@ -79,7 +79,30 @@ pub async fn bootstrap(cfg: Config) { }) .await; - exec("chroot", &["/system", "update-ca-certificates"]).await + exec("chroot", &["/system", "update-ca-certificates"]).await; + + // activate ttyS* consoles as needed + retry_or_ignore(async || { + const PATH: &str = "/system/etc/inittab"; + let mut inittab = fs::read_to_string(PATH).await?; + let mut changed = false; + for opt in utils::cmdline().filter_map(|s| s.strip_prefix("console=ttyS")) { + info!("inittab: adding entry for ttyS{opt}"); + changed = true; + + let mut params = opt.split(','); + let num = params.next().unwrap(); + let speed = params.next().unwrap_or("115200"); + inittab.push_str(&format!( + "S{num}:12345:respawn:/sbin/agetty --noclear {speed} ttyS{num} linux\n" + )); + } + if changed { + fs::write(PATH, inittab.as_bytes()).await?; + } + Ok(()) + }) + .await; } struct Verifier { diff --git a/src/utils.rs b/src/utils.rs index c1b9a76..d5a837d 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -11,7 +11,7 @@ static CMDLINE: LazyLock = LazyLock::new(|| { .unwrap_or_default() }); -fn cmdline() -> impl Iterator { +pub fn cmdline() -> impl Iterator { CMDLINE.split_ascii_whitespace() } diff --git a/test-initrd/config.yaml b/test-initrd/config.yaml index 0ab9a29..b4ccb8e 100644 --- a/test-initrd/config.yaml +++ b/test-initrd/config.yaml @@ -95,8 +95,8 @@ lvm: #- dev: /dev/storage/bootstrap #- dev: /dev/storage/dls -signer_public_key: 'MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBe6Y3zGQUIHvVXoS5GI8irY8yoB0ozFpzn/cUykA46TkHdJ8xCEaaM1MpqMrfWgDtP/rA2KeE9HjVerLnEFD01uUAUh4/OYgCBDYJPhridVDoC78KOJpkWBj7Shl0Rp0AtETvatNPa1RRe15V7nDF/Nm75Y6O3IL29lYPQ6jqEGhR810=' +signer_public_key: 'MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAd5sR4NqLtjSt8ESNlYWvuufYj7v+aYGDlgxQThcKbzDPVe639IfH94hHE0l9TAfyU94qtN/GpFyKJ68F/u2pu70A/umT1m24ELFDqXlQXqhTsH91r+nYUZ7due3EqSrvru/yjchNNRkpoCCu3QkDF25KnrYfWWHqj9ZIRlBTCJE9SwM=' bootstrap: dev: /dev/storage/bootstrap - seed: https://192.168.12.254:7606/public/download-set/host/m1/bootstrap.tar?set=IDZTK4AUNCYCTKF3GIEGSNZF3I7XCINCTJSOWL2JPHCJ2IAZWDECY2XCGQ5MCTJBNFIKBNCLIA3PJSN7IOH7URGXYRYZRCGF4VSW4RIAAQRE2GDEOC4RWAAAQA3DSZJZMU4TGOL4NA5G2MJ2MJXW65DTORZGC4BOORQXEAAAAAADJMFLUE + seed: http://192.168.12.254:7606/public/download-set/host/m1/bootstrap.tar?set=ICM5KUZDRAMJPMO5OWW6PSIFYF4AHMYLAQSBZVFUDNG4DQDEW6UFQQJQKMGIXPI4CFOZFVA4CXULRXCAHKX3WELVAYS246FM6SGSGHIOAQRE2GDEOC4RUAAAQA3GEZDFMUZDOMD4NA5CUOTCN5XXI43UOJQXALTUMFZAAAAAACHHUMRU