Revert "Add microfuchsia apex that runs in AVF on bootup"
Revert submission 3219948-microfuchsia-apex
Reason for revert: Droidmonitor created revert due to b/361102205.
Reverted changes: /q/submissionid:3219948-microfuchsia-apex
Change-Id: I1b6ce31d831cefe1a25a994d25b30e632b02d2ef
diff --git a/android/virtualizationservice/aidl/Android.bp b/android/virtualizationservice/aidl/Android.bp
index c1bff5e..bca4512 100644
--- a/android/virtualizationservice/aidl/Android.bp
+++ b/android/virtualizationservice/aidl/Android.bp
@@ -31,7 +31,6 @@
apex_available: [
"com.android.virt",
"com.android.compos",
- "com.android.microfuchsia",
],
},
},
@@ -151,7 +150,6 @@
apex_available: [
"com.android.virt",
"com.android.compos",
- "com.android.microfuchsia",
],
},
},
diff --git a/libs/libvmclient/Android.bp b/libs/libvmclient/Android.bp
index 9fdeaf8..96fe667 100644
--- a/libs/libvmclient/Android.bp
+++ b/libs/libvmclient/Android.bp
@@ -21,7 +21,6 @@
],
apex_available: [
"com.android.compos",
- "com.android.microfuchsia",
"com.android.virt",
],
}
diff --git a/microfuchsia/README.md b/microfuchsia/README.md
deleted file mode 100644
index 82de725..0000000
--- a/microfuchsia/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Microfuchsia
-
-Microfuchsia is an experimental solution for running trusted applications on
-pkvm using the Android Virtualization Framework (AVF).
-
-# How to use
-
-Add the `com.android.microfuchsia` apex to your product.
-
-```
-PRODUCT_PACKAGES += com.android.microfuchsia
-```
-
-Define and add a `com.android.microfuchsia.images` apex to hold the images.
-
-```
-PRODUCT_PACKAGES += com.android.microfuchsia.images
-```
-
-This apex must have a prebuilt `fuchsia.zbi` in `/etc/fuchsia.zbi` and a boot
-shim in `/etc/linux-arm64-boot-shim.bin`.
-
-# Using the console
-
-This command will open the console for the first VM running in AVF, and can be
-used to connect to the microfuchsia console.
-
-```
-adb shell -t /apex/com.android.virt/bin/vm console
-```
diff --git a/microfuchsia/apex/Android.bp b/microfuchsia/apex/Android.bp
deleted file mode 100644
index eddda9f..0000000
--- a/microfuchsia/apex/Android.bp
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (C) 2024 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-apex {
- name: "com.android.microfuchsia",
- manifest: "manifest.json",
- key: "com.android.microfuchsia.key",
-
- // Allows us to specify a file_contexts in our own repository.
- system_ext_specific: true,
- file_contexts: "com.android.microfuchsia-file_contexts",
-
- updatable: false,
- future_updatable: false,
- platform_apis: true,
-
- binaries: [
- // A daemon that starts on bootup that launches microfuchsia in AVF.
- "microfuchsiad",
- ],
-
- prebuilts: [
- // An init script to launch the microfuchsiad daemon on bootup which
- // launches the microfuchsia VM in AVF.
- "com.android.microfuchsia.init.rc",
- ],
-}
-
-apex_key {
- name: "com.android.microfuchsia.key",
- public_key: "com.android.microfuchsia.avbpubkey",
- private_key: "com.android.microfuchsia.pem",
-}
-
-prebuilt_etc {
- name: "com.android.microfuchsia.init.rc",
- src: "microfuchsia.rc",
- filename: "init.rc",
- installable: false,
-}
diff --git a/microfuchsia/apex/com.android.microfuchsia-file_contexts b/microfuchsia/apex/com.android.microfuchsia-file_contexts
deleted file mode 100644
index 13d7286..0000000
--- a/microfuchsia/apex/com.android.microfuchsia-file_contexts
+++ /dev/null
@@ -1,2 +0,0 @@
-(/.*)? u:object_r:system_file:s0
-/bin/microfuchsiad u:object_r:microfuchsiad_exec:s0
diff --git a/microfuchsia/apex/com.android.microfuchsia.avbpubkey b/microfuchsia/apex/com.android.microfuchsia.avbpubkey
deleted file mode 100644
index 10d4b88..0000000
--- a/microfuchsia/apex/com.android.microfuchsia.avbpubkey
+++ /dev/null
Binary files differ
diff --git a/microfuchsia/apex/com.android.microfuchsia.pem b/microfuchsia/apex/com.android.microfuchsia.pem
deleted file mode 100644
index 541fa80..0000000
--- a/microfuchsia/apex/com.android.microfuchsia.pem
+++ /dev/null
@@ -1,52 +0,0 @@
------BEGIN PRIVATE KEY-----
-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
-wa28hvmts5NyMy819GfPGqdRa14=
------END PRIVATE KEY-----
diff --git a/microfuchsia/apex/manifest.json b/microfuchsia/apex/manifest.json
deleted file mode 100644
index b7ea23b..0000000
--- a/microfuchsia/apex/manifest.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "name": "com.android.microfuchsia",
- "version": 1
-}
diff --git a/microfuchsia/apex/microfuchsia.rc b/microfuchsia/apex/microfuchsia.rc
deleted file mode 100644
index 2b19ed3..0000000
--- a/microfuchsia/apex/microfuchsia.rc
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (C) 2024 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-service microfuchsiad /apex/com.android.microfuchsia/bin/microfuchsiad
- class main
- user root
- group system
- # We need SYS_NICE in order to allow the crosvm child process to use it.
- # (b/322197421). composd itself never uses it (and isn't allowed to by
- # SELinux).
- capabilities SYS_NICE
diff --git a/microfuchsia/microfuchsiad/Android.bp b/microfuchsia/microfuchsiad/Android.bp
deleted file mode 100644
index ddf360d..0000000
--- a/microfuchsia/microfuchsiad/Android.bp
+++ /dev/null
@@ -1,25 +0,0 @@
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-// A daemon that launches microfuchsia in AVF.
-rust_binary {
- name: "microfuchsiad",
- srcs: ["src/main.rs"],
- edition: "2021",
- prefer_rlib: true,
- defaults: ["avf_build_flags_rust"],
- rustlibs: [
- "android.system.microfuchsiad-rust",
- "android.system.virtualizationservice-rust",
- "libandroid_logger",
- "libanyhow",
- "libbinder_rs",
- "liblog_rust",
- "liblibc",
- "libvmclient",
- ],
- apex_available: [
- "com.android.microfuchsia",
- ],
-}
diff --git a/microfuchsia/microfuchsiad/aidl/Android.bp b/microfuchsia/microfuchsiad/aidl/Android.bp
deleted file mode 100644
index 02bb7c6..0000000
--- a/microfuchsia/microfuchsiad/aidl/Android.bp
+++ /dev/null
@@ -1,24 +0,0 @@
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-aidl_interface {
- name: "android.system.microfuchsiad",
- srcs: ["android/system/microfuchsiad/*.aidl"],
- // TODO: Make this stable when the APEX becomes updatable.
- unstable: true,
- backend: {
- java: {
- enabled: false,
- },
- ndk: {
- enabled: false,
- },
- rust: {
- enabled: true,
- apex_available: [
- "com.android.microfuchsia",
- ],
- },
- },
-}
diff --git a/microfuchsia/microfuchsiad/aidl/android/system/microfuchsiad/IMicrofuchsiaService.aidl b/microfuchsia/microfuchsiad/aidl/android/system/microfuchsiad/IMicrofuchsiaService.aidl
deleted file mode 100644
index a04ae2b..0000000
--- a/microfuchsia/microfuchsiad/aidl/android/system/microfuchsiad/IMicrofuchsiaService.aidl
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.system.microfuchsiad;
-
-// This service exists as a placeholder in case we want to communicate with the
-// daemon in the future.
-interface IMicrofuchsiaService {
-}
diff --git a/microfuchsia/microfuchsiad/src/instance_manager.rs b/microfuchsia/microfuchsiad/src/instance_manager.rs
deleted file mode 100644
index 5082e50..0000000
--- a/microfuchsia/microfuchsiad/src/instance_manager.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-//! Manages running instances of the Microfuchsia VM.
-//! At most one instance should be running at a time.
-
-use crate::instance_starter::{InstanceStarter, MicrofuchsiaInstance};
-use android_system_virtualizationservice::aidl::android::system::virtualizationservice;
-use anyhow::{bail, Result};
-use binder::Strong;
-use virtualizationservice::IVirtualizationService::IVirtualizationService;
-
-pub struct InstanceManager {
- service: Strong<dyn IVirtualizationService>,
- started: bool,
-}
-
-impl InstanceManager {
- pub fn new(service: Strong<dyn IVirtualizationService>) -> Self {
- Self { service, started: false }
- }
-
- pub fn start_instance(&mut self) -> Result<MicrofuchsiaInstance> {
- if self.started {
- bail!("Cannot start multiple microfuchsia instances");
- }
-
- let instance_starter = InstanceStarter::new("Microfuchsia", 0);
- let instance = instance_starter.start_new_instance(&*self.service);
-
- if instance.is_ok() {
- self.started = true;
- }
- instance
- }
-}
diff --git a/microfuchsia/microfuchsiad/src/instance_starter.rs b/microfuchsia/microfuchsiad/src/instance_starter.rs
deleted file mode 100644
index d7acf8e..0000000
--- a/microfuchsia/microfuchsiad/src/instance_starter.rs
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-//! Responsible for starting an instance of the Microfuchsia VM.
-
-use android_system_virtualizationservice::aidl::android::system::virtualizationservice::{
- CpuTopology::CpuTopology, IVirtualizationService::IVirtualizationService,
- VirtualMachineConfig::VirtualMachineConfig, VirtualMachineRawConfig::VirtualMachineRawConfig,
-};
-use anyhow::{ensure, Context, Result};
-use binder::{LazyServiceGuard, ParcelFileDescriptor};
-use log::info;
-use std::ffi::CStr;
-use std::fs::File;
-use std::os::fd::FromRawFd;
-use vmclient::VmInstance;
-
-pub struct MicrofuchsiaInstance {
- _vm_instance: VmInstance,
- _lazy_service_guard: LazyServiceGuard,
- _pty: Pty,
-}
-
-pub struct InstanceStarter {
- instance_name: String,
- instance_id: u8,
-}
-
-impl InstanceStarter {
- pub fn new(instance_name: &str, instance_id: u8) -> Self {
- Self { instance_name: instance_name.to_owned(), instance_id }
- }
-
- pub fn start_new_instance(
- &self,
- virtualization_service: &dyn IVirtualizationService,
- ) -> Result<MicrofuchsiaInstance> {
- info!("Creating {} instance", self.instance_name);
-
- // Always use instance id 0, because we will only ever have one instance.
- let mut instance_id = [0u8; 64];
- instance_id[0] = self.instance_id;
-
- // Open the kernel and initrd files from the microfuchsia.images apex.
- let kernel_fd =
- File::open("/apex/com.android.microfuchsia.images/etc/linux-arm64-boot-shim.bin")
- .context("Failed to open the boot-shim")?;
- let initrd_fd = File::open("/apex/com.android.microfuchsia.images/etc/fuchsia.zbi")
- .context("Failed to open the fuchsia ZBI")?;
- let kernel = Some(ParcelFileDescriptor::new(kernel_fd));
- 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 config = VirtualMachineConfig::RawConfig(VirtualMachineRawConfig {
- name: "Microfuchsia".into(),
- instanceId: instance_id,
- kernel,
- initrd,
- params: None,
- bootloader: None,
- disks: vec![],
- protectedVm: false,
- memoryMib: 256,
- cpuTopology: CpuTopology::ONE_CPU,
- platformVersion: "1.0.0".into(),
- // Fuchsia uses serial for console by default.
- consoleInputDevice: Some("ttyS0".into()),
- ..Default::default()
- });
- let vm_instance = VmInstance::create(
- virtualization_service,
- &config,
- console_out,
- console_in,
- /* log= */ None,
- None,
- )
- .context("Failed to create VM")?;
- vm_instance
- .vm
- .setHostConsoleName(&pty.follower_name)
- .context("Setting host console name")?;
- vm_instance.start().context("Starting VM")?;
-
- Ok(MicrofuchsiaInstance {
- _vm_instance: vm_instance,
- _lazy_service_guard: Default::default(),
- _pty: pty,
- })
- }
-}
-
-struct Pty {
- leader: File,
- follower_name: String,
-}
-
-/// Opens a pseudoterminal (pty), configures it to be a raw terminal, and returns the file pair.
-fn openpty() -> Result<Pty> {
- // Create a pty pair.
- let mut leader: libc::c_int = -1;
- let mut _follower: libc::c_int = -1;
- let mut follower_name = vec![0u8; 32];
-
- // SAFETY: calling openpty with valid+initialized variables is safe.
- // The two null pointers are valid inputs for openpty.
- unsafe {
- ensure!(
- libc::openpty(
- &mut leader,
- &mut _follower,
- follower_name.as_mut_ptr(),
- std::ptr::null_mut(),
- std::ptr::null_mut(),
- ) == 0,
- "failed to openpty"
- );
- }
-
- // SAFETY: calling these libc functions with valid+initialized variables is safe.
- unsafe {
- // Fetch the termios attributes.
- let mut attr = libc::termios {
- c_iflag: 0,
- c_oflag: 0,
- c_cflag: 0,
- c_lflag: 0,
- c_line: 0,
- c_cc: [0u8; 19],
- };
- ensure!(libc::tcgetattr(leader, &mut attr) == 0, "failed to get termios attributes");
-
- // Force it to be a raw pty and re-set it.
- libc::cfmakeraw(&mut attr);
- ensure!(
- libc::tcsetattr(leader, libc::TCSANOW, &attr) == 0,
- "failed to set termios attributes"
- );
- }
-
- // Construct the return value.
- // SAFETY: The file descriptors are valid because openpty returned without error (above).
- let leader = unsafe { File::from_raw_fd(leader) };
- let follower_name = CStr::from_bytes_until_nul(&follower_name)
- .context("pty filename missing NUL")?
- .to_str()
- .context("pty filename invalid utf8")?
- .to_string();
- Ok(Pty { leader, follower_name })
-}
diff --git a/microfuchsia/microfuchsiad/src/main.rs b/microfuchsia/microfuchsiad/src/main.rs
deleted file mode 100644
index ec290cc..0000000
--- a/microfuchsia/microfuchsiad/src/main.rs
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-//! A daemon that can be launched on bootup that runs microfuchsia in AVF.
-//! An on-demand binder service is also prepared in case we want to communicate with the daemon in
-//! the future.
-
-mod instance_manager;
-mod instance_starter;
-mod service;
-
-use crate::instance_manager::InstanceManager;
-use anyhow::{Context, Result};
-use binder::{register_lazy_service, ProcessState};
-use log::{error, info};
-
-#[allow(clippy::eq_op)]
-fn try_main() -> Result<()> {
- let debuggable = env!("TARGET_BUILD_VARIANT") != "user";
- let log_level = if debuggable { log::LevelFilter::Debug } else { log::LevelFilter::Info };
- android_logger::init_once(
- android_logger::Config::default().with_tag("microfuchsiad").with_max_level(log_level),
- );
-
- ProcessState::start_thread_pool();
-
- let virtmgr =
- vmclient::VirtualizationService::new().context("Failed to spawn VirtualizationService")?;
- let virtualization_service =
- virtmgr.connect().context("Failed to connect to VirtualizationService")?;
-
- let instance_manager = InstanceManager::new(virtualization_service);
- let service = service::new_binder(instance_manager);
- register_lazy_service("android.system.microfuchsiad", service.as_binder())
- .context("Registering microfuchsiad service")?;
-
- info!("Registered services, joining threadpool");
- ProcessState::join_thread_pool();
-
- info!("Exiting");
- Ok(())
-}
-
-fn main() {
- if let Err(e) = try_main() {
- error!("{:?}", e);
- std::process::exit(1)
- }
-}
diff --git a/microfuchsia/microfuchsiad/src/service.rs b/microfuchsia/microfuchsiad/src/service.rs
deleted file mode 100644
index a2112b1..0000000
--- a/microfuchsia/microfuchsiad/src/service.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-//! Implementation of IMicrofuchsiaService that runs microfuchsia in AVF when
-//! created.
-
-use crate::instance_manager::InstanceManager;
-use crate::instance_starter::MicrofuchsiaInstance;
-use android_system_microfuchsiad::aidl::android::system::microfuchsiad::IMicrofuchsiaService::{
- BnMicrofuchsiaService, IMicrofuchsiaService,
-};
-use anyhow::Context;
-use binder::{self, BinderFeatures, Interface, Strong};
-
-#[allow(unused)]
-pub struct MicrofuchsiaService {
- instance_manager: InstanceManager,
- microfuchsia: MicrofuchsiaInstance,
-}
-
-pub fn new_binder(mut instance_manager: InstanceManager) -> Strong<dyn IMicrofuchsiaService> {
- let microfuchsia = instance_manager.start_instance().context("Starting Microfuchsia").unwrap();
- let service = MicrofuchsiaService { instance_manager, microfuchsia };
- BnMicrofuchsiaService::new_binder(service, BinderFeatures::default())
-}
-
-impl Interface for MicrofuchsiaService {}
-
-impl IMicrofuchsiaService for MicrofuchsiaService {}