[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 {