Write environment variables into the overlay disk so the guest init script can source them after the overlay root is mounted. QEMU does not provide a `krun_set_exec` equivalent, so the launcher injects this small per-sandbox file into the overlay upperdir before boot.
(overlay_disk: &Path, env_vars: &[String])
| 256 | /// `krun_set_exec` equivalent, so the launcher injects this small per-sandbox |
| 257 | /// file into the overlay upperdir before boot. |
| 258 | fn write_guest_env_file(overlay_disk: &Path, env_vars: &[String]) -> Result<(), String> { |
| 259 | let mut content = String::new(); |
| 260 | for var in env_vars { |
| 261 | if let Some((key, value)) = var.split_once('=') { |
| 262 | use std::fmt::Write as _; |
| 263 | let _ = writeln!(content, "export {key}=\"{}\"", shell_escape(value)); |
| 264 | } |
| 265 | } |
| 266 | rootfs::write_rootfs_image_file( |
| 267 | overlay_disk, |
| 268 | "/upper/srv/openshell-env.sh", |
| 269 | content.as_bytes(), |
| 270 | ) |
| 271 | } |
| 272 | |
| 273 | fn qemu_guest_env_vars(config: &VmLaunchConfig, dns_server: Option<String>) -> Vec<String> { |
| 274 | let mut env_vars = config.env.clone(); |
no test coverage detected