android_packages_modules_Vi.../apex/Android.bp

165 lines
3.5 KiB
Plaintext
Raw Normal View History

package {
default_applicable_licenses: ["Android-Apache-2.0"],
}
microdroid_filesystem_images = [
"microdroid_super",
"microdroid_boot-5.10",
"microdroid_vendor_boot-5.10",
"microdroid_vbmeta",
"microdroid_vbmeta_bootconfig",
]
apex {
name: "com.android.virt",
// TODO(jiyong): make it updatable
updatable: false,
future_updatable: true,
platform_apis: true,
system_ext_specific: true,
manifest: "manifest.json",
key: "com.android.virt.key",
certificate: ":com.android.virt.certificate",
custom_sign_tool: "sign_virt_apex",
// crosvm and virtualizationservice are only enabled for 64-bit targets on device
arch: {
arm64: {
binaries: [
"crosvm",
"virtualizationservice",
],
filesystems: microdroid_filesystem_images,
},
x86_64: {
binaries: [
"crosvm",
"virtualizationservice",
],
filesystems: microdroid_filesystem_images,
},
},
binaries: [
"fd_server",
"vm",
],
java_libs: [
"android.system.virtualmachine",
],
jni_libs: [
"libvirtualmachine_jni",
],
apps: [
"android.system.virtualmachine.res",
],
prebuilts: [
"com.android.virt.init.rc",
"microdroid.json",
"microdroid_uboot_env",
"microdroid_bootloader",
"microdroid_bootloader.avbpubkey",
Define debug levels Previously, a VM can be configured as running in debug mode or not. However, the debug mode was not defined clearly and debugging features like logging and adb-shell were actually left enabled even when the debug mode is off. This CL re-defines the debuggability of a VM. A VM has a debug level which can be either of these three: 1. None: In this level, VM is not debuggable at all. No log is exported from the VM, and debugger can't be attached to any process in the VM. adb-shell of course is not supported. 2. App-only: In this level, only the app payload is debuggable. Logs from the app process is exported to the host and the process can be attached to debugger. adb-shell is not supported. 3. Full: In this level, the VM is fully debuggable. All logs including kernel logs are exported to the VM and developers can adb-shell into the VM. Note that this CL doesn't fully implement all the levels yet, but implements the framework around supporting multiple debug levels. Specifically, each debug level is associated with a bootconfig image. Each image has config values each of which enables or disables a debugging feature. For example, bootconfig images for the none and app-only levels have "kernel.console = none" to not show kernel console output. The `vm` tool and the Java APIs are also amended accordingly. The debug level can be set via `--debug <level>` flag and the `DebugLevel(...)` method. Future work: * Implement each debug level * Each level uses different vm-instance image. Debug level is stored in the instance image and is compared against the given level when microdroid boots. * Sign bootconfig images with avb and let uboot verify them (b/203031847) Bug: 201362865 Test: atest MicrodroidHostTestCases Test: adb shell /apex/com.android.virt/bin/vm run-app /data/local/tmp/virt/MicrodroidDemoApp.apk /data/local/tmp/virt/MicrodroidDemoApp.apk.idsig /data/local/tmp/virt/instance.img assets/vm_config.json shows ... Created VM from "/data/local/tmp/virt/MicrodroidDemoApp.apk"!"assets/vm_config.json" with CID 13, state is NOT_STARTED. Started VM, state now STARTING. Hello Microdroid /mnt/apk/lib/arm64-v8a/MicrodroidTestNativeLib.so hello microdroid , which is without logs from the bootloader and the kernel Change-Id: I897dcd88723f014524d2cd2b6ffaa6f9fb5696d6
2021-10-14 15:02:12 +00:00
"microdroid_bootconfig_normal",
"microdroid_bootconfig_app_debuggable",
"microdroid_bootconfig_full_debuggable",
],
file_contexts: ":com.android.virt-file_contexts",
canned_fs_config: "canned_fs_config",
}
apex_key {
name: "com.android.virt.key",
public_key: "com.android.virt.avbpubkey",
private_key: "com.android.virt.pem",
}
android_app_certificate {
name: "com.android.virt.certificate",
certificate: "com.android.virt",
}
prebuilt_etc {
name: "com.android.virt.init.rc",
src: "virtualizationservice.rc",
filename: "init.rc",
installable: false,
}
// Virt apex needs a custom signer for its payload
python_binary_host {
name: "sign_virt_apex",
srcs: [
"sign_virt_apex.py",
],
version: {
py2: {
enabled: false,
},
py3: {
enabled: true,
embedded_launcher: true,
},
},
required: [
"img2simg",
"lpmake",
"lpunpack",
"simg2img",
],
}
sh_test_host {
name: "sign_virt_apex_test",
src: "sign_virt_apex_test.sh",
test_config: "sign_virt_apex_test.xml",
data_bins: [
// deapexer
"deapexer",
"debugfs_static",
// sign_virt_apex
"avbtool",
"img2simg",
"lpmake",
"lpunpack",
"sign_virt_apex",
"simg2img",
],
data_libs: [
"libbase",
"libc++",
"libcrypto_utils",
"libcrypto",
"libext4_utils",
"liblog",
"liblp",
"libsparse",
"libz",
],
data: [
":com.android.virt",
"test.com.android.virt.pem",
],
test_suites: ["general-tests"],
}
// custom tool to replace bytes in a file
python_binary_host {
name: "replace_bytes",
srcs: [
"replace_bytes.py",
],
version: {
py2: {
enabled: false,
},
py3: {
enabled: true,
embedded_launcher: true,
},
},
}