[microfuchsia] Disable VM console by default
This disables the interactive console for VMs launched by microfuchsiad
by default as they trigger b/379163126. Console support can be
re-enabled by modifying the cfg in microfuchsiad/Android.bp. When
disabled, logs from the VM will be routed to the Android system log
instead.
Bug: 379163126
Change-Id: I0180ce58e48b404d20527f1fa9c893a52b16b9ed
diff --git a/microfuchsia/microfuchsiad/Android.bp b/microfuchsia/microfuchsiad/Android.bp
index ddf360d..2c2d2f2 100644
--- a/microfuchsia/microfuchsiad/Android.bp
+++ b/microfuchsia/microfuchsiad/Android.bp
@@ -19,6 +19,13 @@
"liblibc",
"libvmclient",
],
+ cfgs: [
+ // Enable this to configure microfuchsia VM instances with an interactive serial console. This console can
+ // be attached to using the 'vm console' command.
+ // Warning - enabling this will cause the VM to stall out unless a console is attached.
+ // See b/379163126 for details.
+ // "enable_console",
+ ],
apex_available: [
"com.android.microfuchsia",
],
diff --git a/microfuchsia/microfuchsiad/src/instance_starter.rs b/microfuchsia/microfuchsiad/src/instance_starter.rs
index 61a024f..8216039 100644
--- a/microfuchsia/microfuchsiad/src/instance_starter.rs
+++ b/microfuchsia/microfuchsiad/src/instance_starter.rs
@@ -31,7 +31,7 @@
pub struct MicrofuchsiaInstance {
_vm_instance: VmInstance,
_lazy_service_guard: LazyServiceGuard,
- _pty: Pty,
+ _pty: Option<Pty>,
}
pub struct InstanceStarter {
@@ -64,10 +64,14 @@
let initrd = Some(ParcelFileDescriptor::new(initrd_fd));
// Prepare a pty for console input/output.
- let pty = openpty()?;
- let console_in = Some(pty.leader.try_clone().context("cloning pty")?);
- let console_out = Some(pty.leader.try_clone().context("cloning pty")?);
-
+ let (pty, console_in, console_out) = if cfg!(enable_console) {
+ let pty = openpty()?;
+ let console_in = Some(pty.leader.try_clone().context("cloning pty")?);
+ let console_out = Some(pty.leader.try_clone().context("cloning pty")?);
+ (Some(pty), console_in, console_out)
+ } else {
+ (None, None, None)
+ };
let config = VirtualMachineConfig::RawConfig(VirtualMachineRawConfig {
name: "Microfuchsia".into(),
instanceId: instance_id,
@@ -80,7 +84,7 @@
memoryMib: 256,
cpuTopology: CpuTopology::ONE_CPU,
platformVersion: "1.0.0".into(),
- // Fuchsia uses serial for console by default.
+ #[cfg(enable_console)]
consoleInputDevice: Some("ttyS0".into()),
..Default::default()
});
@@ -94,10 +98,12 @@
None,
)
.context("Failed to create VM")?;
- vm_instance
- .vm
- .setHostConsoleName(&pty.follower_name)
- .context("Setting host console name")?;
+ if let Some(pty) = &pty {
+ vm_instance
+ .vm
+ .setHostConsoleName(&pty.follower_name)
+ .context("Setting host console name")?;
+ }
vm_instance.start().context("Starting VM")?;
Ok(MicrofuchsiaInstance {